2009年8月号
 

【字型技术】

 
 

 

复杂语系都需要Layout Engine?

 
     
     
 

印度文(Hindi)、缅甸文(Myanmar)等复杂语系,他的文字是由左向右排的,由子音和元音以非常复杂的方式组合而成,一般的字型系统是无法处理的。一般的使用者以为Unicode已经定义所有的Hindi字符;事实上,Unicode只定义基本的Hindi字符,如何将Hindi的子音和元音,依照印度文的组字规则,显示出正确的Hindi文字,需要专用的Layout Engine复杂语系组字引擎。

       
 
     
 

以右图Hindi单字为例子,输入同样的Unicode字符,如果没有使用Layout Engine复杂语系组字引擎,就像第1个图,组合出不正确的Hindi。

 

 
 
     
 

另外,像阿拉伯文(Arabic)、波斯文(Farsi)与希伯来文(Hebrew)等由右向左排列的文字,在与英文等由左向右排的文字同时应用时,便需要运用Arphic Layout Engine来做双向文字混合排列 (Bi-directional text layout)。 以阿拉伯文(Arabic)为例子,同一个阿拉伯字符,在不同的句子字义,有前中后3种不同的字符位置表示,如下图,这个字符,可表示前中后3种不同的字符位置。

 
 
 
 

泰文(Thai)也是复杂语系的一种,虽然组字的规则,比Hindi、Arabic简单,但是泰文没有空格符,在显示设备上需要断行时必须由Layout Engine去判断,泰文音节及字汇的何处要做断行。泰文(Thai)文字还有1个特色,它有4个阶层。在字型设计上,无法设计成小尺寸的字型,如果要有清晰的泰文(Thai) 4阶,至少要18 pixel以上,如果显示1个字的LCD Monitor少于18 pixel,某些泰文字型的第1阶会被忽略,就会不容易辨识。

 
   
     
 

复杂语系字型的开发难易度比较

 
 

这些印度文(Hindi)、阿拉伯文(Arabic)、泰文(Thai)、希伯莱文(Hebrew),何者的语系组字方式比较困难。由下列比较表可得知,印度文(Hindi), 孟加拉国文(Bengali), Tamil(泰米尔文), 斯里兰卡文(Sinhala)因为有很多的子音和元音的变化多,组字规则是比较复杂的。最复杂的语系是泰卢固文(Telugu), 缅甸文(Myanmar), 坎那达文(Kannada), 藏文(Tibetan),组字规则最为复杂,字型设计有很复杂。

 
     
 
复杂语系
字型的开发难易度
Thai, Arabic, Hebrew, Farsi

相对比较简单,可以做预先组字需处理由右到左的文字排列。

Hindi, Bengali, Tamil, Sinhala

组字规则比较复杂,子音和元音的变化多需处理由左到右的文字排列。

Telugu, Myanmar, Kannada, Tibetan 组字规则最为复杂,例如:藏文字母可以垂直堆栈,最高可以达到四层(子音),各字母会变扁,需要数千个造字。
 
     
 

Arphic Layout Engine支持的复杂语系范例

 
 

Arphic Layout Engine 系由 ANSI C 规格撰写,可运用在不同平台上,使用者仅需提供 2~2.5K 的内存即可使其运作,绘图时仅需提供 Unicode 字符串 以及 Bitmap Buffer,Arphic  Layout Engine 便可以将字符串输出至 Bitmap Buffer,而使用者可根据其装置特性,再将 Bitmap Buffer 输出至显示器。

以Arphic Layout Engine的印度文(Hindi)模块为例,程序内建支持Hindi文字复杂的组合规则,以105个基本Unicode字符及180个变形的连结字(ligature),组合成超过16,000 个常用 Hindi 字汇。这些Hindi字汇都经过专业的印度人士,逐字检验及核对其正确性。

 
 


印度文使用Arphic Layout Engine的呈现方式

 

 

 
   
     
     
     
   
     
 
文鼎科技开发股份有限公司∣地址:22046 台北县板桥市文化路二段285号30楼
电话:886-2-8259-8356∣传真:886-2-8259-8351
客服专线:TEL:02-8259-8360∣客服信箱:service@arphic.com.tw