将组织模式表中的列与日语字体对齐


12

如何在同一组织模式表(使用固定宽度字体)中混合日语和英语?就像是:

| mmmmmm | |
| デシウ| |
| ハ ー フ | ハ ー フ |

不会对齐。Emacs只是将日语字符视为一个,而实际上日语字符却大了10%。

列的宽度可以像素设置吗?我知道<10>可以设置宽度,但这无济于事,因为它以固定宽度的字母表示。

问题基本上是emacs如何对齐列(使用字体宽度)。


您是否曾C-c C-c在牢房中尝试过对齐表格?我只是将您的示例粘贴到组织模式缓冲区中,然后点击C-c C-c,一切都很好地对齐了。
elethan '16

这可能是需要添加到组织模式的东西。使用gnu.org/software/emacs/manual/html_node/elisp/…中:align-to所述的display属性可以实现此目的
legoscia's

@elethan:是的,有些示例可以使用西方字体,字体大小和某些日语文本的特定组合。Emacs试图像上面那样对齐示例,有时它做对了。但是,这只是运气的问题。通常,emacs对此视而不见。
Quora Feans

您不需要为此使用等宽字体吗?在这种情况下,只要您可以使用等宽的日语字体,stackoverflow.com / q / 3758139/4050592应该会有所帮助。
Andrew Swann

Answers:


5

这取决于您使用的字体。而且我不认为Elisp具有像素级对齐功能。

单位使用string-width代替来计算字符串的宽度lengthstring-width对于ASCII和半角CJK字符,返回1;对于全角字符,返回2。评估以下代码将向您显示:

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

现在,即使Org模式从sting属性中得到了正确答案,并在字符串周围添加了填充垫,Emacs显示引擎的工作就是将这些位放在屏幕上。

Emacs显示引擎从底层操作系统获取字体信息。为了简化复杂的问题,假设您的配置m的宽度为5个像素,“は”为10。在这种情况下,由于Org模式的假设(“は”采用的宽度是“ m“)与屏幕上的实际像素匹配。

相反,如果您的字体配置中的“ m”为7像素,“は”为10像素,则这些内容将不匹配。而且没有组织模式,显示引擎也无能为力。他们按照您的配置完成了他们告诉您的操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.