矢量字库的剪裁

             通常一个矢量汉字字库接近10MB, 太大,而我可能只需要显示某几个特定的汉字而已, 那怎么提取或者剪裁现成的字库呢?

我试过一个国人写的“字库剪裁工具”, 要点好几次鼠标,只支持系统字库,不甚方便。我也试图在font creator 4.1 找有没有类似的功能,可惜没找到。

下面介绍一种方法,使用font forge,用了之后才发现非常地强大,原来Unix传承下来的都是内敛的。

 

#fontforge.exe  -script font-select.pe simyou.ttf youyuan_asc.ttf
Open($1)
############
 
##ascii
SelectMore(0u0020, 0u0080);


############
SelectInvert();
DetachAndRemoveGlyphs();
Generate($2, "", 0x14)
Close();


 这里要特别注意的是 SelectMore(a,b,c,d) 表示选择[a,b], [c,d] 范围;SelectMore(a) 表示选择单个a;开始我弄错了走些弯路。

如果要处理一段中文, 可以先用iconv 转换为 ucs-2le, 再作为练习题8)转为0uxxxx 这样的输出。

 

         另外,如果我们想把中文字库的英文部分替换调,可以这样搞:

# font merge 
# e.g. replace font file $1 with good english font $2:
# fontforge.exe  -script font-merge.pe simyou.ttf SegoeWP.ttf merged.ttf

Open($1)
SelectAll()
ScaleToEm(1024)
Generate("temp.ttf", "", 0x14)
Close()


Open($2)
SelectAll()
ScaleToEm(1024)
 
MergeFonts("temp.ttf")
SetFontNames("FontName", "Font Family", "Full Name", "Style", "")
Generate($3, "", 0x14)
Close() 


 

       最后, 更高级的玩法是用fontforge 打开sfd文件: http://levien.com/type/myfonts/Inconsolata.sfd 

Inconsolata 可是程序员用的十大字体之一喔。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值