Home > php教程 > php手册 > body text

矢量字库的剪裁

WBOY
Release: 2016-06-21 08:48:53
Original
1408 people have browsed it

    通常一个矢量汉字字库接近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();  
Copy after login

这里要特别注意的是 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()   
Copy after login

 

 

 

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

 

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

 

 

 

 

 

 



Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!