雅黑宋体制作之一:字体模板处理- 碧海潮声技术社区- 博客大巴
  •   要制作“雅黑宋体”,必不可少的“原材料”就是原版的宋体(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}面添加。





郑重声明:资讯 【雅黑宋体制作之一:字体模板处理- 碧海潮声技术社区- 博客大巴】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——