本发明专利技术公开了一种基于JAVA的蒙古文显示方法,用JAVA语言编写的一个能够提供接口来访问蒙古文OpenType字库的字体引擎。对外表现为输入符合国家标准的蒙古文字母编码串,输出对应的蒙古文变形显现字符图形。该字体引擎是一个相对独立的函数,函数格式为:Font.drawText(text,compatiblePath),text为输入的Unicode字符串,函数输出字形图形到compatiblePath。该函数可以应用在所有支持Java的环境中。本发明专利技术应用范围广,有利于蒙古文信息处理的研究与发展。
【技术实现步骤摘要】
本专利技术涉及ー种蒙古文显示方法,尤其涉及一种基于JAVA的蒙古文显示方法。
技术介绍
蒙古文是ー种拼音文字。蒙古文中存在的独特的“一音多形,一形多音”现象,使蒙古文被世界公认为信息处理中最复杂的文本。我国从上世纪70年代末就开始了蒙古文信息处理方面的研究工作,那时的蒙古文字符编码没有统ー的国际或国家标准,一般都使用开发者自定义编码。随着国际标准IS0/IEC10646和国家标准GB13000的制定,蒙古文字符有了统ー的标准编码。如何在信息处理中应用蒙古文国际或国家标准编码,越来越受到重视。在现行的国际或国家标准中,蒙古文字母是按照读音确定的。但是蒙古文单词的书写和其它拼音文字有很大区别,蒙古文单词在书写时,不是按国际或国家标准中定义的 蒙古文字符显现的,而是由这些字母的变形显现字符显现的。通常把在国际或国家标准中定义的蒙古文字符称为“名义字符”,把用于显现的“名义字符”的变形字符称为“变形显现字符”。大多数“名义字符”都有2个以上的“变形显现字符”,最多可达9个“变形显现字符”。每个“名义字符”的形状不同,但不同的“名义字符”所对应的“变形显现字符”的形状却有字形相同的显现。如字母的变形有ぐ、力、>、ヽへへ'/、〕,字母、的变形有 >、*、へI、〕。如果不考虑相同字形,仅按照每个“名义字符”对应的“变形显现字符”计算,总共156个“名义字符”对应的“变形显现字符”的数量可达近1000个。根据蒙古文构词语法,构成蒙古文单词的字母的形状在词的不同位置(词首、词中、词末)其形状有所不同;与其相邻的字符不同,其形状也可能不一样。还有些字符在单词中相邻时,会产生ー种组合式变形,成为合体字。如e后接W会组合成& (词中)或れ(词末)。因此,在使用蒙古文标准编码时,必须明确“名义字符”在单词中出现时应该使用哪个“变形显现字符”,同时更为重要的是要有一个能够正确解释这些复杂变换的引擎。现有技术中,在Linux系统中使用一个称为Pango的函数库来实现复杂文本的显示,该技术使用解析OpenType字库的方法实现上述功能。该技术只可应用于Linux平台,并且尤其重要的是该技术不支持蒙古文的显示。
技术实现思路
为了解决上述技术问题,本专利技术提供一种基于JAVA的蒙古文显示方法,主要是通过ー种能够解析蒙古文Opentype字库名义字符和变形显现字符映射规则的处理引擎实现的。利用该引擎可在支持JAVA程序运行的手机及其它移动设备上使用符合国际或国家标准编码的蒙古文,进而实现移动设备和计算机间蒙古文信息的直接交換。其技术方案如下一种基于JAVA的蒙古文显示方法,包括以下步骤建立蒙古文字体引擎,所述字体引擎是ー个相对独立的函数,函数格式为Font.drawText (text, compatiblePath),參数text为输入的国标码字符串,函数输出字形图形至Ij compatibIePath ;提供接口来访问蒙古文OpenType字库的字体引擎将所述蒙古文字体引擎引入到应用程序中,并实现用于绘图的Path接口,调用Font. drawText (text, compatib I ePath)函数后,自动生成符合当前应用环境的字体图形,将其绘制到需要的位置即可。此外,调用者可以使用该环境下任意可行的方法对获得的图形进行旋转、缩放、及任意的字体变形,由于图形的特性,这些变换不会对字形质量带来任何影响,这可以充分满足用户的任意排版需求。字符属性标注 字符到字形编号的映射在字体文件中包含一张称为cmap (字符映射)的数据表,包含每一个字符和它对应的默认字符之间的匹配关系;字形替换第一步是查找要替换的那个或那些字形,第二步是执行替换;字形绘制定义一个绘图接口将绘图工作抽象为若干待实现的函数,填充字形时使用“奇偶规则”填充,即完成字形绘制工作。本专利技术确定字形中的一点是否被填充的方法为以考察点为起点,引一条射线(方向任意),初始化计数器为0,当射线穿越轮廓时(无论方向如何),计数器加1,最终当计数器为奇数时填充该点。现代字体使用轮廓描述,绘制字形时只需绘制出轮廓,再为轮廓填充颜色。由于在不同的应用环境中图形绘制的方法不尽相同,所以这里定义一个绘制图形的接口,这个接口只定义了绘制直线、曲线等基本绘图方法。实现此接口一般只需直接调用该环境下的对应方法即可。填充字形时使用“奇偶规则”填充,即完成字形绘制工作。其中确定字形中的一点是否被填充的方法如下所述以考察点为起点,引一条射线(方向任意),初始化计数器为0,当射线穿越轮廓时(无论方向如何),计数器加I,最终当计数器为奇数时填充该点。本专利技术的有益效果本专利技术可应用于支持Java程序运行的手机、移动设备,甚至网络环境中,能够实现按蒙古文国际或国家标准编码存储、显示、输出蒙古文字,实现手机等移动设备与计算机之间、移动设备之间蒙古文信息的直接交换。可以有利于蒙古文信息处理的研究与发展,有利于增进各民族之间的交流。目前大多数手机都支持Java技术,因此本专利技术有广泛的应用环境与潜质。附图说明图I为本专利技术字体引擎处理流程图;图2为本专利技术替换规则逻辑结构图。具体实施例方式下面结合附图和具体实施方式对本专利技术的方法作进一步详细地说明。由于蒙古文词中普遍存在的“一音多形,一形多音”现象,使得对蒙古文的处理相对其它文字要复杂的多。蒙古文字符的字形会随着其在词中位置的不同而变化,且多数变化有一定的规律性,有些变化规律存在二义性,可以通过专用控制符加以区别。通常人们对字库的理解是字库中仅包含字符形状的数据及其对应的编码,程序把字符编码送入字库,字库返回对应的字形数据。蒙古文Opentype字库中不仅存放字符的字形数据和名义字符编码,同时还包括蒙古文名义字符和其变形显现字符间的映射关系的描述,其中只有名义字符才有编码,变形显现字符是没有编码的。每个名义字符在词的不同位置使用哪个变形、一个字符后接某个字符或接哪些字符(串)后使用哪个变形、一个字符在词中强制使用哪个形状等都需要给出完备的信息描述。图I是本专利技术的处理流程示意图。本专利技术是用JAVA语言编写的一个能够提供接ロ来访问蒙古文OpenType字库的字体引擎。它对外表现为输入符合国家标准的蒙古文字母编码串,输出对应的蒙古文变形显现字符图形。该字体引擎是ー个相对独立的函数,函数格式为Font. drawText (text, compatiblePath), text为输入的国标码字符串,函数输出字形图形到compatiblePath。该函数可以应用在所有支持Java的环境中。首先读入要绘制的字符串,分析输入的字符串,确定其中各个字符的属性,并对其进行标注;再将字符编码映射到字形序号;然后根据字体替换规则及第一步标注的字符属性,将组成字符串的各个字形变成正确的形式;最后将需要的字形绘制输出。这样就完成整个处理过程。技术实现方案如下 字符属性标注在蒙古文中,字母会随着它出现在词中的位置不同而有不同的字形,而控制符的加入又使之更加复杂,在将字符转换为默认的字形编号时,其中的一些信息可能会丢失,因此在转换为字形编号之前标注字符的属性,这些属性包括SUBST_N0D0 = I ; // 非蒙古文SUBST_MEDI = I << I ;// 词本文档来自技高网...
【技术保护点】
一种基于JAVA的蒙古文显示方法,其特征在于,包括以下步骤:建立蒙古文处理字体引擎,所述字体引擎是一个相对独立的函数,函数格式为:Font.drawText(text,compatiblePath),text为输入的国标码字符串,函数输出字形图形到compatiblePath;提供接口来访问蒙古文OpenType字库的字体引擎:将所述蒙古文处理字体引擎引入到应用程序中,并实现用于绘图的Path接口,调用Font.drawText(text,compatiblePath)函数后,自动生成符合当前应用环境的字体图形;字符属性标注:字符到字形编号的映射:在字体文件中包含一张称为字符映射(cmap)的数据表,包含每一个字符和它对应的默认字符之间的匹配关系;字形替换:第一步是查找要替换的那个或那些字形,第二步是执行替换;字形绘制:定义一个绘图接口将绘图工作抽象为若干待实现的函数,填充字形时使用“奇偶规则”填充,即完成字形绘制工作。
【技术特征摘要】
【专利技术属性】
技术研发人员:巩政,孟和吉雅,张晖,高光来,侯宏旭,阮宏伟,庞滨,吴伟,
申请(专利权)人:内蒙古大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。