大写希腊字母Ω造成org table不能对齐

这个字体的大写希腊字母Ω好像有点问题啊:

这可能是什么原因造成的呢?是orgmode的原因呢?还是emacs的原因呢?还是字体的原因呢?

从你的图看,不对齐应该是正常的啊,Source Code Pro好像本身就不是中文和英文等宽的吧?换个等宽字体试试呢

表格里没有中文字体,Ω是 SCPro 里的。并且我的设置中英文对齐没有问题。

omega 不是Source Code Pro 里的。 如果你只设置英文字体,对一个中文用describe char,还是会显示英文字体的名字。

而且,图片里不显示着这是中文GBK字符吗,怎么可能是Source Code Pro ?

所以,可能是emacs用了个fall back的字体。

fallback 字体的话会显示字体名称的。这个还真是奇怪了,编码是cjk的,而且我的中英文字体混排都可以对齐的,这个Ω宽度也刚好是一个英文字符的宽度,却对不齐。

不知道为什么我看不到显示的fallback字体,以至于我用的什么中文字体都不知。

那么估计就是字体宽度被当成2个了,然后org-table就少加了个空格。因为字体对齐以后中文一个顶两个。emacs也不调字间距。 你可以试验一下,手动加个空格估计就能对齐。

怀疑要么是emacs字符处理的问题,要么就是字体问题了。你可以试试换别的字体能不能复现。或者看看终端下这个字体的 omega 是不是占两个长度。

我也遇到了类似的问题,一些公式、符号需要用希腊字母。 在 org 和 markdown 中都对不齐,大约只差半个空格的宽度。

希腊字母显示的是中文gbk,我用的是 Source Han Sans CN,思源黑体。 已经设置了英文、中文 size 分别为 14 16。

我想试试怎么设置希腊字母为英文字体,请问该如何下手?

字体问题,换个严格中英文等宽的就没问题了。不过多字节字符对齐依然蛋疼。

50

顺便把刚做完的 Vim 测试也贴上来。对齐是没问题的,但是多字节文字显示有时会叠到一起。

04

总体上说,因为多字节字符用的非常少,不必太过纠结。反正常用的数学符号两者都没问题就对了。

3 个赞

请问你这很骚的字体是什么字体?还有怎样显示猴子和熊猫 :joy:

Inziu_Iosevka_Slab_SC 12 号字体。自己搜一下,国人搞的。

猴子和熊猫我用的 emacs-mac,日本人维护的那个版本。默认支持 emoji 显示。


另外吐个槽:官方 emacs 是不支持 emoji 的。

其实本来是支持的。开发者们不想让 macOS 这类闭源系统,先于自由系统拥有 emoji 显示。

于是就在后来版本中把该特性拿掉了……

What a sad story…

还有其它的严格等宽字体推荐吗?这个字体英文有点瘦。

source code pro 也支持 unicode 的 希腊字母啊,为什么要 fallback 到中文字体的呢?

有没有办法告诉 emacs 在希腊和数学字符上采用 source code pro 的字体呢?

没有别的推荐。 只是数学字符特别瘦,其它在我看来都正常。

本身数学字符是双字节的,却只占了单字节的宽度。

照我说,这是该字体的 bug,你可以去提 issue 看看作者回应。

40

1 个赞

Source Code Pro 有几个unicode 字母是不支持的,比如 ⤑ 。所以就算设置了 fallback 也没法用 Source Code Pro 显示。

             position: 739 of 24168 (3%), column: 3
            character: ⤑ (displayed as ⤑) (codepoint 10513, #o24421, #x2911)
    preferred charset: unicode-bmp (Unicode Basic Multilingual Plane (U+0000..U+FFFF))
code point in charset: 0x2911
               script: symbol
               syntax: w 	which means: word
             category: .:Base
             to input: type "C-x 8 RET 2911" or "C-x 8 RET RIGHTWARDS ARROW WITH DOTTED STEM"
          buffer code: #xE2 #xA4 #x91
            file code: #xE2 #xA4 #x91 (encoded by coding system utf-8-unix)
              display: by this font (glyph code)
    mac-ct:-*-Apple Symbols-normal-italic-normal-*-19-*-*-*-p-0-iso10646-1 (#x96F)

Character code properties: customize what to show
  name: RIGHTWARDS ARROW WITH DOTTED STEM
  general-category: Sm (Symbol, Math)
  decomposition: (10513) ('⤑')

There are text properties here:
  face                 font-lock-comment-face
  fontified            nil

这问题折腾好久了。

这应该是故意的吧,要不然就会出现我帖子里的问题。

这也许是个解决的办法——把我现在所用的中文字体中所有希腊以及数学字符宽度改成和中文字体一样。等我有空了试试。

不太正常。看上图中被选中的 omega,只占了声明宽度的 1/2(华氏、摄氏度符号也一样)。

除非作者有别的方面的考虑,这是不太正常的。

我有一个大胆的想法,如果可以 hack org table 负责 align 的函数,让它将这几个字符视为1个字符宽度(目前这几个字符都被 emacs 视为两个字符宽度,可以用 string-width 函数查看,org 中的函数叫 org-string-width),然后多插入一个空格,应该可以解决问题。

我刚才试了修改 string-width 函数,让它将这几个字符的宽度输出为 1,但是表格仍然不对齐。看来没有这么简单,但是 table align 的函数我又看不懂。

所以在emacs中,中英文表格混排可以通过字体设置来对齐。那有emoji的表格有办法对齐么?