嵌入式设备及其在osd界面显示语言文字的方法

文档序号:6353418阅读:576来源:国知局
专利名称:嵌入式设备及其在osd界面显示语言文字的方法
技术领域
本发明涉及嵌入式设备技术领域,特别是涉及嵌入式设备及其在OSD界面显示语 言文字的方法备。
背景技术
目前数字电视机顶盒在世界各地逐渐普及,对机顶盒屏幕菜单式调节方式(0SD, on-screen display)界面上要求显示的语言种类也越来越多,需要在OSD界面中采用准 确、高效的多语言显示方法来配合,以同时支持多国语言显示。多语言的显示涉及到字符编码的技术,世界上存在着多种编码方式,同一个二进 制数字可以被解释成不同的符号。在电脑操作系统中,要想打开一个文本文件,就必须预先 知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。目前传统的软件一般有两 种技术方案去实现支持多语言用户操作界面1) 一种是是针对客户对于某种语言的需求,单独的为这种语言的字符做一个字 库,有多少种语言需要实现的话就存在多少种字库。字库中包括字符向量表和字符数据表, 这里所说的字符数据表用于提供存放字符的点阵数据,所提供的字符向量表用于提供字符 数据的存放地址。程序通过地址偏移去找到字符对应的点阵数据,再通过OSD函数将点阵 数据进行显示;2)另外一种传统的软件方式利用某些语言中相当数量的字符文字相同,编码之前 先将这些语言进行一个统计,找到所有可能用到的字符,然后将这些字符统一做出一个字 库,供机顶盒OSD显示函数调用。上述的两种方法都存在明显的缺点,第一种方法为每种语言都设计一个单独的字 库,这样不但浪费大量的程序的存储空间,而且同一种语言可能包括几种编码格式,还需要 为同一种语言做多个字库。例如俄罗斯语可能使用IS08859-5编码,也有可能使用CP1251 编码。这些都增加软件设计和维护的工作量。第二种方法虽然通过编码设计前的统计去掉 一些冗余字符,节省程序空间和代码量,但是这样做的方法会牺牲字库的通用性和标准化, 同一个字库中包含多种编码方式的字符,字库可能会被设计的比较庞大,这样代码中查找 要显示的字符的点阵数据也不方便,效率不高,还增加软件设计和维护的工作量。而且这种 方法只是针对某些存在相当数量相同字符的语系的语言有用,比如英语,法语、德语、意大 利语、西班牙语等拉丁语系的语言。对于某些字符相差较大的语言却不管用,比如阿拉伯 语,俄罗斯语、越南语等归属于不同语系的语言。

