博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用sfntly的sfnttool.jar提取中文字体
阅读量:5080 次
发布时间:2019-06-12

本文共 2943 字,大约阅读时间需要 9 分钟。

中提到了sfntly(具体介绍可以看:),利用其中sfnttool.jar就可以提取只包含指定字符的字体,如果想在页面中通过@font-face嵌入中文字体的话是一个不错的选择。

sfnttool.jar的选项如下:

java -jar sfnttool.jar -hSubset [-?|-h|-help] [-b] [-s string] fontfile outfilePrototype font subsetter        -?,-help        print this help information        -s,-string       String to subset        -b,-bench        Benchmark (run 10000 iterations)        -h,-hints        Strip hints        -w,-woff         Output WOFF format        -e,-eot  Output EOT format        -x,-mtx  Enable Microtype Express compression for EOT format

拿“”做个测试:

java -jar sfnttool.jar  -s '张' SentyChalk.ttf zhang_SentyChalk.ttf

用FontCreator打开生成的字体,可以发现字体只有一个“张”对应的图形。

在用ant编译sfntly目前最新版本代码(r237)的时候遇到代码报错,一直编译不过去,最后将利用Eclipse强大的错误修改功能就将错误改好了编译通过,如果大家不想修改代码,可以checkout r228版本的代码就可以顺利build了。rivision在tortoisesvn设置如下图中红框所示:

 

r237的build错误:

Buildfile: E:\php\tool\sfntly\java\build.xmlcompile:    [mkdir] Created dir: E:\php\tool\sfntly\java\build\classes    [javac] Compiling 201 source files to E:\php\tool\sfntly\java\build\classes    [javac] E:\php\tool\sfntly\java\src\com\google\typography\font\sfntly\table\opentype\component\VisibleBuilder.java:8: 错误: Builder可以在SubTable中访问protected    [javac]   class VisibleBuilder
extends SubTable.Builder
{ [javac] ^ [javac] E:\php\tool\sfntly\java\src\com\google\typography\font\sfntly\sample\sfview\RuleDump.java:26: 错误: 无法将类 Rule中的方法 charGlyphClosure应用到给定类型; [javac] GlyphGroup ruleClosure = Rule.charGlyphClosure(txt, font); [javac] ^ [javac] 需要: Font,String [javac] 找到: String,Font [javac] 原因: 无法通过方法调用转换将实际参数String转换为Font [javac] E:\php\tool\sfntly\java\src\com\google\typography\font\sfntly\table\opentype\component\VisibleBuilder.java:20: 错误: 方法不会覆盖或实现超类型的方法 [javac] @Override [javac] ^ [javac] E:\php\tool\sfntly\java\src\com\google\typography\font\sfntly\table\opentype\component\VisibleBuilder.java:23: 错误: 方法不会覆盖或实现超类型的方法 [javac] @Override [javac] ^ [javac] E:\php\tool\sfntly\java\src\com\google\typography\font\sfntly\table\opentype\component\VisibleBuilder.java:26: 错误: 方法不会覆盖或实现超类型的方法 [javac] @Override [javac] ^ [javac] E:\php\tool\sfntly\java\src\com\google\typography\font\sfntly\table\opentype\component\VisibleBuilder.java:29: 错误: 方法不会覆盖或实现超类型的方法 [javac] @Override [javac] ^ [javac] 6 个错误BUILD FAILEDE:\php\tool\sfntly\java\common.xml:21: Compile failed; see the compiler error output for details.

  

build相关(熟悉ant的情飘过)

环境:

1 jdk,1.6/1.7版本都可以,怎么安装和配置环境变量请自行搜索

2 ant,java的build工具,在这里下载http://ant.apache.org/bindownload.cgi,下载后解压,然后将ant\bin目录路径加入到环境变量的path中,这样每次在cmd中直接使用ant而不用写全路径,方便使用

build:

在cmd中切换到sfntly代码的java目录,然后输入ant就开始build了。build完成后,sfnttool.jar在项目目录的java\dist\tools\sfnttool文件夹下 。

 

参考:“中文字体其实也可以用在网页上的” 

转载于:https://www.cnblogs.com/xingee/p/3520555.html

你可能感兴趣的文章
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>