基于OpenType技术的方块苗文字库研究

2015-04-21 09:26莫礼平周恺卿蒋效会
中文信息学报 2015年2期
关键词:字库合体方块

莫礼平,周恺卿,蒋效会

(1. 吉首大学 信息科学与工程学院,湖南 吉首 416000;2. 马来西亚理工大学 计算学院,马来西亚 柔佛州 士古来 81310)



基于OpenType技术的方块苗文字库研究

莫礼平1,周恺卿2,蒋效会1

(1. 吉首大学 信息科学与工程学院,湖南 吉首 416000;2. 马来西亚理工大学 计算学院,马来西亚 柔佛州 士古来 81310)

方块苗文是民间苗文的代表,其信息处理研究对于保护民间苗族文化遗产和弘扬苗族文化有着重要意义。字库开发是方块苗文信息处理研究内容的重要部分。根据方块苗文字库开发的实际需要,该文以文字结构分析为基础,提出了基于Unicode标准的方块苗文编码方案设计思想,介绍了方块苗文字符字模制作的基本步骤,并以标签定义、操作符定义和变换规则定义为重点,探讨了基于OpenType技术的方块苗文字库设计和开发的方法。测试结果表明,方块苗文OpenType字库具有文件小、易扩充等优点,能够解决英文、汉字和方块苗文的混排问题。

方块苗文; Unicode标准;字符编码;OpenType技术;字库

1 引言

方块苗文是清朝末年以来一些苗族知识分子为了发展苗族文化教育事业而创制的一种仿汉字结构的文字,是民间苗文的代表。据文献[1-2]记载,方块苗文分为三套: 老寨苗文、古丈苗文和板塘苗文。其中,板塘苗文有着较好的群众基础,当地人们至今还用它创作、记录苗歌,基于板塘苗文的文学创作开创了现代苗语书面文学的先河。板塘苗文创制者曾编写了一册《苗文字正谱》(此书已佚失),其中收录了1 000多个板塘苗文。赵丽明和刘自齐先生从数十万苗文歌本和剧本中挖掘和整理出近500个板塘苗文、100个左右老寨苗文。撰写于清朝光绪丁未年的《古丈坪厅志》中共记录了100多个古丈苗文。目前,方块苗文的收集整理工作还在继续进行中。

20世纪80年代初至今,以藏文、维吾尔文、蒙古文等为代表的少数民族文字信息处理研究进展迅速,研究成果得到广泛应用,并产生了巨大的社会效益和经济效益。然而,迄今为止,国内苗文信息处理研究非常稀少。见诸报道的仅有文献[3]中提到的余乐教授等人于1988年研制的计算机苗文处理系统和吴光州等人于1994年研制的云南规范苗文计算机处理系统。这两个系统的功能仅限于DOS操作系统下对基于拼音字母的云南苗文进行简单的编辑排版,适应不了当今的Windows操作系统和网络环境,不能处理方块苗文,无法满足武陵山片区民族文化旅游产业发展和非物质文化遗产保护对方块苗文数字化的需求。

字库是方块苗文信息化需要解决的首要问题。本文探讨基于Unicode编码标准和OpenType字形技术的方块苗文字库的设计和开发方法。

2 方块苗文的结构分析

2.1 方块苗文结构特点 方块苗文由民间个人自创,故不定形、不定体,因使用者个人而异,但坚持一个“取个人认为最易认易记的汉字作为代表符号”的原则[2]。实际当作构件使用的通常是一些日常使用频率较高,且结构或笔画较简单的汉字(或汉字偏旁),以及个别无音无义的纯粹符号(如“~”、“X”)。

方块苗文的结构特点和造字方法与汉字基本一致,以假借汉字为主,创造性地运用了形声、会意、假借、象形等手段,直接将汉字作为义符、声符或形符构件,采用一字一音节的方法来标记一个语素或词。方块苗文通常是两个或三个构件组成的合体字,以二构件型为主,其结构大致包括图1中字例所示的四种:左右结构(很多)、上下结构(较多)、侧围结构(较少)、内外结构(极少)。

图1 不同结构的方块苗文字例及其汉义