发明内容
本发明主要解决的技术问题是提供一种嵌入式设备及其在OSD界面显示语言文 字的方法,能够高效、方便、低成本地实现在嵌入式设备的OSD界面进行各种语言文字显示 功能。为解决上述技术问题,本发明采用的一个技术方案是提供一种在嵌入式设备OSD界面显示语言文字的方法,包括读取待显示的统一码UNICODE编码格式的字符数据; 根据所述字符数据的UNICODE编码值判断所述字符数据所在的字库;将所述字符数据的 UNICODE编码值和其所在字库中的字符数据UNICODE编码向量表中的UNICODE编码逐一比 较,得到所述字符在UNICODE编码向量表中对应UNICODE编码值的索引值;通过所述索引值 进行地址运算,得到对应的字符点阵数据偏移地址;通过所述偏移地址找到字符的点阵数 据、实际宽度和高度数据;调用OSD显示函数以根据所述字符的点阵数据、宽度和高度数据 显示字符。其中,所述将字符数据的UNICODE编码值和其所在字库中的字符数据UNICODE编 码向量表中的UNICODE编码逐一比较的步骤包括将所述字符数据的UNICODE编码值和其 所在字库中的字符数据UNICODE编码向量表中的UNICODE编码通过二分法逐一比较。其中,在所述读取待显示的字符数据步骤之后、判断所述字符数据的编码是否为 统一码UNICODE编码步骤之前,包括判断输入的字符数据所对应的字符串是否为有效的 统一码文本格式(UTF)字符串;在所对应的字符串为有效的UTF字符串时,将所述UTF字符 串转换成UNICODE编码格式的字符串;在转换成UNICODE编码格式的字符串后,得到所述字 符串的前两个字节,合并所述两个字节的数值得到字符UNICODE编码值。其中,所述在转换成UNICODE编码格式的字符串后、得到所述字符串的前两个字 节、合并所述两个字节的数值得到字符UNICODE编码值步骤包括在转换成UNICODE编码格 式的字符串后,将字符指针指向所述字符串的第一个字符,其中在字符串的末尾设0x0000 以指示字符串末尾;通过所述字符指针得到字符串的前两个字节;合并所述两个字节的数 值得到第一个字符的UNICODE编码值;判断得到的UNICODE编码值是否为0x0000,在是 0x0000时判定当前字符指针已指向至字符串的末尾,直接进入判断所述字符数据的编码是 否为统一码UNICODE编码步骤。为解决上述技术问题,本发明采用的另一个技术方案是提供一种嵌入式设备,包 括字符数据读取单元,用于读取待显示的统一码UNICODE编码格式的字符数据;字符字库 判断单元,用于根据所述字符数据的UNICODE编码值判断所述字符数据所在的字库;索引 值获取单元,用于将所述字符数据的UNICODE编码值和其所在字库中的字符数据UNICODE 编码向量表中的UNI CODE编码逐一比较,得到所述字符在UNI CODE编码向量表中对应 UNICODE编码值的索引值;偏移地址获取单元,用于通过所述索引值进行地址运算,得到对 应的字符点阵数据偏移地址;点阵数据获取单元,用于通过所述偏移地址找到字符的点阵 数据、实际宽度和高度数据;字符显示单元,用于调用OSD显示函数以根据所述字符的点阵 数据、宽度和高度数据显示字符。其中,包括UTF码判断单元,用于在所述读取待显示的统一码UNICODE编码格式 的字符数据步骤之后、判断所述字符数据所在的字库步骤之前,判断输入的字符数据所对 应的字符串是否为有效的统一码文本格式UTF字符串;编码转换单元,用于在所对应的字 符串为有效的统一码文本格式UTF字符串时,将所述UTF字符串转换成UNICODE编码格式 的字符串;字节合并单元,用于在转换成UNICODE编码格式的字符串后,得到所述字符串的 前两个字节,合并所述两个字节的数值得到字符UNICODE编码值。其中,包括多语言字符串表生成单元,用于将每一种语言的字符串都生成各自独 立的多语言字符串数据表,其中使用UTF-8编码作为字符串中每个字符的编码,数据表由字符串向量和字符串的UTF-8编码数据组成,所述字符串向量用于提供每个字符串数据的 存放相对偏移地址,所述UTF-8编码数据用于存放每一个字符串转换成UTF-8编码后的字 符数据。其中,包括位图文件生成单元,用于从Windows操作系统自带的矢量字库文件中 提取指定大小的字体,并将该字体以位图的格式存放得到字符的位图文件;多语言字库生 成单元,用于将所述位图文件转换成字库的C语言头文件,使所述C语言头文件中字符的内 部数据结构包括所述字符数据UNICODE编码向量表、字符宽度向量表以及字符点阵数据向 量表,并且使字库中每个字符的UNICODE编码向量表、字符宽度向量表和字符点阵数据向 量表中的顺序一致。其中,所述嵌入式设备是机顶盒。本发明的有益效果是区别于现有技术机顶盒为实现OSD显示字符而浪费大量 存储空间或者牺牲字库的通用性和标准化的情况,本发明不但吸收传统的多语言显示方法 中具有的点阵字库显示速度快、使用简单的优点,同时利用UNICODE编码的唯一性,即因为 Unicode使用0到65535的双字节无符号数对每一个字符进行编码,每一个双字节无符号数 字表示至少在一种世界语言中使用的一个唯一字符,本发明正是利用上述UNICODE编码的 唯一性,方便快速地查找要显示的字符,不需要为嵌入式设备显示字符而浪费大量的程序 的存储空间,不需要为同一种语言做多个字库,而且达到字库的通用性和标准化,字符显示 效率较高,无需增太多的软件设计和维护工作。同时又因为本发明使用了 UTF这一在互联网上使用最广的一种国际通用的字符 编码的方式,使得嵌入式设备如数字电视机顶盒等在理论上能够同时支持所有的多语言字 符的显示,同时消耗的系统资源较少,具备速度快、使用灵活、代码编码量小、代码容易维护 和移植等优点。


图1是本发明在嵌入式设备OSD界面显示语言文字的方法实施例的流程图;图2是本发明在嵌入式设备OSD界面显示语言文字的方法实施例的另一流程图;图3是本发明嵌入式设备实施例一的原理框图;图4是本发明嵌入式设备实施例二的原理框图。
具体实施例方式基于目前数字机顶盒中要求显示的多国语言的种类越来越多、涉及的语言的语系 也越来越多、使用传统的多语言显示技术的话会有很多问题。比如同一个二进制数字可以 被解释成不同的符号。在电脑操作系统中,要想打开一个文本文件,就必须预先知道它的编 码方式,否则用错误的编码方式解读,就会出现乱码。机顶盒等嵌入式设备中同样存在这 个问题。本发明基于上述要想解决的问题,使用一种统一的编码方式即统一码文本格式 UTF, UTF就是目前在互联网上使用最广泛的一种统一的编码的实现方式,本发明致力于将 全球所有语言纳入一个统一的编码,并结合以下实施例来详细说明。参阅图1,本发明在嵌入式设备OSD界面显示语言文字的方法实施例包括以下步 骤
步骤101 读取待显示的统一码UNICODE编码格式的字符数据;在OSD界面显示语言文字时,嵌入式设备读取保存好的待显示统一码UNICODE编 码格式的字符数据,可以是字符串,也可以是一个字符;步骤102 根据所述字符数据的UNICODE编码值判断所述字符数据所在的字库;比如存在多个字库,对应不同语系的,可以根据所述字符数据的UNICODE编码值 判断所述字符数据所在的字库;步骤103 将所述字符数据的UNICODE编码值和其所在字库中的字符数据UNICODE 编码向量表中的UNI CODE编码逐一比较,得到所述字符在UNI CODE编码向量表中对应 UNICODE编码值的索引值;每个字库中都包括指向字符地址的字符数据UNICODE编码向量表,即在字库中预 先设计指向字符地址的字符数据UNICODE编码向量表,所字符数据UNICODE编码向量表作 为字符UNICODE编码与字符点阵数据之间的连接桥梁;作为字符UNICODE编码与字符点阵数据之间的连接桥梁,所述点阵数据信息中指 向字符地址的字符数据UNICODE编码向量表,是在嵌入式设备中预先定义的点阵字库的内 部数据结构的一部分,使得很方便地通过字符UNICODE编码找到字符在字库中的宽度和字 符点阵数据;步骤104 通过所述索引值进行地址运算,得到对应的字符点阵数据偏移地址;步骤105 通过所述偏移地址找到字符的点阵数据、实际宽度和高度数据;步骤106 调用OSD显示函数以根据所述字符的点阵数据、宽度和高度数据显示字 符。本发明不但吸收传统的多语言显示方法中具有的点阵字库显示速度快、使用简单 的优点,同时利用UNICODE编码的唯一性,即因为Unicode使用0到65535的双字节无符号 数对每一个字符进行编码,每一个双字节无符号数字表示至少在一种世界语言中使用的一 个唯一字符,本发明正是利用上述UNICODE编码的唯一性,方便快速地查找要显示的字符, 不需要为嵌入式设备显示字符而浪费大量的程序的存储空间,不需要为同一种语言做多个 字库,而且达到字库的通用性和标准化,字符显示效率较高,无需增太多的软件设计和维护 工作。在另一实施例中,所述将字符数据的UNICODE编码值和其所在字库中的字符数据 UNICODE编码向量表中的UNICODE编码逐一比较的步骤包括将所述字符数据的UNICODE 编码值和其所在字库中的字符数据UNICODE编码向量表中的UNICODE编码通过二分法逐一 比较。根据点阵数据信息中指向字符地址的字符数据UNICODE编码向量表、ID值、 UNICODE编码值和点阵数据信息,可以从所述字库中找到字符数据对应的字符宽度和点阵 数据信息。在另一实施例中,基于上述多个字库实施例的基础上,所述将字符数据的UNICODE 编码值和其所在字库中的字符数据UNICODE编码向量表中的UNICODE编码逐一比较的步骤 包括根据所述字库ID值和字符数据的UNICODE编码值,通过二分法查找到对应字符在 所述字库中的索引值。
在另一实施例中,为实现字符串显示,在所述读取待显示的字符数据步骤之后、判 断所述字符数据的编码是否为统一码UNICODE编码步骤之前,包括1)判断输入的字符数据所对应的字符串是否为有效的统一码文本格式UTF字符 串;所述UTF可以是UTF-8,也可以是UTF-16 ;2)在所对应的字符串为有效的统一码文本格式UTF字符串时,将所述UTF字符串 转换成UNICODE编码格式的字符串;3)在转换成UNICODE编码格式的字符串后,得到所述字符串的前两个字节,合并 所述两个字节的数值得到字符UNICODE编码值。其中,基于上述字符串显示实施例的基础上,所述在转换成UNICODE编码格式的 字符串后、得到所述字符串的前两个字节、合并所述两个字节的数值得到字符UNICODE编 码值步骤包括1)在转换成UNICODE编码格式的字符串后,将字符指针指向所述字符串的第一个 字符,其中在字符串的末尾设0x0000以指示字符串末尾;2)通过所述字符指针得到字符串的前两个字节;3)合并所述两个字节的数值得到第一个字符的UNICODE编码值;4)判断得到的UNICODE编码值是否为0x0000,在是0x0000时判定当前字符指针 已指向至字符串的末尾,直接进入判断所述字符数据的编码是否为统一码UNICODE编码步 马聚ο这里,是预先在字符串的末尾设置0x0000,以表示结束。下面举一应用实施例来说明本发明方法,其中包括1)多语言字库的制作工具;2)多语言点阵字库的内部数据格式;3)多语言字符串数据格式;4)多语言字符串数据的生成工具;5)GUI系统调用多语言字库和显示多语言字符串的一套接口函数。其中1)多语言字库的制作工具多语言字库的制作包括两个步骤,每个步骤分别需要使用不同的工具,最终生成 字库的C语言头文件。步骤一使用font2bitmap. exe生成字库中字符的位图文件。它可以根据用户设 定的字体,字符宽度,高度等属性,从Windows操作系统中自带的矢量字库文件中提取指定 大小的字体,并将该字体以位图的格式存放,为制作字库做准备。步骤二 使用generateFontData. exe将步骤一所生成的字符的位图文件转换成 字库的C语言头文件。2)多语言点阵字库的内部数据格式点阵字库的内部数据结构为typedef struct{
unsigned charFont—Height ;//字库中字符的高度
unsigned shortFont_Count ;//字库中字符的个数
const unsignedchar* Font—Width;//字库中字符宽度向量表
const unsignedint* Font_Data ;/V字库中字符点阵数据向量表
const unsignedshort* Font_Tab ;/,/字库中字符数据UNICODE编码向量

}sky—font—t ;
和现有多语言字库字符的養女据结构说不同的地方是,本发明在此实施例中使用字
符数据UNICODE编码向量表。而且字库中每个字符的UNICODE编码向量表、字符宽度向量 表和字符点阵数据向量表中的顺序是一致的,这样就很方便地在代码中通过字符UNICODE 编码找到字符在字库中的宽度和字符点阵数据。其中在字库中使用UNICODE编码的原因是因为Unicode使用0到65535的双字 节无符号数对每一个字符进行编码。每一个双字节无符号数字表示至少在一种世界语言中 使用的一个唯一字符。本发明实施例正是利用UNICODE编码的唯一性,方便快速地查找要 显示的字符,而且UNICODE编码和UTF-8编码之间转换非常容易。3)多语言字符串数据格式本发明在此实施例中使用UTF-8编码作为字符串中每个字符的编码,每一种语言 的字符串都通过工具生成各自独立的多语言字符串数据表。数据表由字符串向量和字符串 的UTF-8编码数据组成。这里所述的字符串向量用于提供每个字符串数据的存放相对偏移 地址。所述的UTF-8编码字符数据用于存放每一个字符串转换成UTF-8编码后的字符数据。以下是多语言字符串数据表的示例和格式说明表一转换前原始的字符串数据示例
权利要求
1.一种在嵌入式设备OSD界面显示语言文字的方法,其特征在于,包括 读取待显示的统一码UNICODE编码格式的字符数据;根据所述字符数据的UNICODE编码值判断所述字符数据所在的字库; 将所述字符数据的UNICODE编码值和其所在字库中的字符数据UNICODE编码向量表中 的UNICODE编码逐一比较,得到所述字符在UNICODE编码向量表中对应UNICODE编码值的 索引值;通过所述索引值进行地址运算,得到对应的字符点阵数据偏移地址; 通过所述偏移地址找到字符的点阵数据、实际宽度和高度数据; 调用屏幕菜单式调节方式OSD显示函数以根据所述字符的点阵数据、宽度和高度数据 显示字符。
2.根据权利要求1所述的方法,其特征在于,所述将字符数据的UNICODE编码值和其所 在字库中的字符数据UNICODE编码向量表中的UNICODE编码逐一比较的步骤包括将所述字符数据的UNICODE编码值和其所在字库中的字符数据UNICODE编码向量表中 的UNICODE编码通过二分法逐一比较。
3.根据权利要求1或2所述的方法,其特征在于,在所述读取待显示的字符数据步骤之 后、判断所述字符数据所在的字库步骤之前,包括判断输入的字符数据所对应的字符串是否为有效的统一码文本格式UTF字符串; 在所对应的字符串为有效的统一码文本格式UTF字符串时,将所述UTF字符串转换成 UNICODE编码格式的字符串;在转换成UNICODE编码格式的字符串后,得到所述字符串的前两个字节,合并所述两 个字节的数值得到字符UNICODE编码值。
4.根据权利要求3所述的方法,其特征在于,所述在转换成UNICODE编码格式的字符串 后、得到所述字符串的前两个字节、合并所述两个字节的数值得到字符UNICODE编码值步 骤包括在转换成UNICODE编码格式的字符串后,将字符指针指向所述字符串的第一个字符, 其中在字符串的末尾设0x0000以指示字符串末尾; 通过所述字符指针得到字符串的前两个字节; 合并所述两个字节的数值得到第一个字符的UNICODE编码值; 判断得到的UNICODE编码值是否为0x0000,在是0x0000时判定当前字符指针已指向至 字符串的末尾,直接进入判断所述字符数据的编码是否为统一码UNICODE编码步骤。
5.一种嵌入式设备,其特征在于,包括字符数据读取单元,用于读取待显示的统一码UNICODE编码格式的字符数据; 字符字库判断单元,用于根据所述字符数据的UNICODE编码值判断所述字符数据所在 的字库;索引值获取单元,用于将所述字符数据的UNICODE编码值和其所在字库中的字符数据 UNICODE编码向量表中的UNICODE编码逐一比较,得到所述字符在UNICODE编码向量表中对 应UNICODE编码值的索引值;偏移地址获取单元,用于通过所述索引值进行地址运算,得到对应的字符点阵数据偏 移地址;点阵数据获取单元,用于通过所述偏移地址找到字符的点阵数据、实际宽度和高度数据;字符显示单元,用于调用OSD显示函数以根据所述字符的点阵数据、宽度和高度数据 显示字符。
6.根据权利要求5所述的嵌入式设备,其特征在于,包括UTF码判断单元,用于在所述读取待显示的统一码UNICODE编码格式的字符数据步骤 之后、判断所述字符数据所在的字库步骤之前,判断输入的字符数据所对应的字符串是否 为有效的统一码文本格式UTF字符串;编码转换单元,用于在所对应的字符串为有效的统一码文本格式UTF字符串时,将所 述UTF字符串转换成UNICODE编码格式的字符串;字节合并单元,用于在转换成UNICODE编码格式的字符串后,得到所述字符串的前两 个字节,合并所述两个字节的数值得到字符UNICODE编码值。
7.根据权利要求6所述的嵌入式设备,其特征在于,包括多语言字符串表生成单元,用于将每一种语言的字符串都生成各自独立的多语言字符 串数据表,其中使用UTF-8编码作为字符串中每个字符的编码,数据表由字符串向量和字 符串的UTF-8编码数据组成,所述字符串向量用于提供每个字符串数据的存放相对偏移地 址,所述UTF-8编码数据用于存放每一个字符串转换成UTF-8编码后的字符数据。
8.根据权利要求5至7任一项所述的嵌入式设备,其特征在于,包括位图文件生成单元,用于从Windows操作系统自带的矢量字库文件中提取指定大小的 字体,并将该字体以位图的格式存放得到字符的位图文件;多语言字库生成单元,用于将所述位图文件转换成字库的C语言头文件,使所述C语言 头文件中字符的内部数据结构包括所述字符数据UNICODE编码向量表、字符宽度向量表以 及字符点阵数据向量表,并且使字库中每个字符的UNICODE编码向量表、字符宽度向量表 和字符点阵数据向量表中的顺序一致。
9.根据权利要求5至7任一项所述的嵌入式设备,其特征在于所述嵌入式设备是机顶盒。
全文摘要
本发明公开了一种嵌入式设备及其在OSD界面显示语言字符的方法。所述方法包括读取待显示的UNICODE编码字符数据;根据字符数据的UNICODE编码值判断字符数据所在的字库;将字符数据的UNICODE编码值和字库中的UNICODE编码向量表中的UNICODE编码逐一比较,得到字符在UNICODE编码向量表中对应UNICODE编码值的索引值;通过索引值进行地址运算,得到对应的字符点阵数据偏移地址;通过偏移地址找到字符的点阵数据、实际宽度和高度数据;调用OSD显示函数以根据字符的点阵数据、宽度和高度数据显示字符。本发明能够高效、方便、低成本地实现在嵌入式设备的OSD界面进行各种语言文字显示功能。
文档编号G06F9/44GK102141916SQ201110021998
公开日2011年8月3日 申请日期2011年1月19日 优先权日2011年1月19日
发明者林志军 申请人:深圳创维数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1