熊 丹,陸 勤
(香港理工大學 電子計算學系,香港)
因香港的漢字書寫系統(tǒng)與臺灣相同,因此香港的電腦平臺普遍沿用臺灣工業(yè)標準“大五碼”編碼標準[1]。為補充《大五碼字符集》的不足,香港政府建立了《香港增補字符集》。初版于1999年發(fā)布[2],在2016年前共更新三次[3-5]。但其中只收錄了ISO/IEC 10646國際編碼標準[6]未收錄、而香港需要使用的字符。即在與ISO/IEC 10646國際編碼標準接軌的機制上,僅包括“縱向擴展”的方式。對于ISO/IEC 10646國際編碼標準已收錄、但須反映香港書寫習慣的字形,則未予以增收。隨著這方面的需求漸增,有必要增設(shè)相應的擴展機制,進一步完善《香港增補字符集》在ISO/IEC 10646國際編碼標準下的編碼方案。經(jīng)過各方努力,這一新方案于2016年5月通過《香港增補字符集-2016》[7]正式公布。
在ISO/IEC 10646國際編碼標準中,不同國家、地區(qū)的字形分別展示于不同列,香港使用的漢字載于C(中國)列下的H(香港)列。但是,目前H列的很多字形并不能完全反映香港的實際習慣寫法。鑒于此,為方便廠商提供香港實際使用的字形,促進本地化技術(shù)的發(fā)展,有必要制定一套適用于香港的電腦漢字字形,以清晰列出ISO/IEC 10646國際編碼標準中H列的字形,為香港電腦漢字提供方便且易于對照的參考字形,供業(yè)界參考。經(jīng)過三年多的整理,這套“香港電腦漢字參考字形”[8]已于2017年5月隨《香港增補字符集-2016》正式公布。
本文中,字形“特指構(gòu)成每個方塊漢字的二維圖形。構(gòu)成漢字字形的要素是筆畫、筆數(shù)及漢字部件的位置關(guān)系等。”[9]本文描述的對象為電腦系統(tǒng)所使用的漢字,雖然目前通用的電腦平臺均提供多種字體[注]指“同一漢字由于各種原因(歷史演變、書寫、印刷等)而形成的各種不同體式?!盵9],如宋體、楷體、黑體等,但本文對字形的描述并不針對或局限于某種字體?!白址卑h字和符號(如部首、數(shù)字、標點符號、貨幣符號等),本文中的漢字不僅包括中國使用的中文字,還包括其他國家、地區(qū)使用的漢字。近代語言學家把漢字稱為“表意文字”,也有學者指出不妥,因為漢字包括大量表音的成分[10]。本文并不深究此名稱是否妥當,而跟從ISO/IEC 10646國際編碼標準中的名稱,也使用“表意文字”指來自中國、日本、韓國及其他國家和地區(qū)的漢字。
本文主要內(nèi)容如下: 第1、2節(jié)分別介紹ISO/IEC 10646認同規(guī)則、擴展機制,以說明國際標準對香港此項工作的要求。第3節(jié)闡述根據(jù)新的需求,如何補充和完善香港電腦漢字的擴展機制和編碼方案。第4節(jié)通過實例詳細說明制作香港電腦漢字參考字形的原則。第5節(jié)簡要進行總結(jié)。
在ISO/IEC 10646國際編碼標準中,來自中國、日本、韓國及其他國家和地區(qū)的表意文字會經(jīng)過一套認同(Unification)規(guī)則[11]整合,然后獲分配ISO/IEC 10646碼位,繼而被統(tǒng)稱為“中日韓統(tǒng)一表意文字”。基于此規(guī)則,被認同的字雖然形體不同,但不會分開編碼。根據(jù)認同規(guī)則的定義,抽象形狀(abstract shape)的差異不被認同,在這種情況下,即使異體字[12]也會分別編碼,例如,部件的數(shù)量不同(如“采”“採”)、部件的相對位置不同(如“夠”“夠”)、結(jié)構(gòu)不同(如“群”“羣”)等。而具體形狀(actual shape)的差異則被認同,如筆畫的旋轉(zhuǎn)方向不同(如“敝”“敝”的首兩筆)、筆畫是否接觸(如“爪”“爪”的第三、四筆)、筆畫的起筆處或收筆處是否穿出(如“急”“急”的第四筆)等。
在ISO/IEC 10646國際編碼標準字符表[6]中,不同國家、地區(qū)的字形分列展示,包括C(中國)、J(日本)、K(韓國)、V(越南)。其中C列下又分為三列: 中國內(nèi)地(G)、香港(H)、臺灣(T)。每個字形下面標示其字源資料(Source Reference),即原有國家、地區(qū)的字源標準索引,以顯示其來源。圖1展示了ISO/IEC 10646國際編碼標準字符表中的兩組不認同字: 夠,夠;羣,群。
圖1 ISO/IEC 10646國際編碼標準中的不認同字例
在認同規(guī)則下,不同國家、地區(qū)的字形可以有所差異,因這些字被認同,所以獲分配同一個ISO/IEC 10646碼位。圖2展示了ISO/IEC 10646國際編碼標準中的認同字例,圖上圈中所示的差異均被視為可認同,不會因這些差異而分開編碼。
圖2 ISO/IEC 10646國際編碼標準中的認同字例
為了方便各個國家、地區(qū)的字符集與ISO/IEC 10646國際編碼標準接軌,使其字符獲分配ISO/IEC 10646碼位,傳統(tǒng)的擴展機制包括縱向擴展(Vertical Extension)及橫向擴展(Horizontal Extension)??v向擴展用于增收ISO/IEC 10646國際編碼標準中尚未編碼的新字;橫向擴展用于為已編碼的字符補充某個國家、地區(qū)的字形。但是,這兩個機制并不允許為可認同的異體字分別編碼。一種新的技術(shù)——注冊“表意文字異體字序列”(Ideographic Variation Sequence,簡稱IVS),補充了這兩個機制的不足,為電腦系統(tǒng)提供了一套符合統(tǒng)一碼標準的方案,使ISO/IEC 10646國際編碼標準中原本不允許分開編碼的異體字得以編碼。第2.2~2.4節(jié)詳細解釋這三個擴展機制。
隨著時代的推進和社會的發(fā)展,漢字也在不斷演變,尤其是在互聯(lián)網(wǎng)發(fā)達的當今,新的漢字層出不窮。當一個新字在某個國家或地區(qū)廣泛流通時,無論是文字工作者,還是普通民眾,都會強烈希望這個新字能被電腦系統(tǒng)所支持,從而能在日常生活、工作中得以正常使用??v向擴展的機制便使此類新字被納入ISO/IEC 10646國際編碼標準,獲得ISO/IEC 10646碼位。電腦平臺、軟件、字體、輸入法等開發(fā)商便有規(guī)范可遵從,從而使得這些新字能在電腦系統(tǒng)中得以支持。圖3列舉了一個縱向擴展的樣例,漢字“石示”在中國用作地名,而之前未被納入ISO/IEC 10646國際編碼標準,因此電腦系統(tǒng)未能支持,網(wǎng)絡(luò)上出現(xiàn)很多因無法在電腦上輸入此字而求助的案例。2015年,由中國提出申請,希望能將此字作為“迫切需要編碼的字符”(urgently needed characters,UNC)納入ISO/IEC 10646國際編碼標準。2017年發(fā)布的ISO/IEC 10646: 2017[6]中,此字獲分配碼位U+2E014[注]通常加一個前置的“U+”來表示。,被納入中日韓統(tǒng)一表意文字擴展區(qū)F(CJK Unified Ideographs Extension F)。
圖3 縱向擴展的中日韓統(tǒng)一表意文字字例
事實上,各個國家、地區(qū)使用的絕大多數(shù)字符在ISO/IEC 10646國際編碼標準中已編碼,目前的最新版本ISO/IEC 10646:2017[6]已收錄超過130 000個字符(包括漢字和符號)。然而,各個國家、地區(qū)的書寫習慣有所不同,因此常用的字形存在差異,而這些差異在認同規(guī)則下不允許被分開編碼,因此需要通過橫向擴展的機制來補充其習慣使用的字形,以反映該國家、地區(qū)實際的寫法。例如圖4所示的“豏”,如需補充越南使用的字形,則通過橫向擴展的方式將其納入V列。
圖4 橫向擴展的中日韓統(tǒng)一表意文字字例
自古以來,漢字一直存在大量異體字,即“漢字通常寫法之外的一種音同、義同,只是字形筆畫或結(jié)構(gòu)不同的字?!盵12-13]現(xiàn)今,有些異體字仍會被使用。但是,受限于認同規(guī)則,有些異體字并不允許與其對應的正體字分開編碼。如果ISO/IEC 10646國際編碼標準中已收錄某個國家、地區(qū)所使用的正體字字形,則該異體字便無橫向擴展的空間,因此無法被電腦系統(tǒng)所支持。為了彌補這一不足,統(tǒng)一碼聯(lián)盟(The Unicode Consortium)建立了一套漢字字形定義技術(shù),通過注冊IVS,ISO/IEC 10646國際編碼標準中原本不允許分開編碼的異體字得以編碼,從而能被電腦系統(tǒng)所支持。該方案的原理是,在一個“基本字”(base character)[注]是一個ISO/IEC 10646中已編碼的中日韓統(tǒng)一表意文字。后加上一個異體選擇符(variation selector)[14],使其組合成IVS,用于定義與已編碼漢字認同的異體字,并通過注冊添加到表意文字異體字數(shù)據(jù)庫(ideographic variation database,IVD)中,使該異體字得以在ISO/IEC 10646體系下編碼,并保留異體字的字形。目前,異體選擇符共有240個,編碼為U+E0100至U+E01EF。以常用字“割”為例,ISO/IEC 10646國際編碼標準字符表[6]中所列的各國家、地區(qū)字形如下:
圖5(a) 注冊IVS的基本字字例
如圖5(a)所示,J列已列出了日本的代表字形,但在日本還會使用其他字形。由于ISO/IEC 10646國際編碼標準中已無橫向擴展的空間,因此通過注冊IVS來對這些異體字編碼,以便電腦系統(tǒng)能支持。
在名為“Adobe-Japan1 collection”[15]的IVD集合中,日本以“割”(U+5272)為基本字,共注冊了3個異體字。圖5(b)展示了IVD中這些異體字的字形及相關(guān)注冊信息。比較這些異體字與圖5(a)中J列所示的基本字的字形,中間的異體字字形和基本字差異較細微(左部部件“害”的三橫筆相對長度不同),而左、右兩個異體字字形差異較明顯(左部部件“害”的橫筆變異為撇筆,且豎筆的收筆處向下穿出)。在IVD中,左邊會以較大字號列出基本字的ISO/IEC 10646碼位,即“割”的碼位“5272”,異體字的下部則顯示其異體選擇符(E0100至E0102)及注冊主體根據(jù)一定規(guī)則[16]提供的標識符(identifier)。
圖5(b) 注冊IVS的異體字字例
《香港增補字符集》的前四個版本[2-5]均是使用縱向擴展的方式增收字符,尚未有橫向擴展的需求。例如,圖6所示的“”,之前并未收錄在ISO/IEC 10646國際編碼標準中。因在香港用作人名,且已見于香港身份證上,屬于已流通的用字,因此《香港增補字符集-2008》[5]增收此字,繼而通過縱向擴展的方式納入ISO/IEC 10646:2011[17]中。
圖6 香港電腦漢字縱向擴展字例
而在整理《香港增補字符集-2016》[7]的過程中,因各種原因出現(xiàn)不同類型的橫向擴展需求,主要分為三類。
(1) 因“原字集分別編碼原則”(Source Separation Rule)[11]而需橫向擴展的漢字: 有些可認同的漢字在ISO/IEC 10646國際編碼標準中因原字集分別編碼原則獲分配兩個不同的碼位,若修改其中一個碼位的字形,會出現(xiàn)兩個不同的碼位對應同一個字形的情況,從而破壞ISO/IEC 10646的編碼原則。以“兌”(U+514C)和“兌”(U+5151)為例,在ISO/IEC 10646國際編碼標準中,這兩個字因原字集分別編碼原則而分別編碼。香港的常用寫法是“兌”,但反映香港字形的H列是“兌”(U+514C),而沒有“兌”(U+5151)(因為U+5151不在《大五碼字符集》和《香港增補字符集》內(nèi))。但是,不能直接把U+514C這個碼位的字形修改為“兌”,因為這樣會令U+514C和U+5151兩個碼位對應相同的字形。因此,《香港增補字符集-2016》增收“兌”(U+5151)后,再以橫向擴展的方式納入ISO/IEC 10646國際編碼標準?!断愀墼鲅a字符集-2016》共增收了22個此類漢字。圖7展示了“兌”(U+514C)、“兌”(U+5151)在ISO/IEC 10646國際編碼標準中的字形及香港橫向擴展的字形。
圖7 香港電腦漢字橫向擴展字例
(2) 有流通需要而橫向擴展的漢字: “鮟鱇”作為一種食用魚,是香港的常用詞匯?!磅c”(U+9B9F)早已收錄于《香港增補字符集-1999》[2];因既非大五碼字符也未被《香港增補字符集》收錄,“鱇”(U+9C47)未被視作香港使用的漢字列入ISO/IEC 10646國際編碼標準的H列。因此,《香港增補字符集-2016》增收此字,并將以橫向擴展的方式納入ISO/IEC 10646國際編碼標準。
(3) 有流通需要而橫向擴展的符號: 由于大五碼編碼標準產(chǎn)生于歐元區(qū)成立之前,因此《大五碼字符集》中未包括歐元貨幣符號“C=”(U+20AC,名為“EURO SIGN”),該符號已被各國家、地區(qū)的電腦系統(tǒng)所支持且廣泛使用,因此,《香港增補字符集-2016》增收此符號。
目前,香港沒有注冊IVS的案例,但已具備可行的機制。例如,“麗”(U+4E3D),圖8中H列所示的為香港使用的字形,如果今后香港需要如G列所示的字形(上部的橫為一筆),因無橫向擴展的空間,可通過注冊IVS的機制增收并獲得編碼。
圖8 香港可注冊IVS的字例
香港使用的漢字載于ISO/IEC 10646國際編碼標準的H列,它不僅包括《香港增補字符集》的漢字,還包括香港使用的大五碼字符(雖然香港對該字符集的字符無所有權(quán))。《香港增補字符集》的前四個版本僅定義了此字符集的字源資料編碼格式為H-XXXX(“XXXX”是該字符的大五碼編碼)。隨著擴展機制的補充,H列字符字源資料的編碼格式也相應進行了擴充,并在《香港增補字符集-2016》中進行了定義,具體如下:
(1) H-XXXX: 表示《香港增補字符集-2008》的字符,其中,“XXXX”是該字符的大五碼編碼。(《香港增補字符集-2008》是《香港增補字符集》大五碼編碼部分的最后版本,之后,香港不再為《香港增補字符集》新增收的字符提供大五碼編碼。)
(2) HB-XXXX: 表示大五碼字符,具體格式為“HB0-XXXX”、“HB1-XXXX”和“HB2-XXXX”,分別代表大五碼符號區(qū)、常用字集和次常用字集,其中“XXXX”是該字符的大五碼編碼。
(3) HC-XXXX: 表示后續(xù)以縱向擴展的形式加入ISO/IEC 10646國際編碼標準的新字符,其中,“XXXX”是“0001”至“9999”的順序編號?!断愀墼鲅a字符集-2016》尚無以“HC”定義的字符。
(4) HD-XXXX[X]: 表示以橫向擴展的形式納入的漢字,其中,“XXXX[X]”是該漢字的ISO/IEC 10646碼位。如字符在ISO/IEC 10646的基本平面[注]ISO/IEC 10646國際編碼標準架構(gòu)內(nèi)的基本多文種編碼平面,簡稱基本平面,也稱“平面0”,碼位由0000至FFFF。,編碼為4位;如在其他平面,則為5位。《香港增補字符集-2016》共有23個以“HD”定義的字符。
(5) HE-XXXX: 表示以橫向擴展的形式納入的符號,其中,“XXXX”是該符號的ISO/IEC 10646碼位?!断愀墼鲅a字符集-2016》共有1個以“HE”定義的符號。
雖然香港對《大五碼字符集》的字符無所有權(quán),但因香港會使用,因此ISO/IEC 10646國際編碼標準的H列也列出了大五碼字符,字源資料的編碼代號為“HB”(如3.2節(jié)所述,分為“HB0”、“HB1”及“HB2”)。目前ISO/IEC 10646國際編碼標準中,“HB”所示的字形并非香港提交,因此很多字形并不能完全反映香港的實際習慣寫法。所以,有必要制作一套完整的香港電腦漢字字形,涵蓋《香港增補字符集》和《大五碼字符集》的所有漢字,以在ISO/IEC 10646國際編碼標準中更清晰、明確地顯示H列的所有字形,供業(yè)界參考。經(jīng)過三年多的整理,香港特區(qū)政府于2017年5月隨《香港增補字符集-2016》公布了正式文件《香港電腦漢字參考字形》[8]。
從標準化的角度考慮,兼顧整齊、美觀等因素,這套參考字形的基本原則是在部件層面具備一致性?!冻S米肿中伪?二零零零年修訂本)》[18]以手寫楷書列出了香港常用字的習慣寫法,為了反映香港的書寫習慣,香港電腦漢字參考字形以此為主要參考資料。沿用香港政府此前制定《香港電腦漢字楷體字形參考指引》、《香港電腦漢字宋體(印刷體)字形參考指引》[19]的原則,這套參考字形楷體和宋體采用相同的字形規(guī)律。
從美學的角度考慮,不同的字體在設(shè)計上或有差異,這套香港電腦漢字參考字形僅用于清晰顯示ISO/IEC 10646國際編碼標準中H列的字形,并不限制字體開發(fā)商所采用的字體風格,也不用于規(guī)定香港社會的日常用字。
4.2.1 部件層面的一致性
香港電腦漢字參考字形的基本原則是在部件層面具備一致性,在審視字形時,主要遵從《常用字字形表(二零零零年修訂本)》,或根據(jù)此字形表中常用字部件的寫法進行類推。當《常用字字形表(二零零零年修訂本)》中無字形可參考或無法類推時,則參考《康熙字典》[20],或從字源角度審視。當參考資料不一致、或因其他原因有待討論時,則提交香港中文界面咨詢委員會工作小組會議討論決定。
部件層面具備一致性并非強求所有部件的寫法完全相同,還需考慮部件所在的部位和字義。例如,當“女”并非整個漢字或漢字合成部件的左偏旁時,香港的習慣寫法為“”(第三筆為橫,且橫筆、撇筆互相穿出),例如“”、“妥”、“妝”。這是“女”的原形,稱為“主形部件”,而左部部件“”是其變體部件,雖含義相同,但因部位不同而寫法有所變異(筆勢上橫變提)。據(jù)研究,這種筆形[注]指“筆畫的具體形狀”[21]。變異的原因主要包括為求書寫連貫、結(jié)構(gòu)緊湊、構(gòu)形美觀[23]。
4.2.2 捺筆變形為頓點的法則
為求輪廓整齊、結(jié)構(gòu)平衡、筆畫勻稱,漢字書寫中捺筆收斂為頓點的情況頗為常見,而這種筆形變異“不會影響漢字的構(gòu)形和構(gòu)意”[23]。在此之前,ISO/IEC 10646國際編碼標準中H列的香港代表字形無一定規(guī)律可循。因此,在整理香港 電 腦 漢 字
表2 “月”相關(guān)部件在不同地區(qū)的常用字形字例
①“然”的左上部也含“肉”之意,但因字形差異較大,因此不在此表中列出比較。
②包括作整個字左、右偏旁及構(gòu)字合成部件左、右偏旁的情況,如“明”作為字例的情況也適用于“盟”。
參考字形的過程中,基于部件的部位,歸納了大多數(shù)字的香港習慣寫法,從而形成了《香港電腦字形原捺筆變形為頓點法則》[8]。這套法則列出了香港習慣使用的字形捺筆收斂為頓點的幾條規(guī)則,且按優(yōu)先級排序。此法則明確了一些總體原則,例如,捺筆右邊尚有其他部件,該捺筆一律收斂為頓點(如“”、“”);一字不兩捺(如“”、“”),但“入”、“水”等部件除外(如“”、“氽”)等等。對于一些涉及字數(shù)較多且較復雜的情況,則酌情考慮。例如,當漢字的上部為左右結(jié)構(gòu),右部有捺筆時,該捺筆是否保留或收斂為頓點,則取決于上部與下部的相對寬度: 下比上寬時捺筆收斂為頓點,如“”、“”;下比上窄,或下部上窄下寬時,則保留捺筆,如“”、“”。此套法則從筆形變異的角度更增強了香港電腦漢字參考字形的一致性。
4.2.3 可容許的細微風格差異
雖然香港電腦漢字參考字形采用楷體和宋體字形規(guī)律一致的原則,但同時也尊重兩者固有的差異,如“花”的上部: 宋體“”上部的兩筆短豎略向內(nèi)傾斜,顯得對稱;而據(jù)楷體的書寫習慣,楷體“”的第四筆為短撇。從視覺審美的角度考慮,即使同為宋體,不同開發(fā)商的字體也會風格各異,如香港常用的“”和中國內(nèi)地常用的“”,第三筆風格迥然不同。香港電腦漢字參考字形的制定和標準化并不限制此類風格差異,但其自身則會保持一致。
本文介紹了如何在ISO/IEC 10646國際編碼標準下,根據(jù)認同規(guī)則的要求進一步完善香港電腦漢字的擴展機制。在與ISO/IEC 10646國際編碼標準接軌的機制上,不僅包括“縱向擴展”的方式,還包括“橫向擴展”,并具備了注冊IVS的可行機制。根據(jù)這些擴展機制,完善了ISO/IEC 10646國際編碼標準下香港字符的字源資料編碼方案。在ISO/IEC 10646國際編碼標準中,香港使用的漢字載于H列,但目前H列的很多字形并未完全反映香港的實際習慣寫法,因此制定了一套適用于香港習慣寫法的電腦漢字參考字形,本文介紹了此套字形所遵從的總體和具體原則。