ttf,svg,woff,eot格式转换

作者: zengde 分类: 技术相关 发布时间: 2017-05-17 07:56

node.js
项目
https://github.com/fontello/ttf2eot
https://github.com/fontello/ttf2woff
https://github.com/qdsang/ttf2svg
https://github.com/fontello/svg2ttf

安装

npm install -g ttf2eot
npm install -g ttf2woff
npm install -g ttf2svg
npm install -g svg2ttf

使用

ttf2svg fontello.ttf fontello.svg
svg2ttf fontello.svg fontello.ttf
ttf2woff fontello.ttf fontello.woff
ttf2eot fontello.ttf fontello.eot

Java

batik项目

java -jar batik-1.9/batik-ttf2svg-1.9.jar fontname.ttf -l 0 -h 65535 -o fontname/fontname.svg //所有
java -jar batik-1.9/batik-ttf2svg-1.9.jar fontname.ttf -l 19968 -h 40870 -o fontname/fontname-hanzi.svg //汉字
java -jar batik-1.9/batik-ttf2svg-1.9.jar fontname.ttf -l 32 -h 165 -o fontname/fontname-shuzi.svg //数字

提取文件中的中文,并生成该部分文字的字体

function utf8_to_unicode2( $str ) {
	return str_replace(['\\','"'],['$',''],json_encode($str));
}

$fontname='fontname';//字体名称
$files=glob('files/*.*');
$font='’‘“”、:;!¥…()【】?,。《》';//标点符号
foreach($files as $file){
	$str=file_get_contents($file);
	preg_match_all('/[\x{4e00}-\x{9fa5}]/u',$str,$matches);
	$font.=implode('',$matches[0]);
}	
file_put_contents('hanzi.txt',$font);

$fontcode=utf8_to_unicode2 ($font);
$fontcodes=explode('$u',$fontcode);
$fontcodes=array_flip ($fontcodes);


$svg=file_get_contents("$fontname/$fontname.svg");
$svgfilter=file_get_contents("$fontname/$fontname-shuzi.svg");
$svgfilter=str_replace(["</font>\r\n","</defs>\r\n","</svg>\r\n"],'',$svgfilter);
$svgfilter=trim($svgfilter);
foreach($fontcodes as $code=>$v){
	if(preg_match('/]+>/',$svg,$matches)){
		$svgfilter.=$matches[0]."\r\n";
	}
}
$svgfilter.='</font>
</defs>
</svg>';
file_put_contents("$fontname/$fontname-filter.svg",$svgfilter);