一种变换字体风格的方法及系统的制作方法

文档序号:6470742阅读:155来源:国知局
专利名称:一种变换字体风格的方法及系统的制作方法
技术领域
本发明属于字符信息处理技术领域,具体涉及一种变换字体风格的方法 及系统。
背景技术
字库是现代操作系统的重要组成部分之一 ,辅助计算机完成字体的显示, 打印等操作。现有的字库是按照字体的风格进行组织的,不同风格的字体需 要存储在不同的字库中,甚至同 一风格不同粗细的字体也需要存储在不同的
字库中。例如Windows中使用的方正姚体,微软雅黑等,其中微软雅黑又有 不同的粗细之分,分别存储在不同的文件中。
对于需要采用不同风格字体的场合,例如一些时尚杂志,为了吸引人们 的注意,常常会采用多种不同风格的字体,如果现有字库中没有合适的字体, 那么或者开发新的字体,或者找到一种现有的风格相似的字体,再利用图形 软件等工具对字符中的某类笔画进行人工修改。如果开发新的字体,则存在 开发成本高,开发周期长,对系统存储硬件要求较高等不足之处;如果通过 人工的方式修改,则存在效率低、效果不理想等缺点。

发明内容
针对现有技术中存在的缺陷,本发明的目的是提供一种变换字体风格的 方法及系统,该方法及系统能够在现有轮廓字库的基础上变换字体的风格, 无需开发新的字体,也无需人工进行修改。
为了实现上述目的,本发明采用的技术方案是, 一种变换字体风格的方 法,该方法将对字形中的笔画特征进行动态变换的变换代码嵌入到现有轮廓 字库的代码中,读取字形数据后,字体引擎调用该变换代码,在字形渲染之 前对字形中的笔画特征进行动态变换。
如上所述的一种变换字体风格的方法,其中,将对现有轮廓字库中所有 的字形数据产生影响的变换代码嵌入到全局代码中,将对字库中的单字产生 影响的变换代码嵌入到该字形数据的前面。
如上所述的一种变换字体风格的方法,其中,对字形中的笔画特征进行
动态变换的过程包括以下步骤
(1)遍历字形中的笔画特征,识别出需要变换的笔画特征; (2 )提取步骤(1 )中识别出的笔画特征; (3)动态调整步骤(2)中提取的笔画特征。
如上所述的一种变换字体风格的方法,其中,对字形中的"横"类或"竖" 类笔画特征进行动态变换,当字形尺寸不同时,保持"横"类或"竖"类笔 画视觉效果上的恒定。
如上所述的一种变换字体风格的方法,其中,在遍历字形中的笔画特征 之前还包括设定字形中"横"类或"竖"类笔画缩减比例的步骤;当字形尺 寸不大于96磅时,缩减比例为42/64;当字形尺寸大于96磅、不大于216 磅时,缩减比例为48/64;当字形尺寸大于216磅,缩减比例为52/64;并将 根据上述缩减比例编写的缩减比例代码嵌入到现有轮廓字库的全局代码中。
如上所述的一种变换字体风格的方法,步骤(l)中识别字形中的"横" 类笔画特征时,将字形中是否包含水平类线段作为识别此类笔画的依据;识 别字形中的"竖"类笔画时,将字形中是否包含竖直类线段作为识别此类笔 画的依才居。
如上所述的一种变换字体风格的方法,步骤(2)中提取"横"类或"竖" 类笔画特征的过程包括以下步骤
① 识别出字形中所有"横"类或"竖,,类笔画上的点;
② 判断每个点与其相邻的两点中是否存在线外控制点,如果当前点不存 在相邻的线外控制点则将该点记录到不存在相邻的线外控制点的数组A中;
③判断线外控制点与当前点的连线是否形成水平线或竖直线,如果不能 形成水平线或竖直线,则将该点记录到存在相邻的线外控制点的数组B中, 否则将该点记录到不存在相邻的线外控制点的数组A中。
如上所述的一种变换字体风格的方法,其中,在动态调整"横"类或"竖"
类笔画特征之前对被提取的点进行分类,分类的过程为首先判断数组B中 任意两点横坐标或纵坐标的差值是否大于预先设定的阈值,如果不大于该阈 值,则认为两点是同一对点,在调整时一起处理;数组B经过上述处理后, 将剩余的点和数组A中的点归为一类。所述的阔值为5。
如上所述的一种变换字体风格的方法,步骤(3)中所述的动态调整笔画 特征的过程包括以下步骤
① 调整双边连接曲线类点,即数组B中的成对点 首先设定待调整点的移动方向和测量方向;所述的移动方向为同一对点
中两点确定的方向,"横"类笔画中上边点的移动方向为从上边点指向下边 点,下边点的移动方向为从下边点指向上边点;"竖"类笔画中左边点的移 动方向为从左边点指向右边点,右边点的移动方向为从右边点指向左边点; 所述的测量方向是指移动量的计算方向,"横"类笔画的测量方向为竖直方 向,"竖"类笔画的测量方向为水平方向;然后沿着测量方向确定待调整点 的移动量,最后按照移动方向和移动量移动待调整点;
② 调整双边非连接曲线类点,即数组A中的点
首先将待调整点的移动方向和测量方向均设为竖直方向或水平方向, "横"类笔画中上边点的移动方向为竖直向下,下边点的移动方向为竖直向 上;"竖"类笔画中左边点的移动方向为水平向右,右边点的移动方向为水 平向左;然后根据移动方向和步骤①中的移动量移动待调整点;
③ 对字形中没有被移动的点进行竖直方向或水平方向上的位置关系保持 操作;如果对"横,,类笔画上的点进行了移动,则对没有被移动的点进行竖 直方向上的位置关系保持操作,如果对"竖"类笔画上的点进行了移动,则 对没有被移动的点进行水平方向上的位置关系保持操作。
对字形中没有被移动的点进行竖直方向上的位置关系保持操作的过程
为首先遍历字形中的所有点,判断点的位置是否发生了变动,如果点的位 置没有发生变动,则在水平方向上找到与该点最近的变动点,提取与该点最 近的变动点在竖直方向上的变动量,然后将其施加到该点的竖直方向上。
对字形中没有被移动的点进行水平方向上的位置关系保持操作的过程 为首先遍历字形中的所有点,判断点的位置是否发生了变动,如果点的位 置没有发生变动,则在竖直方向上找到与该点最近的变动点,提取与该点最 近的变动点在水平方向上的变动量,然后将其施加到该点的水平方向上。
如上所述的一种变换字体风格的方法,其中,对字形中"点"类笔画特 征进行动态变换,当字形尺寸不同时,保持"点"类笔画视觉效果上的恒定; 变换的过程包括以下步骤
① 设定"点"类笔画的缩减比例;
当字形尺寸不大于96磅时,缩减比例为42/64;当字形尺寸大于96磅、 不大于216磅时,缩减比例为48/64;当字形尺寸大于216磅,缩减比例为 52/64;
② 调整"点"类笔画的开口大小;
设定开口点的移动方向和测量方向为开口点确定的方向,根据步骤①中 设定的缩减比例计算开口点的移动距离,移动开口点。
③ 调整"点"类笔画上点的位置关系;
首先找到与开口点在竖直方向上相对的位于底部的点,然后在水平方向 和竖直方向上调整"点"类笔画上开口点与底部点之间的点的位置,保证开 口点移动前后,开口点与中间点的横坐标之差和纵坐标之差与中间点与底部 点横坐标之差和纵坐标之差的比值不变,其中开口点与底部点位于同侧。
一种变换字体风格的系统,包括将对字形中的笔画特征进行动态变换的 变换代码嵌入到现有轮廓字库代码中的嵌入装置,以及读取字形数据后,字 体引擎调用该变换代码,在字形渲染之前对字形中的笔画特征进行动态变换 的变换装置。
如上所述的一种变换字体风格的系统,其中,所述的变换装置包括用于
识别现有轮廓字库字形中需要变换的笔画特征的识别模块、用于提取识另'J模 块识别出的笔画特征的提取模块、以及用于调整提取模块提取的笔画特征的 调整模块。
本发明所述的方法及系统通过在现有一套字库的基础上进行动态变换的 方式,实现了字体风格可切换的目标。与开发新字体相比降低了字体开发的 成本,缩短了字体开发的周期,同时降低了字库对存储硬件的要求;与人工 修改方式相比,提高了字体风格变换的效率,变换后的字体效果好。


