国际音标输入软件的设计与实现
2011-06-28刘汇丹
江 荻,刘汇丹,吴 兵
(1. 中国社会科学院 民族学与人类学研究所,北京 100081; 2. 中国科学院 软件研究所,北京 100190;3. 上海师范大学 语言研究所,上海 200234; 4. 西南民族大学 计算机学院,四川 成都 610015)
1 引言
国际音标是记录世界各国语言读音的标音符号系统,也是教学母语和非本族语或外国语言的标音符号。国际音标广泛地用于词典标音、记录语言和方言的读音,也普遍用于语言学、人类学、病理语言矫正、声学语音科学、语言信息处理、排版印刷技术等基础学术或工程应用研究领域[1]。
国际音标软件设计主要涉及输入法和字体[2-3]。本文以蓝蝶国际音标输入法系统(形类,2.0版)*蓝蝶国际音标输入法系统是公益性软件,纯粹由学者及合作者个人研制开发,技术上有一定局限,但目的是服务社会与学界。蓝蝶1.0(音类)于2008年元月发布,蓝蝶2.0(形类)于2010年5月发布,蓝蝶2.5(英文版)于2010年10月发布。[4]为基础,介绍开发适用于记录或标记中国各种语言的国际音标软件,讨论国际音标软件和字库开发的原理和技术问题,目的是服务于学界和学者。
2 国际音标形类输入编码原则
根据国际语音学会拟定的音标符号和Unicode汇集的音标或音标作用的符号,其表示元辅音的音标数目约为200余个(未包括组合型符号),辅助读音附加符号约120余个(尚未计算中国学者使用的约450个五度制声调符号)。面对如此庞大的音标符号数量,键盘输入方法势必采用编码输入法。这是由音标集合数量决定的输入法原则,也意味着音标输入法不可能按照英文字母与键盘对应方法制定。所谓输入编码,指利用现有键盘设计出键钮组合代码,通过击键转换成机内字符代码并实现输入目的。国际音标输入编码操作反映了两个集合的映射,一个是被编码的音标符号集合,一个是音标符号的编码集合。由于音标符号数量较大,这两个集合会呈现出一对多和多对一的映射关系,分别产生重码现象和二义性现象。具体表现在输入过程中存在人工选择音标字符的操作,制约了快速和连续输入的预期。
由于音标集合与音标编码集合之间的复杂映射关系是一种客观存在,可能的解决办法是通过其他技术设计和编码思想来“跳过”或“绕开”有冲突的映射。第3节讨论的高频优先输入设计就是典型的“绕开”策略。这里我们主要讨论输入编码的设计思想,以及有关国际音标分类的方案,合理的分类对输入编码具有根本性的指导作用。
常见的国际音标分类是按照语音性质和语音功能分类,通常分为四大类:元音符号,辅音符号,声调符号,附加符号[1]。每一类又可按照不同特征进一步的下位分类,例如元音可分前元音,后元音,央元音,或者高元音,低元音,中元音等等。我们设计的蓝蝶国际音标输入系统1.0是按照语音音类分类的,这种分类对使用者语言学水平有较高要求,造成用户面的受限性。具体表现为音标符号的键盘布局不够直观,部分音标设置的键位不够合理,用户一时不容易找到音标所在键盘位置。
另一种可能的编码思想是按照国际音标字形设计键盘布局。国际音标字形基本源自西方拉丁字母,二者存在同源性,这是国际音标字形与计算机键盘字母字形可以对应关联的基础,把经过变化和改造的国际音标字形分别归入相应的计算机键盘键位可以帮助记忆,唤起联想,便于操作。以下是蓝蝶国际音标形类输入法制定的字形相似原则,并根据记忆代价分为两大类。
(A) 基本不需要记忆的音标分布键位。这一类指结合日常知识,通过解释规则而无需特别记忆的音标。以下基本字形指26个拉丁字母字形,变形字形归入相应基本字形类。
(1) 字形等同26个拉丁字母(英文)键位的音标直接输入。
(5) 大写字形(即小型大写字母)与小写音标字母归入同类。例如[A]归入[a]。
(9) 弯头字形指基本字形顶端有一个弯曲的钩型笔画,例如[]归入[h],[]归入[b]。
(10) 钩尾字形指基本字形末尾有一个纵向竖勾,例如[ʂ]归入[s]。
(B) 需要略加记忆的音标分布键位。国际音标的变音符号、韵律符号等不能按照字形编码分布键位,蓝蝶音标采用集中类别的办法安排键位,并利用各个类别的汉语表达的拼音首字母分配键位。这一类使用之初略需记忆,又分为常用、选用和备用三类。
(B1) 常用附加符号
(15) 鼻化符号放在B键位(“鼻”的拼音首字母b, shift+b)。
(16) 紧音符号放在J键位(“紧”的拼音首字母j, shift+j)。
(17) 浊音和清音符号放在Z键位(“浊”的拼音首字母z, shift+z)。
(18) 长音、半长音和轻声符号放在C键位(“长”的拼音首字母c, shift+c)。
(19) 送气符号按照国际语音学会规则使用上标小字符,因此放在H键位(shift+h),用表示(清送气和浊送气)。该学会不建议用旧式符号“‘ ”。
(B2) 选用附加符号
(20) 五度制声调符放在W键位(“五”的拼音首字母w,shift+w)。
(21) 圈画声调符号放在Q键位(“圈”的拼音首字母q,shift+q)。
(22) 上标附加符号放在S键位(“上”的拼音首字母s, shift+s),例如西方式声调符号,成音节符号,连音符号,短音符号等。
(23) 下标附加符号放在X键位(“下”的拼音首字母x, shift+x),例如音节性、非音节性、连音、更圆、略展、偏前、偏后、偏高、偏低、擦化、齿化、舌尖性、舌页性、舌唇性、咽化、央化、中央化、气嗓声、哑嗓声、嗫声等。
(24) 连读变调描述符号放在L键位(“连”的拼音首字母l, shift+l),有分隔变调符,交替符,次类调符,次次类调符,右上左括号,右下交替符,右下分隔号,右下左括号,右下右括号等。
(25) 日常(平行)进格符号:出现在音标字母左右侧表示某类读音价值的符号,放置在R键位上(“日”的拼音首字母r,shift+r),这类符号都是非叠置进格型符号,包括交替符、小韵律段(短顿)、大韵律段(长顿)、降阶、升阶、全上升、全下降,柔声、高声、哨声等,数量较多。
(26) 右上标符号(不同于上标符号):出现在音标字母右上角表示某类读音价值的上标符号,放置在K键位上(shift+k),这类符号都是非叠置进格型符号,包括重音符、连字符、分音节符、唯闭符、卷舌符、外挤气符、弱送气符等,数量较多。
(27) 右下标符号(不同于下标符号):出现在音标字母右下角表示某类读音价值的下标符号,放置在M键位上(shift+m),这类符号都是非叠置进格型符号,包括次重音、连字符、卷舌符、短停顿、中—长停顿、长停顿等,数量较多。
(B3) 备用附加符号
(28) 非洲倒吸气音整类放在F键(“非”的拼音首字母f,shift+f)。
(29) 辅音右上标(进格)附加符号,放在V键位(“辅”的拼音首字母V←F,shift+v),这些符号实际已经分布于上述各功能类别,此处集中放置是为了多提供一种输入方法。
(30) 元音右上标(进格)附加符号,放在Y键位(“元”的拼音首字母y,shift+y),这些符号实际已经分布于上述各功能类别,此处集中放置是为了多提供一种输入方法。
(32) 组合符号,国际标准组织(ISO/IEC)和统一码联盟(Unicode)发布的编码标准包括部分组合符号,例如元音基本字形上下添加附加符号的音标,辅音组合形成的音标,输入设计上,这些字符可以多提供一种输入选择,不需要记忆,甚至不一定使用。这些符号是字体文件中已经组合的符号:
3 国际音标键盘输入技术
Windows 系统输入法的原理如图1所示。用户在使用输入法的时候,键盘驱动程序将键盘事件传送给操作系统的user.exe,user.exe再将键盘事件传导给输入法管理器IMM(Input Method Manager,简称IMM),IMM再将键盘事件传给输入法,输入法根据用户编码字典,翻译键盘事件为对应的字符(串),然后再反传到user.exe中,user.exe再将字符(串)传给当前应用程序,从而完成输入。Windows操作系统从最初的95、98发展到现在的XP、Vista、Windows 7等,操作方式和用户体验都有不小的变化,但是输入法的原理却几乎没有任何改变。在编程实现的时候,只需要编写一个动态链接库,实现标准IME接口函数即可。蓝蝶输入法基于此框架实现,理论上可以安装在所有版本的Windows操作系统上。
图1 Windows 系统输入法原理图
蓝蝶输入法支持连续的音标输入,不需要在输入每个字符的时候都按空格键或者回车键,可以直接敲打其他字母键进行连续输入,前一个键的第一个候选字符会被输入到编辑器中去,这将极大地提高输入速度。
蓝蝶输入法采用高频优先的动态键盘技术。在一段较短的时间内,如果一个音标字符被输入了三次以上,它将被自动调整到第一个候选位置。由于国际音标字符总量有数百之多,而每个用户实际使用的音标字符只有几十个,蓝蝶输入法的这种高频优先的动态键盘技术将使输入法最大程度地适应用户的使用习惯。在最初使用的时候,用户需要使用数字键选择候选音标,随着使用的增多,高频的音标都大多被调整到第一候选位置,将不需要使用数字键进行选择,输入速度自然越来越快。
蓝蝶输入法使用两个表实现高频优先的动态键盘技术,一个是键盘映射表,另一个是高频音标表。键盘映射表实现键盘向国际音标的映射,如图2所示,每个Key对应多个国际音标符号,用户在敲击键盘时,输入法查找键盘映射表,并将候选音标按顺序显示在候选窗口中,供用户选择。键盘映射表采用HASH表实现,同其他查找方式相比,HASH查找具有最小的时间复杂度,查找速度最快。高频音标表记录了最近使用的M个音标,并按照使用频次从高到低排序。高频音标表的更新采用最近最久未使用的原则,每次有新的音标要添加到表中时,总是最后一个音标被替换掉。若高频音标表中的某个音标使用频次大于三次,将触发键盘映射表中对应Key的候选音标重排序,该音标将被调整到第一候选位置。
图2 键盘映射表
图3 高频音标表
图4 蓝蝶输入法效果图
蓝蝶输入法与汉字输入法调用方法一样,不必赘言。进入蓝蝶音标输入状态之后,又有国际音标和英文两种输入状态,用户只需单击Shift键即可在两种状态之间切换,方便用户输入英文键盘设置的固有符号,例如“%、&、+、g”等等。输入法状态条和候选窗口的设计美观大方。图4显示了蓝蝶输入法的使用效果。帮助文件(通过点击输入条上的“扳手”调出)采用标准的chm电子书格式制作,包括输入法的介绍、输入法的详细安装指南、使用说明,并附有国际音标使用样例和相关知识,内容翔实。帮助文件的排版格式布局合理,符合普通用户阅读习惯。
蓝蝶输入法的安装程序采用Windows标准的安装向导模式,将所有要安装的文件打包为一个安装文件,用户只需要启动安装程序,跟随向导用鼠标点击几下即可完成输入法和字库的安装,安装之后,蓝蝶输入法自动出现在用户当前的输入法列表中,可以直接使用。
4 国际音标字体技术
蓝蝶国际音标字库设计时,包含了Macintosh Roman和Windows Unicode BMP系统平台,且为系统平台添加了English语言,设定字体名称为IeaUnicode,字形样式为SIL Regular[5]。
蓝蝶国际音标字形以SIL参与修定的Unicode5.2中的标准字形为依据,这种字形美观大方。目前大多数音标字体也同此种字形接近。在设计音标字库中,优先考虑的是字形的整体结构,根据综合分析,音标字形的结构设计为4部分,如图5所示。音标字形的整体宽高比例约为1∶1.94。
图5 音标字形结构图
音标字形主体部分是图中粗线框内部分,即图中标①处,如音标a////设计在这个位置。音标字形的上部位于x-Height到CapHeight之间,即图中标②处,主要用于设计大写字母A-Z和其他音标如i//j/,/等等(主要占据①②部分)。音标字形的底部位于Baseline到WinDescent之间(图中标③处),主要用来设计某些下叠加符号及类似ɡ//j///ç/f//p//这些音标延伸的底部。音标字形的顶部位于CapHeight到WinAscent之间(图中标④处),主要用于放置某些上叠加符号类似ä/ě/ã/ó/ǚ这些音标字形的上叠加符号。
实际设计音标字形时(如图5所示),并非很严格到各部分不能超出一些,因为还涉及到许多视觉心理等等方面的因素。
首先是视觉均衡原则,让所有字符在视觉上对齐,就不能采用同样的物理大小。例如,为使同重心位置的圆形看起来和矩形同样大小,圆形就必须向下略超出基线(Baseline)。如果圆形和矩形物理尺寸一样,圆形看上去就会比矩形小;同样三角形的(三个角)高度就必须大于矩形。否则,三角形看起来就要比矩形小很多。具体设计时,考虑到了线条主体的流线型,这涉及到笔画的走向,充分利用字形Hinting技术,使得音标在小字号时也能美观清晰。
字体风格的统一性涉及到各音标字形的笔画粗细、弯角、笔锋、高矮、胖瘦、黑白对比等较为复杂问题。简而言之,通过初步尝试几套对比,确定一套字形方案,可以确保风格的一致性。
要让操作系统(如WindowsXP)能正确识别字库中的文字编码,需要准确地设定字库所支持的代码页以及Unicode编码区块。蓝蝶国际音标字库支持的代码页主要包括:Latin1, Latin2, Cyrillic, Greek, Turkish, Windows Baltic, Vietnamese, JIS, ChinesePRC, Korean Wansung, Chinese Traditional, Macintosh Character Set, OEM Character Set, Arabic, Hebrew, US等。字符范围主要包括:Basic Latin, Latin-1, Latin-ExtA/B, IPA Extension, Combining Diacritical Mark, Latin Extended Addition, General Punctuation, Superscript & Subscript等区块[6]。这样设计出来的字库可以解决由于缺少代码页或Unicode编码范围不对,而在Word中出现输入音标时乱改变字体名的问题[7]。
在确定字符的整体宽度和字库全局因子Units/EM等因素的情况下,蓝蝶国际音标字库的行距控制,主要通过三组设置:Typo Ascender /Typo Descender /Typo Line Gap;Win Ascent /Win Descent;Ascender /Descender /Line Gap等来设置。一般可尽量压缩Typo Line Gap和Line Gap的参数值测试。我们尽量多地使用不同的文字编辑处理软件,反复评测字体实际使用中的效果,在不断测试中确定各参数值的取值,最终达到风格一致、美观清晰的目的。
关于字符上下叠加技术,虽然可以利用Kerning Pair技术实现,但要实现多个附加符号的叠加难度较大。这时可用OpenType技术来解决这个问题,其特征标记主要通过GSUB(字形替换)和GPOS(字形定位)得到正确的字形和准确的位置,保证音标的正确显示和打印。其中,字形替换支持单个字替换(一对一)、连字替换(多对一)、多样替换(一对多)以及上下文替换(一种字形对多种形式)等不同类型的字形替换。字形定位支持单字调整(如上标/下标或空格的宽度的调整)、双字调整(字距调整)等字形位置的调整。一个音标字符在纵向叠加时,随着不同字符的组合,该字符的位置、大小、甚至形状都可能变化,为了显示和输出的字形美观、实用,把变化时规律性不强的组合字符预先组合在字库中,用“连字替换”把几个音标字形构件映射到一个“预组合”的字形上。这就解决同时有多个附加符号的上(下)叠加问题。
最后应该说明的是,蓝蝶国际音标已植入最新发布的Unicode5.2版音标字符,也包含了部分非国际语音学会颁布的Unicode字符,这些字符是为某些语言已在使用但尚未进入国际音标系统的那些音标符号设置的,例如舌尖元音[]、卷舌元音[]、卷舌边擦音[]、软腭边擦音[]等[8]。还有部分未进入国际音标系统且未取得Unicode编码的字符,例如相当数量的五度制标调符号,这些符号已根据国际标准化组织规定纳入自定义编码区。
国际音标是任何国家或语言族群都可能使用的符号系统,是当代信息化进程中不可或缺的符号体系,也是学者们归纳的中华字符集9类符号中必备的一类符号[9],需要研究和开发。
[1] International Phonetic Association(Corporate Author). Handbook of the International Phonetic Association: A Guide to the Use of the International Phonetic Alphabet[M]. Cambridge:Cambridge University Press, 1999. 中文版(江荻 译): 国际语音学会手册: 国际音标使用指南[M]. 上海: 上海教育出版社, 2008.
[2] SIL international: IPA Transcription with SIL Fonts[EB/OL]. http://www.sil.org/computing/catalog/.2010.
[3] 李龙,潘悟云. 国际音标输入法及其实现[J]. 语言研究, 2006, 26(3): 67-70.
[4] 江荻. 国际音标输入系统及字库[N]. 载: 人文社会科学前沿扫描:语音学与计算语言学篇. 中国社会科学院院报, 2008-06-10(2).
[5] Summer Institute of Linguistics, SIL Fonts Glyph Catalog[M]. Dallas: SIL Printing Arts Department, 1994.
[6] Unicode, Inc. tHE uNICODE sTANDARD, vERSION 5.2.[EB/OL]. http://www.unicode.org/versions/Unicode5.2.0/.
[7] Microsoft Corporation. Input Method Manager(IMM)[EB/OL]. http://msdn.microsoft.com/en-us/library/aa912900(v=MSDN.10).aspx.2010.
[8] 燕海雄,江荻. 国际音标符号的分类、名称、功能与UNICODE编码[J]. 语言科学, 2007(6):6: 82-91.
[9] 李宇明. 搭建中华字符集大平台[J]. 中文信息学报[J], 2003,17(2):1-6.