CN112287637B - 矢量字符笔画填充优化方法 - Google Patents
矢量字符笔画填充优化方法 Download PDFInfo
- Publication number
- CN112287637B CN112287637B CN202011211493.5A CN202011211493A CN112287637B CN 112287637 B CN112287637 B CN 112287637B CN 202011211493 A CN202011211493 A CN 202011211493A CN 112287637 B CN112287637 B CN 112287637B
- Authority
- CN
- China
- Prior art keywords
- filling
- stroke
- boundary point
- outline
- vector character
- 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
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000005457 optimization Methods 0.000 title claims abstract description 18
- 230000000694 effects Effects 0.000 claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000009191 jumping Effects 0.000 claims description 2
- 238000010234 longitudinal analysis Methods 0.000 abstract description 6
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 239000011159 matrix material Substances 0.000 description 5
- 230000009466 transformation Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
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
Abstract
本发明公开了一种矢量字符笔画填充优化方法。定义一个数据表示单位的长度为16个二进制位的总位长,并以定义的数据表示单位来表示矢量字符的单个闭环笔画轮廓,有利于横向扫描笔画轮廓过程中更准确地分析出笔画轮廓坐标点的位置,从而在横向填充笔画轮廓左右边界点中间区域时尽可能地还原字符,达到了等同去除纵向分析填充的效果,解决了对嵌入式主控性能的依赖问题,同时减少了RAM资源的占用;采用包含一个数据表示单位信息的掩码值,在填充字符笔画时,一方面可以避免临时存储的问题,大大压缩了RAM的资源使用情况,另一方面可以减少填充次数,提高代码执行的效率,提升了用户体验感。该优化方法对于大字号矢量字符笔画填充同样有较大实用效果。
Description
技术领域
本发明涉及计算机图形显示领域,尤其涉及一种矢量字符笔画填充优化方法。
背景技术
对于嵌入式主控的显示领域,传统的矢量字符笔画填充算法大部分涉及将独立的横向分析填充和独立的纵向分析填充相结合作用在同一个笔画上的思路,尽可能多维度还原字符:
横向扫描笔画轮廓,获取笔画轮廓坐标点的坐标值,将纵坐标值相同作为划分条件,将笔画轮廓的坐标点的坐标值分区域存放到数组A中,依次从数组A中读取每一行笔画轮廓坐标点的坐标值,确定每一行笔画轮廓的左右边界点位置,对左右边界点中间区域部分均进行置1操作;纵向扫描笔画轮廓,获取笔画轮廓坐标点的坐标值,将横坐标值相同作为划分条件,将笔画轮廓的坐标点的坐标值分区域存放到数组B中,依次从数组B中读取每一列笔画轮廓坐标点的坐标值,确定每一列笔画轮廓的顶部和底部边界点位置,对顶部和底部边界点中间区域部分均进行置1操作;传统矢量字符笔画填充算法中定义8个二进制位的总位长为一个数据表示单位的长度;用来标识当前填充位置的游标,横向填充时由左往右进行移动,纵向填充时由上往下进行移动,移动步长为1bit,bit有0或1两种状态,其中,0表示不填充,1表示填充,根据0或1的一位掩码值来判断游标所处的位置是否需要填充。使用掩码填充的原因是为了排除干扰,加快处理速度。如果决定的因素过多,则整体的执行效率就会降低。因此权衡了执行效率之后,认为掩码值是填充指令的前提条件。
现有技术存在以下缺点:传统纵向分析填充算法最初设计依赖于高端性能的嵌入式主控平台,若移植到单片机等低端性能的平台则会出现瓶颈,性能上支持不了算法的运行;纵向分析填充的效果和横向分析填充的效果几乎是一致的,重复填充部分存在占用着大量RAM资源的问题;在单片机等系统中,最小的数据存储单位是字节,即8bit,因此对于已完成填充的bit需要临时存储,在这一过程中会占用一部分的RAM资源;对于大字号的矢量字符笔画填充,填充指令尤其多,消耗的时间会指数上升,执行效率低,增大了RAM资源的占用比例,实用性差。
发明内容
本发明提出一种矢量字符笔画填充优化方法,定义一个数据表示单位的长度为16个二进制位的总位长,并以定义的数据表示单位来表示矢量字符的单个闭环笔画轮廓,通过横向扫描笔画轮廓,可以更加准确分析出笔画轮廓坐标点的位置,通过横向填充左右边界点中间区域部分,可以尽可能地还原字符,达到等同去除纵向分析填充的效果,以解决现有技术中笔画填充算法对嵌入式主控性能的依赖问题,也减少了RAM资源的占用;与此同时,采用包含一个数据表示单位信息的十六位掩码值对横向扫描填充方法作进一步优化,既避免了临时存储的问题,减少RAM资源的占用,又能减少填充次数,实现快速填充,提高代码执行效率,进一步提升嵌入式领域的用字体验。该优化方法对于大字号的矢量字符笔画填充同样有较大的实用效果。
该矢量字符笔画填充优化方法包括步骤:
步骤1,定义一个数据表示单位的长度大于8位位长,获取矢量字符的单个闭环笔画轮廓并以定义的数据表示单位表示;
步骤2,通过横向扫描笔画轮廓,将笔画轮廓的坐标数据按行存放其坐标点;
步骤3,获得笔画轮廓每一行的左边界点和右边界点的位置信息;
步骤4,填充每一行左边界点和右边界点中间区域部分,并在填充完当前行以后跳转至步骤3,直至笔画轮廓的所有行填充完毕,得到完整的单个笔画填充效果。
进一步,单个笔画填充效果通过或运算得到完整的单个字符的填充效果。
具体的,定义一个数据表示单位的长度为16个二进制位的总位长。
具体的,笔画轮廓用一系列连续的坐标点的集合来标识。
具体的,步骤2具体包括:通过横向扫描笔画轮廓,获取坐标点的坐标值,以纵坐标值相同作为划分条件,将坐标点的坐标值分区域存放到数组中。
具体的,步骤3具体包括:依次从数组中读取每一行的坐标点的坐标值,确定每一个坐标点是左边界点还是右边界点;步骤4中从每一行的左边界点至右边界点进行填充。
进一步,填充时以游标标识当前填充位置,计算掩码序号,通过掩码对应关系,获得掩码值,以掩码值填充游标所处的当前填充位置。
进一步,游标以一个数据表示单位的长度作为一个步长,从左往右进行移动,来寻找笔画轮廓的左边界点、当前填充位置和右边界点,在每个步长内,游标遇到一个边界点就会获取到一个填充逻辑,新获取的填充逻辑都需要和原先的填充逻辑进行与运算后再填充。
具体的,掩码序号是左边界点或者是右边界点的横坐标值和游标移动后的横坐标值参与计算的值;掩码值包含一个数据表示单位的信息。
具体的,所述掩码对应关系包括:一个掩码序号依次对应着单片机中的一个固定掩码值,固定掩码值经过端序倒换,对应着一个实际掩码值,根据获取到的实际掩码值进行填充。
本发明的有益效果在于:本发明提出一种矢量字符笔画填充优化方法,设定16个二进制位的总位长为一个数据表示单位的长度,并以定义的数据表示单位来表示矢量字符的单个闭环笔画轮廓,在横向扫描笔画轮廓的过程中可以更加准确地分析出轮廓左右边界点的位置,横向填充时可以尽可能还原字符,从而解决了需要纵向分析才能完整识别的缺陷问题,同时解决了对嵌入式主控性能的依赖问题;采用包含一个数据表示单位信息的十六位掩码值实现快速填充,大大压缩了RAM的资源使用情况,提高了代码执行的效率。优化的方法在降低开发成本的同时,提高产品设计整体的竞争力水平。
附图说明
图1为本发明矢量字符笔画填充优化方法的简易流程图;
图2为本发明矢量字符笔画填充优化方法与传统方法的对比流程图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的矢量字符笔画填充优化方法适用于任意字号。
传统矢量字符笔画填充算法中定义一个数据表示单位的长度为8个二进制位的总位长,而本发明定义一个数据表示单位的长度为16个二进制位的总位长,通常用2个字节表示一个字符,而一个字节通常8位长,则传统算法中32×32格式的字符笔画矩阵使用本发明的定义后需处理的数据字节量从4×4下降到2×2大小。
以下对变化后为32×32格式的字符笔画矩阵展开解析说明,其他格式类似。
如图1所示本发明的简易流程图,先根据传统的笔画轮廓提取方式获取单个闭环笔画轮廓,即用一系列连续坐标点的集合来标识单个笔画轮廓;然后通过横向扫描笔画轮廓,获取笔画轮廓坐标点的坐标值,将纵坐标值相同作为划分条件,将笔画轮廓的坐标点的坐标值分区域存放到数组C中,依次从数组C中读取每一行笔画轮廓的坐标点的坐标值,确定每一个坐标点是左边界点还是右边界点;计算掩码序号,通过掩码对应关系,获得掩码值,填充单个笔画轮廓每一行左右边界点中间区域部分;笔画轮廓的所有行填充完毕后得到完整的单个笔画填充效果,返回填充后的效果。
其中笔画轮廓提取方式可以采用如下方式:从字库中将笔画轮廓提取出来,对其进行适当的几何变换,矢量字符的变换只要对其笔画端点进行变换即可,变换后存放于以显示器界面的左下角为坐标原点、以像素单元的长度为单位长度的坐标系中。
在显示的时候我们一般把像素点看作有面积的小格子,若某一像素点对应的二进制位为1则表示字符的笔画经过此点,对应于此点的像素应填充为字符笔画的颜色,从而完成图像的显示。
结合图2所示的对比流程图,以下对第一行笔画轮廓内部填充过程展开解析说明。填充时游标标识当前填充位置,以一个数据表示单位的长度作为一个步长,由左往右进行移动,直到游标遇到单个笔画轮廓的左边界点。
当游标遇到单个笔画轮廓的左边界点时,令p表示当前游标移动a个步长后的横坐标值,规定a>0,p>15,令m表示该左边界点的横坐标值,则有p - 16 ≤m ≤ p,计算掩码序号16 + m - p。掩码序号取值为0到16,依次对应于单片机中的固定掩码值0xFFFF,0xFF7F,0xFF3F,0xFF1F,0xFF0F,0xFF07,0xFF03,0xFF01,0xFF00,0x7F00,0x3F00,0x1F00,0x0F00,0x0700,0x0300,0x0100,0。固定掩码值用十六进制表示,其换算成二进制依次对应于1111111111111111,1111111101111111,1111111100111111,1111111100011111,1111111100001111,1111111100000111,1111111100000011,1111111100000001,1111111100000000,0111111100000000,0011111100000000,0001111100000000,0000111100000000,0000011100000000,0000001100000000,0000000100000000,0000000000000000。单片机中的固定掩码值经过端序倒换,分别对应于实际掩码值0xFFFF,0x7FFF,0x3FFF,0x1FFF,0x0FFF,0x07FF,0x03FF,0x01FF,0x00FF,0x007F,0x003F,0x001F,0x000F,0x0007,0x0003,0x0001,0。实际掩码值同样地用十六进制表示,其换算成二进制依次对应于1111111111111111,0111111111111111,0011111111111111,0001111111111111,0000111111111111,0000011111111111,0000001111111111,0000000111111111,0000000011111111,0000000001111111,0000000000111111,0000000000011111,0000000000001111,0000000000000111,0000000000000011,0000000000000001,0000000000000000。按照上述的掩码序号对应关系,由计算得到的掩码序号获取到实际掩码值,再根据获取到的实际掩码值快速填充对应值直至游标遇到单个笔画轮廓的右边界点。
当游标遇到当个笔画轮廓的右边界点时,令p’表示当前游标移动b个步长后的横坐标值,规定b≥a,p’≥p,令n表示该右边界点的横坐标值,则有p’ - 16 ≤n≤ p’,计算掩码序号16 + n - p,则掩码序号取值为0到16,由计算得到的掩码序号和上述的序号对应关系获取到实际掩码值,对实际掩码值进行求反运算和与运算,然后向右快速填充对应值直至游标向右寻找到笔画轮廓的左边界点位置。需要注意的是,在每个步长内,游标每遇到一个边界点就会获取到一个填充逻辑,新获取的填充逻辑都需要和原先的填充逻辑进行与运算后再填充。重复上述笔画轮廓左右边界点内部填充的步骤直至矩阵宽度像素点位置结束,则完成一行的笔画轮廓填充。
开始对下一行的笔画轮廓进行横向分析并填充,重复上述笔画轮廓左右边界点内部填充的步骤直至矩阵高度像素点位置结束,则完成一个完整的笔画轮廓填充。完整的单个笔画填充效果通过或运算得到完整的单个字符的填充效果,并存储到点阵数组中。
在其他的实施例中,游标也可以是由右往左进行移动,先遇到笔画轮廓的右边界点再遇到左边界点。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种矢量字符笔画填充优化方法,其特征在于,包括步骤:
步骤1,定义一个数据表示单位的长度大于8位位长,获取矢量字符的单个闭环笔画轮廓并以定义的数据表示单位表示;
步骤2,通过横向扫描所述笔画轮廓,将所述笔画轮廓的坐标数据按行存放其坐标点;
步骤3,获得所述笔画轮廓每一行的左边界点和右边界点的位置信息;
步骤4,填充每一行所述左边界点和所述右边界点中间区域部分,并在填充完当前行以后跳转至步骤3,直至所述笔画轮廓的所有行填充完毕,得到完整的单个笔画填充效果;
填充时以游标标识当前填充位置,计算掩码序号,通过掩码对应关系,获得掩码值,以所述掩码值填充所述游标所处的当前填充位置;
所述游标以一个所述数据表示单位的长度作为一个步长,从左往右进行移动,来寻找所述笔画轮廓的左边界点、当前填充位置和右边界点,在每个所述步长内,游标遇到一个边界点就会获取到一个填充逻辑,新获取的所述填充逻辑都需要和原先的所述填充逻辑进行与运算后再填充。
2.如权利要求1所述的矢量字符笔画填充优化方法,其特征在于,所述单个笔画填充效果通过或运算得到完整的单个字符的填充效果。
3.如权利要求1所述的矢量字符笔画填充优化方法,其特征在于,定义一个数据表示单位的长度为16个二进制位的总位长。
4.如权利要求1所述的矢量字符笔画填充优化方法,其特征在于,所述笔画轮廓用一系列连续的所述坐标点的集合来标识。
5.如权利要求4所述的矢量字符笔画填充优化方法,其特征在于,所述步骤2具体包括:通过横向扫描所述笔画轮廓,获取所述坐标点的坐标值,以纵坐标值相同作为划分条件,将所述坐标点的所述坐标值分区域存放到数组中。
6.如权利要求5所述的矢量字符笔画填充优化方法,其特征在于,所述步骤3具体包括:依次从所述数组中读取每一行的所述坐标点的所述坐标值,确定每一个所述坐标点是所述左边界点还是所述右边界点;
所述步骤4中从每一行的所述左边界点至所述右边界点进行填充。
7.如权利要求1所述的矢量字符笔画填充优化方法,其特征在于,所述掩码序号是所述左边界点或者是右边界点的横坐标值和所述游标移动后的横坐标值参与计算的值;所述掩码值包含一个所述数据表示单位的信息。
8.如权利要求1所述的矢量字符笔画填充优化方法,其特征在于,所述掩码对应关系包括:一个所述掩码序号依次对应着单片机中的一个固定掩码值,所述固定掩码值经过端序倒换,对应着一个实际掩码值,根据获取到的所述实际掩码值进行填充。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011211493.5A CN112287637B (zh) | 2020-11-03 | 2020-11-03 | 矢量字符笔画填充优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011211493.5A CN112287637B (zh) | 2020-11-03 | 2020-11-03 | 矢量字符笔画填充优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112287637A CN112287637A (zh) | 2021-01-29 |
CN112287637B true CN112287637B (zh) | 2023-12-15 |
Family
ID=74350522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011211493.5A Active CN112287637B (zh) | 2020-11-03 | 2020-11-03 | 矢量字符笔画填充优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112287637B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0280267A (ja) * | 1988-09-19 | 1990-03-20 | Hitachi Ltd | ベクトル文字の処理方式 |
JPH0594170A (ja) * | 1991-05-24 | 1993-04-16 | Matsushita Electric Ind Co Ltd | ベクトルフオント描画装置 |
CN105046729A (zh) * | 2015-08-07 | 2015-11-11 | 浙江大学 | 一种高效并行矢量数据可视化方法 |
CN105741337A (zh) * | 2016-02-03 | 2016-07-06 | 合肥亚歌半导体科技合伙企业(有限合伙) | 一种用于光刻机矢量数据栅格化的三角形填充方法 |
WO2017024443A1 (zh) * | 2015-08-07 | 2017-02-16 | 浙江大学 | 一种高效并行矢量数据可视化方法 |
CN106780290A (zh) * | 2016-12-14 | 2017-05-31 | 江苏维普光电科技有限公司 | 一种快速计算从矢量图形提取网栅图形及填充的方法 |
-
2020
- 2020-11-03 CN CN202011211493.5A patent/CN112287637B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0280267A (ja) * | 1988-09-19 | 1990-03-20 | Hitachi Ltd | ベクトル文字の処理方式 |
JPH0594170A (ja) * | 1991-05-24 | 1993-04-16 | Matsushita Electric Ind Co Ltd | ベクトルフオント描画装置 |
CN105046729A (zh) * | 2015-08-07 | 2015-11-11 | 浙江大学 | 一种高效并行矢量数据可视化方法 |
WO2017024443A1 (zh) * | 2015-08-07 | 2017-02-16 | 浙江大学 | 一种高效并行矢量数据可视化方法 |
CN105741337A (zh) * | 2016-02-03 | 2016-07-06 | 合肥亚歌半导体科技合伙企业(有限合伙) | 一种用于光刻机矢量数据栅格化的三角形填充方法 |
CN106780290A (zh) * | 2016-12-14 | 2017-05-31 | 江苏维普光电科技有限公司 | 一种快速计算从矢量图形提取网栅图形及填充的方法 |
Non-Patent Citations (2)
Title |
---|
基于曲线积分的任意多边形填充算法;阳波, 王卫星, 魏许青;计算机工程与应用(第24期);81-85 * |
浅析几种矢量数据向栅格数据转化算法;魏桂花;;甘肃科技(第05期);29-32 * |
Also Published As
Publication number | Publication date |
---|---|
CN112287637A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0115584B1 (en) | Image producing apparatus and methods of processing image-representing signals for use by such apparatus | |
JPH0473667B2 (zh) | ||
CN112287637B (zh) | 矢量字符笔画填充优化方法 | |
CN112118449B (zh) | 一种图像压缩与解压缩的方法及装置 | |
CN110675417B (zh) | 一种结合游程编码与边缘跟踪的栅格数据快速矢量化方法 | |
CN114268323B (zh) | 支持行存的数据压缩编码方法、装置及时序数据库 | |
CN101655835B (zh) | 电子文档中文字信息处理、输出和字符检索的方法及装置 | |
CN111047671B (zh) | 一种手绘图片的绘画路径的优化方法及存储介质 | |
CN111899311B (zh) | 元素渲染方法、装置、存储介质和计算机设备 | |
CN103858126A (zh) | 压缩空间数据的装置和方法及恢复压缩的空间数据的装置和方法 | |
CN116796785A (zh) | 电子价签显示方法、装置、电子设备及可读存储介质 | |
JPH07239876A (ja) | カーニング処理方法 | |
JP3449338B2 (ja) | データ圧縮方法、データ復元方法及び情報処理装置 | |
US20010043759A1 (en) | Image size transforming apparatus, method and record medium storing image size transform program therein | |
CN115576513A (zh) | 目标图像的显示方法、显示装置、电子设备和存储介质 | |
CN114202762A (zh) | 手写样本生成方法、装置及应用 | |
CN107124613B (zh) | 对多普勒天气雷达第二类产品数据进行重编码处理的方法 | |
CN114610920B (zh) | 图像存储格式的生成方法、图像存储格式及处理系统 | |
CN113573125A (zh) | 一种基于svg字库的字幕渲染方法及系统 | |
EP1659567B1 (en) | Font data management | |
CN115631262A (zh) | 一种基于FreeType的双缓存文字统一快速渲染方法 | |
JPH0773013A (ja) | データ圧縮方法、データ復元方法及び情報処理装置 | |
CN116775787B (zh) | 一种基于geotools工具修复外环与内环相交的地理图像导出方法 | |
CN117828683B (zh) | 一种版式文件数字签名方法及系统 | |
CN103903285B (zh) | 一种png图像和bmp图像的缩略图提取方法 |
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 |