CN116306494A - 一种文字渲染方法、装置、设备、存储介质及产品 - Google Patents
一种文字渲染方法、装置、设备、存储介质及产品 Download PDFInfo
- Publication number
- CN116306494A CN116306494A CN202211704577.1A CN202211704577A CN116306494A CN 116306494 A CN116306494 A CN 116306494A CN 202211704577 A CN202211704577 A CN 202211704577A CN 116306494 A CN116306494 A CN 116306494A
- Authority
- CN
- China
- Prior art keywords
- contour
- text
- pixel
- rendered
- point
- 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.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 151
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000010586 diagram Methods 0.000 claims abstract description 118
- 238000004364 calculation method Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 8
- 230000003321 amplification Effects 0.000 claims description 4
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/109—Font handling; Temporal or kinetic typography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本申请实施例提供了一种文字渲染方法、装置、设备、存储介质及产品。本申请实施例提供的技术方案通过获取待渲染文字的轮廓线,创建待渲染文字对应的像素空间并确定像素空间中每个像素点与各个轮廓线对应的轮廓距离,基于每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图,并基于字符图集中的矢量图渲染待渲染文字,不需要对待渲染文字的位图像素进行多次的遍历,也不需要预先生成占用较大内存的字符图集,通过动态渲染的方式渲染文字,在保证文字渲染质量和渲染效率的同时,减少对内存的占用。
Description
技术领域
本申请实施例涉及渲染技术领域,尤其涉及一种文字渲染方法、装置、设备、存储介质及产品。
背景技术
目前对文字的渲染方式一般是基于字体引擎(例如开源的FreeType)进行的,在字体引擎对字体文件进行解析并获取文字对应的字位符和几何信息,进而组织成渲染所需的纹理和顶点数据,并渲染出所需要的文字。这种文字渲染方式的关键在于生成的字符位图,字体引擎会根据不同的字号生成不同分辨率的字符位图,渲染时则直接采样对应区域的像素值。这种文字渲染方式的问题是当放大文字时,文字会出现明显的边缘模糊和锯齿。
目前常见的解决解决方法是基于有向距离场(SDF,Signed Distance Field)渲染文字,其将每个像素到文字边缘的最短距离存储到字符位图,根据矢量关系进行文字渲染。目前基于有向距离场的文字渲染方式首先使用字体引擎生成位图,又要对位图像素进行至少两次遍历,运行时生成矢量图会造成明显的卡顿,一般的解决方法是离线生成所有文字的矢量图,但是这种文字渲染方式将全部所需文字的矢量图放到一个字符图集中,对内存占用较大。
发明内容
本申请实施例提供一种文字渲染方法、装置、设备、存储介质及产品,以解决相关技术中文字渲染方式需要将全部所需文字的矢量图放到一个字符图集中,对内存占用较大的技术问题,以动态渲染所需文字,减少对内存的占用。
在第一方面,本申请实施例提供了一种文字渲染方法,包括:
获取待渲染文字的轮廓线;
基于所述待渲染文字创建像素空间,并确定所述像素空间中每个像素点与所述轮廓线对应的轮廓距离;
基于所述像素空间中每个像素点对应的轮廓距离在设定的字符图集中添加所述待渲染文字对应的矢量图;
基于所述字符图集中的矢量图渲染所述待渲染文字。
在第二方面,本申请实施例提供了一种文字渲染装置,包括轮廓获取模块、距离确定模块、图集更新模块和文字渲染模块,其中:
所述轮廓获取模块,配置为获取待渲染文字的轮廓线;
所述距离确定模块,配置为基于所述待渲染文字创建像素空间,并确定所述像素空间中每个像素点与所述轮廓线对应的轮廓距离;
所述图集更新模块,配置为基于所述像素空间中每个像素点对应的轮廓距离在设定的字符图集中添加所述待渲染文字对应的矢量图;
所述文字渲染模块,配置为基于所述字符图集中的矢量图渲染所述待渲染文字。
在第三方面,本申请实施例提供了一种文字渲染设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的文字渲染方法。
在第四方面,本申请实施例提供了一种存储计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的文字渲染方法。
在第五方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,设备的至少一个处理器从计算机可读存储介质读取并执行计算机程序,使得设备执行如第一方面所述的文字渲染方法。
本申请实施例通过获取待渲染文字的轮廓线,创建待渲染文字对应的像素空间并确定像素空间中每个像素点与各个轮廓线对应的轮廓距离,基于每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图,并基于字符图集中的矢量图渲染待渲染文字,不需要对待渲染文字的位图像素进行多次的遍历,也不需要预先生成占用较大内存的字符图集,通过动态渲染的方式渲染文字,在保证文字渲染质量和渲染效率的同时,减少对内存的占用。
附图说明
图1是本申请实施例提供的一种文字渲染方法的流程图;
图2是本申请实施例提供的另一种文字渲染方法的流程图;
图3是本申请实施例提供的一种距离信息计算流程示意图;
图4是本申请实施例提供的另一种距离信息计算流程示意图;
图5是本申请实施例提供的一种文字渲染装置的结构示意图;
图6是本申请实施例提供的一种文字渲染设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时上述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。上述处理可以对应于方法、函数、规程、子例程、子程序等等。
本申请提供的文字渲染方法可应用于游戏、短视频特效的文字渲染场景中,旨在通过根据像素空间中每个像素点与待渲染文字各个轮廓线对应的轮廓距离,基于每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图,并基于字符图集中的矢量图渲染待渲染文字,在游戏和短视频特效存在近距离观察文字的场景的情况下,文字的内容也可随之动态变化,在保证文字渲染质量和渲染效率的同时,减少对内存的占用。对于传统的文字渲染方案,一般是基于静态有向距离场进行,即先基于字体引擎生成全部所需要文字的位图,然后提取各个位图中的边界像素,计算每个像素到边界像素的距离,根据像素到边界像素的距离生成对应的矢量图,再将全部所需文字对应的矢量图添加到一个字符图集中,这种基于静态有向距离场的文字渲染方式生成的字符图集占用了较大的内存空间,文字渲染不灵活。基于此,提供本申请实施例的一种文字渲染方法,以解决现有文字渲染方案矢量图生成速度较慢,并且需要生成占用较大内存空间的字符图集,文字渲染不灵活的技术问题。
图1给出了本申请实施例提供的一种文字渲染方法的流程图,本申请实施例提供的文字渲染方法可以由文字渲染装置来执行,该文字渲染装置可以通过硬件和/或软件的方式实现,并集成在文字渲染设备中。
下述以文字渲染装置执行文字渲染方法为例进行描述。参考图1,该文字渲染方法包括:
S101:获取待渲染文字的轮廓线。
本方案提供的待渲染文字对应有多个轮廓线,多个轮廓线的组合可形成对应文字的字体轮廓,将在字体轮廓内对应的像素点与在字体轮廓之外的像素点进行区别显示,即可显示出对应的文字内容。可选的,待渲染文字可通过不同的字体文件进行记录,例如可通过ttf(TrueType Fonts)、otf(OpenType Fonts)、otc(OpenType Collection)等不同格式的字体文件记录待渲染文字,字体文件中记录有对应的文字的矢量信息,即字体文件中记录的字体为矢量字体。
示例性的,在获取待渲染文字对应的字体文件后,对待渲染文字对应的字体文件进行解析,并确定待渲染文字对应的轮廓线。可选的,可基于字体引擎(例如开源的FreeType)对字体文件进行解析,并确定待渲染文字对应的轮廓线。
在一个实施例中,字体文件中的矢量字体中的轮廓线以贝塞尔曲线的方式进行记录,不同的轮廓线可通过一阶贝塞尔曲线或二阶贝塞尔曲线进行记录,其中,一阶贝塞尔曲线可通过两个定位点进行记录,二阶贝塞尔曲线可通过三个定位点(两个锚点和一个控制点)进行记录。
S102:基于待渲染文字创建像素空间,并确定像素空间中每个像素点与轮廓线对应的轮廓距离。
示例性的,根据需要进行渲染的待渲染文字创建一个像素空间,该像素空间内具有多个像素点。可选的,像素空间可通过二维数组的方式进行记录,二维数组中不同元素对应不同的像素点。
在一个可能的实施例中,像素空间的尺寸可基于字体文件中记录的待渲染文字的尺寸进行过确定,例如将像素空间的尺寸设置为待渲染文字的尺寸一致,或者是将像素空间的尺寸设置为稍大于待渲染文字的尺寸。在一个实施例中,本方案提供的文字渲染方法在基于待渲染文字创建像素空间时,可以是:确定待渲染文字对应的尺寸信息,并基于尺寸信息进行放大处理得到像素空间。可选的,轮廓线中的每个像素点均可在像素空间中确定与之对应的像素点。
示例性的,利用字体引擎(例如FreeType字体引擎)从设定的字体文件中解析待渲染文字,并确定待渲染文字的尺寸信息(例如待渲染文字的字符宽度和字符高度)。在待渲染文字的尺寸信息的基础上,对尺寸信息进行放大处理得到的尺寸即为像素空间对应的尺寸。可选的,对尺寸信息进行放大处理可以是基于设定的放大幅度(例如设定像素数量)或者是设定的放大倍数进行。本方案通过对待渲染文字的尺寸信息进行放大处理得到尺寸更大的像素空间,有效减少由于轮廓线靠近像素空间边缘而导致部分像素点丢失矢量信息,导致渲染出的文字在边缘处出现截断的情况,保证文字渲染效果。
对于像素空间中每一个像素点,计算像素点与每一个轮廓线之间的距离,并将其中最小的距离作为像素点对应的轮廓距离(即像素点与最近的轮廓线之间的距离)。例如,以像素点为圆心,针对每个轮廓线,确定一个与轮廓线相切的圆,该圆的半径或像素点到切点的距离即为像素点到对应轮廓线的距离。
S103:基于像素空间中每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图。
本方案提供的字符图集用于记录不同文字对应的矢量图,在矢量图中记录有多个像素点对应的矢量信息,即在矢量图中各个像素点对应的位置记录对应的轮廓距离。在需要渲染文字时,可通过采样字符图集中对应文字的矢量图进行文字渲染。
示例性的,在确定像素空间中每个像素点对应的轮廓距离后,基于每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图,并记录该待渲染文字的矢量图在字符图集中的字符坐标信息,根据字符坐标信息可文字对应的矢量图在字符图集中的位置。例如字符坐标信息可记录矢量图在字符图集中的左上角坐标和右下角坐标,根据文字对应的字符坐标信息中的左上角坐标和右下角坐标可在字符图集中确定对应的矩形范围,该矩形范围对应的矢量信息即为该文字对应的矢量图。
在一个可能的实施例中,字符图集的尺寸可以是固定的图集尺寸,也可以是动态更新的图集尺寸。例如,根据需要渲染的文字的数量设定字符图集的图集尺寸,或者是设定单页的字符图集的图集尺寸(每页字符图集可记录设定数量的矢量图),在一页字符图集中记录达到设定数量的矢量图后,可创建新的字符图集,还可以是在每次向字符图集中添加矢量图时,实时更新字符图集的图集尺寸,实现字符图集占用空间的动态更新,减少字符图集对内存空间的占用。
S104:基于字符图集中的矢量图渲染待渲染文字。
示例性的,从字符图集中读取待渲染文字对应的矢量图,并基于该矢量图渲染待渲染文字。例如,根据待渲染文字在字符图集中的字符坐标信息从字符图集中获取对应的矢量图,并基于该矢量图渲染出待渲染文字。例如,在基于矢量图渲染待渲染文字时,针对矢量图中每个像素点对应的轮廓距离与设定距离阈值的比较结果,设置每个像素点对应的透明度值(alpha值),并基于每个像素点对应的透明度值渲染待渲染文字,实现基于有向距离场的文字渲染,并且文字的每个像素点的渲染为基于像素点之间的矢量关系进行,在不同分辨率的缩放处理下均可在文字中确定明确的边界,实现文字的高清晰度渲染。
在一个实施例中,在需要进行更大分辨率的文字渲染时,可在获取待渲染文字的矢量图后,根据渲染所需要的分辨率对矢量图进行放大处理,并对放大处理后的矢量图中未确定轮廓距离的像素点进行线性插值处理,确定各个像素点对应的轮廓距离,再针对矢量图中每个像素点对应的轮廓距离与设定距离阈值的比较结果,设置每个像素点对应的透明度值,并基于每个像素点对应的透明度值渲染待渲染文字。
需要进行解释的是,本方案中可采用较小尺寸的矢量图记录各个像素点到文字轮廓的轮廓距离,在需要渲染更大分辨率的文字时,基于纹理采样差值的原理,基于已知像素点的轮廓距离进行线性插值处理确定各个像素点对应的轮廓距离,根据每个像素点基于轮廓距离和设定距离阈值的比较结果确定的透明度进行文字渲染,实现文字的放大且不失真的渲染效果,可以用较小分辨率的矢量图渲染不同分辨率的文字,不需要分别针对不同分辨率生成对应的位图,有效减少字符图集对内存空间的占用。
在一个可能的实施例中,本方案提供的文字渲染方法在获取待渲染文字的轮廓线之前,还包括:在字符图集中记录有待渲染文字对应的矢量图的情况下,基于字符图集中对应的矢量图渲染待渲染文字。
示例性的,本方案在每次生成一个文字对应的矢量图时,会将该文字对应矢量图添加到设定的字符图集中,并记录该文字对应矢量图在字符图集中的字符坐标信息。
在每次需要渲染新的待渲染文字时,先确定在字符图集中是否记录有该待渲染文字对应的矢量图,若在字符图集中未记录有该待渲染文字对应的矢量图,则根据待渲染文字创建像素空间并确定像素空间中每个像素点与各个轮廓线对应的轮廓距离,并基于此在字符图集中添加待渲染文字对应的矢量图(即按照步骤S101~103在字符图集中添加待渲染文字对应的矢量图),再基于字符图集中的矢量图渲染待渲染文字。而在字符图集中记录有该待渲染文字对应的矢量图的情况下,可直接基于待渲染文字对应的字符坐标信息在字符图集中获取对应的矢量图进行文字渲染,不需要再次生成该待渲染文字的矢量图,在保证文字渲染质量的情况下,有效提高文字渲染效率。
上述,通过获取待渲染文字的轮廓线,创建待渲染文字对应的像素空间并确定像素空间中每个像素点与各个轮廓线对应的轮廓距离,基于每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图,并基于字符图集中的矢量图渲染待渲染文字,不需要对待渲染文字的位图像素进行多次的遍历,也不需要预先生成占用较大内存的字符图集,通过动态渲染的方式渲染文字,在保证文字渲染质量和渲染效率的同时,减少对内存的占用。
在上述实施例的基础上,图2给出了本申请实施例提供的另一种文字渲染方法的流程图,该文字渲染方法是对上述文字渲染方法的具体化。参考图2,该文字渲染方法包括:
S201:获取待渲染文字的轮廓线,以及基于待渲染文字创建像素空间。
S202:计算像素空间中每个像素点到每个轮廓线的距离信息。
示例性的,在获取待渲染文字的轮廓线并创建待渲染文字对应的像素空间后,针对像素空间中的每一个像素点,计算像素点到每个轮廓线的距离信息。可以理解的是,以像素点为圆心确定一个与轮廓线相切的圆,该圆的半径或像素点到切点的距离即为像素点到该轮廓线的距离信息。
可选的,本方案提供的轮廓线可通过贝塞尔曲线进行记录,以二阶贝塞尔曲线记录的轮廓线为例,轮廓线包括三个定位点,分别为第一锚点、控制点和第二锚点,其中第一锚点和第二锚点可以是为轮廓线对应的起始点和终止点,可以理解的是,控制点的位置不同,对应生成不同形状的贝塞尔曲线,即生成不同形状的轮廓线。在一个可能的实施例中,像素点到轮廓线的距离信息可通过二分区间法和/或牛顿迭代法求解得到。
在一个可能的实施例中,如图3提供的一种距离信息计算流程示意图所示,本方案提供的文字渲染方法在计算像素空间中每个像素点到每个轮廓线的距离信息时,包括:
S2021:基于像素空间中每个像素点对应的像素点位置信息、每个轮廓线的定位点对应的定位点位置信息,确定每个像素点对应各个轮廓线的轮廓定位信息。
S2022:基于轮廓定位信息确定每个像素点到各个轮廓线的距离信息。
示例性的,对于像素空间中每个像素点,计算其与每个轮廓线对应的距离信息。其中,在计算像素空间中的一个像素点与每个轮廓线对应的距离信息时,基于该像素点对应的像素点位置信息以及每个轮廓线的定位点对应的定位点位置信息,确定每个像素点对应的在各个轮廓线的轮廓定位信息。
在一个实施例中,可通过定位信息在确定的贝塞尔曲线上确定具体的点,其中轮廓定位信息可用于确定在轮廓线上与像素点最近的轮廓定位点(即以像素点为圆心,与轮廓线相切的切点)。
例如,对于基于一阶贝塞尔曲线进行表示的轮廓线,在给定两个锚点P0和P1的情况下,轮廓线为两个锚点之间直接连线构成的直线,轮廓线可基于以下公式表示:
B(t)=P0+(P1-P0)t=(1-t)P0+tP1,t∈[0,1]
对于基于二阶贝塞尔曲线进行表示的轮廓线,轮廓线的三个定位点分别为第一锚点P0、控制点P1和第二锚点P2的情况下,轮廓线可基于以下公式表示:
B(t)=(1-t)2P0+2t(1-t)P1+t2P2,t∈[0,1]
其中,t为轮廓线上的定位信息,其取值范围为0~1,在t为0时,对应的轮廓定位点为第一锚点P0,在t为1时,对应的轮廓定位点为第二锚点P2,t在0~1之间的值时,轮廓定位点在轮廓线上第一锚点P0和第二锚点P2之间。可以理解的是,可通过确定轮廓线上的定位信息t确定轮廓线上的点,例如基于像素空间上的像素点做出的圆与轮廓线之间的相切关系,确定对应的定位信息t作为轮廓定位信息。
在一个实施例中,以基于二阶贝塞尔曲线进行表示的轮廓线为例,假设轮廓线的第一锚点和第二锚点为P0和P2,控制点为P1,像素空间中当前像素点为Pi,其中第一锚点P0的x轴坐标为x0,y轴坐标为y0,其余点同理。贝塞尔曲线在x轴和y轴方向关于t的导数分别为X′(t)和Y′(t),轮廓线在与像素点Pi最近的轮廓定位点上对应的切线为轮廓定位点的xy轴导数。基于轮廓定位点对应切线与轮廓线的相切关系,切线与轮廓定位点和像素点的连线的向量点乘为O,则满足公式一:
X′(t)*(xi-xt)+Y′(t)*(yi-yt)=0
同时,二阶贝塞尔曲线满足:
B(t)=(P0-2P1+P2)t2+2*(P1-P0)t+P0
对二阶贝塞尔曲线求导后得到公式二:
B′(t)=2*(P0-2P1+P2)t+2*(P1-P0)
本方案定义一下变量:
(a0,a1)=P1-P0
(b0,b1)=P0-2P1+P2
将公式二代入到公式一中可得本方案提供的轮廓定位信息确定公式。基于此,本方案提供的轮廓定位信息可基于以下轮廓定位信息确定公式进行确定:
(b02+b12)*t3+(3*a0*b0+3*a1*b1)*t2+[2*a02+2*a12+b0*(x0-xi)+b1*(y0-yi)]*t+a0*(x0-xi)+a1*(y0-yi)=0
(a0,a1)=P1-P0
(b0,b1)=P0-2P1+P2
其中,t为轮廓定位信息,P0为轮廓线的第一锚点,P1为轮廓线的控制点,P2为轮廓线的第二锚点,(xi,yi)为像素点Pi的像素点位置信息,(x0,y0)为第一锚点P0的端点位置信息,(a0,a1)为基于轮廓线的第一锚点P0和控制点P1确定的第一参考坐标(即基于"P1-P0"对应的计算结果得到的坐标点),(b0,b1)为基于轮廓线的第一锚点P0、控制点P1和第二锚点P2确定的第二参考坐标(即基于"P0一2P1+P2"对应的计算结果得到的坐标点)。
示例性的,基于像素点Pi对应的像素点位置信息(xi,yi)、第一锚点P0对应的定位点位置信息(x0,y0)、第二锚点P2对应的定位点位置信息(x2,y2)和控制点P1对应的定位点位置信息(x1,y1),代入上述轮廓定位信息确定公式可确定轮廓定位信息t(在对轮廓定位信息确定公式求解出多个解算结果时,可确定其中一个解算结果作为轮廓定位信息t)。本方案基于轮廓定位点对应切线与轮廓线的相切关系,以及切线与轮廓定位点和像素点的连线的垂直关系,准确确定轮廓线对应的轮廓定位信息,准确计算每个像素点到各个轮廓线的距离信息,提高对待渲染文字的矢量图的生成质量和生成效率。
进一步的,在确定每个像素点对应各个轮廓线的轮廓定位信息后,对于像素空间中的每个像素点,可基于对应的各个轮廓定位信息确定各个轮廓线相对于该像素点的轮廓定位点(距离像素点最近的轮廓点),并确定像素点到每个轮廓定位点的距离确定该像素点到各个轮廓线的距离信息。按照上述距离信息确定步骤,可确定像素空间中每个像素点到各个轮廓线的距离信息。本方案通过确定每个像素点对应各个轮廓线的轮廓定位信息,从而准确确定每个像素点到各个轮廓线的最短距离,得到每个像素点到各个轮廓线的距离信息,提高对待渲染文字的矢量图的生成质量和生成效率。
在一个可能的实施例中,本方案提供的文字渲染方法在基于轮廓定位信息确定每个像素点到各个轮廓线的距离信息时,包括:基于每个像素点对应的轮廓定位信息确定在各个轮廓线的轮廓定位点;基于每个像素点对应的像素点位置信息以及各个轮廓定位点对应的轮廓点位置信息,确定每个像素点到各个轮廓线的距离信息。
示例性的,对于像素空间中的每个像素点,在确定像素点对应每个轮廓线的轮廓定位信息后,根据轮廓定位信息确定像素点在各个轮廓线上所对应的轮廓定位点。
例如,以以基于二阶贝塞尔曲线进行表示的轮廓线为例,轮廓线可基于以下公式表示:
B(t)=(1一t)2P0+2t(1-t)P1+t2P2,t∈[0,1]
将轮廓定位信息t代入上述公式中,可确定轮廓线上所对应的轮廓定位点B(xt,yt),其中xt和yt为轮廓定位点B对应的横坐标和纵坐标。
在确定像素点和其中一个轮廓线对应的轮廓定位点时,可基于该像素点对应的像素点位置信息该轮廓定位点对应的轮廓点位置信息计算像素点到对应轮廓线的距离信息,基于此,可确定该像素点到各个轮廓线的距离信息。本方案通过基于轮廓定位信息确定在轮廓线上与像素点最接近的轮廓定位点,并基于像素点的像素点位置信息以及轮廓定位点对应的轮廓点位置信息,准确确定像素点到轮廓线的距离信息,有效减少生成待渲染文字的矢量图所消耗的时间和计算量,提高对待渲染文字的矢量图的生成质量和生成效率。
在一个可能的实施例中,如图4提供的另一种距离信息计算流程示意图所示,本方案提供的文字渲染方法在计算像素空间中每个像素点到每个轮廓线的距离信息,包括:
S2023:基于像素空间中每个像素点对应的像素点位置信息以及每个轮廓线对应的边界信息,确定满足距离信息计算条件的像素点。
S2024:计算像素空间中满足距离信息计算条件的像素点到每个轮廓线的距离信息。
示例性的,在计算像素空间中每个像素点到每个轮廓线的距离信息之前,先确定每个轮廓线对应的边界信息,并基于像素空间中每个像素点对应的像素点位置信息以及每个轮廓线对应的边界信息,确定像素点是否满足设定的距离信息计算条件,从而确定满足距离信息计算条件的像素点。
可选的,像素点距离待渲染文字的轮廓边界的距离达到设定阈值时,认为像素点不满足距离信息计算条件;而在像素点距离待渲染文字的轮廓边界的距离在设定阈值之内时,认为像素点满足距离信息计算条件。即像素点距离待渲染文字的轮廓边界的距离达到设定阈值时,认为像素点不满足距离信息计算条件;而在像素点距离待渲染文字的轮廓边界的距离在设定阈值之内时,认为像素点满足距离信息计算条件。
其中,轮廓线对应的边界信息可以基于其横坐标和纵坐标上的最大值,以及横坐标和纵坐标上的最小值进行确定。例如,对于像素空间中的每个像素点,在像素点的横坐标均小于各个轮廓线的边界信息对应的横坐标最小值,且差值均达到第一设定阈值、像素点的横坐标均大于各个轮廓线的边界信息对应的横坐标最大值,且差值均达到第二设定阈值、像素点的纵坐标均小于各个轮廓线的边界信息对应的纵坐标最小值,且差值均达到第三设定阈值或者是像素点的纵坐标均大于各个轮廓线的边界信息对应的纵坐标最大值,且差值达到第四设定阈值时,认为像素点不满足距离信息计算条件,否则认为像素点满足距离信息计算条件。在一个实施例中,对于通过贝塞尔曲线进行记录的轮廓线,轮廓线对应的边界信息可基于轮廓线的定位点(锚点、控制点等)对应的横坐标和纵坐标的最大值和最小值确定。
进一步的,在计算像素空间中每个像素点到每个轮廓线的距离信息时,可只计算像素空间中满足距离信息计算条件的像素点到每个轮廓线的距离信息,例如基于步骤S2021-S2022计算满足距离信息计算条件的像素点到每个轮廓线的距离信息,而对于像素空间中未满足距离信息计算条件的像素点,可将这些像素点对应的距离信息设定为预先设置的预设距离信息,这些像素点对应的轮廓距离即为预设距离信息,在渲染文字时,基于预设距离信息确定的透明度为设定的透明度(例如透明度为100%或1),对应渲染得到的文字中,对应像素点未显示对应的颜色或纹理显示效果。本方案通过根据像素点的像素点位置信息以及每个轮廓线对应的边界信息确定满足距离信息计算条件的像素点,减少不必要的像素点对应的距离信息的计算,减少待渲染文字的矢量图生成过程中的计算量,提高矢量图生成效率,在保证文字渲染效果的同时,提高了文字渲染效率,有效提高文字渲染的灵活性。
S203:将每个像素点对应的最小距离信息作为轮廓距离添加到像素空间中。
示例性的,在确定像素空间中每个像素点对应的距离信息后,对于像素空间中的每个像素点,确定像素点对应各个轮廓线的距离信息中的最小距离信息,并将最小距离信息作为像素点对应的轮廓距离添加到像素空间中。本方案通过将像素点对应的最小距离信息作为像素空间中像素点对应的轮廓距离,准确记录像素点距离最近的轮廓线的距离值,不需要根据字体文件生成对应位图后,在位图中识别出文字边缘,再基于位图计算每个像素与文字边缘之间的距离,并有效减少矢量图生成过程中所需要的计算量,有效提高待渲染文字对应的矢量图的生成速度,有利于实时生成待渲染文字的矢量图,保证文字渲染速度。
S204:基于像素空间中每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图。
S205:基于字符图集中的矢量图渲染待渲染文字。
上述,通过获取待渲染文字的轮廓线,创建待渲染文字对应的像素空间并确定像素空间中每个像素点与各个轮廓线对应的轮廓距离,基于每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图,并基于字符图集中的矢量图渲染待渲染文字,不需要对待渲染文字的位图像素进行多次的遍历,也不需要预先生成占用较大内存的字符图集,通过动态渲染的方式渲染文字,在保证文字渲染质量和渲染效率的同时,减少对内存的占用。同时,通过将像素点对应的最小距离信息作为像素空间中像素点对应的轮廓距离,准确记录像素点距离最近的轮廓线的距离值,有效提高待渲染文字对应的矢量图的生成速度,有利于实时生成待渲染文字的矢量图,保证文字渲染速度
图5是本申请实施例提供的一种文字渲染装置的结构示意图。参考图5,该文字渲染装置包括轮廓获取模块51、距离确定模块52、图集更新模块53和文字渲染模块54。
其中,轮廓获取模块51,配置为获取待渲染文字的轮廓线;距离确定模块52,配置为基于待渲染文字创建像素空间,并确定像素空间中每个像素点与轮廓线对应的轮廓距离;图集更新模块53,配置为基于像素空间中每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图;文字渲染模块54,配置为基于字符图集中的矢量图渲染待渲染文字。
上述,通过获取待渲染文字的轮廓线,创建待渲染文字对应的像素空间并确定像素空间中每个像素点与各个轮廓线对应的轮廓距离,基于每个像素点对应的轮廓距离在设定的字符图集中添加待渲染文字对应的矢量图,并基于字符图集中的矢量图渲染待渲染文字,不需要对待渲染文字的位图像素进行多次的遍历,也不需要预先生成占用较大内存的字符图集,通过动态渲染的方式渲染文字,在保证文字渲染质量和渲染效率的同时,减少对内存的占用。
在一个可能的实施例中,距离确定模块52在基于待渲染文字创建像素空间时,配置为:确定待渲染文字对应的尺寸信息,并基于尺寸信息进行放大处理得到像素空间。
在一个可能的实施例中,距离确定模块52在确定像素空间中每个像素点与轮廓线对应的轮廓距离时,配置为:
计算像素空间中每个像素点到每个轮廓线的距离信息;
将每个像素点对应的最小距离信息作为轮廓距离添加到像素空间中。
在一个可能的实施例中,距离确定模块52在计算像素空间中每个像素点到每个轮廓线的距离信息时,配置为:
基于像素空间中每个像素点对应的像素点位置信息、每个轮廓线的定位点对应的定位点位置信息,确定每个像素点对应各个轮廓线的轮廓定位信息;
基于轮廓定位信息确定每个像素点到各个轮廓线的距离信息。
在一个可能的实施例中,距离确定模块52在基于轮廓定位信息确定每个像素点到各个轮廓线的距离信息时,配置为:
基于每个像素点对应的轮廓定位信息确定在各个轮廓线的轮廓定位点;
基于每个像素点对应的像素点位置信息以及各个轮廓定位点对应的轮廓点位置信息,确定每个像素点到各个轮廓线的距离信息。
在一个可能的实施例中,轮廓线通过贝塞尔曲线进行记录,轮廓定位信息基于以下公式进行确定:
(b02+b12)*t3+(3*a0*b0+3*a1*b1)*t2+[2*a02+2*a12+b0
*(x0-xi)+b1*(y0-yi)]*t+a0*(x0-xi)+a1*(y0-yi)
=0
(a0,a1)=P1-P0
(b0,b1)=P0-2P1+P2
其中,t为轮廓定位信息,P0为轮廓线的第一锚点,P1为轮廓线的控制点,户2为轮廓线的第二锚点,(xi,yi)为像素点Pi的像素点位置信息,(x0,y0)为第一锚点P0的端点位置信息,(a0,a1)为基于轮廓线的第一锚点P0和控制点P1确定的第一参考坐标,(b0,b1)为基于轮廓线的第一锚点P0、控制点P1和第二锚点P2确定的第二参考坐标。
在一个可能的实施例中,距离确定模块52在计算像素空间中每个像素点到每个轮廓线的距离信息时,配置为:
基于像素空间中每个像素点对应的像素点位置信息以及每个轮廓线对应的边界信息,确定满足距离信息计算条件的像素点;
计算像素空间中满足距离信息计算条件的像素点到每个轮廓线的距离信息。
在一个可能的实施例中,文字渲染装置还包括矢量渲染模块,矢量渲染模块配置为在获取待渲染文字的轮廓线之前,在字符图集中记录有待渲染文字对应的矢量图的情况下,基于字符图集中对应的矢量图渲染待渲染文字。
值得注意的是,上述文字渲染装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。
本申请实施例还提供了一种文字渲染设备,该文字渲染设备可集成本申请实施例提供的文字渲染装置。图6是本申请实施例提供的一种文字渲染设备的结构示意图。参考图6,该文字渲染设备包括:输入装置63、输出装置64、存储器62以及一个或多个处理器61;存储器62,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器61执行,使得一个或多个处理器61实现如上述实施例提供的文字渲染方法。上述提供的文字渲染装置、设备和计算机可用于执行上述任意实施例提供的文字渲染方法,具备相应的功能和有益效果。
本申请实施例还提供一种存储计算机可执行指令的非易失性存储介质,计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的文字渲染方法。当然,本申请实施例所提供的一种存储计算机可执行指令的非易失性存储介质,其计算机可执行指令不限于如上提供的文字渲染方法,还可以执行本申请任意实施例所提供的文字渲染方法中的相关操作。上述实施例中提供的文字渲染装置、设备及存储介质可执行本申请任意实施例所提供的文字渲染方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的文字渲染方法。
在上述实施例的基础上,本申请实施例还提供一种计算机程序产品,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机程序产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备、移动终端或其中的处理器执行本申请各个实施例所提供的文字渲染方法的全部或部分步骤。
Claims (12)
1.一种文字渲染方法,其特征在于,包括:
获取待渲染文字的轮廓线;
基于所述待渲染文字创建像素空间,并确定所述像素空间中每个像素点与所述轮廓线对应的轮廓距离;
基于所述像素空间中每个像素点对应的轮廓距离在设定的字符图集中添加所述待渲染文字对应的矢量图;
基于所述字符图集中的矢量图渲染所述待渲染文字。
2.根据权利要求1所述的文字渲染方法,其特征在于,所述基于所述待渲染文字创建像素空间,包括:
确定所述待渲染文字对应的尺寸信息,并基于所述尺寸信息进行放大处理得到像素空间。
3.根据权利要求1所述的文字渲染方法,其特征在于,所述确定所述像素空间中每个像素点与所述轮廓线对应的轮廓距离,包括:
计算所述像素空间中每个像素点到每个所述轮廓线的距离信息;
将每个所述像素点对应的最小距离信息作为轮廓距离添加到所述像素空间中。
4.根据权利要求3所述的文字渲染方法,其特征在于,所述计算所述像素空间中每个像素点到每个所述轮廓线的距离信息,包括:
基于所述像素空间中每个像素点对应的像素点位置信息、每个所述轮廓线的定位点对应的定位点位置信息,确定每个所述像素点对应各个所述轮廓线的轮廓定位信息;
基于所述轮廓定位信息确定每个所述像素点到各个所述轮廓线的距离信息。
5.根据权利要求4所述的文字渲染方法,其特征在于,所述基于所述轮廓定位信息确定每个所述像素点到各个所述轮廓线的距离信息,包括:
基于每个所述像素点对应的轮廓定位信息确定在各个所述轮廓线的轮廓定位点;
基于每个所述像素点对应的像素点位置信息以及各个轮廓定位点对应的轮廓点位置信息,确定每个所述像素点到各个所述轮廓线的距离信息。
6.根据权利要求4所述的文字渲染方法,其特征在于,所述轮廓线通过贝塞尔曲线进行记录,所述轮廓定位信息基于以下公式进行确定:
(02+12)*t3+(3*0*0+3*1*1)*2+[2*02+2*12+0
*(x0-i)+1*(y0-i)]*+0*(x0-i)+1*(y0-i)
=0
(0,a1)=P1-P0
(0,b1)=P0-2P1+P2
其中,t为轮廓定位信息,P0为所述轮廓线的第一锚点,P1为所述轮廓线的控制点,P2为所述轮廓线的第二锚点,(,yi)为像素点Pi的像素点位置信息,(0,y0)为第一锚点P0的端点位置信息,(0,a1)为基于轮廓线的第一锚点P0和控制点P1确定的第一参考坐标,(0,b1)为基于轮廓线的第一锚点P0、控制点P1和第二锚点P2确定的第二参考坐标。
7.根据权利要求3所述的文字渲染方法,其特征在于,所述计算所述像素空间中每个像素点到每个所述轮廓线的距离信息,包括:
基于所述像素空间中每个像素点对应的像素点位置信息以及每个所述轮廓线对应的边界信息,确定满足距离信息计算条件的像素点;
计算所述像素空间中满足距离信息计算条件的像素点到每个所述轮廓线的距离信息。
8.根据权利要求1所述的文字渲染方法,其特征在于,所述获取待渲染文字的轮廓线之前,还包括:
在字符图集中记录有所述待渲染文字对应的矢量图的情况下,基于所述字符图集中对应的矢量图渲染所述待渲染文字。
9.一种文字渲染装置,其特征在于,包括轮廓获取模块、距离确定模块、图集更新模块和文字渲染模块,其中:
所述轮廓获取模块,配置为获取待渲染文字的轮廓线;
所述距离确定模块,配置为基于所述待渲染文字创建像素空间,并确定所述像素空间中每个像素点与所述轮廓线对应的轮廓距离;
所述图集更新模块,配置为基于所述像素空间中每个像素点对应的轮廓距离在设定的字符图集中添加所述待渲染文字对应的矢量图;
所述文字渲染模块,配置为基于所述字符图集中的矢量图渲染所述待渲染文字。
10.一种文字渲染设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8任一项所述的文字渲染方法。
11.一种存储计算机可执行指令的非易失性存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-8任一项所述的文字渲染方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的文字渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211704577.1A CN116306494A (zh) | 2022-12-27 | 2022-12-27 | 一种文字渲染方法、装置、设备、存储介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211704577.1A CN116306494A (zh) | 2022-12-27 | 2022-12-27 | 一种文字渲染方法、装置、设备、存储介质及产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116306494A true CN116306494A (zh) | 2023-06-23 |
Family
ID=86833015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211704577.1A Pending CN116306494A (zh) | 2022-12-27 | 2022-12-27 | 一种文字渲染方法、装置、设备、存储介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116306494A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112950A (zh) * | 2023-10-19 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 电子地图中对象的渲染方法、装置、终端及存储介质 |
CN117911578A (zh) * | 2024-03-20 | 2024-04-19 | 广州中望龙腾软件股份有限公司 | 一种文字渲染方法、装置、计算机设备和存储介质 |
-
2022
- 2022-12-27 CN CN202211704577.1A patent/CN116306494A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112950A (zh) * | 2023-10-19 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 电子地图中对象的渲染方法、装置、终端及存储介质 |
CN117112950B (zh) * | 2023-10-19 | 2024-02-02 | 腾讯科技(深圳)有限公司 | 电子地图中对象的渲染方法、装置、终端及存储介质 |
CN117911578A (zh) * | 2024-03-20 | 2024-04-19 | 广州中望龙腾软件股份有限公司 | 一种文字渲染方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116306494A (zh) | 一种文字渲染方法、装置、设备、存储介质及产品 | |
US8379058B2 (en) | Methods and apparatuses to arbitrarily transform windows | |
US9501811B2 (en) | Resizing an image | |
CN111260750B (zh) | openFL绘制矢量图形的处理方法、装置及电子设备 | |
US9754409B2 (en) | Method, apparatus and system for tessellating a parametric patch | |
CN111798372A (zh) | 图像渲染方法、装置、设备和可读介质 | |
CN115439609B (zh) | 基于地图服务的三维模型渲染方法、系统、设备及介质 | |
JP5254250B2 (ja) | ベクトルグラフィックをラスター化するプロセスにおいて境界を発生させるための方法およびシステム、ならびに、システムを製造するための方法 | |
US20040164985A1 (en) | Triangle polygon plotting device and triangle polygon plotting method | |
JPH01304588A (ja) | クリッピング処理方式 | |
JPH11161819A (ja) | 画像処理装置、画像処理方法、及び画像処理プログラムを記録した記録媒体 | |
CN112598687B (zh) | 图像分割方法和装置、存储介质、电子设备 | |
CN109522532B (zh) | 一种折线图框选范围的计算方法及装置 | |
CN111161127A (zh) | 图片资源渲染优化方法 | |
CN117911578B (zh) | 一种文字渲染方法、装置、计算机设备和存储介质 | |
CN112837416A (zh) | 基于三角剖分的多边形渲染方法、装置及存储介质 | |
CN111932566A (zh) | 一种模型轮廓图生成方法、装置和系统 | |
JPH03150680A (ja) | 表示システム、太線表示方法および情報処理装置 | |
JP3212873B2 (ja) | 階調画像生成方法 | |
CN111951367B (zh) | 一种字符渲染方法、字符处理方法及装置 | |
WO2024000173A1 (zh) | 产生模式检测模型的方法、装置、计算机设备 | |
CN106657560B (zh) | 图像处理方法及移动终端 | |
CN118212336A (zh) | 一种3d图案生成方法和系统 | |
CN117519697A (zh) | 矢量数据可视化方法及装置 | |
CN116578376A (zh) | 开放版式文档ofd页面显示方法、装置及设备 |
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 |