Unicode输入法

Unicode輸入法(英語:Unicode input)是指用戶於電腦插入一特定的通用字元集字元英语Universal Character Set characters;它是一個在輸入實體鍵盤不直接支持的字元的常用方法。Unicode字元可透過在顯示中選擇或於實體鍵盤上輸入特定按鍵組合生成,而這些在一個網頁或文件中生成的字元(不論透過任何一種方法)皆可複製至另一處。相對於ASCII的96個基本字元集(Unicode亦有收錄),Unicode收錄數以十萬計、涵蓋幾近全球的書寫語言及不同標示與符號的字模(字符)。[1]

Unicode標誌

一個Unicode輸入系統必須提供大量字元(理論上為所有有效的Unicode代碼點),與定義按鍵與其按鍵組合只適合特定地區且有限字元的键盘布局有所不同。

圖為KCharSelect字符映射工具,正顯示Unicode數學運算子英语Mathematical operators and symbols in Unicode子集

Unicode編碼

Unicode字元由代碼點分辨,通常以「U+」附加4-6位十六進制數表示,如U+00AE及U+1D310。於基本多文種平面(BMP)中的字元,包括不少漢字、日文文字及符號等現代文字,有4位元的代碼;而甚具歷史的文字,以及不少現代符號與象形文字(諸如颜文字表情符號遊戲牌及不少中日韓統一表意文字),則有5位元代碼。

可提供性

一個程式只有於能夠搜尋到一個包含該字元字模的字體下顯示特定字元。[2]甚少字體能夠完整覆蓋Unicode所收錄的字元;大多數字體則只包含可支持部份書寫系統下的字模。然而,大多數現代瀏覽器與其他文字處理程式可顯示多語言內容,皆因這些程式透過使用字型替換英语Font substitution方式,自動利用其他字體顯示現時所使用的字體未有收錄的字元。使用哪一種字體作替代字體及視乎所使用的軟體與操作系統;部份軟體會於所有已安裝字體搜尋適合的字模,但其他則只會搜尋特定字體。

若果一個程式無法搜尋支持該字元的字體,通常該字元會以一個問號、替代字符U+FFFD )或該字體的「.notdef.」字元(有時候或會因其字元外形與豆腐相似而被稱為「tofu」,惟部份字體於方形內打叉字)。[3]現代應用上則使用最後者以表示不支持的字元,而替代字符則只用於編碼錯誤。

從屏幕選擇

 
GNOME中的字符映射表

不少系統提供可視化方法以選擇Unicode字元。ISO/IEC 14755英语ISO/IEC 14755標準將之定義為一種「屏幕選擇輸入方法」(screen-selection entry method)[4]

Microsoft Windows自Windows XP起於消費者層面提供一個Unicode版本的字符映射表程式,惟只包含於基本多文種平面(BMP)中的字元。用戶可透過Unicode字元名稱搜索字元,而列表亦可只限於一特定的代碼塊。[5]

市面上亦提供同類的第三方進階工具(當中知名的免費軟體計有BabelMap,該程式支持所有Unicode字元)[6]

在大多數Linux桌面環境中,亦有提供如gucharmap英语gucharmap(GNOME)或kcharselect英语kcharselect(KDE)的同等工具[7]

十進制輸入

Microsoft Windows支持使用Alt码,透過於數字鍵盤輸入的十進制數字轉化為部份Unicode代碼點。例如,除号的代碼點U+00F7及F7等同於十進制下的247,故Alt+0247可產生「÷」(起首的0為必須;Alt+247則基於CP437產生「≈」)。在大部份應用程式中,這方法只適用於少於256的數值。

文字編輯器Vim支持透過兩字元的簡寫(mnemonics,在Vim開發人員中誤稱其為「雙字符組」)定義字符。已安裝的字符集可透過定義任意代碼點、利用十進制說明的自定義簡寫擴展。例如十進制中的9881與十六進制的2699相等,故dig Gr 9881與「Gr」關聯,得出U+2699 GEAR

十六進制輸入

ISO/IEC 14755英语ISO/IEC 14755第5.1條描述一種「簡單方法」(Basic method),當中。大多數現代電腦系統有一些可模擬該描述的方法,惟部分只支持最多四位數值(意味只能支持基本多文種平面)。

Microsoft Windows

用戶可透過於註冊表登錄器中,搜尋HKEY_CURRENT_USER\Control Panel\Input Method目錄並添加名為EnableHexNumpad的字符串(REG_SZ)值,將數值設為1即可啟用十六進制Unicode輸入法。該操作需用戶再次登入系統後方能生效(在Windows Vista或以前版本中,用戶需將電腦重新啟動,方能啟用輸入法)。

功能啟用後,用戶可透過先按下Alt,並於數字鍵盤鍵入+,再輸入十六進制代碼(透過數字鍵盤輸入0-9及/或字母鍵輸入A-F),最後釋放Alt鍵即可輸入Unicode代碼。[2]以此方法輸入五位長的十六進制代碼(如U+1F937)可能失效。

 
UnicodeInput之視窗

若果用戶不願透過修改註冊表方式或在沒有數字鍵盤的裝置(尤其為筆記簿型電腦)實現上述輸入方法,可下載程式「UnicodeInput」[8]。若用戶在輸入文字時觸發該程式,會出現類似右圖的介面。用戶輸入十六進制代碼後按↵ Enter,即可產生所需字元,視窗亦隨之消失。

AutoHotkey代碼支持以輸入方式替代Unicode字元。例如,輸入Send {U+2014}會於當前視窗文字欄插入一個長連接號(em dash)。[9]

