【每日AI】什么是矢量字库?

一,矢量字库

矢量字库是一种记录每个字符的矢量信息的字符库。它的基本原理是根据一定的数学模型,把每个字符的笔画分解成数学模型中定义好的各种直线和曲线,然后记下这些直线和曲线的参数。在显示的时候根据具体的尺寸大小,再根据记录下来的参数画出这些线条,就还原了原来的字符。

二,矢量字库种类

我们常见的矢量字库有Type1字库,Truetype字库和OpenType字库。

Type1全称PostScript Type1,使用三次贝塞尔曲线来描述字形,TrueType则使用二次贝塞尔曲线来描述字形而OpenType是二者的结合。

二次贝塞尔曲线 

三次贝塞尔曲线 

参考文献:贝塞尔曲线 - 云+社区 - 腾讯云 (tencent.com) 

 三,矢量字库结构

矢量字体不是用点阵信息描述汉字的笔划,而是将汉字的笔划边缘直线段描述成封闭的曲线并将线段各端点的坐标经压缩存储,它是以图形信息建库的。由于每个汉字的笔划不一样,所以每个汉字在库中所占长度是不相同的。这样,矢量字库不能象点阵那样定位,只能采用索引的方法。因而每种矢量字库都是由两部分组成,一部分是汉字的索引信息,它包括每个汉字的矢量数据在库中的位置地址以及汉字字形数据的长度,存放在字库的前面部分,按汉字的区位码顺序存放;另一部分是汉字的字形数据,包括控制信息各点坐标信息,是字库的主体,放在字库的后面。如UCDOS的矢量字库HZKSLSTJ(宋体简体)、HZKSLFSJ(仿宋简体)、HZKSLKTJ(楷体简体)、HZKSLHTJ(黑体简体),其索引信息长度6个字节,前面四个字节是汉字矢量数据在库中的起始位置,后两个字节为汉字字形数据的长度。

要进行矢量汉字显示,首先根据其机内码按下面公式:

汉字的索引信息首址=((汉字机内码高位字节-0Xa1)*94+汉字机内码低位字节-0Xa1)*6

计算出其索引信息首址,然后从指定的矢量字库按索引地址连续读出6个字节的索引信息,再根据索引信息中字形数据在库中的位置及字形数据的长度,从库中读出字形数据在库中的位置及字形数据的长度,从库中读出相应的字形数据,最后解码还原得到其轮廓多变形的各点坐标,画出多边形并填充,即可得到矢量汉字

 中心句:矢量字库由索引信息区字形数据区两部分构成

1,索引信息 

根据汉字的机内码计算得到其索引信息在矢量字库中的位置,计算公式如下:

索引位置=((区码-16)*94+位码-1)*6

索引信息指明了某字的矢量数据在矢量字库中的位置和尺寸(以字节为单位),其中位置是相对于字库开始处以字节为单位的位移量。

2,字形数据(矢量数据) 

矢量数据区中的数据有绘制某汉字的所有矢量信息,这些信息又以笔伐为一个数据组,每组占有若干个字节。这些字节中的首字节指明了该笔的起点,后续一个或多个字节指明了相对前一点增量及增量的方向。

四,矢量字库优缺点

在使用点阵字库时,对于每个点阵字符,都需要对其位图的每个像素进行变换。而在使用矢量字库时,对于每个矢量字符,需要对其每个几何元素进行变换。

       相对而言,点阵字库显示速度快,但在缩放的情况下容易出现锯齿;矢量字库显示效果平滑,但相对而言需要经过一系列的数学运算才能输出结果。

五,Windows下的字库 

Windows使用的字库也为点阵字库和矢量字库两类。在FONTS目录下,如果字体扩展名为FON,表示该文件为点阵字库;如果字体扩展名为TTF,表示该文件为矢量字库

结语:一键三连!!! 一键三连!!!一键三连!!!一键三连!!!一键三连!!!一键三连!!!一键三连!!!一键三连!!!一键三连!!!一键三连!!!一键三连!!!

十年脑血栓: 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TUSTer_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值