Fontmin 是一个纯 JavaScript 实现的字体子集化方案。

提供了 ttf 子集化,eot/woff/svg 格式转换,css 生成 等功能,助推 webfont 发展,提升网页文字体验。

See the Pen Fontmin Example by Firede (@firede) on CodePen.

Why Fontmin

浏览器的季风已撩拨起 webfont 的热浪,中文字体却依旧寂寞如雪。

与西文字体不同,由于字符集过大,中文字体无法享受 webfont 带来的便利。

为了让中文字体也乘上这道风,我们需要对其进行 min:

子集化:提取字体中的部分字型,最小化打包字体

webfont 格式化:利用 @font-face,把自定义字体嵌入到网页中,支持 ttf、woff、eot、svg 等格式

已有工具 sfnttool.jar (Java),Fontforge (Python),Font Optimizer (Perl),为什么还要造轮子呢?

Any application that can be written in JavaScript, will eventually be written in JavaScript.

-- Jeff Atwood

噗,开个玩笑。靠谱的说,是这样的:

专注,面向前端工程师,专注字体的 web 应用

工程化,自动化开发流程,告别刀耕火种的人肉操作

以上,Fontmin 提供了多种方式,带你玩转字体。

node 模块

npm 模块 fontmin,基于 stream 处理字体文件,简单高效,方便扩展。可以与 gulp 插件 自由搭配。

var Fontmin = require('fontmin');

var rename = require('gulp-rename');

var fontmin = new Fontmin()

.src('fonts/big.ttf')

.use(rename('small.ttf'));

提供细粒度 plugins,你可以自由定制专属的 webfont 压缩方案,比如:把字体转为 base64 嵌入到 css 中:

var Fontmin = require('fontmin');

var fontmin = new Fontmin()

.use(Fontmin.css({

base64: true // 开启 base64 嵌入,默认关闭

}));

输出 css:

@font-face {

font-family: "eduSong";

src: url("eduSong.eot"); /* IE9 */

src: url("eduSong.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */

url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAAKAIAAAwA....) format("truetype"), /* chrome、firefox、opera、Safari, Android,iOS 4.2+ */

url("eduSong.svg#eduSong") format("svg"); /* iOS 4.1- */

font-style: normal;

font-weight: normal;

}

为方便大家使用,提供一个最基本的 webfont 工作流 snippet:

var Fontmin = require('fontmin');

var srcPath = 'src/font/*.ttf'; // 字体源文件

var destPath = 'asset/font'; // 输出路径

var text = '我说你是人间的四月天;笑响点亮了四面风;轻灵在春的光艳中交舞着变。';

// 初始化

var fontmin = new Fontmin()

.src(srcPath) // 输入配置

.use(Fontmin.glyph({ // 字型提取插件

text: text // 所需文字

}))

.use(Fontmin.ttf2eot()) // eot 转换插件

.use(Fontmin.ttf2woff()) // woff 转换插件

.use(Fontmin.ttf2svg()) // svg 转换插件

.use(Fontmin.css()) // css 生成插件

.dest(destPath); // 输出配置

// 执行

fontmin.run(function (err, files, stream) {

if (err) { // 异常捕捉

console.error(err);

}

console.log('done'); // 成功

});

大家可以这个基础上,自由扩展,玩法多多。

命令行

极客范儿? 就是喜欢弹奏键盘这种飘逸的感觉~

全局安装 fontmin

npm install -g fontmin

客户端

懒得写代码? 直接把 ttf 拖进来,左侧输入需要文字,右侧实时看效果。点击生成,duang 一下,就搞定了~

可以在 这里 找到最新版本。

EOF

如果您觉得 Fontmin 还不错,请给个 star 呗 ヾ(◍°∇°◍)ノ゙

扫码关注w3ctech微信公众号

