-
要制作“雅黑宋体”,必不可少的“原材料”就是原版的宋体(simsun.ttc)和原版的微软雅黑(msyh.ttf),因为这两个字体的差异太大,要强扭在一起,需要进行前期处理。为了尽可能提高字体兼容性,建议使用原版的宋体作为模板,保持原版宋体的所有字符和映射关系;而为了达到微软雅黑的效果,需要对原版宋体的内部信息进行改进。
1. 字体名称预处理
使用Windows 7中的simsun.ttc 5.03原版,用breakttc处理后,留下FONT00.TTF,采用FCP将字体名称改为“宋体A”,文件名:ssa.ttf,之所以改名,是为了测试的方便,不用在“半成品”阶段就去替换原始的宋体进行测试。
2. 字体模板初始化
1) 打开原始宋体
打开时不载入点阵
2) 重新调整字符顺序
Fontforge会自行调整字符的顺序,我们需要按照原始的字模顺序重新排列字符。
3) 处理字符个数
Fontforge生成字体时会在最前面添加一个多余字符,我们需要删除图中选择的字模。
4) 修改字体信息
为了使用原版雅黑的中文字符,在FF中将ssa的Em Size从256放大到2048,并去掉Has Vertical Metrics选框。
注:若不去掉Has Vertical Metrics,则FF生成的字体反而会有“竖向书写”问题,这个纠结了很久,一直百思不得其解,可能要FF的作者才能回答为什么会出来矛盾的结果。
5) 生成字体文件
生成TTF文件,注意Options对话框中的配置。
此时,FontForge对字体模板的调整基本完成,但由于FontForge生成的字体会改变字体固有的信息,我们需要借助FontCreator进行后期处理。
3. 字体模板后期处理
使用FCP同时打开ssa.ttf和SimSunA.ttf,可以看到,除了前面的4个空白字符,两个字体的字符排列xx一致,为了做到尽可能的“原汁原味”,还需要进一步调整。
1) 平台管理
在Format菜单中选择Platform Manager,弹出的对话框中选择第二项,删除之。
2) 修改字符属性
在{dy}个字符上按右键,打开属性对话框,如图,选择“Byte encoding table”
3) 处理字符映射
FF会自作主张地处理字符映射关系,我们需要使用FCP来进行恢复。在ssa.ttf上按CTRL+A选择全部字符,按CTRL+C复制。这个复制的过程可能会相当漫长,取决于你的CPU和内存,电脑配置不高的话,你可以出去溜达一会儿,我的建议是:打开Windows任务管理器,观察CPU使用率,当降到正常(10%以下)水平时,表示已经复制完成。
全选SimSunA的所有字符,使用CTRL+E进行粘贴,注意弹出对话框的设置。
4) 处理“前导”字符
复制原始ssa.ttf的前面4个字符,使用CTRL+E进行粘贴,注意弹出对话框的选项。
5) 字体属性修正
将字体配置信息进行修正,尽量做到与原版宋体一致。因为之后还会用到FF修改,此时改的信息之后会要重复修改,所以这一步可以简单的将图中的数字改成1024,保存退出。
4. 字体模板测试
此时的SimSunA.ttf就是我们进行后续工作的模板,它具备了嵌入微软雅黑字符需要的基本要素,为了验证这个模板的正确性(主要是竖向书写),我们可以使用一些文字和特殊字符进行简单的测试。记得保存测试文字,对于以后的步骤或者以后的字体修改很有帮助的。
这里是我的测试文字,Word文档,随便写的,上面是原始的宋体,下面是我们的模板“宋体A”:
之所以宋体A没有原始的宋体锐利,是因为宋体A没有嵌入点阵字符。试着改变文字方向,结果是这样:
xx正常,表明我们的这个字体模板没有造成纠结的“竖向书写”问题。
注:一般只使用FC处理的字体,只要不在竖向书写索引的字符位置之前插入自己扩展的字符,就不会导致竖向书写问题。所以,如果要在原版的字体基础上扩展自己的符号或文字,{zh0}在字体的{zh1}面添加。