Как я могу смешать японский и английский в одной и той же таблице оргструктуры (в которой используются шрифты фиксированной ширины)? Что-то вроде:
| мммммм | | | は ど う デ シ ウ | | | フ ー フ | フ ー フ |
не будет выравнивать Emacs просто считает японские символы как единое целое, хотя на самом деле они больше на 10% больше.
Можно ли установить ширину столбца в пикселях? Я знаю, что <10> установит ширину, но это не помогает, так как это считается в терминах букв фиксированной ширины.
Проблема в основном в том, как emacs выравнивает столбцы (используя ширину шрифта).
C-c C-c
пока вы находитесь в камере? Я просто вставил ваш пример в буфер режима орг, нажалC-c C-c
, и все выровнялось хорошо.:align-to
свойство display, описанное в gnu.org/software/emacs/manual/html_node/elisp/… .Ответы:
Это зависит от шрифтов, которые вы используете. И я не думаю, что у Elisp есть возможность выравнивания на уровне пикселей.
Org вычисляет ширину строки с помощью
string-width
вместоlength
.string-width
возвращает 1 для символов ASCII и половинной ширины CJK или 2 для символов полной ширины. Оцените следующий код покажет вам, что:Теперь, несмотря на то, что режим Org получил правильный ответ из свойства sting и добавил пэды вокруг строк, механизм отображения Emacs должен определить, куда эти биты попадают на экран.
Механизм отображения Emacs получает информацию о шрифтах из базовой ОС. Чтобы упростить сложную задачу, допустим, что в вашей конфигурации
m
ширина равна 5 пикселям, а "は" - 10. В этом случае они будут идеально выровнены, поскольку предположение режима Org ("は" в два раза больше ширины " m ") соответствует фактическим пикселям на вашем экране.Вместо этого, если ваша конфигурация шрифтов имеет 7 пикселей для «m» и 10 пикселей для «は», все не будет совпадать. И нет ничего, что может сделать ни Org Mode, ни Display Engine. Они сделали то, что они сказали, по вашей конфигурации, чтобы сделать.
источник