本文将独体字和作为构件的汉字、偏旁及符号称为方块苗文名义字符。考虑到三个构件合成的方块苗文以及内外结构方块苗文的数目极少,可将其视为独体字处理。根据方块苗文名义字符在合体字中可能显现的情况,定义如下五种方块苗文显现字符。

(1) 左右构件型显现字符:名义字符作为左右结构合体字的左部或右部构件时的显现形式。

(2) 上下构件型显现字符:名义字符作为上下结构合体字的上部或下部构件时的显现形式。

(3) 内侧构件型显现字符:名义字符作为侧围结构合体字的内侧构件时的显现形式。

(4) 外包构件型显现字符:名义字符作为侧围结构合体字的外包构件时的显现形式。

(5) 独体字显现字符:对独体字直接定义其整体的显现形式。

注意: 当一个汉字作为内外结构方块苗文合体字构件时,其显现形式不再单独定义为显现字符。

2.2 方块苗文组合方案

表1 源自文献[1-2]的41个可用于苗文构件的代表性汉字列表

编号汉字编号汉字编号汉字编号汉字编号汉字1己11一21白31口41米

续表

2.3 方块苗文组合示例

取汉字偏旁“扌”或从表1中取“乙”、 “口”作左构件,取“一”至“十”作右构件,动态组合可得到方块苗文中表示数字的三组文字;从表1中取“色” 作左外包构件,取“白”、“黑”等作右内侧构件,动态组合可得到方块苗文中表示颜色的一组字;从表1中取“雨”作上构件,取“气”、“风”、“白”等作下构件,动态组合可得到方块苗文中表示空气、风、雪等天气的一组字。

3 方块苗文的编码方案设计思想

方块苗文编码的最简单方法是在汉字GB2312或GBK标准中占用汉字的位置或保留区来存放方块苗文字符。但是,此种编码方案不利于实现苗汉混排。Unicode标准[4]支持世界上所有语言的编码和转换,将全世界所有主要文字和符号统一到了一个字符集中,为每个字符提供一个唯一的特定数值,克服了传统字符编码方式无法同时处理混合多种语言的局限性。所以,方块苗文可选择基于Unicode字符集的编码方案,将方块苗文字符存放于Unicode字符集基本多文种平面 (Basic Multilingual Plane,简称BMP)区中预留的用户自定义区域E000—F8FF。

由于方块苗文以合体字为主,合体字又以基本汉字、偏旁及符号作为构件,且构件数目不多,开发方块苗文字库时可以直接使用能够自行解决字符显示化选型问题的OpenType技术。因此,只需对方块苗文名义字符(独体字和构件)按照BMP 编码格式进行编排,不必对方块苗文的各种变形显现字符(显示或打印输出时需要用到的方块苗文字符)逐一编码。这样可达到节省大量编码空间的目的。

4 方块苗文字符的字模制作

开发方块苗文OpenType字库之前,需要先制作字模。本文针对从文献[1-2]中整理出的方块苗文名义字符及它们可能呈现的五种显现字符设计字稿,并使用图像处理软件Photoshop CS5和字体制作软件Font Creator Program 6.0来制作字模。

4.1 字稿图像预处理

在Phtoshop CS5中,首先需对字稿图像中的字符进行缩放调整和分割,形成独立的苗文字符字模小图片(注:为了保证载入速度,图片不宜太大)。再通过对决定图片亮度的黑白分界阈值进行调整,完成字模图片的二值化处理,生成高对比度的黑白图像。

4.2 轮廓提取和边缘净化

使用Photoshop CS5的磁性索套或魔术棒提取当前苗文字符字模图像中字符粗略的完整轮廓,再用智能边缘侦测命令,根据图像背景范围调节智能边缘半径(取45~50之间的值比较合适),完成字符轮廓的精确提取。个别背景颜色纯度不高的字模图像,可运用半径调整及抹除调整等工具进行手动处理。

如果提取到的字符边缘有杂色边,还可以借助平滑、羽化、对比度及移动边缘等参数进行细节调整。若个别字符边缘存在轻微半透明颜色,还需做颜色净化处理(通常将净化率设置为80%即可去除半透明色)。净化处理后的字模小图片即可保存为独立图像小文件。

