GNU Unifont是一個由Roman Czyborra所製作的,自由且免費的點陣字型,涵蓋了Unicode中的基本多文種平面,使用了中型的點陣字型格式。见于大多數的自由操作系统及一些視窗系統中,如Linux、XFree86、X.Org Server,及一些嵌入式韌體,如。此字型以GNU通用公共许可证第二版或更新釋出,但加入了一個字型嵌入的例外條款(在文件中嵌入字型並不構成違反授權條款的條件)。
它在2013年10月成為了GNU軟體包。
狀態
Unicode的基本多文種平面涵蓋了216 = 65,536 個碼位,其中2048个是保留給特殊用途的代理對,6400个保留給私人用途,剩餘大約57,000個碼位可供分配。其中多數位置都已分配字形,而一些特殊的碼位没有。
,GNU Unifont已經完整涵蓋了Unicode 6.3版定義的基本多文種平面。
平面中,中日韓統一表意文字大約有20,000個,字形取自文泉驿的Unibit字形(獲得授權)。
.hex字型格式
GNU Unifont 的 .hex 格式定義了它的字形大小,寬度8或16像素,高度為16像素。多數西方字母的寬度定義為8像素,而其他語言的字母(特別是中日韓文字)通常是16像素。
unifont.hex檔案的每一個字形都包含一行。每行都包含四位數的Unicode十六進位碼位,一個冒號及點陣字串。一個寬度為8像素的字母的位元串有32個十六進位的位數,而寬度為16像素的字母的位元串有64個十六進位的位數。
在二進制中,點陣字串中的一個1位元對應到一個「開啟」的像素,一個0位元則對應到一個「關閉」的像素。像素位元由上到下,由左到右儲存。
然後字型會轉換成BDF格式的檔案以在X Window系統上使用。
範例
与日语範例]]
這是包含了一個ASCII大寫'A'字形的範例。
0041:0000000018242442427E424242420000
第一個數字是十六進位的Unicode碼位,範圍從0000到FFFF。十六進位的0041是十進位的65,也就是字母'A'的碼位。冒號分隔了點陣字的碼位。在這個範例中,字形是8像素寬,所以位元串有32個十六進位的位數。
位元串以8個零開始,所以前4行是空的(每8位元是2個十六进制的數字,而寬度為8位元的字形則為每行8個位數)。位元串也以4個零結尾,所以最後兩行也是空的。因為如此,預設的字形會比基線低2行,大寫的字母高於基線10行。這是GNU Unifont的拉丁字母範例。
Perl的hexdraw指令稿按照上述的一行字形定義產生以下的輸出:
0041:
--------
--------
--------
--------
---##---
--#--#--
--#--#--
-#----#-
-#----#-
-######-
-#----#-
-#----#-
-#----#-
-#----#-
--------
--------
這可以在文本编辑器中編輯,再使用同樣的工具轉換回十六進位的字串。其目標是創造一個中間格式以方便加入新字形。
向量
Luis Alejandro Gonzalez Miranda寫了指令稿以進行向量化及使用FontForge轉換BDF格式(unifont.bdf)至TrueType格式。Paul Hardy調整了這些指令稿以處理最新的TrueType版本的組合字母,像是重音符號等。
歷史
Roman Czyborra在1998年創造了Unifont格式,更早期的可以追溯至1994年。
2008年,Luis Alejandro González Miranda寫了把這個字型轉換成TrueType字型的程式。Paul Hardy后来修改它以支援在新版TrueType中的組合字母。
最後,理查德·斯托曼在2013年10月接受Unifont成為一個GNU軟體包。Paul Hardy是它的維護者。
參考資料
- Unicode協會: The Unicode 5.0 Standard. 5th, Addison Wesley 2007; ISBN 0-321-48091-0.
外部連結
*[https://ftp.gnu.org/gnu/unifont/ GNU專案檔案庫]
*[http://unifoundry.com/unifont.html 在Unifoundry.com上的GNU Unifont頁面]
评论 (0)