Fonts

XTerm 不能正確顯示 一些 unicode 字元?

  • May 3, 2016

我對 XTerm 和 Unicode 沒有一般問題。在大多數情況下,事情正在發揮作用。這很好用:

$ echo "¿dónde está la llama?"
¿dónde está la llama?

就像這樣:

$ echo -e "\xE2\x98\xA0"
☠

但這失敗了*:*

$ echo -e "\xE2\xA4\xB7"

而不是預期的輸出(⤷,又名ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS)我得到了可怕的盒子。我目前正在使用:

xterm*faceName: Hack Regular:size=12:antialias=true

這與我使用的字型相同gnome-terminal,可以正確顯示相同的字元。我也嘗試過使用其他各種等寬字型(Droid Sans Mono、DejaVu Sans Mono、Liberation Mono),它們在 XTerm 中都有相同的行為(但在其他地方工作正常)。事實上,查看\u2620正確顯示和\u2937不正確顯示之間的字元,有許多字元在 XTerm 中似乎無法正確顯示:

$ python
>>> for x in range(0x2620, 0x2938):
...    print(unichr(x))

我想了解這裡發生了什麼。為什麼 XTerm 無法顯示其中一些字元,而其他字元卻沒有?

簡短:xterm 使用單一字型(雙寬字元的特殊情況除外),而其他終端使用附加字型(並且它們使用那些字型來表示您請求的字型中沒有的字元)。

long:您感興趣的字元不是字型的一部分,在 Debian中看起來類似於fonts-hack-tty 。缺少的程式碼是 0x2937,您可以看到使用xfd -fa hack的不是字型提供的(提示:頁面上的第一個是 0x29 8 7):

在此處輸入圖像描述

字型的簡短描述給出了它的預期用途:

沒有多餘的裝飾。沒有噱頭。哈克是手工修飾和光學平衡的,是程式碼的主力面。

其中(因為“程式碼”通常是 POSIX 字元集,加上人們認為好的評論)可能很小。這個例子比平常有更多的非 POSIX 字元。從 ASCII+Latin1 開始:

在此處輸入圖像描述

字型中有幾百個字形(需要另外十幾個螢幕截圖才能顯示這些字形,儘管一半以上顯示了少量字形)。例如,部分支持第二頁:

在此處輸入圖像描述

在評論的提示下,我跟踪了 gnome-terminal 以查看它載入了這些字型檔:

/usr/share/fonts/truetype/ttf-bitstream-vera/VeraMono.ttf
/usr/share/fonts/truetype/ttf-bitstream-vera/VeraMoBd.ttf
/usr/share/fonts/truetype/ttf-bitstream-vera/VeraSeBd.ttf
/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf

並且 0x2937 由最後一個提供。實際細節可能因您的配置而異。

引用自:https://unix.stackexchange.com/questions/280843