CN113515919B - 一种生成中文TrueType字体的方法及系统 - Google Patents
一种生成中文TrueType字体的方法及系统 Download PDFInfo
- Publication number
- CN113515919B CN113515919B CN202111071249.8A CN202111071249A CN113515919B CN 113515919 B CN113515919 B CN 113515919B CN 202111071249 A CN202111071249 A CN 202111071249A CN 113515919 B CN113515919 B CN 113515919B
- Authority
- CN
- China
- Prior art keywords
- font
- chinese character
- vertex
- chinese
- new
- 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 46
- 230000011218 segmentation Effects 0.000 claims abstract description 34
- 238000004364 calculation method Methods 0.000 claims abstract description 8
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 6
- 238000005094 computer simulation Methods 0.000 abstract description 5
- 230000008901 benefit Effects 0.000 abstract description 4
- 230000015572 biosynthetic process Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012067 mathematical method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000005452 bending Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000003287 optical 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明公开了一种生成中文TrueType字体的方法及系统,包括读取汉字标准字体库中的任一汉字以获得所述汉字标准字体的外形轮廓线数据;基于三角函数切分高度的计算方法对汉字标准字体的外形轮廓线数据进行处理以得到新字体的外形轮廓线数据;将汉字新字体的外形轮廓线数据回写至汉字标准字体库的GlyphTable;将汉字标准字体库中所有汉字标准字体的外形轮廓线数据处理为新字体的外形轮廓线数据,基于所有新字体的外形轮廓线数据形成新GlyphTable,并将所述新GlyphTable同步到汉字字体文件表;在汉字字体文件表中加入签名文件以生成中文TrueType字体文件;该方法实现通过计算机模拟的方法形成中文TrueType字体,具有效率高、覆盖全的优点。
Description
技术领域
本发明涉及TrueType字体生成的技术领域,具体涉及一种生成中文TrueType字体的方法及系统。
背景技术
TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式,随着windows的流行,已经变成最常用的一种字体文件表示方式;TTF文件是计算机用TrueType字体的通用文件,TTF文件使用轮廓线的方式形成计算机用字体,应用广泛;目前生成中文TrueType字体主要是采用手工逐字编辑的方式,逐点划线编辑字形,但由于中文字体库庞大,所以采用手工逐字编辑的方式效率不高,而且很多字体不能覆盖整个字库,存在字体缺失严重的问题,因此用计算机模拟的方法形成特殊字体就显得尤为重要;而且中文字体字形优美,笔顺复杂,微小的字形高度比例变化,都会产生不同的字体美感,因此需要一种能够通过计算生成不同比例变化的方法生成不同的中文字体。
发明内容
针对上述问题,本发明的一个目的是提供一种生成中文TrueType字体的方法,该方法利用数学方法处理字体的顶点坐标以实现通过计算机模拟的方法形成中文TrueType字体,而且整个中文字体库均可处理,具有效率高、覆盖全的优点。
本发明的第二个目的是提供一种生成中文TrueType字体的系统。
本发明所采用的第一个技术方案是:一种生成中文TrueType字体的方法,包括以下步骤:
S100:读取汉字标准字体库中的任一汉字以获得汉字标准字体的外形轮廓线数据;
S200:基于三角函数切分高度的计算方法对所述汉字标准字体的外形轮廓线数据进行处理以得到汉字新字体的外形轮廓线数据;
S300:将所述汉字新字体的外形轮廓线数据回写至汉字标准字体库的GlyphTable;
S400:重复所述步骤S100-S300,直至将汉字标准字体库中所有汉字标准字体的外形轮廓线数据处理为新字体的外形轮廓线数据,基于所有新字体的外形轮廓线数据形成新GlyphTable,并将所述新GlyphTable同步到汉字字体文件表;
S500:在所述汉字字体文件表中加入签名文件以生成中文TrueType字体文件。
优选地,所述步骤S100具体为:
读取汉字标准字体库的MaximumProfileTable以获得任一汉字的ID,基于所述汉字的ID在汉字标准字体库的Locatable中查找所述汉字的开始位置和长度;基于所述汉字的开始位置和长度在汉字标准字体库的GlyphTable中获得所述汉字标准字体的外形轮廓线数据。
优选地,所述步骤S200包括以下子步骤:
S210:基于所述汉字标准字体的外形轮廓线数据获得所述汉字标准字体的SimpleGlyphBean;
S220:遍历所述SimpleGlyphBean中的所有顶点坐标,将所有顶点坐标进行切分角度转换;
S230:获取当前顶点的相邻两个顶点的坐标,基于相邻两个顶点的坐标判断处理中的当前顶点是否为边角顶点;若是边角顶点,则边角顶点不做弯曲;若不是边角顶点,则将非边角顶点设置自动弯曲;
S240:当所述汉字标准字体的所有顶点均经过切分角度转换和非边角顶点处理后形成汉字新字体顶点数组,基于所述汉字新字体顶点数组设置汉字新字体的长度以形成汉字新字体的外形轮廓线数据。
优选地,所述步骤S220包括以下子步骤:
S221:设定切分角的取值,基于所述切分角的取值获得其对应的切分弧度;
S222:将所有顶点的X坐标设置为切分弧度的正弦值,将所有顶点的Y坐标设置为切分弧度的余弦值;
S223:将所有顶点的Y坐标设置为小于或等于设定阈值像素的随机数以增加汉字字体的Y向变化。
优选地,所述设定阈值像素设为20。
优选地,所述步骤S230中基于相邻两个顶点的坐标判断处理中的当前顶点是否为边角顶点具体为:
(1)基于Array数组获取当前顶点的上一个顶点坐标和下一个顶点坐标;
(2)若当前顶点的x、y坐标分别大于上一个顶点的x、y坐标,且分别小于下一个顶点的x、y坐标,则判定为非边角点。
优选地,所述步骤S240中汉字新字体的外形轮廓线数据通过以下方式得到:
当所述汉字标准字体的所有顶点均处理完成之后,所述汉字标准字体的SimpleGlyphBean中包含有当前汉字的新字体数据,SimpleGlyphBean调用读二进制的方法将所述当前汉字的新字体数据转成汉字新字体的外形轮廓线数据。
优选地,所述步骤S500中还包括在生成中文TrueType字体文件的同时对所述汉字新字体进行命名。
本发明所采用的第二个技术方案是:一种生成中文TrueType字体的系统,包括读取模块、处理模块、回写模块、汉字字体文件表生成模块和中文TrueType字体文件生成模块;
所述读取模块用于读取汉字标准字体库中的任一汉字以获得汉字标准字体的外形轮廓线数据;
所述处理模块用于基于三角函数切分高度的计算方法对所述汉字标准字体的外形轮廓线数据进行处理以得到汉字新字体的外形轮廓线数据;
所述回写模块用于将所述汉字新字体的外形轮廓线数据回写至汉字标准字体库的GlyphTable;
所述汉字字体文件表生成模块用于基于所有新字体的外形轮廓线数据形成新GlyphTable,并将所述新GlyphTable同步到汉字字体文件表;
所述中文TrueType字体文件生成模块用于在所述汉字字体文件表中加入签名文件以生成中文TrueType字体文件。
优选地,所述处理模块用于执行以下操作:
S210:基于所述汉字标准字体的外形轮廓线数据获得所述汉字标准字体的SimpleGlyphBean;
S220:遍历所述SimpleGlyphBean中的所有顶点坐标,将所有顶点坐标进行切分角度转换;
S230:获取当前顶点的相邻两个顶点的坐标,基于相邻两个顶点的坐标判断处理中的当前顶点是否为边角顶点;若是边角顶点,则边角顶点不做弯曲;若不是边角顶点,则将非边角顶点设置自动弯曲;
S240:当所述汉字标准字体的所有顶点均经过切分角度转换和非边角顶点处理后形成汉字新字体顶点数组,基于所述汉字新字体顶点数组设置汉字新字体的长度以形成汉字新字体的外形轮廓线数据。
上述技术方案的有益效果:
(1)本发明公开的一种生成中文TrueType字体的方法利用数学方法处理字体的顶点坐标以实现通过计算机模拟的方法形成中文TrueType字体,具有效率高的特点。
(2)本发明公开的一种生成中文TrueType字体的方法能处理整个中文字体库的汉字,具有覆盖全的优点。
(3)本发明公开的生成中文TrueType字体的方法能批量生成多种不同高度比例的字体。
(4)本发明能通过控制SimpleGlyph坐标的xCordinrate,yCordinrate的随机偏移得到不同变化的字体,可以为设计师提供更多关于中文字体字形的创作灵感。
(5)本发明中每次设置不同的切分角,生成的新字体都会有精细的变化。
附图说明
图1为本发明的一个实施例提供的一种生成中文TrueType字体的方法的流程示意图;
图2为本发明一个实施例提供的“智”字的标准外形轮廓线的示意图;
图3为本发明一个实施例提供的“智”字新字体的外形轮廓线的示意图;
图4为本发明一个实施例提供的“智”字新字体的外形轮廓线既定点确定的示意图;
图5为本发明一个实施例提供的江融信南建和海20体的示意图;
图6为本发明一个实施例提供的江融信南建和海26体的示意图;
图7为本发明一个实施例提供的江融信南建和海28体的示意图;
图8为本发明一个实施例提供的江融信南建和海32体的示意图;
图9为本发明一个实施例提供的江融信南建和海65体的示意图;
图10为本发明的一个实施例提供的一种生成中文TrueType字体的系统的结构示意图。
具体实施方式
下面结合附图和实施例对本发明的实施方式作进一步详细描述。以下实施例的详细描述和附图用于示例性地说明本发明的原理,但不能用来限制本发明的范围,即本发明不限于所描述的优选实施例,本发明的范围由权利要求书限定。
在本发明的描述中,需要说明的是,除非另有说明,“多个”的含义是两个或两个以上;术语“第一”“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性;对于本领域的普通技术人员而言,可视具体情况理解上述术语在本发明中的具体含义。
本文使用的术语SimpleGlyph是指TTF文件中一种TrueType字体规范,是Glyph的子集,代表一个中文字形的字体数据。
本文使用的术语SimpleGlyphBean是指JAVA语言中处理SimpleGlyph字节数据实体。
本文使用的术语GlyphTable是所有字库的集合,GlyphTable中有20956个中文字形数据,是TTF文件中保存SimpleGlyph、Glyph位图数据结构表,是Glyph数据的集合表。
本文使用的术语Locatable是指TTF文件中保存GlyphTable数据位图信息结构表,是GlyphTable的索引集合,包含GlyphTable中20956个字体数据的索引位置。
本文使用的术语MaximumProfileTable是指TTF文件中保存Locatable关键信息结构表,是Locatable的索引,标识每个字体的数据索引位置和数据长度。
实施例一
图1为本发明的一个实施例提供的一种生成中文TrueType字体的方法,包括以下步骤:
S100:读取汉字标准字体库中的任一汉字以获得该汉字标准字体的外形轮廓线数据;
轮廓线是TTF文件用于表示字体的一种方式,外轮廓线标识字形外围,内轮廓线标识空缺;例如以汉字“智”为例,“智”字标准字体的外形轮廓线如图2所示。
读取汉字标准字体库的MaximumProfileTable以获得任一汉字的ID,基于该汉字的ID在汉字标准字体库的Locatable中查找该汉字的开始位置和长度;基于该汉字的开始位置和长度在汉字标准字体库的GlyphTable中获得该汉字标准字体的外形轮廓线数据(二进制数据)。
S200:基于三角函数切分高度的计算方法对汉字标准字体的外形轮廓线数据进行处理以得到汉字新字体的外形轮廓线数据,其中,汉字新字体为不同高度比例的中文TrueType字体;
基于三角函数切分高度的计算方法对汉字标准字体的外形轮廓线数据进行处理包括以下子步骤:
S210:基于汉字标准字体的外形轮廓线数据获得汉字标准字体的SimpleGlyphBean,汉字标准字体的SimpleGlyphBean中包括Array数组;
SimpleGlyphBean能标识一个字形顶点的数量、轮廓线的数量以及尺寸的大小(Rule),用于java处理;SimpleGlyphBean中包括Array数组和Rule数组,Array数组保存了一个汉字字体的每个顶点坐标的x、y以及弯曲标识等,Rule数组保存一个汉字字体的轮廓尺寸。
汉字标准字体的SimpleGlyphBean通过以下方式获得:
基于汉字标准字体的外形轮廓线数据(二进制数据)初始化得到汉字标准字体的SimpleGlyph实体,基于汉字标准字体的SimpleGlyph实体初始化得到汉字标准字体的SimpleGlyphBean;例如以汉字“智”为例,通过“智”字标准字体的外形轮廓线获得“智”字标准字体的SimpleGlyphBean;由于JAVA处理SimpleGlyph实体有难度,但处理SimpleGlyphBean很便利,将SimpleGlyph实体初始化为SimpleGlyphBean以便于后续的处理。
S220:遍历汉字标准字体的SimpleGlyphBean中的所有顶点坐标,将所有顶点坐标进行切分角度转换,具体为:
S221:设定切分角的取值,基于切分角的取值获得其对应的切分弧度;
切分角是指汉字字体的长宽比,45度为正方形,32度为长方形;切分角的取值在0-90度之间,当切分角度小于45度时,使汉字字体变窄;例如,当设定切分角的取值为32度时,其对应的切分弧度为0.5235987916666667,会使字体变窄;
S222:将Array数组中所有顶点的X坐标设置为切分弧度的正弦值,s.setXCoordinate(new Double(s.getXCoordinate() * Math.sin(angle)).intValue());将所有顶点的Y坐标设置为切分弧度的余弦值,s.setYCoordinate(new Double(s.getYCoordinate() * Math.cos(angle) + rnd).intValue());
S223:将所有顶点的Y坐标设置为小于或等于设定阈值像素的随机数,以增加汉字字体的Y向变化;
设定阈值像素设为20,太大的随机数会导致波动太大,对设计师而言10以内的波动都会被清晰看出来,对非设计师而言20的波动在200大小的字体中会很明显;而且波动太大会导致字形的中断;
将所有顶点的Y坐标设置为≤20像素的随机数,增加字体的Y向变化double rnd =Math.random() * 20 – 10;增加字体的Y随机变化会导致字体横竖的平整性上出现变化,更接近手写体。
S230:获取当前顶点的相邻两个顶点的坐标,基于相邻两个顶点的坐标判断处理中的当前顶点是否为边角顶点;若是边角顶点,则边角顶点不做弯曲(on Curve);若不是边角顶点,即若为非边角顶点,则将非边角顶点设置自动Curve(弯曲).if (curve) {s.setOnCurve(true); },非边角顶点的弯曲会使字体的跳动变得平稳;
边角顶点通过以下方式进行判断:
(1)基于Array数组,获取当前顶点的上一个顶点坐标beforePoint和下一个顶点坐标AfterPoint;
(2)若当前顶点的x、y坐标分别大于上一个顶点的x、y坐标,且分别小于下一个顶点的x、y坐标,则判定为非边角点;
S240:当汉字标准字体的所有顶点均处理完成后形成汉字新字体顶点数组,基于汉字新字体顶点数组设置汉字新字体的总体长度形成汉字新字体的外形轮廓线数据。
当汉字标准字体的所有顶点均处理完成之后,汉字标准字体的SimpleGlyphBean中包含有当前汉字的新字体数据,SimpleGlyphBean调用toStream(读二进制)方法将当前汉字的新字体数据转成汉字新字体的外形轮廓线数据(二进制数据glyphByte)。
例如,当 “智”字标准字体的125个顶点均处理完成之后,重新绑定新字体顶点数组形成“智”字新字体的外形轮廓线数据simpleGlyphExBean.setArray(arrayList);如图3和图4所示,“智”字新字体的外形轮廓线共需要6条轮廓线,125个顶点。
S300:将汉字新字体的外形轮廓线数据回写至汉字标准字体库的GlyphTable;
基于汉字新字体的外形轮廓线数据能获得汉字新字体的长度,基于汉字新字体的长度将汉字标准字体库GlyphTable中的当前汉字的长度更新为当前汉字新字体的长度并同步更新Locatable索引。
S400:重复上述步骤S100-S300,直至将汉字标准字体库中所有汉字标准字体的外形轮廓线数据处理为新字体的外形轮廓线数据,形成新GlyphTable,并将新GlyphTable同步到汉字字体文件表;即基于上述方法将汉字标准字体库中的所有中文汉字(20956个汉字)依次处理一遍,使所有汉字的标准字体变为新字体。
S500:在汉字字体文件表中加入签名文件以生成中文TrueType字体文件。
在汉字字体文件表中加入签名文件生成中文TrueType字体文件Font newfont =fontBuilder.build(),并输出保存;在加入签名文件生成中文TrueType字体文件的同时对汉字新字体进行命名,例如基于切分角的取值(20度、26度、28度、32度和65度)将汉字新字体命名为江融信南建和海20体、江融信南建和海26体、江融信南建和海28体、江融信南建和海32体和江融信北建和海65体(但并不限于此);新字体为不同高度比例的中文TrueType字体,每种字体处理标准汉字20956个,基本涵盖整个汉字标准字体库,为全库型字体。
江融信南建和海20体如图5所示,江融信南建和海26体如图6所示,江融信南建和海28体如图7所示,江融信南建和海32体如图8所示,江融信北建和海65体如图9所示;如图5至图9所示,当切分角度小于45度时,使汉字字体变窄,且切分角度越小,汉字字体越窄;当切分角度大于45度时,使汉字字体变宽;上述新字体文件均能在win10系统中安装。
本发明公开的一种生成中文TrueType字体的方法利用数学方法处理字体的顶点坐标以实现通过计算机模拟的方法形成中文TrueType字体,具有效率高的特点;而且该方法能处理整个中文字体库的汉字,具有覆盖全的优点。
本发明中每次设置不同的切分角,通过控制SimpleGlyph坐标的xCordinrate,yCordinrate的随机偏移得到不同变化的字体,即本发明公开的生成中文TrueType字体的方法能批量生成多种不同高度比例的新字体,生成的新字体都会有精细的变化,可以为设计师提供更多关于中文字体字形的创作灵感。
实施例二
图10为本发明的一个实施例提供的一种生成中文TrueType字体的系统,包括读取模块、处理模块、回写模块、汉字字体文件表生成模块和中文TrueType字体文件生成模块;
读取模块用于读取汉字标准字体库中的任一汉字以获得所述汉字标准字体的外形轮廓线数据;
处理模块用于基于三角函数切分高度的计算方法对所述汉字标准字体的外形轮廓线数据进行处理以得到汉字新字体的外形轮廓线数据;
回写模块用于将所述汉字新字体的外形轮廓线数据回写至汉字标准字体库的GlyphTable;
汉字字体文件表生成模块用于基于所有新字体的外形轮廓线数据形成新GlyphTable,并将所述新GlyphTable同步到汉字字体文件表;
中文TrueType字体文件生成模块用于在所述汉字字体文件表中加入签名文件以生成中文TrueType字体文件。
进一步的,在一个实施例中,处理模块用于执行以下操作:
S210:基于所述汉字标准字体的外形轮廓线数据获得所述汉字标准字体的SimpleGlyphBean;
S220:遍历所述SimpleGlyphBean中的所有顶点坐标,将所有顶点坐标进行切分角度转换;
S230:获取当前顶点的相邻两个顶点的坐标,基于相邻两个顶点的坐标判断处理中的当前顶点是否为边角顶点;若是边角顶点,则边角顶点不做弯曲;若不是边角顶点,则将非边角顶点设置自动弯曲;
S240:当所述汉字标准字体的所有顶点均经过切分角度转换和非边角顶点处理后形成汉字新字体顶点数组,基于所述汉字新字体顶点数组设置汉字新字体的长度以形成汉字新字体的外形轮廓线数据。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种生成中文TrueType字体的方法,其特征在于,包括以下步骤:
S100:读取汉字标准字体库中的任一汉字以获得汉字标准字体的外形轮廓线数据;
S200:基于三角函数切分高度的计算方法对所述汉字标准字体的外形轮廓线数据进行处理以得到汉字新字体的外形轮廓线数据;
S300:将所述汉字新字体的外形轮廓线数据回写至汉字标准字体库的GlyphTable;
S400:重复所述步骤S100-S300,直至将汉字标准字体库中所有汉字标准字体的外形轮廓线数据处理为新字体的外形轮廓线数据,基于所有新字体的外形轮廓线数据形成新GlyphTable,并将所述新GlyphTable同步到汉字字体文件表;
S500:在所述汉字字体文件表中加入签名文件以生成中文TrueType字体文件;
其中,所述步骤S200包括以下子步骤:
S210:基于所述汉字标准字体的外形轮廓线数据获得所述汉字标准字体的SimpleGlyphBean;
S220:遍历所述SimpleGlyphBean中的所有顶点坐标,将所有顶点坐标进行切分角度转换;具体为:
S221:设定切分角的取值,基于所述切分角的取值获得其对应的切分弧度;
S222:将所有顶点的X坐标设置为切分弧度的正弦值,将所有顶点的Y坐标设置为切分弧度的余弦值;
S223:将所有顶点的Y坐标设置为小于或等于设定阈值像素的随机数以增加汉字字体的Y向变化;
S230:获取当前顶点的相邻两个顶点的坐标,基于相邻两个顶点的坐标判断处理中的当前顶点是否为边角顶点;若是边角顶点,则边角顶点不做弯曲;若不是边角顶点,则将非边角顶点设置自动弯曲;
S240:当所述汉字标准字体的所有顶点均经过切分角度转换和非边角顶点处理后形成汉字新字体顶点数组,基于所述汉字新字体顶点数组设置汉字新字体的长度以形成汉字新字体的外形轮廓线数据。
2.根据权利要求1所述的生成中文TrueType字体的方法,其特征在于,所述步骤S100具体为:
读取汉字标准字体库的MaximumProfileTable以获得任一汉字的ID,基于所述汉字的ID在汉字标准字体库的Locatable中查找所述汉字的开始位置和长度;基于所述汉字的开始位置和长度在汉字标准字体库的GlyphTable中获得所述汉字标准字体的外形轮廓线数据。
3.根据权利要求1所述的生成中文TrueType字体的方法,其特征在于,所述设定阈值像素设为20。
4.根据权利要求1所述的生成中文TrueType字体的方法,其特征在于,所述步骤S230中基于相邻两个顶点的坐标判断处理中的当前顶点是否为边角顶点具体为:
(1)汉字标准字体的SimpleGlyphBean中包括Array数组,Array数组保存了一个汉字字体的每个顶点坐标的x、y;基于Array数组获取当前顶点的上一个顶点坐标和下一个顶点坐标;
(2)若当前顶点的x、y坐标分别大于上一个顶点的x、y坐标,且分别小于下一个顶点的x、y坐标,则判定为非边角点。
5.根据权利要求1所述的生成中文TrueType字体的方法,其特征在于,所述步骤S240中汉字新字体的外形轮廓线数据通过以下方式得到:
当所述汉字标准字体的所有顶点均处理完成之后,所述汉字标准字体的SimpleGlyphBean中包含有当前汉字的新字体数据,SimpleGlyphBean调用读二进制的方法将所述当前汉字的新字体数据转成汉字新字体的外形轮廓线数据。
6.根据权利要求1所述的生成中文TrueType字体的方法,其特征在于,所述步骤S500中还包括在生成中文TrueType字体文件的同时对所述汉字新字体进行命名。
7.一种生成中文TrueType字体的系统,其特征在于,包括读取模块、处理模块、回写模块、汉字字体文件表生成模块和中文TrueType字体文件生成模块;
所述读取模块用于读取汉字标准字体库中的任一汉字以获得汉字标准字体的外形轮廓线数据;
所述处理模块用于基于三角函数切分高度的计算方法对所述汉字标准字体的外形轮廓线数据进行处理以得到汉字新字体的外形轮廓线数据;
所述回写模块用于将所述汉字新字体的外形轮廓线数据回写至汉字标准字体库的GlyphTable;
所述汉字字体文件表生成模块用于基于所有新字体的外形轮廓线数据形成新GlyphTable,并将所述新GlyphTable同步到汉字字体文件表;
所述中文TrueType字体文件生成模块用于在所述汉字字体文件表中加入签名文件以生成中文TrueType字体文件;
所述处理模块用于执行以下操作:
S210:基于所述汉字标准字体的外形轮廓线数据获得所述汉字标准字体的SimpleGlyphBean;
S220:遍历所述SimpleGlyphBean中的所有顶点坐标,将所有顶点坐标进行切分角度转换;具体为:
S221:设定切分角的取值,基于所述切分角的取值获得其对应的切分弧度;
S222:将所有顶点的X坐标设置为切分弧度的正弦值,将所有顶点的Y坐标设置为切分弧度的余弦值;
S223:将所有顶点的Y坐标设置为小于或等于设定阈值像素的随机数以增加汉字字体的Y向变化;
S230:获取当前顶点的相邻两个顶点的坐标,基于相邻两个顶点的坐标判断处理中的当前顶点是否为边角顶点;若是边角顶点,则边角顶点不做弯曲;若不是边角顶点,则将非边角顶点设置自动弯曲;
S240:当所述汉字标准字体的所有顶点均经过切分角度转换和非边角顶点处理后形成汉字新字体顶点数组,基于所述汉字新字体顶点数组设置汉字新字体的长度以形成汉字新字体的外形轮廓线数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111071249.8A CN113515919B (zh) | 2021-09-14 | 2021-09-14 | 一种生成中文TrueType字体的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111071249.8A CN113515919B (zh) | 2021-09-14 | 2021-09-14 | 一种生成中文TrueType字体的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113515919A CN113515919A (zh) | 2021-10-19 |
CN113515919B true CN113515919B (zh) | 2022-01-07 |
Family
ID=78063042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111071249.8A Active CN113515919B (zh) | 2021-09-14 | 2021-09-14 | 一种生成中文TrueType字体的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113515919B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102456231A (zh) * | 2010-10-19 | 2012-05-16 | 威锋数位开发股份有限公司 | 将目标点阵字体转化成目标轮廓字体的方法及系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3014247B2 (ja) * | 1993-05-24 | 2000-02-28 | 富士通株式会社 | 文字生成方法及びその装置 |
KR0172581B1 (ko) * | 1996-04-02 | 1999-03-30 | 이진기 | 단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법 |
KR100219072B1 (ko) * | 1996-04-02 | 1999-09-01 | 김영환 | 중심축 변환을 이용한 폰트 및 그 폰트 서체의 변형 및 라스터라이징 방식 |
TW575841B (en) * | 2002-08-27 | 2004-02-11 | Ind Tech Res Inst | Descriptive method of characters for displaying the thickness of strokes thereof |
CN101697234A (zh) * | 2009-09-25 | 2010-04-21 | 华南理工大学 | 一种基于笔画分段建模的手写汉字隶书美化方法 |
CN101799933B (zh) * | 2010-02-03 | 2012-01-11 | 南京师范大学 | TrueType符号与基于路径的点状地图符号交换方法 |
CN103824072B (zh) * | 2014-03-05 | 2017-02-08 | 广东小天才科技有限公司 | 对手写字符的字体结构进行检测的方法及装置 |
US10347016B2 (en) * | 2016-01-12 | 2019-07-09 | Monotype Imaging Inc. | Converting font contour curves |
CN107644006B (zh) * | 2017-09-29 | 2020-04-03 | 北京大学 | 一种基于深度神经网络的手写体中文字库自动生成方法 |
CN109241497A (zh) * | 2018-09-27 | 2019-01-18 | 腾讯音乐娱乐科技(深圳)有限公司 | 文本处理方法及装置 |
CN110728273A (zh) * | 2019-10-10 | 2020-01-24 | 昆明理工大学 | 一种基于加权随机分布模型的藏文字体多样性表达方法 |
CN110866501B (zh) * | 2019-11-19 | 2022-04-29 | 中国建设银行股份有限公司 | 一种训练数据生成方法、数据识别方法和计算机存储介质 |
CN111488104B (zh) * | 2020-04-16 | 2021-10-12 | 维沃移动通信有限公司 | 一种字形编辑方法及电子设备 |
CN112115678B (zh) * | 2020-09-21 | 2024-04-12 | 京东方科技集团股份有限公司 | 信息展示方法及装置、存储介质及电子设备 |
-
2021
- 2021-09-14 CN CN202111071249.8A patent/CN113515919B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102456231A (zh) * | 2010-10-19 | 2012-05-16 | 威锋数位开发股份有限公司 | 将目标点阵字体转化成目标轮廓字体的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113515919A (zh) | 2021-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7982737B2 (en) | System and method for independent font substitution of string characters | |
US5583978A (en) | Apparatuses and methods for creating and using portable fonted texts with embedded automatically-created font descriptions | |
AU2006252025B2 (en) | Recognition of parameterised shapes from document images | |
US8209600B1 (en) | Method and apparatus for generating layout-preserved text | |
Lin et al. | Complete font generation of Chinese characters in personal handwriting style | |
TWI364715B (en) | Simplifying complex characters to maintain legibility | |
CN112070658A (zh) | 一种基于深度学习的汉字字体风格迁移方法 | |
CN112395834B (zh) | 基于图片输入的脑图生成方法、装置、设备及存储介质 | |
CN113012265B (zh) | 针式打印字符图像生成方法、装置、计算机设备和介质 | |
US10818050B2 (en) | Vector graphic font character generation techniques | |
CN116796400A (zh) | 一种基于webGL的BIM数字存储数据格式的交换方法 | |
CN111815748B (zh) | 一种动画处理方法、装置、存储介质及电子设备 | |
CN113515919B (zh) | 一种生成中文TrueType字体的方法及系统 | |
US20040196288A1 (en) | Method and apparatus for generating vector font | |
CN118397634B (zh) | 一种地面电站数字孪生建模标记方法、系统、设备及介质 | |
CN114820972A (zh) | 等值线和/或等值面生成方法、系统、设备及存储介质 | |
CN101957837B (zh) | 一种笔划矢量字库的存取方法 | |
CN110414496B (zh) | 相似字识别方法、装置、计算机设备及存储介质 | |
CN119272723B (zh) | 矢量字库裁剪方法、装置、计算机设备和可读存储介质 | |
CN112464956B (zh) | 图像重合度识别方法、电子设备及计算机可读存储介质 | |
CN115048030B (zh) | 一种文字合并方法、装置、电子设备和存储介质 | |
CN113627124A (zh) | 一种针对字体迁移模型的处理方法、装置、电子设备 | |
CN112464955B (zh) | 图像重合度确定方法、电子设备及计算机可读存储介质 | |
US20250069293A1 (en) | Generating typographic decorations | |
CN116433803A (zh) | 一种图片插入方法、装置、终端设备及存储介质 |
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 |