用于产生矢量字体的方法及设备技术

技术编号:2867834 阅读:226 留言:0更新日期:2012-04-11 18:40
提供了一种生成变换字体的方法和设备,其使用存储器的小部分容量,通过变换已存储在存储器中的矢量字体数据来生成变换的字体,并输出变换后的矢量字体数据。对某一文本中的某一相同的多个字符,可以决定将各个相同字符变换为不同级别或同一级别。根据该决定,设置字符变换级别。根据该设定的级别,通过上下左或右移动组成字符的特征点,变换所述字符。

【技术实现步骤摘要】

本专利技术与字体生成有关,尤其是,涉及一种方法和设备,它可以在最小内存占用下通过逐渐地变换已经存储在内存中的矢量字体数据的方法来产生经过变换的字体,并输出变换后的矢量字体数据。
技术介绍
一个字符由若干线或者边组成,而线或边由若干点组成。因此,当将一个字符存储在磁盘中或者在显示器上进行显示时,就会以点、线或者边为单位来进行处理。这里将字符以点为单位来处理的方法称为位图字体方法,而将字符以线或边为单位来处理的方法则称为矢量字体方法。一个位图字体代表了一类字体,其中字符以用一组点来形成一个字符来表示的位图的格式进行存储。当对一个用位图格式表示的字符进行放大时,该字符的边缘部分就会呈现出锯齿形状,变得不光滑且不均匀。与之相反,在矢量字体方法中,一个字符用组成字符的各点间的一组线来表示。换句话说,矢量字体利用线、圆、圆弧和坐标等命令码表示各种形状的字符,而不是仅仅通过一组点来表示。因此,用户可以很容易地放大或者缩小一个字符的大小,调整字符的相对的垂直和水平尺寸,产生字符阴影效果,或者将字符向右或左进行倾斜。当在显示器上显示矢量字体时,必须从字符区域中提取特征点。因此就需要有函数来实现点间的移动、点间的连接和将点连成曲线。同样,通过利用多种函数形成一个字符,矢量字体可以使放大或缩小后的字体依然表现自然,而位图字体则会形成不自然的锯齿形状。然而,由于矢量字体的结构随着用来形成字符的函数的不同而改变,存储或者输出矢量字体需要一个比位图字体复杂很多的过程。直到现在,位图字体已经用于各种电子应用中。然而,随着具有高性能芯片和大容量内存的新的电子设备的不断出现,位图字体的使用正在逐渐被采用矢量字体的趋势来替代。在各种矢量字体中,手写字体与真实的手写字体略有不同,这是因为在真实的手写字体中,即使是用户想表示相同的字符时,一个字符也不会始终表现为一个完全相同的形状。例如,当用户写 前面的 不会与后边的 完全相同。但是当使用一种特定字体时,输出的 始终具有相同的形状。为了输出不同形状的字符,各种字体都应该存储在内存中,因此就需要与字体数量成比例的足够大容量的内存。换句话说,对于使用传统矢量字体,只能用一种字体来表示具有一种形状的字符。
技术实现思路
本专利技术提出了一种用于产生矢量字体的方法及其相应的设备,通过变换一个已有矢量字体来表示各种不同形状的字符。根据本专利技术的一个方面,它提供了一种产生字体的方法。该方法包括(a)接收字体数据并设置字体变换级别,和(b)根据设定的级别,通过上下左右移动形成字体数据的特征点而变换字体。字体是通过命令编码表示的,而命令编码由特征点和执行函数组成,所述执行函数用来移动特征点和通过连接特征点来形成直线和曲线。根据本专利技术的另一个方面,它提供了一种产生字体的方法。该方法包括(a)对于一个文本中的各个相同字符,确定要将各个相同的字符进行变换为不同或者相同的级别,(b)根据以上结果设定字符变换级别,和(c)根据设定的级别,通过上下左右移动形成字符的特征点,来变换字符。根据本专利技术的另一个方面,它提供了一种产生字体的设备。该设备包括字体变换级别设定单元和字体变换单元。字体变换级别设定单元由用户根据其决定进行输入,该决定为是将一个文本中的某种多个相同字符变换为同一个级别还是将一个文本中各个相同字符变换为不同的级别,并设定字符变换的级别。字体变换单元根据设定的级别,通过上下左右移动字符的特征点,进行字体变换。此外,该设备还包括接收要显示的字体数据的字体数据输入单元和将字体变换单元形成的变换字体进行输出的输出单元。根据本专利技术的另一个方面,它提供了一种计算机可读介质,其中嵌入了一种产生字体的方法。附图说明下面参照附图对示范实施例加以详细地描述,本专利技术的上述和其他方面及优点将会更加明显图1示出了一个用来处理矢量字体的命令码和命令码的函数的列表;图2示出了一个有4个控制点的曲线;图3示出了一个由图1中的命令码和控制点表示的字符 图4示出了一个经过变换的字符 图5示出了一个描述根据本专利技术产生一种字体的方法的流程图;图6示出了一个描述根据本专利技术产生一种字体的设备方框图;图7对字符变换级别进行了解释。具体实施例方式这里参照附图对本专利技术进行更全面的描述,其中示出了一个优选的实施例。图1示出了一个用来处理矢量字体的命令码和与其相应的各个函数的列表。命令码0x0001用来指定生成字符时的第一个或另一个起始点。命令码0x0002通过将一个起始点或者上一个线段的终点与用户当前指定的点相连接,来画一条线段。命令码0x0003用于通过接收3个控制点的坐标并来连接3个控制点以画出一条贝塞尔曲线,例如一个起始点,一个中间点,一个终点。命令码0x0004用于填充贝塞尔曲线的内部区域。根据图1,需要命令码0x0001和一个坐标来指定一个起始点或者一个中间点的坐标,并移动到该指定的坐标。需要命令码0x0002和一个起始点的坐标,即(X0,Y0)和一个终点坐标,即(X1,Y1)来画一条直线。需要命令码0x0003和3个坐标起始点坐标,中间点坐标与终点坐标来画一条曲线。贝塞尔曲线通过利用输入的控制点的坐标产生各种函数来得到一条曲线形状。贝塞尔曲线可以通过下面的贝塞尔函数得到,贝塞尔函数的阶数比输入的控制点的数量小1。B(u)=Σk=0NPkN!k!(N-k)!uk(1-u)N-k,]]>对于0≤u≤1......(1)换句话说,如果输入的控制点为4个,则可以通过3阶贝塞尔函数生成3阶的贝塞尔曲线。如果输入控制点为5个,则可以通过4阶的贝塞尔函数生成4阶的贝塞尔曲线。用于贝塞尔曲线的控制点数量没有限制,但是如果控制点数量的增多,就要阶数更高的多项式函数来获得贝塞尔曲线。图2示出了一个有4个控制点的曲线;等式1是一个用N个不同位置的控制点来画一条曲线的连续函数。当u等于0时,曲线从第一个控制点开始(k=0)。当u等于1时,曲线结束于最后一个控制点(k=N)。换句话说,根据图2,第一个控制点对应一个起始点,最后一个控制点对应一个终点,曲线始终在由各个控制点组成的多边形内形成而不会超出该控制点。等式2是一个曲线函数(bending function),用来形成一条曲线。N!k!(N-k)!uk(1-u)N-k······(2)]]>曲线函数是一个多项式函数,它的阶数比控制点的个数少1。因此如果采用3个控制点,贝塞尔曲线就是一条2阶的抛物线。如果采用4个控制点,贝塞尔曲线是一个3阶曲线。如果第一控制点坐标与终点控制点坐标相同,则贝塞尔曲线闭合。如果几个控制点出现在相邻的位置,贝塞尔曲线的弯曲度向该相邻的位置增加。如果控制点的个数增加,就要计算更高阶的函数和更多的因子,在这种情况下,整个贝塞尔曲线被划分成几条曲线线段。图3示出了一个由图1中的命令码和控制点表示的字符 字符 用8个控制点1-8(310-380)和图1的命令码表示。换句话说,字符 用以下方法表示利用命令码0x0001指定一个起始点1(310),利用命令码0x0002通过连接起始点1(310)和控制点本文档来自技高网
...

【技术保护点】
一种生成字体的方法,该方法包括:    (a)  接收字符的字体数据,并且设置字体变换级别;以及    (b)  根据设定的字体变换级别,通过将组成字符的字体数据的多个特征点中一组变换特征点进行上下左或右的移动,对字符的字体进行变换,然后输出字体变换的结果。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:韩熙喆
申请(专利权)人:三星电子株式会社
类型:发明
国别省市:KR[韩国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1