4.3 字模矢量化

在Font Creator Program 6.0软件中导入方块苗文字符字模图像,按如下步骤生成矢量化的字形数据,并保存为TrueType字体文件。

(1) 以“方块苗文”为名,新建一个基于Unicode字符集的TTF文件。

(2) 导入一个字模图像,调整该字模字符位置,修改字形轮廓。调整时,注意保持字符与汉字、英文数字等符号在字号、字体、基线位置标准、线条粗细大小等方面的一致性。

(3) 将字符从字形轮廓模式转换为节点模式,通过节点调整完成字形轮廓的细节修改。

(4) 验证字模,并按照验证报告和字符显示效果调整参数值,直到验证无误且达到所需的字形轮廓精度为止。关闭编辑窗口,确定此字模字符为当前Unicode编码位置的方块苗文字符。

重复步骤(2)~(4),导入其余字模图像,确定其他编码位置的苗文字符。最后,对当前TTF文件进行测试和调整修改,直到TTF文件中的所有字符都比较整齐规范为止。

5 方块苗文OpenType字库的开发

5.1 技术原理 方块苗文字库采用OpenType技术开发。OpenType技术[5-7]是一种支持 Unicode 字符集的、开放式的、可扩充的字形描述技术,不但支持传统的TrueType体系结构,而且融合了 PostScript技术,增加了处理复杂文本的高级排印功能。OpenType 字体格式允许在字符之间建立映射以灵活控制字体,为复杂文本字体的高质量显示和打印、字形的自由变换和任意缩放处理提供了捷径。目前,藏文[8-9]、蒙古文[10]、维哈柯文[11]等民族文字OpenType字库已经应用于Windows、Linux操作系统和网络环境中。

OpenType字库的开发主要通过规划和设置不同的布局表来完成。OpenType 布局表由字形定义(GDEF)表、字形替换(GSUB)表、字形置位(GPOS)表、字形调整(JSTF)表、基线数据(BASE)表等多张表构成。其中, GSUB和GPOS表包含了字形替换和位置特征相关的全部信息,几乎覆盖了所有复杂文本的处理要求。OpenType对布局表的访问按照“文字→语言系统→相应特征→查找数据”的流程进行,通过文字(Script)、语言(Language)和特征(Feature)三类标签来实现。Feature标签用于定义语言系统所要求的字形替换和置位特征,OpenType技术的高级排版特征通过Feature标签实现。Script、Language、Feature标签及Feature标签的查找(Lookup)偏移量,皆以子表形式存放在GSUB表和GPOS表中。GSUB 表包含若干并列的Feature 表。每张Feature表又包括一张或多张Lookup 子表。Lookup 子表完成从名义字符到显现字符的映射功能,以及各种不同字形的显现字符之间的替换功能。

开发OpenType字库的关键是如何根据文字的结构特征定义Feature标签,以及如何抽象和定义各种替换和置位操作的类型规则。

方块苗文OpenType字库采用Microsoft 的 OpenType字体布局工具VOLT[12]开发。在VOLT中打开方块苗文TTF文件,规划和设置OpenType布局表,在布局表中定义Script、Language、Feature三类标签,根据方块苗文字符位置布局、组合布局及替换操作的实际需要,定义相应操作符和字形变换规则,使用 OpenType 脚本语言描述这些规则。

5.2 标签定义

方块苗文OpenType字库的Script标签定义为SqHmongLanguage ,Language标签取默认值Default,Feature标签定义如下:

(1) 左右构件形式替换特征标签(LeftRightParts): 定义构件型名义字符到左右构件型显现字符的映射关系表。

(2) 上下构件形式替换特征标签(UpDownParts): 定义构件型名义字符到上下构件型显现字符的映射关系表。

(3) 侧围构件形式替换特征标签(HalfIncludeParts): 定义构件型名义字符到外包构件型显现字符及内侧构件型显现字符的映射关系表。

