zoukankan      html  css  js  c++  java
  • 利用sfntly的sfnttool.jar提取中文字体

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

    sfnttool.jar的选项如下:

    java -jar sfnttool.jar -h
    Subset [-?|-h|-help] [-b] [-s string] fontfile outfile
    Prototype 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
    

    拿“新蒂黑板报体 Senty Chalk”做个测试:

    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	oolsfntlyjavauild.xml
    
    compile:
        [mkdir] Created dir: E:php	oolsfntlyjavauildclasses
        [javac] Compiling 201 source files to E:php	oolsfntlyjavauildclasses
        [javac] E:php	oolsfntlyjavasrccomgoogle	ypographyfontsfntly	able
    opentypecomponentVisibleBuilder.java:8: 错误: Builder可以在SubTable中访问prote
    cted
        [javac]   class VisibleBuilder<T extends SubTable> extends SubTable.Builder<
    T> {
        [javac]                                                            ^
        [javac] E:php	oolsfntlyjavasrccomgoogle	ypographyfontsfntlysample
    sfviewRuleDump.java:26: 错误: 无法将类 Rule中的方法 charGlyphClosure应用到给定
    类型;
        [javac]     GlyphGroup ruleClosure = Rule.charGlyphClosure(txt, font);
        [javac]                                  ^
        [javac]   需要: Font,String
        [javac]   找到: String,Font
        [javac]   原因: 无法通过方法调用转换将实际参数String转换为Font
        [javac] E:php	oolsfntlyjavasrccomgoogle	ypographyfontsfntly	able
    opentypecomponentVisibleBuilder.java:20: 错误: 方法不会覆盖或实现超类型的方法
        [javac]     @Override
        [javac]     ^
        [javac] E:php	oolsfntlyjavasrccomgoogle	ypographyfontsfntly	able
    opentypecomponentVisibleBuilder.java:23: 错误: 方法不会覆盖或实现超类型的方法
        [javac]     @Override
        [javac]     ^
        [javac] E:php	oolsfntlyjavasrccomgoogle	ypographyfontsfntly	able
    opentypecomponentVisibleBuilder.java:26: 错误: 方法不会覆盖或实现超类型的方法
        [javac]     @Override
        [javac]     ^
        [javac] E:php	oolsfntlyjavasrccomgoogle	ypographyfontsfntly	able
    opentypecomponentVisibleBuilder.java:29: 错误: 方法不会覆盖或实现超类型的方法
        [javac]     @Override
        [javac]     ^
        [javac] 6 个错误
    
    BUILD FAILED
    E:php	oolsfntlyjavacommon.xml:21: Compile failed; see the compiler error ou
    tput for details.
    

      

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

    环境:

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

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

    build:

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

    参考:“中文字体其实也可以用在网页上的” http://hxgdzyuyi.github.io/blog/chinese-subset.html

  • 相关阅读:
    金蝶用户组权限语句
    金蝶物料更改保质期控制状态
    cisco+pppoe拨号配置教程
    FormFile上传文件代码(修改)
    试用django 和 rgraph 简单记录
    一闪而过的远程桌面
    用 python matplotlib 画图 简单记录
    去除UTL_FILE导致的ORA12012 ORA04068 ORA04063 ORA06508
    python mysqldb模块安装
    canvas绘制圆形
  • 原文地址:https://www.cnblogs.com/xingee/p/3520555.html
Copyright © 2011-2022 走看看