CentOS7.2系统下使用node-fontnik将tff字体转pbf字体
来源:互联网 发布:windows镜像下载网站 编辑:程序博客网 时间:2024/06/03 19:45
由于Mapbox GL JS使用的SDF的方式绘制字体,即需要把普通的ttf格式转换成pbf字体格式。Mapbox团队开源了一个工具,将普通的ttf和otf字体转换成Mapbox GL渲染需要的字体的工具:node-fontnik。
node-fontnik简介(https://github.com/mapbox/node-fontnik/):
node-fontnik 是mapbox开源的将字体转换为 SDFs (signed distance fields) 格式的工具. SDFs使用protobuf定义。
node-fontnik是基于nodejs开发的,因此必须要安装node , node.js版本最好为 v6.x ,其他版本安装时可能会出错。
下图是node-fontnik官网上给的安装要求:
安装环境配置
由于node-fontnik要求的是OS X系统或者是Linux系统,因为需要在我们常用的Windows系统上安装虚拟机,用以安装这两者中其一的系统。常用VMware来安装配置虚拟机。
CentOS7.2下载链接:http://www.xitongzhijia.net/linux/201603/69275.htmlVMware软件中安装虚拟机教程链接:http://www.linuxidc.com/Linux/2014-10/108013.htmlLinux系统中安装nodejs:
安装之前:
在编译我们的代码之前,需要在CentOS机器上安装一些软件包,这样可以我们编译。所以在你打开的的终端中,输入以下内容。
sudo yum install gcc gcc-c++
等待这些软件包的安装和运行从源码安装Node.js
首先我们要从源码安装Node.js。在你的CentOS机器上打开一个新的终端标签并运行以下命令 用来下载需要使用的安装文件。(笔者以6.3.0为例)从nodejs官网上下载软件包
wget http://nodejs.org/dist/v6.3.0/node-v6.3.0.tar.gz然后提取tar文件
tar xvf node-v6.3.0.tar.gz更改工作目录节点cd node-v6.3.0用以下命令来配置和编译。
./configure
make以上会需要一些时间来完成,别担心因为编译将需要一段时间。然后使用下面的命令来在你的系统上安装Node.js。
sudo make install
安装完成之后,你就可以开始使用Node.js了。并为确保安装的版本正确,你可以使用以下命令检查。
node --version
当运行上述命令时,我得到以下信息。
v6.3.0安装Python2.7
配置环境中其实还要求安装Python2.7版本在笔者所使用的CentOS7.2中自带了Python2.7.5版本可以输入一下命令查看自己系统中Python的版本python --version在笔者的系统中,我得到一下信息。v2.7.5笔者在这儿提醒一点,如果是自己安装Python,记着配置环境变量。安装Mapbox GL
命令行中输入npm install --save mapbox-gl等待安装即可使用node-fontnik转换字体!
打开终端输入以下命令,转换工作目录cd node-fontnik运行以下命令npm install等待安装完成,即可开始转换工作首先,把要转换的字体放入node-fontnik文件夹下fonts的一个文件中。如下图然后写一个test.js文件在文件夹fontnik里内容如下(来自猿基地):var fontnik = require('.'); var fs = require('fs'); var path = require('path'); var convert = function(fileName, outputDir) { var font = fs.readFileSync(path.resolve(__dirname + "/" + fileName)); output2pbf(font, 0, 255, outputDir); } function output2pbf(font, start, end, outputDir) { if (start > 65535) { console.log("done!"); return; } fontnik.range({font: font, start: start, end: end}, function(err, res) { var outputFilePath = path.resolve(__dirname + "/" + outputDir + start + "-" + end + ".pbf"); fs.writeFile(outputFilePath, res, function(err){ if(err) { console.error(err); } else { output2pbf(font, end+1, end+1+255, outputDir); } }); }); } convert("./fonts/FZZHJ/.TTF", "./zt/FZZHJ/");convert("./fonts/zt/FZHCJ.ttf", "./zt/FZHCJ/");convert("./fonts/zt/HYXLSJ.ttf", "./zt/HYXLSJ/"); convert("./fonts/zt/HYZSF.ttf", "./zt/HYZSF/"); convert("./fonts/zt/arial unicode ms.ttf", "./zt/arial unicode ms/"); convert("./fonts/zt/times.ttf", "./zt/times/");代码运行结果,看到done后即可去相应文件夹下查看输出结果输出结果大功告成!test.js代码中需要注意两个问题:1.所有输入输出的文件夹必须提前自己创建;2.注意区分TTF和ttf的大小写问题,依照输入文件来写。
阅读全文
0 0
- CentOS7.2系统下使用node-fontnik将tff字体转pbf字体
- tff字体裁剪方案总结
- 使用LOGFONT修改windows sdk下字体为系统字体
- windows gdi+ 简单加载自定义字体 .tff库
- Unity使用系统字体
- XeCJK 使用系统字体
- iOS8下,如何将UIButton的字体颜色设置成系统自带的字体颜色?
- 2dx下,可以使用的字体
- 改变ubuntu下系统字体
- 关于TeXLive在Windows下无法使用系统字体解决方案
- 关于TeXLive在Windows下无法使用系统字体解决方案
- Linux下使用中文、字体
- Ubuntu下使用Monaco字体
- linux下使用windows字体
- Linux下使用Fixedsys字体
- centos下使用window字体
- 系统字体
- java不添加本地字体的情况下使用字体
- 装饰类PrintStream实例浅析
- 图像处理之------匹配
- linux压缩命令学习小结
- Spring整合Quartz2.1.1(执行中,得到application上下文,执行bean方法)
- Hive(十七)--排序
- CentOS7.2系统下使用node-fontnik将tff字体转pbf字体
- 隐藏UITableView的滚动条以及修改滚动条的颜色
- StringBoot整合Shiro
- 程序员必须掌握的8种排序算法(八):基数排序
- Java锁的种类和区别
- SpringBoot整合Quartz-动态读取任务执行(2.2.1)
- SIM上运营商SPN(Service Provider Name)的读取
- Springboot系列文章
- 熵的通俗理解