(4) 上下文替换特征标签(ContextualAlternates): 该标签中主要定义控制符的处理。当一个显现字符后面跟有控制符时,该字符根据控制符按照规则映射为另一个变形显现字符。中定义两个变形显现字符之间的映射关系表。

(5) 左右合体字形式特征标签(LRLigature ): 定义左右或侧围结构合体字的合成映射关系表。

(6) 上下合体字形式特征标签(UDLigature ): 定义上下结构合体字的合成映射关系表。

5.3 操作符定义

为了方便对方块苗文字符的位置布局、组合布局及字形替换相关操作进行描述,用X、Y、Z、V、W表示字符,可定义如下18个操作符。

(1) Location(X,Pos): X在合体字中的位置。Pos为枚举变量,其值为{LeftRight,UpDown,Isolated}。LeftRight表示X位于合体字左部或右部(注意: 如果X是左右结构合体字的左部构件或侧围结构合体字的外包构件,则视为X位于合体字的左部;如果X是左右结构合体字的右部构件或侧围结构合体字的内侧包构件,则视为X位于合体字的右部);UpDown表示X位于合体字的上部或下部;Isolated表示X作为独体字出现。

(2) Before(X,Y): X位于Y的前面。

(3) Up(X,Y): X位于Y的上面。

(4) LeftRight(X): X显现为左右构件型显现字符形式。

(5) UpDown (X): X显现为上下构件型显现字符形式。

(6) HalfIncludeIn(X): X显现为内侧构件型显现字符形式。

(7) HalfIncludeOut(X): X显现为外包构件型显现字符形式。

(8) Isolated(X): X显现为独体字显现字符形式。

(9) LRLigature(X,Y): X和Y 组成的左右结构或侧围结构合体字的显现形式。

(10) UDLigature(X,Y): X和Y组成的上下结构合体字的显现形式。

(11) Variation(X): X的自由变体显现形式。

(12) IsControler(X): X是控制符。

(13) IsHalfIncluderIn(X): X是侧围结构合体字的内侧构件字符。

(14) IsHalfIncluderOut(X): X是侧围结构合体字的外包构件字符。

(15) CanBeLig(X,Y): X和Y可以组成合体字形。

(16) Combine(X,Y): 将X和Y组合为合体字。

(17) Shape(X): 根据X所处位置的不同显示X的不同显现形式。

(18) Viriate(X,Y): 在控制符 Y 的作用下,显示 X的变体显现形式。

5.4 变换规则定义

方块苗文字符字形变换规则在各个Feature标签的Lookup映射关系表中定义。为了方便描述,下面以谓词形式给出方块苗文字符字形的替换和置位操作的相关规则。

5.4.1 位置关系判断规则

规则1至规则3用于判断某个字符在方块苗文中的位置。例如,规则1表示: 当X前无任何字符且X后紧跟一个字符,或X后无任何字符且X前存在一个字符时,如果X的上下方均无任何字符,则X位于合体字的左部或右部。

