终于成功地做了几个字体,发现zhuqin兄的脚本不太完善,用脚本做了几个都有点问题,改了几下才做成功
主要是那个TTFName要一并改过来
另外就是,最好是把中文(大陆)的所有相关信息删掉,不过我找不到对应的编号
不过一般是由英文字体DejaVu作为基底,所以没有中文(大陆)的条目,那这个脚本就可以正常使用了
下面是DejaVu + YaHei的制作脚本
代码: 全选
# 字体合并脚本 mod 1.0
# modify by fanhe <[email protected]>
# 原作者
# zhuqin <[email protected]>
# 请先安装好fontforge,并将所需合并的两个字体放在本脚本的同一目录下。
# 然后按需要修改本脚本的各项参数,如字体名等。
# 最后运行 fontforge -script merge.pe
# 脚本的修改请参照 http://fontforge.sourceforge.net/scripting.html
##### DejaVuSansYaHei
### 常规
# 非中文字体,如英文等。
Open("DejaVuSans.ttf")
SelectAll()
#ScaleToEm(2048)
#请先备份字体文件
MergeFonts("msyh.ttf")
### 设置
# 字体名称,分别为字体名、字族名、昵称、粗细、版权、版本
SetFontNames("DejaVuSansYaHei", "DejaVu Sans YaHei", "DejaVu Sans YaHei", "Book", "Copyleft 2010", "1.00")
# 英文(美国),版权信息
SetTTFName(0x409, 0, "Copyleft 2010")
# 英文(美国),字体族名字
SetTTFName(0x409, 1, "DejaVu Sans YaHei")
# 英文(美国),样式(子族)名字
SetTTFName(0x409, 2, "Regular")
# 英文(美国),唯一标识(ID)
SetTTFName(0x409, 3, "DejaVu Sans YaHei")
# 英文(美国),字体全称
SetTTFName(0x409, 4, "DejaVu Sans YaHei")
# 英文(美国),版本
SetTTFName(0x409, 5, "Version 1.00")
# 英文(美国),首选族
SetTTFName(0x409, 16, "")
# 英文(美国),首选样式(子族)
SetTTFName(0x409, 17, "")
Generate("DejaVuSansYaHei.ttf")
Close()
### 粗体
# 非中文字体,如英文等。
Open("DejaVuSans-Bold.ttf")
SelectAll()
#请备份字体文件
MergeFonts("msyhbd.ttf")
### 设置
# 字体名称,分别为字体名、字族名、昵称、粗细、版权、版本
SetFontNames("DejaVuSansYaHei-Bold", "DejaVu Sans YaHei", "DejaVu Sans YaHei Bold", "Bold", "Copyleft 2010", "1.00")
# 英文(美国),版权信息
SetTTFName(0x409, 0, "Copyleft 2010")
# 英文(美国),字体族名字
SetTTFName(0x409, 1, "DejaVu Sans YaHei")
# 英文(美国),样式(子族)名字
SetTTFName(0x409, 2, "Bold")
# 英文(美国),唯一标识(ID)
SetTTFName(0x409, 3, "DejaVu Sans YaHei Bold")
# 英文(美国),字体全称
SetTTFName(0x409, 4, "DejaVu Sans YaHei Bold")
# 英文(美国),版本
SetTTFName(0x409, 5, "Version 1.00")
# 英文(美国),首选族
SetTTFName(0x409, 16, "")
# 英文(美国),首选样式(子族)
SetTTFName(0x409, 17, "")
Generate("DejaVuSansYaHei-Bold.ttf")
Close()