雨忆博客中提到了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\tool\sfntly\java\build.xml

compile:
[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中访问prote
cted
[javac] class VisibleBuilder<T extends SubTable> extends SubTable.Builder<
T> {
[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 FAILED
E:\php\tool\sfntly\java\common.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,下载后解压,然后将ant\bin目录路径加入到环境变量的path中,这样每次在cmd中直接使用ant而不用写全路径,方便使用

build:

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

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

利用sfntly的sfnttool.jar提取中文字体的更多相关文章

  1. PyOpenGL利用文泉驿正黑字体显示中文字体

    摘要:在NeHe的OpenGL教程第43课源代码基础上,调用文泉驿正黑字体实现中文字体的显示 在OpenGL中显示汉字一直是个麻烦的事情,很多中文书籍的文抄公乐此不疲地介绍各种方法及其在windows ...

  2. IText 中文字体解决方案 生成doc文档

    IText生成doc文档需要三个包:iTextAsian.jar,iText-rtf-2.1.4.jar,iText-2.1.4.jar 亲测无误,代码如下: import com.lowagie.t ...

  3. CSS3 关于@font-face引用中文字体解决办法

    有两种方法,一种简单的,一种比较复杂,都可以实现(注:这里的方法只适合使用少量的中文字体,如果使用的字量过大,请使用其他方法解决) 第一种:简单的 1.下载需要的中文字体的.ttf格式,这个都不难找到 ...

  4. deepin 下安装goland中文字体显示全是方块

    下载中文字体 apt-get install ttf-arphic-uming xfonts-intl-chinese 替换goland的汉化包,两个jar包.https://blog.csdn.ne ...

  5. itextpdf使用中文字体的三种方式

    使用itextpdf时,默认的字体没有中文,总结了一下使用中文字体的方式. 1.使用windows系统下的字体,该种方式的具体操作可以看另一篇博客:https://www.cnblogs.com/wh ...

  6. linux安装中文字体

    一.查看系统字体 在开始安装之前,我们先查看系统中已经安装的字体. 要查看系统中已经安装的字体,我们可以使用fc-list命令进行查看.如果系统中没有该命令的话,我们需要先安装相关的软件包. 在cen ...

  7. Debian 8.3 中文字体安装

    有了这个字体,对于日常工作和生活而言已经非常足够了.如果你还需要更多中文字体的话,推荐可以安装“文泉驿正黑”,“文泉驿点阵宋体”等.文泉驿的安装包已经进入了 Debian/Ubuntu,直接安装 tt ...

  8. 利用private font改变PDF文件的字体

    利用private font改变PDF文件的字体 前几天做项目,需要使用未安装的字体来改变PDF的文件.以前并没有实现过类似的功能,幸运的是我在网上找到了类似的教程,并成功实现了这个功能. 下面就跟大 ...

  9. CentOS 7 安装字体库 & 中文字体

    前言 报表中发现有中文乱码和中文字体不整齐(重叠)的情况,首先考虑的就是操作系统是否有中文字体,在CentOS 7中发现输入命令查看字体列表是提示命令无效:  如上图可以看出,不仅没有中文字体,连字体 ...

随机推荐

  1. mac上的键盘生活——快捷键列表

      主界面 command + tab 切换程序 command + `   在程序内切换界面 command + w     关闭界面 command + q     关闭程序   文本编辑 Com ...

  2. Reachability几个常用方法

    http://oncerios.diandian.com/post/2013-06-28/40050041969

  3. QUEUE——队列(procedure)

    #include <stdio.h> #include <stdlib.h> #include "queue.h" int main() {  int i; ...

  4. maven 私服 配置 转

    3 . Nexus预置的仓库 点击左侧 Repositories 链接,查看 Nexus 内置的仓库: Nexus 的仓库分为这么几类: hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件( ...

  5. linux —— 搭建网页项目笔记

    导读 本文笔记之用,记录在我在linux下搭建与开发网站时遇到的一些碎片知识,以备将来之需. 目录 数据库相关 1.数据库相关 1) ubuntu 16.04 LTS 下mysql 的安装与使用  安 ...

  6. JBoss 系列十一:JBoss Cluster Framework Demo 介绍

    内容概要 JBoss Cluster Framework Demo包括JGruops.JBossCache.Infinispan,我们在随后的系列中会使用和运行这些示例来说明JGroups.JBoss ...

  7. Linux kernel驱动相关抽象概念及其实现 之“linux设备模型kobject,kset,ktype”

    kobject,kset,ktype三个很重要的概念贯穿Linux内核驱动架构,特转载一篇博文: (转载自http://blog.csdn.net/gdt_a20/article/details/64 ...

  8. centos6.5 安装

    导系统,进入rescue模式,在提示符下输入grub,进入grub提示符.(不管用什么方法,能进入grub就行)root(hd?,?) //前一个问号是你第几块硬盘,后一个是LINUX所在的第几个分区 ...

  9. ICMP协议

    1. ICMP简介: ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制报文协议,协议号为1,网络层协议. 它是TCP/IP协议族的一个子协议,用于在IP主机 ...

  10. Java基础知识强化之集合框架笔记43:Set集合之TreeSet存储Integer类型的元素并遍历

    1. TreeSet类概述: • 能够对元素按照某种规则进行排序. • 或者根据创建set时提供的Comparator进行排序 • 具体取决于使用的构造方法 2. 代码示例: package cn.i ...