图1是本发明对字形的笔画特征进行动态变换的流程图; 图2是具体实施方式
中"国"字的字形轮廓图3是具体实施方式
中"女"字的字形轮廓图4是具体实施方式
中双边连接曲线类点示意图5是具体实施方式
中双边非连接曲线类点示意图6是具体实施方式
中对双边连接曲线类点进行调整的流程图7是具体实施方式
中变换前后的字符效果对照图8是具体实施方式
中"点"笔画的轮廓图。
具体实施例方式
下面结合实施例和附图对本发明进行详细地描述。
本发明是在现有轮廓字库基础上,将对字形的笔画特征进行动态变换的 变换代码嵌入到现有轮廓字库的代码中,在读取字形数据后,字体引擎会调 用该变换代码,在字形渲染之前对字形的笔画特征进行动态变换,从而实现 变换字体风格的目的。
嵌入变换代码时,将对现有轮廓字库中所有的字形数据产生影响的变换 代码嵌入到全局代码中,将对字库中的单字产生影响的变换代码嵌入到该字 形数据的前面。
本发明所述的变换字体风格的系统,包括将对字形中的笔画特征进行动 态变换的变换代码嵌入到现有轮廓字库代码中的嵌入装置,以及读取字形数 据后,字体引擎调用该变换代码,在字形渲染之前对字形中的笔画特征进行 动态变换的变换装置。
其中,变换装置包括用于识别现有轮廓字库字形中需要变换的笔画特征 的识别模块、用于提取识别模块识别出的笔画特征的提取模块、以及用于调 整提取模块提取的笔画特征的调整模块。
本发明所述的变换字体风格的方法,对字形中的笔画特征进行动态变换 的过程包括以下步骤,如图1所示。
(l)识别模块遍历字形中的笔画特征,识别出需要变换的笔画特征。其
中,笔画特征的识别方法主要包括以下步骤①设定识别笔画的种类(即笔画 特征);②进行识别前的噪声处理;③笔画方向码合并处理及笔画识别。(笔 画特征的详细识别过程可参见《精通Visual 0++数字图像模式识别技术及 工程实践>〉,ISBN:9787115180520 )
(2 )提取模块提取步骤(1 )中识别出的笔画特征。 (3)调整模块动态调整步骤(2)中提取的笔画特征。
实施例1
本实施例中,拟将字体风格特征变换成当字符大小不同时,"横"类 笔画始终保持视觉效果上的恒定。例如,宋体中五号的"国"字与二号的"国" 字,其中横类笔画保持视觉效果上的恒定,也就是说,通过调整二号的"国" 字中横类笔画的宽度来实现与五号的"国"字中横类笔画在视觉效果上的恒 定。
参照图1,对字形中"横,,类笔画特征进行动态变换的过程包括以下步骤。
(l)设置字形中"横,,类笔画的缩减比例。
试验证明设定如下的缩减比例,可以保持"横,,类笔画视觉效果上的 恒定。当字符尺寸不大于96磅时,缩减比例为42/64,即将"横"类笔画宽 度缩减成原来的2 x ( 1-42/64 );当字符尺寸大于96磅,不大于216磅时, 缩减比例为48/64;当字符尺寸大于216磅,缩减比例为52/64。
确定了上述的缩减比例后,即可以编写相应的缩减比例代码,并将其嵌 入到字库的全局代码中。例如,以Windows才喿作系统采用的TrueType字库为 例,应将此部分代码嵌入到prep表中,并且采用标准的TrueType控制指令 的编写规范进行编写。在确定了字符大小后,字体引擎就会执行此段代码, 保证在解释字形数据前已经设置了正确的缩减比例。
如果不在该步骤中设置缩减比例,可以在调整笔画特征时指定点的移动 距离。缩减比例的具体值也可以根据用户的需要而改变。
(2)根据字体的设计风格,遍历字形中的笔画特征,采用相应的识别方 法识别出"横"类笔画特征,然后提取"横"类笔画特征。
本实施例中,待提取的笔画特征为"横,,类笔画特征。首先根据字体的 设计风格确定"横"类笔画的识别方法。以方正开发的一款宋体为例(符合 TrueType标准规范),将字形中是否包含水平类线段作为识别此类笔画的依 据。然后遍历字形中所有的笔画特征,根据"横"类笔画的识别方法识别出 "横"类笔画特征。最后根据TrueType标准规范中对字形部分的存储规范, 提取"横"类笔画特征,其过程包括以下步骤
① 识别出字形中所有"横"类笔画上点;
② 判断每个点与其相邻的两点中是否存在线外控制点,如果当前点不存 在相邻的线外控制点则将该点记录到不存在相邻的线外控制点的数组A中;
③ 判断线外控制点与当前点的连线是否形成水平线或竖直线,如果不能 形成水平线或竖直线,则将该点记录到存在相邻的线外控制点的数组B中, 否则将该点记录到不存在相邻的线外控制点的数组A中。
例如,图2中"国"字"横"笔画上的点为点200至点228。其中,最 上边的"横"中,与点201相邻的两点200、 202均不是线外控制点,因此点 201不存在相邻的线外控制点,将其记录到不存在相邻的线外控制点的数组A 中;同理,点202、 203和204均不存在相邻的线外控制点,因此也将这些点 记录到不存在相邻的线外控制点的数组A中。图3中"女"字"横"笔画上 的点为点301至点304、点306至点311。其中,与点303相邻的点313为线
外控制点,且点303与点313的连线不能形成水平线或竖直线,因此将该点 记录到存在相邻的线外控制点的数组B中;同理,点309也存在相邻的线外 控制点312,因此将其记录到存在相邻的线外控制点的数组B中。此外,点 306虽然存在相邻点305,并且点305为线外控制点,但二者之间的连线形成 了水平线,因此并不将点306记录到数组B中,而是记录到数组A中。 在C语言中可以采用如下数据结构记录"横"类笔画中的点。
BOOL blncOffCurveNeighborPoints;〃相邻点中是否存在线外控制点
提取完成后,便得到字形中存在的"横,,类笔画上的所有点。以图3中 所示的"女"字形为例,得到的结果如下点303和点309存在相邻的线外 控制点;点301、 302、 304、 306、 307、 308、 310和311不存在相邻的线外 控制点。在C语言中可以采用两个上述PointElement为元素的lt组来分别记 录识别结果。
在提取的笔画特征基础上,需要对被提取的点进行分类。分类的过程为 首先判断存在相邻的线外控制点的数组B中,任意两点横坐标的差值是否大 于预先设定的阈值,如果不大于阈值,则认为两点是同一对点,在调整时一 起处理。本实施例中,阈值为5。数组B经过上述处理后,将剩下的点和不 存在相邻的线外控制点的点归为一类,即将数组B剩下的点与数组A中的点 合并。
分类后的数组B中的成对点为双边连接曲线类点,即"横"的一端的两 个端点连接两条曲线类点,如图4中的点41和点42。数组A中的点为双边 非连接曲线类点,包括单边连接曲线和双边连接直线两小类,由于二者采用 相同的调整方法也可以满足视觉一致性的要求,所以在调整时不做区分。
(3)动态调整步骤(2)中提取的"横"类笔画特征。 首先,调整双边连接曲线类点,即数组B中的成对点,调整的过程包括 以下步骤,如图6所示。
typedef struct-PointElement
POINT pt;
//记录当前点的坐标
PointElement, *LPPointElement; ① 设定点的移动方向和测量方向。所述的移动方向是指点沿着何种方向 移动,所述的测量方向是指移动量的大小沿着何种方向测量。对于双边连接 曲线类点来说,移动方向为同一对点中两点确定的方向,"横"类笔画中上 边点的移动方向为从上边点指向下边点,下边点的移动方向为从下边点指向
上边点。例如,图4中待调整的双边连接曲线类点为点41和点42。设定点 41的移动方向为A^点41指向点42,即沿着/人点41到点42的方向移动;点 42的移动方向为^v点42指向点41,即沿着/人点42到点41的方向移动。然 后设定测量方向为竖直方向,即移动时移动量的大小沿着竖直方向测量。图 4中,假设点41沿着点41到点42的方向移动10个单位,则其移动量应该 为点41到点42上的10个单位在竖直方向上的投影大小。设点"和点42 确定的直线与竖直方向的夹角为angle度(取小于180度的弧度数),则移 动量的大小为10*|cos (angle) |,其中两竖线为取绝对值操作符。
本实施例中,由于设定了缩减比例(假设当前字符尺寸为120磅,则缩 减比例为48/64 ),所以首先沿着测量方向获取点41和点42之间的距离, 记为dis41to42,由此便可确定单边移动距离为0. 5*dis41to42*48/64,记为 sglDis。如果没有预先设定缩放比例,那么在该步骤中还需要设定"横,,类 笔画上点的移动距离,即移动量。
② 按照上述设定的移动方向和测量方向移动点,移动时两点均匀的沿着 移动方向移动指定的移动量,单边移动距离指的便是该移动量。图4中,点 41沿着从点41到点42的方向移动,移动量为sglDis;点42沿着从点42 到点41的方向移动,移动量也为sglDis。至此完成了双边连接曲线类一对 点的调整过程。如果还有其他双边连接曲线类点需要调整,则重复上述步骤 即可。
然后,调整双边非连接曲线类点,即数组A中的点。调整双边非连接曲 线类点与调整双边连接曲线类点的流程类似,区别之处在于移动方向不同, 此类点的移动方向和测量方法均为竖直方向,"横"类笔画中上边点的移动 方向为竖直向下,下边点的移动方向为竖直向上。如图5所示,其中点51 和点52属于此类情况,设置移动方向时,点51的移动方向为竖直向下,点 52的移动方向为竖直向上,而非两点连线确定的方向,其他的操作同上。
最后,对字形中没有被移动的点进行竖直方向的位置关系保持操作,该 操作的目的是为了保持字形中点与点之间的相对位置关系。例如,图3中的
字形经过调整之后,点301、 302、 303、 304、 306、 307、 308、 309、 310、 311仍然保持调整前的相对位置关系,而与其相邻的点可能改变了相对位置 关系。以点305为例,调整前点306和点305位于同一水平线上,调整后, 点306竖直向上移动了一定的距离,如果点305的位置仍保持不变,则两点 之间的相对位置关系就发生了改变。
为此,必须遍历字形中的所有点,判断点的位置是否发生变动,如果点 的位置没有发生变动,则在水平方向上找到与该点最近的变动点,提取变动 点在竖直方向上的变动量,然后将变动点在竖直方向上的变动量施加到该点 的竖直方向上。以点305为例,其在水平方向上最近的变动点为306,提取 306在竖直方向上的变动量,然后将其施加到点305的竖直方向上,从而保 持调整前后点305和点306始终位于同一水平线上。
确定了上述对"横"类笔画的变换方法后,便可以根据该方法编写变换 代码,并将其插入到现有轮廓字库中字形数据的前面。如果将现有字库中所 有字的"横"类笔画进行上述变换,那么可以将变换代码嵌入到所有字形数 据的前面。如果对单字进行变换,则将变换代码嵌入到该单字字形数据的前 面即可。
本实施例中,字体风格变换前后的效果对比,如图7所示。 实施例2
本实施例中,拟将字体风格特征变换成当字符大小不同时,"竖"类 笔画始终保持视觉效果上的恒定。
对"竖"类笔画的变换与对"横"类笔画的变换方法相似,因为将"竖" 类笔画旋转90度后便可以看成是"横"类笔画。因此,只需在实施例1的基 础上,进行适当的修改即可。例如,对被提取的点进行分类时,将判断数组 B中任意两点横坐标的差值是否大于预先设定的阈值修改为判断数组B中任 意两点纵坐标的差值是否大于预先设定的阈值;在移动点时,将点沿着竖直
方向移动或沿着竖直方向测量移动量修改为沿着水平方向上移动或测量。
实施例3
本实施例中,拟将字体风格特征变换成当字符大小不同时,"点"类 笔画始终保持视觉效果上的恒定。以一款宋体中的"点,,类笔画为例,该字 体"点,,类笔画的特征为在上端存在两点连接的直线,将这两点称为开口点, 如图8所示,其中点801和点802为开口点。
首先,设定"点"类笔画的缩减比例,其缩減比例与实施例1相同。
然后,调整"点"类笔画的开口大小。以图8为例,设定开口点801和 点802的移动方向和测量方向均为点801到点802确定的方向。#4居设定好 的缩减比例,计算出点801和点802移动的if巨离,移动点801和点802。
最后,调整"点"类笔画上开口点与底部点之间的点的位置,以保证"点,, 类笔画上所有点的相对位置关系不变。以图8为例,因为点801的位置发生 了变化,所以首先找到竖直方向上相对于点801的位于底部的点807,底部 点的位置保持不变,且该底部点与开口点位于同侧,如图8中的点801和点 807以及点802和点806。然后在水平方向和竖直方向上对介于8 01和807 之间的点808、 809和810进行调整,对介于开口点802和底部点806之间的 点803、 804和805也进4亍同样地调整。以在水平方向上调整点801和点807 之间的点809为例,在点801移动前该点位于上述两点的中点处,〗叚-没点801 的横坐标X,减去点809的横坐标X,与点809的横坐标X,减去点807的横 坐标X謝的比值为T,即(X801- X809 ) / (X, -X8。7) = T。在点801移动后, 就需要对点809的位置进行调整,以保证比值T不变,从而保证曲线在调整 前后的形状一致。在竖直方向上的调整方法与在水平方向上的调整方法相似, 即保证点移动前后比值(Y8Q1- Y8。9) / (Y8Q9 - Y8。7)不变,其中,Y表示点的 纵坐标。
需要说明的是本发明的核心是通过将对字形中的笔画特征进行动态变 换的代码嵌入到现有轮廓字库中的方式,实现变换字体风格的目的。其中, 对字形中的笔画特征进行动态变换的方法及系统并不限于具体实施方式
中所
字形中某一类或某几类笔画特征进行变换的代码,然后嵌入到现有轮廓字库 中,达到变换字体风格的目的。因此,只要采用将对字形中某一类或某几类 笔画特征进行变换的代码嵌入到现有轮廓字库中的方法来改变字体的风格, 便属于本发明的技术创新范围。
权利要求
1. 一种变换字体风格的方法,其特征在于该方法将对字形中的笔画特征进行动态变换的变换代码嵌入到现有轮廓字库的代码中,读取字形数据后,字体引擎调用该变换代码,在字形渲染之前对字形中的笔画特征进行动态变换。
2. 如权利要求1所述的一种变换字体风格的方法,其特征在于将对现 有轮廓字库中所有的字形数据产生影响的变换代码嵌入到全局代码中,将对 字库中的单字产生影响的变换代码嵌入到该字形数据的前面。
3. 如权利要求1或2所述的一种变换字体风格的方法,其特征在于,所(1)遍历字形中的笔画特征,识别出需要变换的笔画特征; (2 )提取步骤(1 )中识别出的笔画特征; (3)动态调整步骤(2)中提取的笔画特征。
4. 如权利要求3所述的一种变换字体风格的方法,其特征在于对字形 中的"横"类或"竖"类笔画特征进行动态变换,当字形尺寸不同时,保持"横,,类或"竖"类笔画视觉效果上的恒定。
5. 如权利要求4所述的一种变换字体风格的方法,其特征在于在遍历 字形中的笔画特征之前还包括设定字形中"横"类或"竖"类笔画缩减比例 的步骤;当字形尺寸不大于96磅时,缩减比例为42/64;当字形尺寸大于96 磅、不大于216磅时,缩减比例为48/64;当字形尺寸大于216磅,缩减比 例为52/64;并将根据上述缩减比例编写的缩减比例代码嵌入到现有轮廓字 库的全局代码中。
6. 如权利要求4所述的一种变换字体风格的方法,其特征在于步骤(1 ) 中识别字形中的"横"类笔画特征时,将字形中是否包含水平类线段作为识 别此类笔画的依据;识别字形中的"竖"类笔画时,将字形中是否包含竖直 类线段作为识别此类笔画的依据。
7. 如权利要求6所述的一种变换字体风格的方法,其特征在于步骤(2 ) 中提取"横,,类或"竖,,类笔画特征的过程包括以下步骤①识别出字形中所有"横"类或"竖"类笔画上的点; ② 判断每个点与其相邻的两点中是否存在线外控制点,如果当前点不存在相邻的线外控制点则将该点记录到不存在相邻的线外控制点的数组A中;③ 判断线外控制点与当前点的连线是否形成水平线或竖直线,如果不能 形成水平线或竖直线,则将该点记录到存在相邻的线外控制点的数组B中, 否则将该点记录到不存在相邻的线外控制点的数组A中。
8. 如权利要求7所述的一种变换字体风格的方法,其特征在于在动态 调整"横"类或"竖"类笔画特征之前对被提取的点进行分类,分类的过程 为首先判断数组B中任意两点横坐标或纵坐标的差值是否大于预先设定的 阈值,如果不大于该阈值,则认为两点是同一对点,在调整时一起处理;数 组B经过上述处理后,将剩余的点和数组A中的点归为一类。
9. 如权利要求8所述的一种变换字体风格的方法,其特征在于所述的 阈值为5。
10. 如权利要求8或9所述的一种变换字体风格的方法,其特征在于 步骤(3)中所述的动态调整笔画特征的过程包括以下步骤① 调整双边连接曲线类点,即数组B中的成对点;首先设定待调整点的移动方向和测量方向;所述的移动方向为同一对点 中两点确定的方向,"横"类笔画中上边点的移动方向为从上边点指向下边 点,下边点的移动方向为从下边点指向上边点;"竖"类笔画中左边点的移 动方向为从左边点指向右边点,右边点的移动方向为从右边点指向左边点; 所述的测量方向是指移动量的计算方向,"横"类笔画的测量方向为竖直方 向,"竖"类笔画的测量方向为水平方向;然后沿着测量方向确定待调整点 的移动量,最后按照移动方向和移动量移动待调整点;② 调整双边非连接曲线类点,即数组A中的点;首先将待调整点的移动方向和测量方向均设为竖直方向或水平方向, "横"类笔画中上边点的移动方向为竖直向下,下边点的移动方向为竖直向 上;"竖"类笔画中左边点的移动方向为水平向右,右边点的移动方向为水 平向左;然后根据移动方向和步骤①中的移动量移动待调整点;③ 对字形中没有被移动的点进行竖直方向或水平方向上的位置关系保持 操作;如果对"横"类笔画上的点进行了移动,则对没有被移动的点进行竖 直方向上的位置关系保持操作,如果对"竖"类笔画上的点进行了移动,则 对没有被移动的点进行水平方向上的位置关系保持操作。
11. 如权利要求IO所述的一种变换字体风格的方法,其特征在于步骤③中对字形中没有被移动的点进行竖直方向上的位置关系保持操作的过程为首先遍历字形中的所有点,判断点的位置是否发生了变动,如果点的位 置没有发生变动,则在水平方向上找到与该点最近的变动点,提取与该点最 近的变动点在竖直方向上的变动量,然后将其施加到该点的竖直方向上;对字形中没有被移动的点进行水平方向上的位置关系保持操作的过程 为首先遍历字形中的所有点,判断点的位置是否发生了变动,如果点的位 置没有发生变动,则在竖直方向上找到与该点最近的变动点,提取与该点最 近的变动点在水平方向上的变动量,然后将其施加到该点的水平方向上。
12. 如权利要求3所述的一种变换字体风格的方法,其特征在于对字 形中"点"类笔画特征进行动态变换,当字形尺寸不同时,保持"点"类笔 画视觉效果上的恒定;变换的过程包括以下步骤① 设定"点"类笔画的缩减比例;当字形尺寸不大于96磅时,缩减比例为42/64;当字形尺寸大于96磅、 不大于216磅时,缩减比例为48/64;当字形尺寸大于216磅,缩减比例为 52/64,并将根据上述缩减比例编写的缩减比例代码嵌入到现有轮廓字库的全 局代码中;② 调整"点"类笔画的开口大小;设定开口点的移动方向和测量方向为开口点确定的方向,根据步骤①中 设定的缩减比例计算开口点的移动距离,移动开口点。③ 调整"点"类笔画上点的位置关系;首先找到与开口点在竖直方向上相对的位于底部的点,然后在水平方向 和竖直方向上调整"点"类笔画上开口点与底部点之间的点的位置,保证开 口点移动前后,开口点与中间点的横坐标之差和纵坐标之差与中间点与底部 点横坐标之差和纵坐标之差的比值不变,其中开口点与底部点位于同侧。
13. —种变换字体风格的系统,包括将对字形中的笔画特征进行动态变 换的变换代码嵌入到现有轮廓字库代码中的嵌入装置,以及读取字形数据后,字体引擎调用该变换代码,在字形渲染之前对字形中的笔画特征进行动态变 换的变换装置。
14.如权利要求13所述的一种变换字体风格的系统,其特征在于所述的变换装置包括用于识别现有轮廓字库字形中需要变换的笔画特征的识别模 块、用于提取识别模块识别出的笔画特征的提取模块、以及用于调整提取模 块提取的笔画特征的调整模块。
全文摘要
本发明公开了一种变换字体风格的方法及系统,属于字符信息处理技术领域。在现有技术中,当需要现有字库中没有的字体风格时,要么开发一种新字体,要么对最接近的现有字库中的字体进行人工修改。如果开发新字体,则存在开发成本高,开发周期长,对系统存储硬件要求较高等不足之处;如果通过人工方式修改,则存在效率低、效果不理想等缺点。本发明所述的方法及系统,通过将对字形中的笔画特征进行动态变换的变换代码嵌入到现有轮廓字库的代码中的方式,实现动态变换字体风格的目的。本发明与开发新字体相比,降低了开发成本,缩短了开发周期,同时降低了字库对存储硬件的要求;与人工修改方式相比,提高了字体风格变换的效率,变换后的字体效果好。
文档编号G06T3/00GK101388112SQ200810222438
公开日2009年3月18日 申请日期2008年9月17日 优先权日2008年9月17日
发明者昉 刘, 刘晓林, 唐英敏, 明 李 申请人:北大方正集团有限公司;北京大学;北京北大方正电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1