java中的topicFont_Fontmin 快速指南相关推荐

  1. gr java ch,Apache POI 快速指南.pdf

    Apache POI PPT - 快速指南 Apache POI PPT - 概述 很多时候,需要⼀个软件应⽤程序来⽣成Microsoft Office⽂件格式的报告. 有时,应 ⽤程序甚⾄希望接 M ...

  2. JAVA开发者的Golang快速指南

    Golang作为Docker.Kubernetes和OpenShift等一些酷辣新技术的首选编程语言,越来越受欢迎.尤其它们都是开源的,很多情况下,开源是非常有价值的.深入学习阅Golang等源代码库 ...

  3. java中gui_java GUI 快速入门

    java 中编写 GUI 有两中工具包,分别为 AWT.Swing. Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和方法. AWT 和 Swing 都能跨平台使用:AWT 会 ...

  4. java中beautyeye_BeautyEye简明开发者指南

    第一步:如何开始? 首先把beautyeye_lnf.jar文件作为lib放入你的项目并引用之. 目前,beautyeye_lnf.jar 文件位于all_in_one.zip包中的位置是:all_i ...

  5. openshift java_在OpenShift上部署Java应用程序的快速指南

    在本文中,我将向您展示如何在OpenShift(Minishift)上部署应用程序,将它们与其中暴露的其他服务连接起来,还是使用由OpenShift提供的其他一些有趣的部署功能.OpenShift构建 ...

  6. pip 删除安装包_Python中PIP的快速指南

    无论您是Python新手还是有经验的Python开发人员,不使用pip安装命令是不可能编写或开发Python应用程序的.在这篇文章中,我将对Pip进行详细介绍. Pip是Python Package ...

  7. react 快速上手开发_React中测试驱动开发的快速指南

    react 快速上手开发 by Michał Baranowski 通过MichałBaranowski React中测试驱动开发的快速指南 (A quick guide to test-driven ...

  8. 如何在Java中验证电话号码(正则表达式+ Google libphonenumber)

    关于如何在不同国家(例如美国,美国)使用Java验证电话号码的快速指南. 带有正则表达式和Google libphonenumber API的示例程序. 1.简介 在本教程中,我们将学习如何在java ...

  9. Java LinkedList – Java中的LinkedList

    Java LinkedList is an implementation of the List and Deque interfaces. It is one of the frequently u ...

最新文章

  1. (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  2. word2013 blog test
  3. PHP输出毫秒时间戳
  4. 【渝粤教育】国家开放大学2018年春季 建筑结构基础 参考试题
  5. B cannot be cast to java.sql.Blob
  6. 典型案例:TL的困局,自己忙不过来,团队没有结果
  7. java读取配置文件
  8. Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php
  9. 取代MS Project 的 开源工具 - OpenProj
  10. 读书笔记之《史记》读后感心得体会
  11. 运动轨迹 php,两种JS实现小球抛物线轨迹运动的方法
  12. 六轴UR机械臂正逆运动学求解_MATLAB代码(标准DH参数表)
  13. python列重命名
  14. 我的世界基岩JAVA附魔_我的世界1.2.5版本,基岩版的可以100级附魔吗,就是
  15. eclipse git reset文件
  16. android 相机编程,Android相机开发系列
  17. 5G LAN — 技术实现原理
  18. 五角星具有“胜利”的含义。被很多国家的军队作为军官(尤其是高级军官)的军衔标志使用。也常常运用在旗帜上。我们的国旗上就有五角星。请你也画一个五角星吧。
  19. 小兔兔系列语言故事5(之所谓的朋友5)
  20. linux根目录能删除吗,为什么Linux允许用户删除根目录?如果删了会怎样?

热门文章

  1. 力扣174. 地下城游戏
  2. SRS的2021,盐碱地里种西瓜的王婆
  3. 即构科技:解决行业痛点,以MSDN为基础构建全球实时音视频通信云
  4. 视频加速方案的最优解 - Xilinx硬件加速技术专场(深圳站)
  5. Netflix视频质量感知评价模型之路
  6. 让业务感知不到服务器的存在——基于弹性计算的无服务器化实践
  7. cmake使用示例与整理总结
  8. Google Mock启蒙篇 [2] (Google C++ Mocking Framework for Dummies 翻译)
  9. redis module模块简单使用
  10. 设置分区的三种方法coalesce、repartition、partitionBy