Wednesday, August 02, 2006

CharacterSet。Encoding

===================================================================
from: Adobe Tecnique Note #5080

A character collection contains all glyphs required to make fonts for a particular language or market. Encodings are specified by CMap (Character Map) files, which generally reference a subset of the character collection. Each CID (Character ID) is associated with a class
of glyph shapes.(這句我不懂) The specific shape of a glyph from a given class is dependent on the typeface style, the language, orientation, and writing direction of the font, and possibly other factors.
(字型開發者可能使用此 character collection 中的的部分文字來發展其字型, 此時就需要使用CMap 來為字元做對應。其中, 每個 CID 跟 glyph 的外型有關。)

===================================================================
中文字在目前常見的電腦上是由兩個位元組(two bytes) 所編碼組成的。最常見的編碼方式有台灣地區所通行的 Big5 編碼,及大陸地區所使用的 GB 編碼。而且開頭的位元組幾乎都是大於 128 的數值,也就是所謂 non-ASCII 碼的範圍(ASCII 是指小於 128 的編碼)。

字集(Character Set)是一組符號或文字的組合,而編碼(Encoding)則是將這一組符號或文字以適當的方式編入位元組中, 以便電腦能夠表示與儲存。目前現有的字集如中文字集、英文字集、日文字集等,而中文編碼則是選取部份或全部字集中的部分或全部字, 給予一個號碼,如 Big5 包含部分中文字集、英文字集、部分日文字集等。

接下來就是萬碼奔騰,眾多中文編碼標準的問題,目前台灣使用的中文編碼存在許多問題,第一是中文編碼有數種 Big5、CCCII、CNS11643、Big5E、Big5+、ISO 10646、CP950、EUC-TW,每個編碼所包含的中文字數不同,編碼方式也不相同, 而且大部分都沒有國家標準規格,第二是常用的 Big5 編碼字數不足。

雖然常用的 Big5 已經使用 2bytes 來表示中文字,但是 2bytes = 16bits = 2^16 =65536 個編碼空間, 以 Big5 的標準而言,為了要和 ASCII 能夠相容,最多只能使用兩萬多字 ([0x80-0xFE][0x40-0x7E,0xA1-0xFE] = 127*190 = 24,130),現存的中文字最少在七萬以上,造成許多字在 Big5 的系統下,無法使用。在加上中文標準繁多,卻又沒有最後的國家標準規格,各家廠商所實做產品也就未必相容。 最明顯的例子就是日文平假片假名,在這些中文編碼中並不是每個都包含, 當遇到所謂的「Big5日文」時,就會產生許多問題。
===================================================================

Comments: Post a Comment



<< Home