Вирівняйте стовпці в таблиці режиму Org з японськими шрифтами


12

Як я можу змішувати японську та англійську мови в одній таблиці режиму org (що використовує шрифти фіксованої ширини)? Щось на зразок:

| мммммм | |
| は ど う デ シ ウ | |
| ハ ー フ | ハ ー フ |

не вирівняється. Emacs просто зараховує японських персонажів як один, коли вони справді схожі на 10%.

Чи можна встановити ширину стовпця в пікселях? Я знаю, що <10> встановив би ширину, але це не допомагає, оскільки воно рахується з літери фіксованої ширини.

Проблема полягає в тому, як emacs вирівнює стовпці (використовуючи ширину шрифту).


Чи намагалися ви вирівняти таблиці C-c C-c, перебуваючи в клітинку? Я просто вставив ваш приклад у буфер органу, натисніть C-c C-c, і все добре вирівняється.
елефан

Це, мабуть, щось, що потрібно додати до org-режиму. Домогтися цього можна за допомогою :align-toвластивості відображення, описаної в gnu.org/software/emacs/manual/html_node/elisp/… .
legoscia

@elethan: так, деякі приклади працюють із певним поєднанням західних шрифтів, розміром обличчя та японським текстом. Emacs намагається вирівняти приклади, як описано вище, а іноді це правильно. Однак це лише питання удачі. Взагалі, emacs для цього сліпий.
Quora Feans

Вам не потрібен односхилий шрифт для цього? У такому випадку stackoverflow.com/q/3758139/4050592 має допомогти за умови, що у вас є одноразовий японський шрифт, який ви можете використовувати.
Ендрю Сванн

Відповіді:


5

Це залежить від шрифтів, які ви використовуєте. І я не думаю, що Elisp має можливість вирівнювання рівня пікселів.

Org обчислити ширину рядка з string-widthзамість length. string-widthповертає 1 для символів ASCII та CJK на половину ширини або 2 для символів повної ширини. Оцініть наступний код покаже вам, що:

(string-width "m")
1
(string-width "ハ")
1
(string-width "は")
2

Тепер, незважаючи на те, що режим Org отримав правильну відповідь від властивості жала, і додав колодки навколо рядків, робота двигуна дисплея Emacs - це завдання розміщувати ці біти на екрані.

Дисплей Emacs отримує шрифтову інформацію від базової ОС. Щоб зробити складну проблему простою, скажімо, що у вашій конфігурації mширина становить 5 пікселів, а "は" - 10. У цьому випадку вони будуть ідеально вирівняні, оскільки припущення режиму Org ("は" займає вдвічі більше ширини " м ") відповідає фактичним пікселям на екрані.

Натомість, якщо у вашій конфігурації шрифтів є 7 пікселів для "m" та 10 пікселів для "は", речі не збігаються. І немає нічого в режимі Org, ні в двигуні дисплея. Вони зробили те, що їм сказали, за вашою конфігурацією.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.