GNU Unifont

GNU計畫製作的Unicode字型系列與工具程式

GNU Unifont是一个由Roman Czyborra所制作的,自由且免费的点阵字体,涵盖了Unicode中的基本多文种平面,使用了中型的点阵字体格式。见于大多数的自由操作系统及一些视窗系统中,如LinuxXFree86X.Org Server,及一些嵌入式固件,如RockBox英语RockBox。此字体以GNU通用公共许可证第二版或更新发布,但加入了一个字体嵌入的例外条款(在文件中嵌入字体并不构成违反许可协议的条件)。

GNU Unifont
样式Unicode等宽点阵
设计师Roman Czyborra, Paul Hardy
创造日期1998
发表日期2021年2月13日,​3年前​(2021-02-13
许可GNU通用公共许可证
查看全部字符
网站unifoundry.com/unifont.html 编辑维基数据链接

它在2013年10月成为了GNU软件包。

状态

Unicode基本多文种平面涵盖了216 = 65,536 个码位,其中2048个是保留给特殊用途的代理对,6400个保留给私人用途,剩余大约57,000个码位可供分配。其中多数码置都已分配字形,而一些特殊的码位没有。

截至2013年10月 (2013-10),GNU Unifont已经完整涵盖了Unicode 6.3版定义的基本多文种平面。

平面中,中日韩统一表意文字大约有20,000个,字形取自文泉驿的Unibit字形(获得许可)[1]

.hex字体格式

GNU Unifont 的 .hex 格式定义了它的字形大小,宽度8或16像素,高度为16像素。多数西方字母的宽度定义为8像素,而其他语言的字母(特别是中日韩文字)通常是16像素。

unifont.hex文件的每一个字形都包含一行。每行都包含四位数的Unicode十六进制码位,一个冒号及点阵字符串。一个宽度为8像素的字母的位串有32个十六进制的位数,而宽度为16像素的字母的位串有64个十六进制的位数。

一个在位元字符串中'1'的位元对应到一个'开'的像素。像素位元由上到下,由左到右存储。

然后字体会转换成BDF格式的文件以在X窗口系统上使用。

示例

 
汉语日语示例

这是包含了一个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指令稿按照上述的一行字形定义产生以下的输出:

这可以在文本编辑器中编辑,再使用同样的工具转换回十六进制的字符串。其目标是创造一个中间格式以方便加入新字形。

向量

Luis Alejandro Gonzalez Miranda写了指令稿以进行向量化及使用FontForge转换BDF格式(unifont.bdf)至TrueType格式[2]。Paul Hardy调整了这些指令稿以处理最新的TrueType版本的组合字母,像是重音符号等[3]

历史

Roman Czyborra在1998年创造了Unifont格式[4],更早期的可以追溯至1994年。

2008年,Luis Alejandro González Miranda写了把这个字体转换成TrueType字体的程序。Paul Hardy后来修改它以支持在新版TrueType中的组合字母。

最后,理查德·斯托曼在2013年10月接受Unifont成为一个GNU软件包。Paul Hardy是它的维护者。

参考资料

  1. ^ Wen Quan Yi: Spring of Letters, [2014-07-09], (原始内容存档于2013-11-12) 
  2. ^ GNU Unifont in TrueType format, [2014-07-09], (原始内容存档于2009-03-07) 
  3. ^ GNU Unifont Glyphs, [2014-07-09], (原始内容存档于2013-11-12) 
  4. ^ Roman Czyborra's GNU Unifont page. [2014-07-09]. (原始内容存档于2011-08-27). 

外部链接