知识屋:更实用的电脑技术知识网站
所在位置:首页 > 编程技术 > PHP编程

矢量字库的剪裁

发布时间:2015-05-27 19:24:42作者:知识屋

    通常一个矢量汉字字库接近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 可是程序员用的十大字体之一喔。
 
 
 
 
 
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