使用FontForge合并字体后有锯齿,再用ttfautohint进行优化

Author: aerph - Posted:1天前 - View:45

在各种软件中要找到对中文支持好又能同时对英文支持好的字体不太容易,有些软件可以设置多字体的Fallback回退机制的还好,如果没有这种机制的话,软件只能设置一种字体,那显示的效果就差很多了,为了解决这个问题,最好的方式就是自定义合并字体,这样就可以达到两者兼顾的效果。

要合并字体的话,可用的软件蛮多的,考虑到成本问题,还是选择免费开源的FontForge足够,此软件可设置选项足够多,功能也足够强大,不过介于这次我合并字体后发现新生成的字体会有锯齿,不得不再使用ttfautohint软件对新字体再优化一下,优化后的效果还算满意。

下面是我进行合并字体及优化字体的大概过程,整理出前后步骤,给需要的人一些参考。

一、去github搜索并下载FontForge,安装后界面默认显示为英文,如果想转换为中文,可以根据官方提供的文档进行汉化,不过得提醒如果汉化后界面显示乱码,必须得做以下两步才能让软件中文显示正常。

  1. 将FontForge软件安装目录中的FontForgeBuilds\share\fonts目录下的字体都下载安装一下,因为软件界面需要用到这些字体,软件安装好后字体同时都在目录中了,下面是目录中官方给出的说明文件,内容如下:

    Place fonts that you want FontForge to use for its user
    interface here. Common fonts to include would be:
    * DejaVu Sans/Serif + Sans Mono
    * Inconsolata
    * WenQuanYi / DroidSansFallbackFull (CJK fonts + a lot more)
    
    http://dejavu-fonts.org/wiki/Main_Page
    http://levien.com/type/myfonts/inconsolata.html
    https://sourceforge.net/projects/wqy/
    
    ======================================
    
    NOTE: With Cairo enabled by default, FontConfig is no longer
    used for the font backend, and the Windows font subsytem is
    used instead. However, fonts can still be loaded for
    FontForge to use in the case that such fonts don't
    exist on the user's system. 
    
    The specific fonts used must be updated in the FontForge
    resource file.
  2. 修改安装目录中的FontForgeBuilds\share\fontforge\pixmaps\resources文件中的第一行代码修改为
    fontforge.View.DefaultFont: 12pt Microsoft YaHei,system-ui,Deja Vu Sans,Calibri

加上Microsoft YaHei后,因雅黑是系统自带,若你用的WIN系统,让它成为第一显示的字体选项是最优解,此两步做完后,FontForge软件的中文界面基本不会乱码了。

二、将你要合并的字体都拷贝到英文命名的目录中,例如我要合并的字体是Verdana.ttfMsyh.ttc,并分别使用FontForge打开它们

三、打开菜单栏的“元素”->“字体信息”->“通用”->“全字大小”,看哪个字体大小数值大,将数值小的统一修改跟数值大的一样的数值,刚好我要合并的这两个字体大小一样,都是2048,那我就可以忽略此步,不需修改了

四、继续打开菜单栏的“元素”->“字体信息”->“OS/2”->“特征”中的所有选项都改成“任何”,改完后直接将两种字体重命名并保存到本地同目录下

五、用FontForge打开修改后的英文字体Verdana_1.ttf为基准进行合并修改后的中文字体Msyh_1.ttc

注意:你必须要清楚知道自己的需求,比如我是要保留Verdana_1.ttf中的英文字体和保留Msyh_1.ttc的中文字体,所有合并字体时必须Verdana_1.ttf在前,Msyh_1.ttc字体在后,要不然顺序反了,合并的中英文字体依然是Msyh_1.ttc中的。

六、菜单栏打开“元素”->“字体信息”->“TTF名称”,将(字族名/唯一标识ID/全称)改成你自定义的字体名称,不改会直接影响你系统中已存在的原字体文件,比如我直接改成Newdana.ttf

七、按自己的需求加载Verdana_1.ttf字体后,打开菜单栏的“元素”->“合并”加载刚修改后的Msyh_1.ttc,再继续打开菜单栏“文件”->“生成字体”,在弹出窗口的“选项”中,点击进入勾选(PS字形名称/Apple/OpenType)三个选项保存生成的新字体。

保存后的新字体Newdana.ttf点击安装到系统就可以直接使用了,如果你生成后的字体跟我一样有锯齿,那就再用ttfautohint软件优化

八、去ttfautohint下载windows版本,解压只有两个执行程序,将两个文件放如新生成的字体目录下,使用cmd进入到新生成字体的目录下,然后在cmd中将下面代码复制到命令行中执行即可。

ttfautohint.exe --windows-compatibility --ignore-restrictions --no-info --fallback-stem-width=100 --hinting-limit=200 Newdana.ttf Newdana_hits.ttf

注意Newdana.ttfNewdana_hits.ttf是我新生成的字体名,你生成的是什么字体名,此处就改成你生成的字体名。

九、等待片刻后,同目录下会直接生成一个Newdana_hits.ttf字体,这就是优化后的字体,你把之前未优化的删除,再重新安装优化的字体即可使用。

ttfautohint还有很多参数没用到,感兴趣的可以多研究研究。

0 人点赞  ∙  0 人收藏  
加入收藏 点赞 我要评论

目前共有 1 条回复

haibing
- haibing - 1天前

正好用得着,13.gif,FontForge软件就是容易闪退,不清楚是软件问题还是系统问题,先前有折腾过,就是闪退好几次把我劝退了,合着这两天再试试看