CN102768655B - 基于java的蒙古文显示方法 - Google Patents
基于java的蒙古文显示方法 Download PDFInfo
- Publication number
- CN102768655B CN102768655B CN201210091390.9A CN201210091390A CN102768655B CN 102768655 B CN102768655 B CN 102768655B CN 201210091390 A CN201210091390 A CN 201210091390A CN 102768655 B CN102768655 B CN 102768655B
- Authority
- CN
- China
- Prior art keywords
- mongolian
- font
- characters
- glyph
- character
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000006870 function Effects 0.000 claims abstract description 20
- 238000013507 mapping Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 6
- 238000007689 inspection Methods 0.000 claims description 3
- 230000010365 information processing Effects 0.000 abstract description 5
- 238000011160 research Methods 0.000 abstract description 2
- 238000011161 development Methods 0.000 abstract 1
- 230000018109 developmental process Effects 0.000 abstract 1
- SVTBMSDMJJWYQN-UHFFFAOYSA-N 2-methylpentane-2,4-diol Chemical compound CC(O)CC(C)(C)O SVTBMSDMJJWYQN-UHFFFAOYSA-N 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
Landscapes
- Controls And Circuits For Display Device (AREA)
Abstract
本发明公开了一种基于JAVA的蒙古文显示方法,用JAVA语言编写的一个能够提供接口来访问蒙古文OpenType字库的字体引擎。对外表现为输入符合国家标准的蒙古文字母编码串,输出对应的蒙古文变形显现字符图形。该字体引擎是一个相对独立的函数,函数格式为:Font.drawText(text,compatiblePath),text为输入的Unicode字符串,函数输出字形图形到compatiblePath。该函数可以应用在所有支持Java的环境中。本发明应用范围广,有利于蒙古文信息处理的研究与发展。
Description
技术领域
本发明涉及一种蒙古文显示方法,尤其涉及一种基于JAVA的蒙古文显示方法。
背景技术
蒙古文是一种拼音文字。蒙古文中存在的独特的“一音多形,一形多音”现象,使蒙古文被世界公认为信息处理中最复杂的文本。我国从上世纪70年代末就开始了蒙古文信息处理方面的研究工作,那时的蒙古文字符编码没有统一的国际或国家标准,一般都使用开发者自定义编码。随着国际标准ISO/IEC10646和国家标准GB13000的制定,蒙古文字符有了统一的标准编码。如何在信息处理中应用蒙古文国际或国家标准编码,越来越受到重视。在现行的国际或国家标准中,蒙古文字母是按照读音确定的。但是蒙古文单词的书写和其它拼音文字有很大区别,蒙古文单词在书写时,不是按国际或国家标准中定义的蒙古文字符显现的,而是由这些字母的变形显现字符显现的。通常把在国际或国家标准中定义的蒙古文字符称为“名义字符”,把用于显现的“名义字符”的变形字符称为“变形显现字符”。大多数“名义字符”都有2个以上的“变形显现字符”,最多可达9个“变形显现字符”。每个“名义字符”的形状不同,但不同的“名义字符”所对应的“变形显现字符”的形状却有字形相同的显现。如字母的变形有字母的变形有如果不考虑相同字形,仅按照每个“名义字符”对应的“变形显现字符”计算,总共156个“名义字符”对应的“变形显现字符”的数量可达近1000个。根据蒙古文构词语法,构成蒙古文单词的字母的形状在词的不同位置(词首、词中、词末)其形状有所不同;与其相邻的字符不同,其形状也可能不一样。还有些字符在单词中相邻时,会产生一种组合式变形,成为合体字。如后接会组合成(词中)或(词末)。因此,在使用蒙古文标准编码时,必须明确“名义字符”在单词中出现时应该使用哪个“变形显现字符”,同时更为重要的是要有一个能够正确解释这些复杂变换的引擎。
现有技术中,在Linux系统中使用一个称为Pango的函数库来实现复杂文本的显示,该技术使用解析OpenType字库的方法实现上述功能。该技术只可应用于Linux平台,并且尤其重要的是:该技术不支持蒙古文的显示。
发明内容
为了解决上述技术问题,本发明提供一种基于JAVA的蒙古文显示方法,主要是通过一种能够解析蒙古文Opentype字库名义字符和变形显现字符映射规则的处理引擎实现的。利用该引擎可在支持JAVA程序运行的手机及其它移动设备上使用符合国际或国家标准编码的蒙古文,进而实现移动设备和计算机间蒙古文信息的直接交换。
其技术方案如下:
一种基于JAVA的蒙古文显示方法,包括以下步骤:
建立蒙古文字体引擎,所述字体引擎是一个相对独立的函数,函数格式为:Font.drawText(text,compatiblePath),参数text为输入的国标码字符串,函数输出字形图形到compatiblePath;
提供接口来访问蒙古文OpenType字库的字体引擎:
将所述蒙古文字体引擎引入到应用程序中,并实现用于绘图的Path接口,调用Font.drawText(text,compatiblePath)函数后,自动生成符合当前应用环境的字体图形,将其绘制到需要的位置即可。此外,调用者可以使用该环境下任意可行的方法对获得的图形进行旋转、缩放、及任意的字体变形,由于图形的特性,这些变换不会对字形质量带来任何影响,这可以充分满足用户的任意排版需求。
字符属性标注:
字符到字形编号的映射:在字体文件中包含一张称为cmap(字符映射)的数据表,包含每一个字符和它对应的默认字符之间的匹配关系;
字形替换:第一步是查找要替换的那个或那些字形,第二步是执行替换;
字形绘制:定义一个绘图接口将绘图工作抽象为若干待实现的函数,填充字形时使用“奇偶规则”填充,即完成字形绘制工作。
本发明确定字形中的一点是否被填充的方法为:以考察点为起点,引一条射线(方向任意),初始化计数器为0,当射线穿越轮廓时(无论方向如何),计数器加1,最终当计数器为奇数时填充该点。
现代字体使用轮廓描述,绘制字形时只需绘制出轮廓,再为轮廓填充颜色。由于在不同的应用环境中图形绘制的方法不尽相同,所以这里定义一个绘制图形的接口,这个接口只定义了绘制直线、曲线等基本绘图方法。实现此接口一般只需直接调用该环境下的对应方法即可。填充字形时使用“奇偶规则”填充,即完成字形绘制工作。其中确定字形中的一点是否被填充的方法如下所述:以考察点为起点,引一条射线(方向任意),初始化计数器为0,当射线穿越轮廓时(无论方向如何),计数器加1,最终当计数器为奇数时填充该点。
本发明的有益效果:
本发明可应用于支持Java程序运行的手机、移动设备,甚至网络环境中,能够实现按蒙古文国际或国家标准编码存储、显示、输出蒙古文字,实现手机等移动设备与计算机之间、移动设备之间蒙古文信息的直接交换。可以有利于蒙古文信息处理的研究与发展,有利于增进各民族之间的交流。目前大多数手机都支持Java技术,因此本发明有广泛的应用环境与潜质。
附图说明
图1为本发明字体引擎处理流程图;
图2为本发明替换规则逻辑结构图。
具体实施方式
下面结合附图和具体实施方式对本发明的方法作进一步详细地说明。
由于蒙古文词中普遍存在的“一音多形,一形多音”现象,使得对蒙古文的处理相对其它文字要复杂的多。蒙古文字符的字形会随着其在词中位置的不同而变化,且多数变化有一定的规律性,有些变化规律存在二义性,可以通过专用控制符加以区别。通常人们对字库的理解是字库中仅包含字符形状的数据及其对应的编码,程序把字符编码送入字库,字库返回对应的字形数据。蒙古文Opentype字库中不仅存放字符的字形数据和名义字符编码,同时还包括蒙古文名义字符和其变形显现字符间的映射关系的描述,其中只有名义字符才有编码,变形显现字符是没有编码的。每个名义字符在词的不同位置使用哪个变形、一个字符后接某个字符或接哪些字符(串)后使用哪个变形、一个字符在词中强制使用哪个形状等都需要给出完备的信息描述。
图1是本发明的处理流程示意图。本发明是用JAVA语言编写的一个能够提供接口来访问蒙古文OpenType字库的字体引擎。它对外表现为输入符合国家标准的蒙古文字母编码串,输出对应的蒙古文变形显现字符图形。该字体引擎是一个相对独立的函数,函数格式为:Font.drawText(text,compatiblePath),text为输入的国标码字符串,函数输出字形图形到compatiblePath。该函数可以应用在所有支持Java的环境中。首先读入要绘制的字符串,分析输入的字符串,确定其中各个字符的属性,并对其进行标注;再将字符编码映射到字形序号;然后根据字体替换规则及第一步标注的字符属性,将组成字符串的各个字形变成正确的形式;最后将需要的字形绘制输出。这样就完成整个处理过程。
技术实现方案如下:
字符属性标注:在蒙古文中,字母会随着它出现在词中的位置不同而有不同的字形,而控制符的加入又使之更加复杂,在将字符转换为默认的字形编号时,其中的一些信息可能会丢失,因此在转换为字形编号之前标注字符的属性,这些属性包括:
SUBST_NODO=1; //非蒙古文
SUBST_MEDI=1<<1;//词中
SUBST_INIT=1<<2;//词头
SUBST_FINA=1<<3;//词尾
SUBST_ISOL=1<<4;//独立体
上面列出的属性值的大小是有意义的。在字形合体替换过程中,字符在词中出现的位置可能会发生改变,因此需要有判定合体之后字形最终属性的方法。规定:(除特殊情形外)参与合体所有字形的最大属性值为合体后字形的属性值。
字符的属性也是对应字形的属性。
例如:字串国标码为“0x1836 0x1821 0x182c 0x1821”,则根据字符所在位置标注属性如表1所示:
国标码 | 0x1836 | 0x1821 | 0x182c | 0x1821 |
属性 | SUBST_INIT | SUBST_MEDI | SUBST_MEDI | SUBST_FINA |
表1
字符到字形编号的映射:字形编号是字形替换的输入数据,也是从字体文件中提取字形轮廓数据的唯一参数,若想进一步处理必须完成这一步转换。
在字体文件中包含一张称为cmap(字符映射)的数据表,它包含每一个字符和它对应的默认字符之间的匹配关系。在逻辑上它是一个数据字典。cmap的逻辑结构为:
所以要完成字符到字形编号的映射只需按照上表一一对应即可。
如上例中执行映射结果可能如表2所示:
国标码 | 0x1836 | 0x1821 | 0x182c | 0x1821 |
属性 | SUBST_INIT | SUBST_MEDI | SUBST_MEDI | SUBST_FINA |
字形编号 | 314 | 185 | 255 | 185 |
表2
字形替换:显示传统蒙古文的复杂之处就在于字符在不同的位置有不同的显现形式,某些字符组合在一起又会有不同的形式,这使用字形替换来实现。
所谓字形替换就是将某个或某些字形用某个其他的字形替换。整个替换过程可以分成两步,第一步是查找要替换的那个或那些字形,第二步是执行替换。
字形替换实行规则驱动。字形替换规则的逻辑结构如下所示。
其中执行条件为下列之一:
SUBST_MEDI=1<<1;//字形在词中
SUBST_INIT=1<<2;//字形在词头
SUBST_FINA=1<<3;//字形在词尾
SUBST_ISOL=1<<4;//字形是独立形式
SUBST_ALL=SUBST_MEDI|SUBST_INIT
|SUBST_FINA|SUBST_ISOL;//无论字形是何种形式
前面的4个就是字符属性,最后一个是它们四者的组合。
所谓执行条件成立是指要替换的字形的属性必须与执行条件相符合,若不相符即使满足替换目标描述也不进行替换。
替换目标描述的逻辑结构如下所示:
替换目标描述可表示为:如果当前序列为xxx,前面是xxx,后面跟着xxx,那么就将当前序列替换。
当不关心前面与后面的字形时可将其省略,当替换的目标字形序列为一个字形时又可以简化,由此形成3种变种。有条件的替换,称为Type6;没有条件但表示多对一替换的,称为Type4;没有条件且是一对一替换的,称为Type1。
OpenType字体将所有替换规则组织成GSUB数据表。为了数据的整齐与压缩,OpenType使用图2所示的层次结构保存替换规则。
其中“特性”表示执行条件。
“查找表”包含替换规则数据,根据内容需求使用Type1、Type4或Type6的描述形式。
“子查找表”是替换规则数据实际保存的位置,它有不同的物理存储格式。
在传统蒙古文中使用的特性如表3所示,它们对应的执行条件也列于表中。
表3
字形替换时规则应用的顺序也和上表一样,该顺序不可错乱。
字形替换过程如下所示:
如在上例中可能会涉及以下规则,如表4所示:
表4
则替换结果为:315 190 777
字形绘制:使用轮廓字体TrueType格式,使用1到2阶贝塞尔曲线描述轮廓,这一步与应用环境相关,不同应用环境中绘制图形的方法不尽相同,本发明定义了一个绘图接口(Path)将绘图工作抽象为若干待实现的函数,使本发明可以在不同的应用环境中使用。
其中确定字形中的一点是否被填充的方法如下所述:
以考察点为起点,引一条射线(方向任意),初始化计数器为0,当射线穿越轮廓时(无论方向如何),计数器加1,最终当计数器为奇数时填充该点。
利用本发明的技术方案,可以开发移动设备上的蒙古文应用软件。只要在移动设备上使用符合国家标准编码的蒙古文,就必须使用蒙古文Opentype字库,那么就需要使用本发明来字库中读取、显示(输出)蒙古文。如手机上开发蒙古文电子词典软件,现把按国家标准编码保存的英蒙汉词条文件和蒙古文Opentype字库文件存到手机的存储器中,然后再编写蒙古文输入法及从字库中读取蒙古文和显示蒙古文时都需要使用本发明。其它应用,如接收并发送蒙古文手机短信、使用手机接收并发送蒙古文电子邮件、手机浏览蒙古文网页,在手机上使用蒙古文与计算机网络站点进行文字交互、利用本发明,可以用手机创建、编辑可以使用在其它移动设备、计算机和计算机网络上的蒙古文文件等与电子词典的应用过程类似;另外,本发明也是用于网页上跨平台显示蒙古文的可行方案之一。
Claims (1)
1.一种基于JAVA的蒙古文显示方法,其特征在于,包括以下步骤:
建立蒙古文处理字体引擎,所述字体引擎是一个相对独立的函数,函数格式为:Font.drawText(text,compatiblePath),text为输入的国标码字符串,函数输出字形图形到compatiblePath;
提供接口来访问蒙古文OpenType字库的字体引擎:将所述蒙古文处理字体引擎引入到应用程序中,并实现用于绘图的Path接口,调用Font.drawText(text,compatiblePath)函数后,自动生成符合当前应用环境的字体图形;
字符属性标注:在转换为字形编号之前标注字符的属性,这些属性包括:
字符不是蒙古文字符、字符出现在词的中间、字符出现在词的开始、字符出现在词的末尾、字符独立成词,字符的属性也是对应字形的属性;
字符到字形编号的映射:在字体文件中包含一张称为字符映射的数据表,数据表中包含每一个字符和它对应的默认字符之间的匹配关系;
字形替换:第一步是查找要替换的那个或那些字形,第二步是执行替换;
字形绘制:定义一个绘图接口将绘图工作抽象为若干待实现的函数,填充字形时使用“奇偶规则”填充,即完成字形绘制工作;
在字形绘制中,确定字形中的一点是否被填充的方法为:以考察点为起点,引一条射线,初始化计数器为0,当射线穿越轮廓时,计数器加1,最终当计数器为奇数时填充该点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210091390.9A CN102768655B (zh) | 2012-03-31 | 2012-03-31 | 基于java的蒙古文显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210091390.9A CN102768655B (zh) | 2012-03-31 | 2012-03-31 | 基于java的蒙古文显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102768655A CN102768655A (zh) | 2012-11-07 |
CN102768655B true CN102768655B (zh) | 2015-04-22 |
Family
ID=47096059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210091390.9A Expired - Fee Related CN102768655B (zh) | 2012-03-31 | 2012-03-31 | 基于java的蒙古文显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102768655B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424184B (zh) * | 2013-08-19 | 2018-02-23 | 北大方正集团有限公司 | 生成字形字库的方法和系统 |
CN106469139A (zh) * | 2016-10-14 | 2017-03-01 | 厦门大学 | 基于字形相似度的Unicode传统蒙文规范化方法 |
CN110069766A (zh) * | 2018-01-23 | 2019-07-30 | 北大方正集团有限公司 | 公式的排版处理方法及装置 |
CN111027283A (zh) * | 2019-11-13 | 2020-04-17 | 齐德华 | 一种蒙古文数字化信息处理方法、系统及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101561800A (zh) * | 2009-05-15 | 2009-10-21 | 内蒙古蒙科立软件有限责任公司 | 蒙古文词的字形生成方法 |
CN101694603A (zh) * | 2009-10-20 | 2010-04-14 | 中央民族大学 | 基于Unicode的跨平台蒙古文显示及智能输入方法 |
-
2012
- 2012-03-31 CN CN201210091390.9A patent/CN102768655B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101561800A (zh) * | 2009-05-15 | 2009-10-21 | 内蒙古蒙科立软件有限责任公司 | 蒙古文词的字形生成方法 |
CN101694603A (zh) * | 2009-10-20 | 2010-04-14 | 中央民族大学 | 基于Unicode的跨平台蒙古文显示及智能输入方法 |
Non-Patent Citations (3)
Title |
---|
Proofreader of Mongolian Vocabulary Based on Language Model of Syllabic Statistics;Ochir 等;《2009 International Conference on Asian Language Processing,》;20091209;第217-219页 * |
蒙古文OpenType字体解析;巩政 等;《第十一届全国民族语言文字信息学术研讨会论文集》;20080801;第224-228页 * |
蒙古文显示在OpenOffice.org办公套件中的实现;孟凡强 等;《中文信息学报》;20070509;第21卷(第2期);第117-121页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102768655A (zh) | 2012-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lunde | CJKV information processing | |
JP5380289B2 (ja) | フォントサブセッティングのための方法と装置 | |
US8542235B2 (en) | System and method for displaying complex scripts with a cloud computing architecture | |
CN101271463B (zh) | 版式文件的结构处理方法和系统 | |
CN102662926B (zh) | 字库的存储与访问方法 | |
JP2009545064A5 (zh) | ||
CN104281601B (zh) | 构建超大字库的方法及装置、字符显示方法及装置 | |
CN101114443A (zh) | 二维图形引擎中的点阵字符的缩进方法与中文处理方法 | |
CN102768655B (zh) | 基于java的蒙古文显示方法 | |
CN110474836A (zh) | 一种邮件模板生成方法、装置、计算设备和介质 | |
CN109933751B (zh) | 图文绘制方法、装置、计算机可读存储介质和计算机设备 | |
CN109375962A (zh) | 基于嵌入式操作系统的汉字字符混合输出显示的实现方法 | |
CN114791988A (zh) | 一种基于浏览器的pdf文件解析方法、系统、存储介质 | |
US20070013700A1 (en) | Mobile communication terminal having function of animating input characters | |
CN108389244B (zh) | 一种根据指定字符规则渲染出flash富文本的实现方法 | |
CN108961361B (zh) | 生成特效文字图像的方法及系统、计算机设备 | |
US20140049554A1 (en) | Method of manipulating character string in embeded system | |
US9081529B1 (en) | Generation of electronic books | |
CN106873971A (zh) | 一种flash应用的多语言展示方法和系统 | |
CN105224509A (zh) | 一种生成字体格式的方法及装置 | |
US20060181532A1 (en) | Method and system for pixel based rendering of multi-lingual characters from a combination of glyphs | |
US7370060B2 (en) | System and method for user edit merging with preservation of unrepresented data | |
CN113221506A (zh) | 一种讲义排版的方法、装置、电子设备及存储介质 | |
CN102723067B (zh) | 一种字符显示方法和装置 | |
CN104021026A (zh) | 一种基于Android系统的语言添加方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
DD01 | Delivery of document by public notice |
Addressee: Inner Mongolia University Document name: Notification of Termination of Patent Right |
|
DD01 | Delivery of document by public notice | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150422 Termination date: 20190331 |
|
CF01 | Termination of patent right due to non-payment of annual fee |