在部份程式(WordWordPadLibreOffice程式)中支持一種較簡單的方法:用戶先輸入字元的十六進制代碼(介乎2-6位十六進制數),再按Alt+X便可將數值替換成Unicode字元。例如,輸入fl再按下上述按鍵組合即可產生字元「ñ」。除非該字元在十六進制表示中長達六位數,否則該代碼不得以任何數值或字符a-f開首,皆因這些字元會被視為需轉換文字代碼的一部分。例如輸入afl再按下Alt+X會生成「૱」(U+0AF1),但輸入a0000f1則會生成「añ」。

macOS

Unicode的十六進制輸入必須激活。在Mac OS 8.5以後版本中,用戶可以選擇「Unicode Hex Input」鍵盤佈局;於OS X Yosemite (10.10)版本中,則可透過「鍵盤」→「輸入來源」添加。

透過按下⌥ Option,用戶可輸入四位十六進制數的Unicode代碼點即可顯示對應的字元;此時便可釋放⌥ Option鍵。[10]在基本多文種平面(BMP,Basic Multilingual Plane)以外的字元即使超出Unicode十六進制的四位元輸入機制,但用戶可透過代理對(surrogate pairs)方式實現輸入:在按下⌥ Option鍵的同時先後鍵入首組代理對、+鍵、第二組代理對,最後才釋放⌥ Option鍵。

X11(Linux及其他包括Chrome OS的類Unix系統)

在不少應用程式中,可透過一個或多個方法以直接輸入Unicode字元:

  • 按住Ctrl+⇧ Shift並輸入u及其後的十六進制數,再釋放Ctrl+⇧ Shift
  • 按下Ctrl+⇧ Shift+u並釋放,輸入十六進制數後再按↵ Enter(或Space;在部份系統中則為按下並釋放⇧ ShiftCtrl)。[11]

上述方法受GTK及Qt(甚或其他)應用支持;而在Chrome OS中,則為一個操作系統功能[11]

獨立平台應用

  • Emacs中,輸入Ctrl+x8↵ EnterMeta+xinsert-char
  • LibreOffice(版本5.1或以上)中,上述的Alt+X方法對Windows有效。
  • 在使用Presto排版引擎的Opera瀏覽器版本(即版本12.xx起)中,輸入擬鍵入的符號或字元之十六進制編號,再按Ctrl+⇧ Shift+xmacOS替代快捷鍵為Meta+⇧ Shift++x)。
  • Vim編輯器的插入模式(insert mode)中,用戶先輸入Ctrl+V u(適用於不長於4位十六進制字元;如需輸入更長者則輸入Ctrl+V ⇧ Shift+U),後輸入擬輸入符號或字元之十六進制數字,系統會將之轉換為符號。(在Microsoft Windows中,用戶可能被要求輸入Ctrl+Q而非Ctrl+V[12]
  • AutoCAD中,輸入\U2300或三個快捷方式%%c%%d%%p

HTML

HTMLXML中,用作生成字符的字符代碼以&井號為前綴(&#),後加一個分號(;)組成。當中代碼點可以十进制十六进制顯示,而後者則再加上「x」字(可忽略開首的0字)。部份字元可透過實體名稱顯示。

例如:在HTML及XML中,版权符号©(U+00A9)可編碼作:

  • ©(十進制代碼點)
  • ©(十六進制代碼點)
  • ©(實體名稱)

上述受不少接受HTML標記語言的軟件支持,包括Thunderbird及維基百科編輯。

參見

參考資料

  1. ^ Lafontaine, Sylvain. Unicode vs ASCII difference and benefits. MSDN. 2012-02-17 [2014-02-28]. (原始内容存档于2022-01-21) (美国英语). 
  2. ^ 2.0 2.1 Andrew Marcuse. How to enter Unicode characters in Microsoft Windows. [2012-09-13]. (原始内容存档于2022-05-15) (美国英语). 
  3. ^ What symbol is the square box shown for non-representable Unicode characters?. Quora. [2020-08-02] (美国英语). 
  4. ^ ISO/IEC 14755:1997 Information technology -- Input methods to enter characters from the repertoire of ISO/IEC 10646 with a keyboard or other input device. ISO. [2017-10-14]. (原始内容存档于2021-06-19) (美国英语). 
  5. ^ Andy Rathbone. How to Insert Special Characters with Windows 7 Character Map. dummies.com. [2018-12-05]. (原始内容存档于2021-06-15) (美国英语). 
  6. ^ Ancient Signs: The Alphabet & the Origins of Writing. books.google.com. [2018-12-05] (美国英语). [失效連結]
  7. ^ Peck, Akkana. Mastering Characters Sets in Linux (Weird Characters, part 2). LinuxPlanet. 2009-11-25 [2018-12-05]. (原始内容存档于2019-05-10) (美国英语). 
  8. ^ Opris, Elena. UnicodeInput Review. Softpedia. [2018-11-28]. (原始内容存档于2021-11-22) (美国英语). 
  9. ^ Send Keys & Clicks. AutoHotkey Foundation LLC. Copyright © 2003–2018. [2020-08-02]. (原始内容存档于2022-05-14) (英语). 
  10. ^ Antony. typing special and accented characters. MacCentre701. 2006-12-20 [2020-08-02]. (原始内容存档于2008-03-09) (英语). 
  11. ^ 11.0 11.1 Jack, Busch. Type Special Characters with a Chromebook (Accents, Symbols, Em Dashes). groovypost.com. 2018-04-20 [2020-02-28]. (原始内容存档于2021-12-04) (美国英语). 
  12. ^ Vim documentation: gui_w32. [2020-08-02]. (原始内容存档于2021-09-09) (美国英语).