CN107562480B - 一种pos机多国语言的实现方法及其系统 - Google Patents
一种pos机多国语言的实现方法及其系统 Download PDFInfo
- Publication number
- CN107562480B CN107562480B CN201710791804.1A CN201710791804A CN107562480B CN 107562480 B CN107562480 B CN 107562480B CN 201710791804 A CN201710791804 A CN 201710791804A CN 107562480 B CN107562480 B CN 107562480B
- Authority
- CN
- China
- Prior art keywords
- character
- ascii
- module
- setting
- segments
- 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.)
- Active
Links
Images
Abstract
本发明涉及一种POS机多国语言的实现方法及其系统,该方法包括初步设置语言及相关字库资源;输入字符串编码;判断是否需要双向排序;若否,则判断ASCII字符段和非ASCII字符段的字体属性是否一致;若一致,则对字符串编码进行转换、变形处理,获取字符串编码的bitmap;根据不同的设备进行灰阶设置;获取所有ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;若不一致,则将字符串编码转换为UINICODE码;对需要双向排序的字符串进行排序,对不需要双向排序的字符串以及排序后的字符串进行字符区分。本发明实现解决阿拉伯语、高棉语等复杂与语言点阵字库无法实现的问题,支持多国语言。
Description
技术领域
本发明涉及POS机,更具体地说是指一种POS机多国语言的实现方法及其系统。
背景技术
目前金融POS在实现多语言时常采用点阵字库来实现,例如把每一个汉字都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓。由于词连写规则、字母的变形规则等原因,波斯语和阿拉伯语处理时无法以一个字母为单位,需要根据后连和前连的情况变形,这也导致阿拉伯语、波斯语等使用点阵字库会非常复杂并且显示效果不佳。阿拉伯语文字的书写方向和中文不同,它是自右向左横着写,阿拉伯文的书籍和本子都是右开本的,而当阿拉伯文中夹杂有ASCII时,ASCII是从左往右横排的,如图1所示,即阿拉伯语词时,从右往左排,当判断为ASCII码时,需要把排版方式改为从左往右,规则复杂。而对于高棉语等语种连写变形复杂,如图2所示,其组合多样,位置要求严格,并且前后字符关联,使用点阵字库无法实现高棉语。
而且,点阵字库实现多语言的方式存在不能放大的缺点,一旦放大后就会发现文字边缘的锯齿,导致显示不美观;阿拉伯语等具有复杂变形的语言更改点阵字库非常复杂,效率很低,其双向排序算法复杂维护困难;甚至高棉语等语种因为变形和连写过于复杂导致使用点阵方式无法实现;种种缺点致使点阵字库方式不能很好的支持多国语言的实现,影响产品的国际化。
因此,有必要设计一种POS机多国语言的实现方法,实现解决阿拉伯语、高棉语等复杂与语言点阵字库无法实现的问题,支持多国语言。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种POS机多国语言的实现方法及其系统。
为实现上述目的,本发明采用以下技术方案:一种POS机多国语言的实现方法,所述方法包括:
初步设置语言以及相关字库资源;
输入待显示的字符串编码;
判断所述字符串编码是否需要双向排序;
若不需要双向排序,则判断所述字符串编码内的ASCII字符段和非ASCII字符段的字体属性是否一致;
若一致,则对所述字符串编码进行转换为harftbuzz识别的UTF8码;
对UTF8码进行变形处理,获取字符串编码所对应的bitmap;
根据与POS机连接的不同的设备进行灰阶设置,并缓冲位置属性;
获取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;
若不一致,则将字符串编码转换为UINICODE码;
对需要双向排序的字符串进行排序,对不需要双向排序的字符串以及排序后的字符串进行字符区分,并进入所述获取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存的步骤;具体地,采用fribidi实现双向排序算法,再对不需要双向排序的字符串或者重新排序后的字符串进行区分ASCII字符段和非ASCII字符串,再对应提取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;
若需要双向排序,则返回所述将字符串编码转换为UINICODE码的步骤;
初步设置语言以及相关字库资源的步骤,包括以下具体步骤:
设置语言、字符编码以及Script字库路径;
初始化freetype以及矢量字库相关资源;
输入待显示的字符串编码的步骤,包括以下具体步骤:
下发需要显示的字符串编码以及字符大小;
依据所述字符串编码以及字符大小生成设置参数;
对UTF8码进行变形处理,获取字符串编码所对应的bitmap的步骤,包括以下具体步骤:
初始化harfbuzz的增益性;
设置语言script,按照ASCII和非ASCII标志,设置字体属性;
调用shape对字符串编码进行变形处理;
保存每个字符的位置属性;
使用freestype获取字符串编码中单个字符的bitmap;
根据与POS机连接的不同的设备进行灰阶设置,并缓冲位置属性的步骤,包括以下具体步骤:
判断与POS机连接的设备是否为显示设备;
若是,则设置颜色为256灰阶,并进入下一步骤,若不是,则设置颜色为单位色,并进入下一步骤;
将按照harfbuzz获取的位置属性填入缓冲区;
获取所有的ASCII字符段和非ASCII字符段的bitmap的步骤,包括以下具体步骤:
按照字符串顺序获取ASCII字符段以及非ASCII字符段的bitmap;
判断获取bitmap所对应的字符段是否是最后字符段;
若是,则根据不同的设备进行输出缓存;
若不是,则返回所述对UTF8码进行变形处理,获取字符串编码所对应的bitmap的步骤;
根据不同的设备进行输出缓存的步骤,包括以下具体步骤:
判断是否输出至打印设备;
若是,则直接输出ASCII字符段以及非ASCII字符段的bitmap到打印设备中;
若不是,则将灰阶转换为RGB,并输出ASCII字符段以及非ASCII字符段的bitmap到显示设备中。
本发明还提供了一种POS机多国语言的实现系统,包括初步设置单元、输入单元、排序判断单元、属性判断单元、转换单元、处理单元、灰阶设置单元、bitmap获取单元、编码转换单元、排序单元以及区分单元;
所述初步设置单元,用于初步设置语言以及相关字库资源;
所述输入单元,用于输入待显示的字符串编码;
所述排序判断单元,用于判断所述字符串编码是否需要双向排序;
所述属性判断单元,用于若不需要双向排序,则判断所述字符串编码内的ASCII字符段和非ASCII字符段的字体属性是否一致;
所述转换单元,用于若一致,则对所述字符串编码进行转换为harftbuzz识别的UTF8码;
所述处理单元,用于对UTF8码进行变形处理,获取字符串编码所对应的bitmap;
所述灰阶设置单元,用于根据与POS机连接的不同的设备进行灰阶设置,并缓冲位置属性;
所述bitmap获取单元,用于获取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;
所述编码转换单元,用于若不一致,则将字符串编码转换为UINICODE码;
所述排序单元,用于对需要双向排序的字符串进行排序;
所述区分单元,用于对不需要双向排序的字符串以及排序后的字符串进行字符区分;具体地,采用fribidi实现双向排序算法,再对不需要双向排序的字符串或者重新排序后的字符串进行区分ASCII字符段和非ASCII字符串,再对应提取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;
所述初步设置单元包括语言设置模块以及资源初始化模块;
所述语言设置模块,用于设置语言、字符编码以及Script字库路径;
所述资源初始化模块,用于初始化freetype以及矢量字库相关资源;
所述输入单元包括下发模块以及参数生产模块;
所述下发模块,用于下发需要显示的字符串编码以及字符大小;
所述参数生产模块,用于依据所述字符串编码以及字符大小生成设置参数;
所述处理单元包括buff初始化模块、字体树形设置模块、变形处理模块、保存模块以及单个bitmap获取模块;
buff初始化模块,用于初始化harfbuzz的增益性;
字体树形设置模块,用于设置语言script,按照ASCII和非ASCII标志,设置字体属性;
变形处理模块,用于调用shape对字符串编码进行变形处理;
保存模块,用于保存每个字符的位置属性;
单个bitmap获取模块,用于使用freestype获取字符串编码中单个字符的bitmap;
所述灰阶设置单元包括设备判断模块、颜色设置模块以及缓冲填入模块;
设备判断模块,用于判断与POS机连接的设备是否为显示设备;
颜色设置模块,用于若与POS机连接的设备是显示设备,设置颜色为256灰阶,若与POS机连接的设备不是显示设备,设置颜色为单位色;
缓冲填入模块,用于将按照harfbuzz获取的位置属性填入缓冲区;
所述bitmap获取单元还包括字符段bitmap获取模块、完整性判断模块以及缓存输出模块;
字符段bitmap获取模块,用于按照字符串顺序获取ASCII字符段以及非ASCII字符段的bitmap;
完整性判断模块,用于判断获取bitmap所对应的字符段是否是最后字符段;
缓存输出模块,用于若是,则根据不同的设备进行输出缓存;
所述缓存输出模块包括输出设备判断子模块以及灰阶转换子模块;
输出设备判断子模块,用于判断是否输出至打印设备;若是,则直接输出ASCII字符段以及非ASCII字符段的bitmap到打印设备中;
灰阶转换子模块,用于若不是,则将灰阶转换为RGB,输出ASCII字符段以及非ASCII字符段的bitmap到显示设备中。
本发明与现有技术相比的有益效果是:本发明的一种POS机多国语言的实现方法,通过设置采用freetype解析矢量字库,根据不同的语言属性以及ASCII字符段和非ASCII字符段的字体属性,采用harfbuzz实现变形连写处理, 采用fribidi实现双向排序算法,采用iconv实现不同的字符编码转换,解决点阵字库的种种限制,实现多语言的完美支持,增加了灰阶设置的灰度等级,使得显示细腻美观,能支持阿拉伯语和高棉语等复杂变形的语种,极大的提升了产品在国际市场上的竞争力,实现解决阿拉伯语、高棉语等复杂与语言点阵字库无法实现的问题,支持多国语言。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
图1为现有技术的阿拉伯文的示意图;
图2为现有技术的高棉语的示意图;
图3为本发明具体实施例提供的一种POS机多国语言的实现方法的流程图;
图4为本发明具体实施例提供的初步设置语言以及相关字库资源的流程图;
图5为本发明具体实施例提供的输入待显示的字符串编码的流程图;
图6为本发明具体实施例提供的对UTF8码进行变形处理并获取字符串编码所对应的bitmap的流程图;
图7为本发明具体实施例提供的根据与POS机连接的不同的设备进行灰阶设置的流程图;
图8为本发明具体实施例提供的获取所有的ASCII字符段和非ASCII字符段的bitmap的流程图;
图9为本发明具体实施例提供的根据不同的设备进行输出缓存的流程图;
图10为本发明具体实施例提供的一种POS机多国语言的实现系统的结构框图;
图11为本发明具体实施例提供的初步设置单元的结构框图;
图12为本发明具体实施例提供的处理单元的结构框图;
图13为本发明具体实施例提供的灰阶设置单元的结构框图;
图14为本发明具体实施例提供的bitmap获取单元的结构框图;
图15为本发明具体实施例提供的缓存输出模块的结构框图。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
如图3~15所示的具体实施例,本实施例提供的一种POS机多国语言的实现方法,可以运用于POS机中,实现解决阿拉伯语、高棉语等复杂与语言点阵字库无法实现的问题,支持多国语言。
如图3所示,本实施例提供了一种POS机多国语言的实现方法,该方法包括:
S1、初步设置语言以及相关字库资源;
S2、输入待显示的字符串编码;
S3、判断所述字符串编码是否需要双向排序;
S4、若不需要双向排序,则判断所述字符串编码内的ASCII字符段和非ASCII字符段的字体属性是否一致;
S5、若一致,则对所述字符串编码进行转换为harftbuzz识别的UTF8码;
S6、对UTF8码进行变形处理,获取字符串编码所对应的bitmap;
S7、根据与POS机连接的不同的设备进行灰阶设置,并缓冲位置属性;
S8、获取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;
若不一致,则S9、将字符串编码转换为UINICODE码;
S10、对需要双向排序的字符串进行排序,对不需要双向排序的字符串以及排序后的字符串进行字符区分,并进入S8的步骤;
若需要双向排序,则返回所述S9步骤。
更进一步的,对于上述的S1步骤,初步设置语言以及相关字库资源的步骤,包括以下具体步骤:
S11、设置语言、字符编码以及Script字库路径;
S12、初始化freetype以及矢量字库相关资源。
对于上述的S11步骤,具体是设置POS机的语言,包括中文、英文、高棉语、阿拉伯文等。
对于上述的S12步骤,具体是采用freetype解析矢量字库,其中,freetype是一个免费、开源、可移植且高质量的字体引擎;支持多种字体格式文件,并提供了统一的访问接口;支持单色位图、反走样位图渲染,这使字体显示质量达到Mac的水平;采用面向对象思想设计,用户可以灵活的根据需要裁剪。
更进一步的,对于上述的S2步骤,输入待显示的字符串编码的步骤,包括以下具体步骤:
S21、下发需要显示的字符串编码以及字符大小;
S22、依据所述字符串编码以及字符大小生成设置参数。
对于上述的S21步骤至S32步骤,具体是设置字符串编码以及与之相关的参数。
对于上述的S3步骤,对于一些复杂字符串编码,需要进行不同的排序,比如双向排序,以满足不同语言的字体显示。
对于S4步骤,不需要双向排序时,则从字符串编码内的ASCII字符段和非ASCII字符段的字体属性是否一致进一步对不同的语言进行处理。
对于上述的S5步骤,具体是利用harfbuzz实现变形连写,harfbuzz是一个基于OpenType 文本变形引擎,以支持定制语言和字体需求。
更进一步的,对于上述的S6步骤,对UTF8码进行变形处理,获取字符串编码所对应的bitmap的步骤,包括以下具体步骤:
S61、初始化harfbuzz的增益性;
S62、设置语言script,按照ASCII和非ASCII标志,设置字体属性;
S63、调用shape对字符串编码进行变形处理;
S64、保存每个字符的位置属性;
S65、使用freestype获取字符串编码中单个字符的bitmap。
对于上述的S61步骤,在利用harfbuzz进行字体变形连写时,需要先对harftbuzz该引擎进行初始化处理,初始化harfbuzz的增益性。
对于上述的S62步骤,具体是设置语言的HTML标签,以便于针对不同的语言进行对应的字体变形处理,且按照ASCII和非ASCII标志,对字符串编码进行字体属性设置,比如,阿拉伯文中夹杂有ASCII时,ASCII是从左往右横排的。非ASCII即阿拉伯语词时,从右往左排,对不同的字符进行不同字体属性设置,满足支持定制语言和字体需求。
对于上述的S63步骤,具体是对字符串编码进行旋转、大小改变,根据用户各种界面绘图的需求,将字符串编码进行图形的旋转或重置大小,另外,也可以对字符串编码的颜色、阴影、透明度进行调节。
对于上述的S64步骤,除了保存位置属性,还可以保存每个字符的其他参数,比如大小、旋转角度等等参数。
对于上述的S65步骤,具体是获取单个字符的位图文件。
另外,上述的S7步骤,根据变形处理后的字符对应的位图文件,进行显示颜色的设置,具体的,根据与POS机连接的不同的设备进行灰阶设置,并缓冲位置属性的步骤,包括以下具体步骤:
S71、判断与POS机连接的设备是否为显示设备;
若是,则S72、设置颜色为256灰阶,并进入S74步骤,若不是,则S73、设置颜色为单位色,并进入S74步骤;
S74、将按照harfbuzz获取的位置属性填入缓冲区。
上述的S71步骤至S73步骤,具体是根据需要将字体显示还是打印出来进行颜色的调整。
对于上述的S8步骤,具体是将所有字符串内的ASCII字符段和非ASCII字符段的bitmap输出,包括以下具体步骤:
S81、按照字符串顺序获取ASCII字符段以及非ASCII字符段的bitmap;
S82、判断获取bitmap所对应的字符段是否是最后字符段;
若是,则S83、根据不同的设备进行输出缓存;
若不是,则返回所述S6步骤。
更进一步的,上述的S83步骤,根据不同的设备进行输出缓存的步骤,包括以下具体步骤:
S831、判断是否输出至打印设备;
若是,则S832、直接输出ASCII字符段以及非ASCII字符段的bitmap到打印设备中;
若不是,则S833、将灰阶转换为RGB,S834、输出ASCII字符段以及非ASCII字符段的bitmap到显示设备中。
对于上述的S9步骤,随着互联网时代的到来,通过互联网进行文字交流也逐渐增多,浏览外国的网站,这个时候字符编码的转换变得尤为重要。这带来了一个问题,就是许多字符在某一种编码方式中没有。为了解决这种混乱,Unicode的编码方式被建立。Unicode是一种超级编码包含了所有这些编码的字符集,因此一些新的文本格式像XML的默认编码方式就是Unicode.但是很多老式的计算机还在使用当地的传统的字符编码方式。而一些程序,例如邮件程序和浏览器必须能在这些不同的用户编码之间作转换。其他的一些程序则内置支持Unicode,以顺利支持国际化的处理,但是仍然有在Unicode和其他的传统编码之间转换的需求,iconv就是为这两种应用设计的编码转换库。采用iconv实现不同的字符编码转换,解决点阵字库的种种限制,实现多语言的完美支持。
对于上述的S10步骤,需要进行双向排序判断,对需要进行双向排序的字符串按照对应语言属性进行重新排序,具体是采用fribidi实现双向排序算法,再对不需要双向排序的字符串或者重新排序后的字符串进行区分ASCII字符段和非ASCII字符串,再对应提取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存。
上述的一种POS机多国语言的实现方法,通过设置采用freetype解析矢量字库,根据不同的语言属性以及ASCII字符段和非ASCII字符段的字体属性,采用harfbuzz实现变形连写处理, 采用fribidi实现双向排序算法,采用iconv实现不同的字符编码转换,解决点阵字库的种种限制,实现多语言的完美支持,增加了灰阶设置的灰度等级,使得显示细腻美观,能支持阿拉伯语和高棉语等复杂变形的语种,极大的提升了产品在国际市场上的竞争力,实现解决阿拉伯语、高棉语等复杂与语言点阵字库无法实现的问题,支持多国语言。
如图10所示,本实施例提供了一种POS机多国语言的实现系统,其包括初步设置单元1、输入单元2、排序判断单元3、属性判断单元4、转换单元5、处理单元6、灰阶设置单元7、bitmap获取单元8、编码转换单元9、排序单元10以及区分单元20。
初步设置单元1,用于初步设置语言以及相关字库资源。
输入单元2,用于输入待显示的字符串编码。
排序判断单元3,用于判断所述字符串编码是否需要双向排序。
属性判断单元4,用于若不需要双向排序,则判断所述字符串编码内的ASCII字符段和非ASCII字符段的字体属性是否一致。
转换单元5,用于若一致,则对所述字符串编码进行转换为harftbuzz识别的UTF8码。
处理单元6,用于对UTF8码进行变形处理,获取字符串编码所对应的bitmap。
灰阶设置单元7,用于根据与POS机连接的不同的设备进行灰阶设置,并缓冲位置属性。
bitmap获取单元8,用于获取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存。
编码转换单元9,用于若不一致,则将字符串编码转换为UINICODE码。
排序单元10,用于对需要双向排序的字符串进行排序。
区分单元20,用于对不需要双向排序的字符串以及排序后的字符串进行字符区分。
对于上述的初步设置单元1包括语言设置模块11以及资源初始化模块12。
语言设置模块11,用于设置语言、字符编码以及Script字库路径。具体是设置POS机的语言,包括中文、英文、高棉语、阿拉伯文等。
资源初始化模块12,用于初始化freetype以及矢量字库相关资源。具体是采用freetype解析矢量字库,其中,freetype是一个免费、开源、可移植且高质量的字体引擎;支持多种字体格式文件,并提供了统一的访问接口;支持单色位图、反走样位图渲染,这使字体显示质量达到Mac的水平;采用面向对象思想设计,用户可以灵活的根据需要裁剪。
另外,对于上述的输入单元2,具体是设置字符串编码以及与之相关的参数,其包括下发模块以及参数生产模块。
下发模块,用于下发需要显示的字符串编码以及字符大小。
参数生产模块,用于依据所述字符串编码以及字符大小生成设置参数。
对于排序判断单元3而言,对于一些复杂字符串编码,需要进行不同的排序,比如双向排序,以满足不同语言的字体显示。
对于属性判断单元4而言,不需要双向排序时,则从字符串编码内的ASCII字符段和非ASCII字符段的字体属性是否一致进一步对不同的语言进行处理。
对于转换单元5而言,具体是利用harfbuzz实现变形连写,harfbuzz是一个基于OpenType 文本变形引擎,以支持定制语言和字体需求。
更进一步的,上述的处理单元6包括buff初始化模块61、字体树形设置模块62、变形处理模块63、保存模块64以及单个bitmap获取模块65。
buff初始化模块61,用于初始化harfbuzz的增益性。在利用harfbuzz进行字体变形连写时,需要先对harftbuzz该引擎进行初始化处理,初始化harfbuzz的增益性。
字体树形设置模块62,用于设置语言script,按照ASCII和非ASCII标志,设置字体属性;具体是设置语言的HTML标签,以便于针对不同的语言进行对应的字体变形处理,且按照ASCII和非ASCII标志,对字符串编码进行字体属性设置,比如,阿拉伯文中夹杂有ASCII时,ASCII是从左往右横排的。非ASCII即阿拉伯语词时,从右往左排,对不同的字符进行不同字体属性设置,满足支持定制语言和字体需求。
变形处理模块63,用于调用shape对字符串编码进行变形处理;具体是对字符串编码进行旋转、大小改变,根据用户各种界面绘图的需求,将字符串编码进行图形的旋转或重置大小,另外,也可以对字符串编码的颜色、阴影、透明度进行调节。
保存模块64,用于保存每个字符的位置属性;除了保存位置属性,还可以保存每个字符的其他参数,比如大小、旋转角度等等参数。
单个bitmap获取模块65,用于使用freestype获取字符串编码中单个字符的bitmap,具体是获取单个字符的位图文件。
另外,上述的灰阶设置单元7具体是根据变形处理后的字符对应的位图文件,进行显示颜色的设置,根据需要将字体显示还是打印出来进行颜色的调整。其包括设备判断模块71、颜色设置模块72以及缓冲填入模块73。
设备判断模块71,用于判断与POS机连接的设备是否为显示设备。
颜色设置模块72,用于若与POS机连接的设备是显示设备,设置颜色为256灰阶,若与POS机连接的设备不是显示设备,设置颜色为单位色。
缓冲填入模块73,用于将按照harfbuzz获取的位置属性填入缓冲区。
另外,对于上述的bitmap获取单元8还包括字符段bitmap获取模块81、完整性判断模块82以及缓存输出模块83。
字符段bitmap获取模块81,用于按照字符串顺序获取ASCII字符段以及非ASCII字符段的bitmap。
完整性判断模块82,用于判断获取bitmap所对应的字符段是否是最后字符段。
缓存输出模块83,用于若是,则根据不同的设备进行输出缓存。
更进一步的,对于上述的缓存输出模块83包括输出设备判断子模块831以及灰阶转换子模块832,输出设备判断子模块831用于判断是否输出至打印设备;若是,则直接输出ASCII字符段以及非ASCII字符段的bitmap到打印设备中。灰阶转换子模块832用于若不是,则将灰阶转换为RGB,输出ASCII字符段以及非ASCII字符段的bitmap到显示设备中。
对于上述的编码转换单元9而言,随着互联网时代的到来,通过互联网进行文字交流也逐渐增多,浏览外国的网站,这个时候字符编码的转换变得尤为重要。这带来了一个问题,就是许多字符在某一种编码方式中没有。为了解决这种混乱,Unicode的编码方式被建立。Unicode是一种超级编码包含了所有这些编码的字符集,因此一些新的文本格式像XML的默认编码方式就是Unicode.但是很多老式的计算机还在使用当地的传统的字符编码方式。而一些程序,例如邮件程序和浏览器必须能在这些不同的用户编码之间作转换。其他的一些程序则内置支持Unicode,以顺利支持国际化的处理,但是仍然有在Unicode和其他的传统编码之间转换的需求,iconv就是为这两种应用设计的编码转换库。采用iconv实现不同的字符编码转换,解决点阵字库的种种限制,实现多语言的完美支持。
对于排序单元10以及区分单元20而言,需要进行双向排序判断,对需要进行双向排序的字符串按照对应语言属性进行重新排序,具体是采用fribidi实现双向排序算法,再对不需要双向排序的字符串或者重新排序后的字符串进行区分ASCII字符段和非ASCII字符串,再对应提取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存。
上述的一种POS机多国语言的实现系统,通过设置采用freetype解析矢量字库,根据不同的语言属性以及ASCII字符段和非ASCII字符段的字体属性,采用harfbuzz实现变形连写处理, 采用fribidi实现双向排序算法,采用iconv实现不同的字符编码转换,解决点阵字库的种种限制,实现多语言的完美支持,增加了灰阶设置的灰度等级,使得显示细腻美观,能支持阿拉伯语和高棉语等复杂变形的语种,极大的提升了产品在国际市场上的竞争力,实现解决阿拉伯语、高棉语等复杂与语言点阵字库无法实现的问题,支持多国语言。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。
Claims (2)
1.一种POS机多国语言的实现方法,其特征在于,所述方法包括:
初步设置语言以及相关字库资源;
输入待显示的字符串编码;
判断所述字符串编码是否需要双向排序;
若不需要双向排序,则判断所述字符串编码内的ASCII字符段和非ASCII字符段的字体属性是否一致;
若一致,则对所述字符串编码进行转换为harftbuzz识别的UTF8码;
对UTF8码进行变形处理,获取字符串编码所对应的bitmap;
根据与POS机连接的不同的设备进行灰阶设置,并缓冲位置属性;
获取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;
若不一致,则将字符串编码转换为UINICODE码;
对需要双向排序的字符串进行排序,对不需要双向排序的字符串以及排序后的字符串进行字符区分,并进入所述获取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存的步骤;具体地,采用fribidi实现双向排序算法,再对不需要双向排序的字符串或者重新排序后的字符串进行区分ASCII字符段和非ASCII字符串,再对应提取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;
若需要双向排序,则返回所述将字符串编码转换为UINICODE码的步骤;
初步设置语言以及相关字库资源的步骤,包括以下具体步骤:
设置语言、字符编码以及Script字库路径;
初始化freetype以及矢量字库相关资源;
输入待显示的字符串编码的步骤,包括以下具体步骤:
下发需要显示的字符串编码以及字符大小;
依据所述字符串编码以及字符大小生成设置参数;
对UTF8码进行变形处理,获取字符串编码所对应的bitmap的步骤,包括以下具体步骤:
初始化harfbuzz的增益性;
设置语言script,按照ASCII和非ASCII标志,设置字体属性;
调用shape对字符串编码进行变形处理;
保存每个字符的位置属性;
使用freestype获取字符串编码中单个字符的bitmap;
根据与POS机连接的不同的设备进行灰阶设置,并缓冲位置属性的步骤,包括以下具体步骤:
判断与POS机连接的设备是否为显示设备;
若是,则设置颜色为256灰阶,并进入下一步骤,若不是,则设置颜色为单位色,并进入下一步骤;
将按照harfbuzz获取的位置属性填入缓冲区;
获取所有的ASCII字符段和非ASCII字符段的bitmap的步骤,包括以下具体步骤:
按照字符串顺序获取ASCII字符段以及非ASCII字符段的bitmap;
判断获取bitmap所对应的字符段是否是最后字符段;
若是,则根据不同的设备进行输出缓存;
若不是,则返回所述对UTF8码进行变形处理,获取字符串编码所对应的bitmap的步骤;
根据不同的设备进行输出缓存的步骤,包括以下具体步骤:
判断是否输出至打印设备;
若是,则直接输出ASCII字符段以及非ASCII字符段的bitmap到打印设备中;
若不是,则将灰阶转换为RGB,并输出ASCII字符段以及非ASCII字符段的bitmap到显示设备中。
2.一种POS机多国语言的实现系统,其特征在于,包括初步设置单元、输入单元、排序判断单元、属性判断单元、转换单元、处理单元、灰阶设置单元、bitmap获取单元、编码转换单元、排序单元以及区分单元;
所述初步设置单元,用于初步设置语言以及相关字库资源;
所述输入单元,用于输入待显示的字符串编码;
所述排序判断单元,用于判断所述字符串编码是否需要双向排序;
所述属性判断单元,用于若不需要双向排序,则判断所述字符串编码内的ASCII字符段和非ASCII字符段的字体属性是否一致;
所述转换单元,用于若一致,则对所述字符串编码进行转换为harftbuzz识别的UTF8码;
所述处理单元,用于对UTF8码进行变形处理,获取字符串编码所对应的bitmap;
所述灰阶设置单元,用于根据与POS机连接的不同的设备进行灰阶设置,并缓冲位置属性;
所述bitmap获取单元,用于获取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;
所述编码转换单元,用于若不一致,则将字符串编码转换为UINICODE码;
所述排序单元,用于对需要双向排序的字符串进行排序;
所述区分单元,用于对不需要双向排序的字符串以及排序后的字符串进行字符区分;具体地,采用fribidi实现双向排序算法,再对不需要双向排序的字符串或者重新排序后的字符串进行区分ASCII字符段和非ASCII字符串,再对应提取所有的ASCII字符段和非ASCII字符段的bitmap,根据不同的设备进行输出缓存;
所述初步设置单元包括语言设置模块以及资源初始化模块;
所述语言设置模块,用于设置语言、字符编码以及Script字库路径;
所述资源初始化模块,用于初始化freetype以及矢量字库相关资源;
所述输入单元包括下发模块以及参数生产模块;
所述下发模块,用于下发需要显示的字符串编码以及字符大小;
所述参数生产模块,用于依据所述字符串编码以及字符大小生成设置参数;
所述处理单元包括buff初始化模块、字体树形设置模块、变形处理模块、保存模块以及单个bitmap获取模块;
buff初始化模块,用于初始化harfbuzz的增益性;
字体树形设置模块,用于设置语言script,按照ASCII和非ASCII标志,设置字体属性;
变形处理模块,用于调用shape对字符串编码进行变形处理;
保存模块,用于保存每个字符的位置属性;
单个bitmap获取模块,用于使用freestype获取字符串编码中单个字符的bitmap;
所述灰阶设置单元包括设备判断模块、颜色设置模块以及缓冲填入模块;
设备判断模块,用于判断与POS机连接的设备是否为显示设备;
颜色设置模块,用于若与POS机连接的设备是显示设备,设置颜色为256灰阶,若与POS机连接的设备不是显示设备,设置颜色为单位色;
缓冲填入模块,用于将按照harfbuzz获取的位置属性填入缓冲区;
所述bitmap获取单元还包括字符段bitmap获取模块、完整性判断模块以及缓存输出模块;
字符段bitmap获取模块,用于按照字符串顺序获取ASCII字符段以及非ASCII字符段的bitmap;
完整性判断模块,用于判断获取bitmap所对应的字符段是否是最后字符段;
缓存输出模块,用于若是,则根据不同的设备进行输出缓存;
所述缓存输出模块包括输出设备判断子模块以及灰阶转换子模块;
输出设备判断子模块,用于判断是否输出至打印设备;若是,则直接输出ASCII字符段以及非ASCII字符段的bitmap到打印设备中;
灰阶转换子模块,用于若不是,则将灰阶转换为RGB,输出ASCII字符段以及非ASCII字符段的bitmap到显示设备中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710791804.1A CN107562480B (zh) | 2017-09-05 | 2017-09-05 | 一种pos机多国语言的实现方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710791804.1A CN107562480B (zh) | 2017-09-05 | 2017-09-05 | 一种pos机多国语言的实现方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107562480A CN107562480A (zh) | 2018-01-09 |
CN107562480B true CN107562480B (zh) | 2021-03-09 |
Family
ID=60979355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710791804.1A Active CN107562480B (zh) | 2017-09-05 | 2017-09-05 | 一种pos机多国语言的实现方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107562480B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109887197A (zh) * | 2018-12-21 | 2019-06-14 | 福建新大陆支付技术有限公司 | 一种基于pos机的矢量字体打印方法及pos机 |
CN109783142B (zh) * | 2018-12-21 | 2021-02-12 | 福建新大陆支付技术有限公司 | 一种基于pos机的多线程同步方法及pos机 |
CN109816896A (zh) * | 2018-12-21 | 2019-05-28 | 福建新大陆支付技术有限公司 | 一种基于pos机的多线程打印方法及pos机 |
CN111028441A (zh) * | 2019-10-31 | 2020-04-17 | 艾体威尔电子技术(北京)有限公司 | 一种用于微内存密码键盘显示各种语言文字的方法 |
CN111178061B (zh) * | 2019-12-20 | 2023-03-10 | 沈阳雅译网络技术有限公司 | 一种基于编码转换的多国语分词方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1145898C (zh) * | 1999-03-05 | 2004-04-14 | 英业达股份有限公司 | 可扩充的多国文字的显示方法 |
CN103137102A (zh) * | 2011-11-23 | 2013-06-05 | 财团法人资讯工业策进会 | 多国语言字符显示方法及装置 |
TW201407385A (zh) * | 2012-08-15 | 2014-02-16 | Arphic Technology Co Ltd | 於嵌入式設備處理字串的方法 |
CN103488441B (zh) * | 2013-09-06 | 2016-05-11 | 深圳市新国都技术股份有限公司 | 一种阿拉伯语在pos机上打印的实现方法 |
CN103489268B (zh) * | 2013-09-06 | 2015-12-02 | 深圳市新国都技术股份有限公司 | 一种用于pos平台的阿拉伯语显示方法 |
-
2017
- 2017-09-05 CN CN201710791804.1A patent/CN107562480B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107562480A (zh) | 2018-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107562480B (zh) | 一种pos机多国语言的实现方法及其系统 | |
US9129421B2 (en) | System and method for displaying complex scripts with a cloud computing architecture | |
JP4497432B2 (ja) | レイアウトサービスライブラリを用いたグリフの描画方法 | |
US20020010725A1 (en) | Internet-based font server | |
CN110879937A (zh) | 文档生成网页的方法、装置、计算机设备和存储介质 | |
US11030389B2 (en) | Acquisition of a font portion using a compression mechanism | |
CN102662926B (zh) | 字库的存储与访问方法 | |
US20040202352A1 (en) | Enhanced readability with flowed bitmaps | |
JP3174168B2 (ja) | 変数置き換え処理装置 | |
KR20150082097A (ko) | 클라우드 기반 폰트 서비스 시스템 | |
US7609268B2 (en) | Arrangement for the scaling of fonts | |
US9081529B1 (en) | Generation of electronic books | |
KR102040088B1 (ko) | 템플릿을 이용한 개인화 폰트 생성 방법 및 시스템 | |
JP4905899B2 (ja) | 情報処理システム、情報処理プログラムおよび可読記録媒体 | |
CN111274761A (zh) | 利用svg格式的字体编辑方法、系统及计算机可读记录介质 | |
EP2310963B1 (en) | Information output apparatus, information output method, and recording medium | |
Probets et al. | Substituting outline fonts for bitmap fonts in archived PDF files | |
JP6564910B2 (ja) | 変換装置、変換方法、及びプログラム | |
CN115237515A (zh) | 一种低成本车载仪表平台的高性能字体加载与渲染方法 | |
Nazarkevych et al. | Development and processing of the cyrillic handwritten font | |
Taylor | Pango: internationalized text handling | |
CN116663496A (zh) | 基于svg技术的浏览器小字体显示组件、显示方法、创建方法 | |
CN116029260A (zh) | 一种文字显示排版文件生成方法、装置及存储介质 | |
CN117313653A (zh) | 文本框的适配方法、装置和电子设备 | |
Eyre | Creating a Kanji Stroke Order Font |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |