三维字体显示方法及装置制造方法

文档序号:6502718阅读:144来源:国知局
三维字体显示方法及装置制造方法
【专利摘要】本发明公开了一种三维字体显示方法及装置,用以解决现有技术提供的对字符进行三维化显示的方案存在的需要耗费大量的处理资源生成庞大的三维字体库的问题。方法包括:生成字符所对应的二维矢量字体;将所述二维矢量字体包含的除矢量线段外的其他所有矢量元素转换为矢量线段;根据所述二维矢量字体包含的矢量线段和转换得到的矢量线段,显示对应于所述字符的三维字体。
【专利说明】三维字体显示方法及装置

【技术领域】
[0001] 本发明涉及图形处理领域,尤其涉及一种三维字体显示方法及装置。

【背景技术】
[0002] 随着移动终端的性能越来越强大,图形处理技术尤其是GPU已经广泛地应用在移 动终端上,2011年更是出现了诸如Optimas这种立体三维手机。由于三维技术在移动终端 上的广泛应用日益加强,因此如何实现字符(包括数字、字母和文字等)的三维化显示也日 益成为一个亟待解决的问题。其中,字符的三维化显示,是指显示字符所对应的三维图像, 如图1所示。
[0003] 以采用嵌入式设备实现字符的三维化显示为例,在现有技术中,字符的三维化显 示过程一般包括三个步骤,分别为:1、嵌入式设备中载入的字体引擎根据输入该引擎的字 体类别等参数,载入相应类别的三维字体库;2、字体引擎获得输入自身的字符,并从上述三 维字体库中查找对应于该字符的三维字体; 3、字体引擎将查找到的三维字体绘制在指定的 显示装置的屏幕上。
[0004] 上述现有技术的主要思想是预先对字符进行建模,从而生成相应的三维字体库, 从而后续可以很方便地从已经生成的三维字体库中,选取待进行三维化显示的字符所对应 的三维字体并绘制。
[0005] 由于字符存在着数量庞大这一特性,因此,若要求上述现有技术兼容对各种字符 的显示,则需要耗费非常大的处理资源来建立对应于海量字符的庞大的三维字体库。


【发明内容】

[0006] 本发明实施例提供一种三维字体显示方法及装置,用以解决现有技术提供的对字 符进行三维化显示的方案存在的需要耗费大量的处理资源生成庞大的三维字体库的问题。
[0007] 本发明实施例采用以下技术方案:
[0008] -种三维字体显示方法,包括:生成字符所对应的二维矢量字体;将所述二维矢 量字体包含的除矢量线段外的其他所有矢量元素转换为用于近似表示所述所有矢量元素 多条矢量线段;根据所述二维矢量字体包含的矢量线段和转换得到的矢量线段,显示对应 于所述字符的三维字体。
[0009] -种三维字体显示装置,包括:矢量字体生成单元,用于生成字符所对应的二维矢 量字体;转换单元,用于将矢量字体生成单元生成的二维矢量字体包含的除矢量线段外的 其他所有矢量元素转换为用于近似表示所述所有矢量元素多条矢量线段;显示单元,用于 根据二维矢量字体包含的矢量线段和转换单元转换得到的矢量线段,显示对应于所述字符 的三维字体。
[0010] 本发明实施例的有益效果如下:
[0011] 本发明实施例提供的方案中由于将字符所对应的二维矢量字体所包含的除矢量 线段外的其他矢量元素转换为用于近似表示所述其他矢量元素的多条矢量线段,并基于转 换得到的矢量线段来显示三维字体,从而该方案无需依赖三维字体库,因此解决了现有技 术提供的对字符进行三维化显示的方案存在的需要耗费大量的处理资源来生成庞大的三 维字体库的问题。

【专利附图】

【附图说明】
[0012] 图1为本发明实施例提供的一种三维字体显示方法的具体流程示意图;
[0013] 图2为将二维矢量字体包含的除矢量线段外的其他所有矢量元素转换为三维坐 标系中的多条矢量线段的示意图;
[0014] 图3为本发明实施例提供的三维字体显示方法在实际中的一种具体实现流程示 意图;
[0015] 图4为本发明实施例提供的一种三维字体显示装置的具体结构示意图;
[0016] 图5为本发明实施例提供的一种三维字体显示装置的具体结构示意图。

【具体实施方式】
[0017] 为了解决现有技术提供的对字符进行三维化显示的方案存在的需要耗费大量的 处理资源生成庞大的三维字体库的问题,本发明实施例提供了一种三维字体显示方法及装 置,通过生成字符所对应的二维矢量字体,并将该二维矢量字体所包含的除矢量线段外的 其他矢量元素转换为矢量线段,并基于转换得到的矢量线段和二维矢量字体所包含的矢量 线段来实现对三维字体的显示,从而该方案不需要依赖于三维字体库也可以实现对字符所 对应的三维字体的显示。
[0018] 以下结合说明书附图对本发明的实施例进行说明,应当理解,此处所描述的实施 例仅用于说明和解释本发明,并不用于限制本发明。并且在不冲突的情况下,本说明中的实 施例及实施例中的特征可以互相结合。
[0019] 本发明实施例首先提供一种三维字体显示方法,该方法主要包括如图1所示的下 述主要步骤:
[0020] 步骤11,生成字符所对应的二维矢量字体;
[0021] 可选的,本发明实施例提供的该方法的执行主体可以是移动终端或其他设备。
[0022] 以执行主体为移动终端为例,步骤11中所述的字符可以是由使用该移动终端的 用户输入到该移动终端中的字符。具体地,字符可以但不限于包括字母、数字、汉字及其他 各种可映射为三维图形的符号。
[0023] 步骤12,将二维矢量字体包含的除矢量线段外的其他所有矢量元素转换为用于近 似表示所述所有矢量元素多条矢量线段;
[0024] 仍然以移动终端为例,其将生成的二维矢量字体包含的除矢量线段外的其他所有 矢量元素转换为矢量线段具体可以包括:将该二维矢量字体包含的除矢量线段外的其他所 有矢量元素转换为处于预先设置的三维坐标系中的多条矢量线段,如图2所示。图2中,字 符"D"所对应的二维矢量字体包含的所有矢量元素(包括线段和曲线)中,曲线这一矢量元 素被转换为矢量线段。其中,由字符"D"所对应的二维矢量字体包含的矢量线段和转换得 到的矢量线段所共同构成的如图2中的阴影部分的区域是一个空心的多边形。由于该空心 的多边形与字符"D"的形状类似,因此,也可以认为,该空心的多边形表征了该字符"D"的 结构。
[0025] 由于二维矢量字体是利用组成字符的各点间的一组线来表示一个字符,而不是像 字符字体那样仅仅通过一组点来表示字符,因此二维矢量字体可以很容易地放大或者缩 小,且无论是对其进行放大还是缩小,都不会影响其显示效果。基于二维矢量字体的该特 点,若本发明实施例提供的该方法还包括获得三维字体尺寸值的步骤,那么步骤12的具体 实现过程可以包括下述步骤:
[0026] 首先,将二维矢量字体包含的除矢量线段外的其他所有矢量元素转换为原始矢量 线段;
[0027] 然后,再根据三维字体尺寸值对原始矢量线段和二维矢量字体包含的矢量线段进 行调整,获得调整后的矢量线段。调整后的矢量线段即可以作为对该二维矢量字体进行转 换而获得的矢量线段。
[0028] 步骤13,根据转换得到的矢量线段,显示对应于字符的三维字体。
[0029] 由于二维矢量字体具备无论放大或者缩小都不会影响其显示效果的特点,因此本 发明实施例中,当执行步骤13时,可以根据获得的三维字体尺寸值先对将转换得到的矢量 线段的尺寸进行调整,得到调整后的矢量线段;然后,再根据调整后的矢量线段,显示相应 的三维字体。
[0030] 具体地,步骤13的一种较佳的实现方式可以包括下述子步骤:
[0031] 子步骤一:确定由转换得到的矢量线段和二维矢量字体包含的矢量线段所共同围 成的、用于表征二维矢量字体的结构的多边形,并将该多边形划分为互不重叠的多个三角 形;
[0032] 子步骤二:根据获得的三维字体厚度值,确定三维字体的侧面区域,并将该侧面区 域划分为互不重叠的多个三角形;
[0033] 子步骤三:将通过对上述多边形和侧面区域分别进行划分而得到的所有三角形的 信息输入图形库进行三维字体渲染后显示。
[0034] 针对上述子步骤需要说明的是:首先,本发明实施例中不限定上述子步骤一、二的 执行顺序,其除了可以一先一后的执行外,还可以是同步执行的;其次,本发明实施例中, 之所以要将多边形和侧面区域划分为多个三角形,是由于目前主流的图形库,如OpenGL ES2.0主要都是以处理三角形的信息为主。本领域技术人员可以理解,若本发明实施例中采 用的是其他一些特定类型的数据库,也可以不对多边形和侧面区域进行划分,或者将其划 分为具备其他形状的子区域。
[0035] 此外还需要说明的是,在子步骤一中,可以先将多边形划分为互不重叠的多个梯 形,然后再将划分得到的梯形进一步划分为三角形。其中,将多边形划分为梯形具体实现过 程可以参见参考文献"多边形分解为梯形的一种方法"。该文献的访问网址如下:
[0036] http://www. cnki. com. cn/Article/CJFDTotal-JSGG199601012. htm
[0037] 通过采用本发明实施例提供的上述方法,可以实现动态地生成并显示三维字体, 而不需要依赖于三维字体库。从而可以解决现有技术提供的对字符进行三维化显示的方 案存在的需要耗费大量的处理资源生成庞大的三维字体库的问题。同时,该方法由于存在 高效和实现过程简单的优势,同时还可以利用适用于移动终端设备的3D图形标准OpenGL ES2. 0进行三维字体渲染,从而该方法适宜于应用在移动终端等处理能力较弱的设备中。
[0038] 以下结合实际,详细说明本发明实施例提供的上述方法在实际中的一种具体实现 流程。该流程主要包括如图3所示的下述步骤:
[0039] 步骤31,移动终端获得用户输入的字符"B" ;
[0040] 步骤32,移动终端生成用户输入的字符"B"所对应的矢量字体;
[0041] 步骤33,移动终端将该矢量字体所包含的除矢量线段外的其他矢量元素转换为多 个矢量线段;
[0042] 具体地,在执行步骤33的过程中,对于该矢量字体所包含的矢量线段是不需要转 换的;而对于该矢量字体所包含的其他一些诸如曲线的矢量元素,则需要通过逼近的方法 将其分解为多条矢量线段。通过这样的操作,字符"B"所对应的矢量字体被分解为多条矢 量线段,如图4所示。
[0043] 步骤34,移动终端首先将如图4所示的阴影区域分解为多个梯形,然后,由于对于 一个梯形来说,通过采用连接其不相邻的两个顶点的方法,可以将其分解为两个三角形,因 此移动终端可以将分解得到的多个梯形进一步进行划分,得到互不重叠的多个三角形;
[0044] 步骤35,假设如图4所示的矢量线段均位于由X轴和y轴构成的平面中,则移动终 端根据三维字体的厚度值,可以生成一个与图4中的阴影区域的形状完全一致、且平行于 该阴影区域、且与该阴影区域之间的距离等于该厚度值的区域。该区域与图4中的阴影区 域即分别为三维字体的正面区域和背面区域。
[0045] 步骤36,采用与步骤34中所述的类似处理方式,对三维字体的背面区域进行划 分,也可以得到互不重叠的多个三角形。
[0046] 步骤37,移动终端根据三维字体的正面区域和背面区域的各组成线段的端点的坐 标值,可以实现对X坐标和y坐标均相同的端点的连接,从而获得多个矩形,该些矩形共同 构成了三维字体的侧面区域。进一步地,通过对每个矩形执行:连接该矩形的两个不相邻的 顶点,从而获得两个三角形。
[0047] 至此,字符"B"所对应的矢量字体完成了 3D化,并且被分解为多个小三角形。
[0048] 步骤38,移动终端将对三维字体的正面区域和背面区域进行划分而得到的三角 形,以及通过执行步骤37而得到的三角形输入到OpenGL ES进行渲染并显示。
[0049] 出于与本发明实施例提供的三维字体显示方法相同的发明构思,本发明实施例还 提供一种三维字体显示装置,该装置包括如图5所示的下述功能单元:
[0050] 矢量字体生成单元51,用于生成字符所对应的二维矢量字体;
[0051] 转换单元52,用于将矢量字体生成单元51生成的二维矢量字体包含的除矢量线 段外的其他所有矢量元素转换为矢量线段;
[0052] 显示单元53,用于根据二维矢量字体包含的矢量线段和转换单元52转换得到的 矢量线段,显示对应于上述字符的三维字体。
[0053] 可选的,显示单元53具体可以包括:
[0054] 多边形确定子单元,用于确定由二维矢量字体包含的矢量线段和转换得到的矢量 线段所围成的、用于表征二维矢量字体的结构的多边形;
[0055] 划分子单元,用于将多边形确定子单元确定的多边形划分为互不重叠的多个三角 形;并根据获得的三维字体厚度值,确定所述三维字体的侧面区域,并将所述侧面区域划分 为互不重叠的多个三角形;
[0056] 显示子单元,用于将划分子单元对所述多边形和侧面区域分别进行划分而得到的 所有三角形的信息,输入图形库进行三维字体渲染后显示。
[0057] 可选的,为了实现对三维字体尺寸的调整,本发明实施例提供的该装置还可以进 一步包括:尺寸值获得单元,用于获得三维字体尺寸值。
[0058] 当该装置还包括尺寸值获得单元时,转换单元52具体可以划分为以下功能子单 元,包括:
[0059] 转换子单元,用于将二维矢量字体包含的除矢量线段外的其他所有矢量元素转换 为原始矢量线段;
[0060] 调整子单元,用于根据尺寸值获得单元获得的三维字体尺寸值,对转换子单元转 换得到的原始矢量线段和所述二维矢量字体包含的矢量线段进行调整,获得调整后的矢量 线段。
[0061] 对应于显示单元53功能的一种实现方式,显示单元53还可以进一步被划分为以 下功能子单元,包括:
[0062] 调整子单元,用于根据获得的三维字体尺寸值,对二维矢量字体包含的矢量线段 和转换得到的矢量线段的尺寸进行调整,得到调整后的矢量线段;
[0063] 显示子单元,用于根据调整子单元得到的调整后的矢量线段,显示对应于字符的 三维字体。
[0064] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序 产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实 施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机 可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产 品的形式。
[0065] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程 图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一 流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算 机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理 器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生 用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能 的装置。
[0066] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特 定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或 多个方框中指定的功能。
[0067] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计 算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图 一个方框或多个方框中指定的功能的步骤。
[0068] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造 性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优 选实施例以及落入本发明范围的所有变更和修改。
[0069] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1. 一种三维字体显示方法,其特征在于,包括: 生成字符所对应的二维矢量字体; 将所述二维矢量字体包含的除矢量线段外的其他所有矢量元素转换为用于近似表示 所述所有矢量元素多条矢量线段; 根据所述二维矢量字体包含的矢量线段和转换得到的矢量线段,显示对应于所述字符 的三维字体。
2. 如权利要求1所述的方法,其特征在于,根据所述二维矢量字体包含的矢量线段和 转换得到的矢量线段,显示对应于所述字符的三维字体,具体包括: 确定由所述二维矢量字体包含的矢量线段和转换得到的矢量线段所围成的、用于表征 所述二维矢量字体的结构的多边形,并将所述多边形划分为互不重叠的多个三角形; 根据获得的三维字体厚度值,确定所述三维字体的侧面区域,并将所述侧面区域划分 为互不重叠的多个三角形; 将对所述多边形和所述侧面区域分别进行划分而得到的所有三角形的信息输入图形 库进行三维字体渲染后显示。
3. 如权利要求2所述的方法,其特征在于,所述图形库为OpenGL ES2.0。
4. 如权利要求1?3任一所述的方法,其特征在于,所述方法还包括: 获得三维字体尺寸值;则 将所述所有矢量元素转换为用于近似表示所述所有矢量元素多条矢量线段,具体包 括: 将所述所有矢量元素转换为用于近似表示所述所有矢量元素的多条原始矢量线段; 根据所述三维字体尺寸值,对所述原始矢量线段和所述二维矢量字体包含的矢量线段 进行调整,获得调整后的矢量线段。
5. 权利要求1所述的方法,其特征在于,根据所述二维矢量字体包含的矢量线段和转 换得到的矢量线段,显示对应于所述字符的三维字体,具体包括: 根据获得的三维字体尺寸值,对所述二维矢量字体包含的矢量线段和转换得到的矢量 线段的尺寸进行调整,得到调整后的矢量线段; 根据调整后的矢量线段,显示对应于所述字符的三维字体。
6. -种三维字体显示装置,其特征在于,包括: 矢量字体生成单元,用于生成字符所对应的二维矢量字体; 转换单元,用于将矢量字体生成单元生成的二维矢量字体包含的除矢量线段外的其他 所有矢量元素转换为用于近似表示所述所有矢量元素多条矢量线段; 显示单元,用于根据二维矢量字体包含的矢量线段和转换单元转换得到的矢量线段, 显示对应于所述字符的三维字体。
7. 如权利要求6所述的装置,其特征在于,所述显示单元具体包括: 多边形确定子单元,用于确定由所述二维矢量字体包含的矢量线段和转换得到的矢量 线段所围成的、用于表征所述二维矢量字体的结构的多边形; 划分子单元,用于将多边形确定子单元确定的多边形划分为互不重叠的多个三角形; 并根据获得的三维字体厚度值,确定所述三维字体的侧面区域,并将所述侧面区域划分为 互不重叠的多个三角形; 显示子单元,用于将划分子单元对所述多边形和所述侧面区域分别进行划分而得到的 所有三角形的信息,输入图形库进行三维字体渲染后显示。
8. 如权利要求7所述的装置,其特征在于,所述图形库为OpenGL ES2.0。
9. 如权利要求6?8任一所述的装置,其特征在于,所述装置还包括: 尺寸值获得单元,用于获得三维字体尺寸值;则 所述转换单元具体包括: 转换子单元,用于将所述所有矢量元素转换为用于近似表示所述所有矢量元素的多条 原始矢量线段; 调整子单元,用于根据尺寸值获得单元获得的所述三维字体尺寸值,对转换子单元转 换得到的原始矢量线段和所述二维矢量字体包含的矢量线段进行调整,获得调整后的矢量 线段。
10. 权利要求6所述的装置,其特征在于,所述显示单元具体包括: 调整子单元,用于根据获得的三维字体尺寸值,对所述二维矢量字体包含的矢量线段 和转换得到的矢量线段的尺寸进行调整,得到调整后的矢量线段; 显示子单元,用于根据调整子单元得到的调整后的矢量线段,显示对应于所述字符的 三维字体。
【文档编号】G06F3/14GK104156185SQ201310175717
【公开日】2014年11月19日 申请日期:2013年5月13日 优先权日:2013年5月13日
【发明者】李宽 申请人:中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1