Unicode

XTerm 僅顯示部分 unicodes 而 Urxvt 不顯示任何內容

  • February 17, 2021

就我而言,(U)XTerm 確實顯示了一些 unicode,但只是部分顯示。

例如:對於字母是:𝒫φϕ𝒟.

這里分別是 UXTerm 和 Urxvt 的截圖

使用者體驗術語 網址

似乎問題與字母空間或字母長度有關。

順便說一句,gnome-terminal 一切都很好。

侏儒終端

我目前的.Xresources文件是:

Xft.dpi:       120
Xft.antialias: true
Xft.hinting:   true
Xft.rgba:      rgb
Xft.autohint:  false
Xft.hintstyle: hintslight
Xft.lcdfilter: lcddefault

XTerm*faceName:          Fixed
XTerm*faceSize:          14
XTerm*reverseVideo:      false
XTerm*selectToClipboard: true

UXTerm.vt100*faceName:          Fixed
UXTerm.vt100*faceSize:          14
UXTerm.vt100*reverseVideo:      false
UXTerm*selectToClipboard: true

URxvt.font:            xft:Fixed:pixelsize=18

URxvt.depth:                      32
URxvt.background:                 #222D31
URxvt*scrollBar:                  false
URxvt*mouseWheelScrollPage:       false
URxvt*cursorBlink:                true
URxvt*background:                 black
URxvt*foreground:                 grey
URxvt*saveLines:                  5000

如何讓 XTerm 和 Urxvt 正確顯示這些字元?可能嗎?

對於 xterm,問題在於第一個/最後一個字元超出了 xterm 從 fontconfig 度量中讀取的邊界框。xterm 通常使用系統的wcwidth功能來獲得(更)正確估計單個字元寬度,以及在繪製字元剪輯時,錯誤的像素會失去。順便說一句,“fixed”可能不是 fc-list 輸出中的條目。fontconfig 為此靜默使用其預設字型。對於 urxvt - 它可能只是忽略字形,因為它不遵循字型度量。有些字型比其他字型差;fontconfig 在這方面沒有幫助。

在某些情況下,系統wcwidth無法處理某些特殊字元,xterm 會不必要地截斷單元格。樣本

𝒫φφ𝒟

使用**U+1D4AB**and U+1D49F,xterm 和系統同意應該佔據螢幕上的一個單元格。UnicodeData.txt 提供以下資訊:

1D4AB;數學腳本大寫 P;Lu;0;L; 0050;;;;N;;;;;
1D49F;數學腳本大寫 D;Lu;0;L; 0044;;;;N;;;;

但請參考EastAsianWidth.txt文件的實際寬度。EastAsianWidth.txt (參見TR11-38)包含以下資訊:

1D4A9..1D4AC;N # Lu [4] 數學腳本大寫 N..數學腳本大寫 Q
1D49E..1D49F;N # Lu [2] 數學腳本大寫 C..數學腳本大寫 D

這**N**意味著中性:如果在東亞語境中使用字元,則實現可以將它們視為“全形”(雙角的誤導性術語)。它們不在那種情況下使用。然而,一些字型(不出所料)是由東亞人開發的,並且使這些字型中的大多數中性字元都變成了雙倍寬度。這會帶來驚喜。如果終端(如 xterm)剪輯字元,使用者會不高興。如果終端使用字型寬度,使用者會感到困惑(因為終端程序是為固定間距的行/列網格編寫的)。

糾正這個問題(並使字型對每個人都有用)是 fontconfig 應該做的。從 xterm 的角度來看,問題可能出在 fontconfig 指標中。

xterm 確實有辦法適應寬度不明確的字元的窄/寬選擇,但改變中性字元的寬度不是 xterm 的功能。

這是一個螢幕截圖,顯示 gnome-terminal 不會剪切字元,也不會將它們解釋為雙倍寬度。它只是用錯誤的像素覆蓋相鄰的字元:

在更真實的場景中顯示 gnome-terminal 的螢幕截圖

建議的連結為什麼 xterm 在使用 Xft 字型時不支持雙倍大小的字元?是針對不同的問題。

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