规则1 (∀X)Location(X,LeftRight)←((((∀Y)Before(Y,X)∧((∃Z)Before(X,Z)))∨(((∀Y)Before(X,Y))∧((∃Z)Before(Z,X)))∧((∀Y)Up(Y,X))∧((∀Y)Up(X,Y)))

规则2 (∀X)Location(X,Updown)←((((∀Y)Up(Y,X)∧((∃Z)Up(X,Z)))∨(((∀Y)Up(X,Y))∧((∃Z)Up(Z,X)))∧((∀Y)Before(Y,X))∧((∀Y)Before(X,Y)))

规则3 (∀X)Location(X,Isolated)←(((∀Y)Up(Y,X))∧((∀Z)Up(X,Z))∧((∀V)Before(V,X))∧((∀W)Before(X,W)))

5.4.2 显现形式判断规则

规则4至规则8用于判断某个字符显示为何种显现形式。例如,规则4表示: 当X位于合体字的左部或右部,且X不是侧围结构合体字构件字符,且X后不跟任何控制符时,以左右构件型显现字符形式显示X。

规则4 (∀X)(Shape(X)→(LeftRight(X)←Location(X,LeftRight)∧IsHalfIncluder(X)∧((∀Y)(Before(X,Y)∧IsControler(y)))))

规则5 (∀X)(Shape(X)→(UpDown(X)←Location(X,Updown)∧((∀Y)(Before(X,Y)∧IsControler(Y)))))

规则6 (∀X)(Shape(X)→(Isolated(X)←Location(X,Isolated)∧((∀Y)(Before(X,Y)∧IsControler(Y)))))

规则7 (∀X)(Shape(X)→(HalfIncludeIn(X)←Location(X,LeftRight)∧IsHalfIncluderIn(X)∧((∀Y)(Before(X,Y)∧IsControler(Y)))))

规则8 (∀X)(Shape(X)→(HalfIncludeOut(X)←Location(X,LeftRight)∧IsHalfIncluderIn(X)∧((∀Y)(Before(X,Y)∧IsControler(Y)))))

5.4.3 字符组合和控制变换规则

规则9、10用于确定如何将两个字符组合为一个合体字。例如,规则9表示: 当X位于Y前面,且X和Y能组成合体字,则将X和Y组成左右结构或侧围结构的合体字显现形式。

规则9 (∀X)(∀Y)(Combine(X,Y)→(LRLigature(X,Y)←Before(X,Y)∧CanBeLig(X,Y)))

规则10 (∀X)(∀Y)(Combine(X,Y)→(UDLigature(X,Y)←Up(X,Y)∧CanBeLig(X,Y)))

下面的规则11是控制变换规则,表示当X后跟有控制符Y时,将X以Y作用下的变体显现形式进行显示。

规则11 (∀X)(∀Y)(Viriate(Y,X)→(Viriation(X)←Before(X,Y)∧IsControler(Y)))

除上述规则外,Lookup映射关系表中还可以设置转换条件。当满足条件的字符超过两个时,可以将它们建成组。

5.5 脚本编写

在GSUB 表中建立好对应于各个操作符的属性后,需根据前述替换和置位操作相关规则设计并编写字形替换脚本和连字组合脚本。字形替换脚本以方块苗文名义字符的编码为基础,列出每个名义字符位于合体字不同位置时所对应的各种变形显现字符的代码。连字组合脚本以名义字符的各种变形显现字符代码为基础,列出两个变形显现字符连续出现时自动组合成一个方块苗文合体字的显现字符的代码。

借助VOLT,将方块苗文标签和文本特征描述信息、字形替换脚本和连字脚本信息、替换特征对应的映射变换脚本信息等,分类添加到ScriptList和FeatureList、LookupList表中。可以通过“Edit Glyphs”命令项查看和编辑字形字符在字库中的位置编号,使用“Edit Lookup”命令编辑和修改不同字形字符组合为合体字字形的脚本信息。

5.6 字库生成和测试

将文件编译并保存为带脚本的 OpenType 字体文件,添加上 Unicode 编码,即形成方块苗文OpenType 字库。在VOLT中完成初步测试后,将字库安装到 Windows XP操作系统,使用Word软件进行字形替换及连字组合脚本测试,以及英汉苗三种文字混排时的中线基线位置、线条粗度、字号大小的匹配测试。测试发现的问题通过重新调整字模和修改脚本基本得到解决。最后,在Word软件中进行实用测试。将输入的不同结构的多个方块苗文插入到英文、汉字及数字共同构成的混合字串中,以华文行楷常用字号、小字号和大字号显示输出的效果如图2所示。由图2可见,该方块苗文字库基本能够解决方块苗文同英文、汉字的混排问题。

图2 方块苗文输出效果

6 结束语

方块苗文OpenType字库仅需存储方块苗文的构件字符和独体字符,具有文件小的优点。而且,OpenType技术支持的开放性和可扩充性,允许人们根据需要对字库内容进行补充和完善。在今后方块苗文收集整理工作中,遇到首次出现的方块苗文新构件时,只需在字库中增加新构件对应的名义字符,并补充新构件处于合体字不同位置时对应的显现字符的定义。随着苗文民间收集整理工作的全面进行,方块苗文OpenType字库所包括的名义字符数目将逐渐增加,各个名义字符对应的显现字符以不同风格进行变体显现的功能也将逐步得到补充和完善。

[1] 赵丽明,刘自齐. 湘西方块苗文[J].民族语文, 1990, 1:44-49.

[2] 龙德义.计算机苗文处理系统研制成功[J].今日民族,1995,5:16.

[3] 杨再彪,罗红源.湘西苗族民间苗文造字体系[J]. 吉首大学学报(社会科学版),2008,29(6):130-134.

[4] Unicode Consortium. The Unicode Standard: A Technical Introduction [EB/OL]. http://www.unicode.org/standard /principles.html,2012-10-04.

[5] Microsoft Corporation. OpenType specification version 1.6 [EB/OL].http://www.microsoft.com/typography/otspec,2009-09-21.

[6] 肖明,胡金柱,赵慧. 字形技术及OpenType字体文件格式研究[J].中文信息学报,1999,13(6):53-59.

[7] 董治江,吴健,钟义信.在ICU中实现少数民族文字处理[J].中文信息学报,2004,18(2):66-72.

[8] 曹晖. 藏文 OpenType 字体技术研究及实现[J].西北民族大学学报(自然科学版),2008,29(3):24-28.

[9] 芮建武,吴健,孙玉芳.基于ISO/IEC10646标准的藏文操作系统若干问题研究[J].中文信息学报,2005,19(5):59-65.

[10] 姚延栋,吴健,孙玉芳,等. 传统蒙古文变形显示机制研究与实现[J].中文信息学报,2005,18(5):84-89.

[11] 苏国平,缪成,夏国平.基于Open Type的维哈柯文自动选形引擎的设计与实现[J].中文信息学报,2007,21(4):116-121.

[12] Microsoft Corporation. Visual OpenType Layout Tool (VOLT)[EB/OL]. http://www.microsoft.com/typography/VOLT.mspx, 2009-01-15.

Research on Square Hmong Language Characters Fonts Based on OpenType Technology

MO Liping1, ZHOU Kaiqing2, JIANG Xiaohui3

(1. College of Information Science and Engineering, Ji Shou University, Jishou, Hunan 416000,China; 2. Faculty of Computing,Universiti Teknologi Malaysia,Skudai Johor 81310,Malaysia)

Square Hmong language characters are typical representative of the folk Hmong language characters. The research on square Hmong language characters information processing is of great significance for protecting folk Hmong cultural heritage and carrying forward Hmong culture. Fonts development is an important part of the above research. According to the actual demand of the fonts development for square Hmong language characters, taking structure analysis as the foundation, the design idea for square Hmong language characters encoding scheme based on the Unicode standard was proposed, and the basic steps of making matrix fonts were introduced. Focusing on the labels definition, operators definition and transformation rules definition, the methods of designing and developing the square Hmong language characters fonts based on OpenType technology were discussed. Test results illustrate that the square Hmong language characters OpenType fonts file has the advantages of is small, easy to expand, etc., and can solve the hybrid layout problem of English, Chinese and the square Hmong language characters.

square Hmong language characters;the Unicode standard; character encoding; OpenType technology; fonts

莫礼平(1972-),硕士,高级实验师,主要研究领域为语言文字信息处理、Petri网理论及应用等。E⁃mail:zmx89@163.com周恺卿(1984-),博士研究生,主要研究领域为模糊Petri网、语言文字信息处理等。E⁃mail:jsu_computer@163.com蒋效会(1978-),硕士,讲师,主要研究领域为语言文字信息处理、数据挖掘、数据库技术等。E⁃mail:nullspace@qq.com

1003-0077(2015)02-0150-07

2013-01-14 定稿日期: 2013-06-28

湖南省教育厅青年项目(No:10B088)

TP391

A

猜你喜欢
字库合体方块
硬汉合体
有多少个方块
不一样的方块桥
No.2 喜茶联合汉仪字库推出微型书和书签
为了定居火星,人类可与水熊虫“合体”?
谜题方块
论计算机字库单字的著作权保护
——以方正诉宝洁案为例
老家的惜字库
“止”字变合体
字库之战