腳本可以決定終端可以顯示哪些字元嗎?

腳本可以決定終端可以顯示哪些字元嗎?

我正在編寫一個將 UTF-8 字元顯示為輸出的腳本。在我的 Gnome 終端中,這會列印出漂亮的楓葉(

答案1

在終端機中運行的應用程式無法從終端機中找出終端繪製的字形是什麼樣的(或即使它們是替代/佔位符字元)。

應用程式的一件事要做的就是查明終端是否支援 UTF-8,如果支持,是否支援可變寬度字元。方法如下:

  • [ 6 n透過寫入 ESC並期待 ESC來讀取遊標位置[ ; R
  • 寫入 2 位元組序列"\xc2\xa0"。如果終端支援 UTF-8,則這是一個不間斷空格。如果終端不支援 UTF-8,則它是未知的,但可能佔用 2 個字元位置(Â實際上可能後面跟著不間斷空格)。
  • 再次讀取遊標位置,找出遊標移動了一個位置還是移動了兩個位置

如果終端確實支援 UTF-8,那麼您可以使用基本上相同的技巧來確定它是否支援可變字元寬度。讀取遊標位置,在等寬字體中寫入一個應該是雙角的字符,例如“あ”,然後再次讀取遊標位置。如果終端不支援雙角字符,則遊標可能會天真地僅移動一個位置。

相關內容