首页 > 其他分享 >生成 pbf 字体切片

生成 pbf 字体切片

时间:2024-03-02 12:11:53浏览次数:22  
标签:cargo rsproxy -- 切片 pbf 字体 martin fontnik

使用arcgis-js-apimapboxgl-js开发时,为了在内网环境使用字体库或使用我们喜欢的字体,需要将字体发布为内网pbf格式的服务。

方法一:使用 fontnik 工具

mapboxgl-js开发本地化实践中,提到在linux中使用fontnik工具(https://github.com/mapbox/node-fontnik)可以把ttf字体转换为pbf,且fontnik仅支持linux系统。

安装node-fontnik的本身很顺畅,但过程中需要从亚马逊s3下载相关二进制包,会被墙阻隔,因此在普通环境下不容易安装成功。

国内有大神将 node-fontnik 的环境封装为一个 docker 镜像,并发布到国内的阿里云了,使用方式如下:

// 拉取
docker pull registry.cn-beijing.aliyuncs.com/kzfile/node-fontnik

// 通过映射路径的方式调用,
// 默认会搜索字体所在路径下的全部.ttc后缀名文件,结果存方在 输出路径/{字体名}文件夹
docker run -v {字体所在路径}:/input -v {输出路径}:/output registry.cn-beijing.aliyuncs.com/kzfile/node-fontnik

// 若使用ttf格式的字体,需要追加参数
docker run -v {字体所在路径}:/input -v {输出路径}:/output -e EXTENSION=.ttf registry.cn-beijing.aliyuncs.com/kzfile/node-fontnik

方法二:使用 martin 构建字体切片服务

martin 是由 maplibre 开源的高性能矢量切片服务器( https://github.com/maplibre/martin ),它基于Rust进行开发,官方宣传其性能快到疯狂。martin 简单稳定的安装方式是在linux基于cargo(Rust的包管理器)安装,过程如下:

// 安装cargo包
apt-get update
apt-get install cargo

// cargo完成安装后,为了在加速其国内下载速度,我们可以使用由字节跳动维护的镜像源( https://rsproxy.cn/ ):
mkdir ~/.cargo
vim ~/.cargo/config

// 在vim中粘贴下列内容后保存退出
[source.crates-io]
replace-with = 'rsproxy'
[source.rsproxy]
registry = "https://rsproxy.cn/crates.io-index"
[source.rsproxy-sparse]
registry = "sparse+https://rsproxy.cn/index/"
[registries.rsproxy]
index = "https://rsproxy.cn/crates.io-index"
[net]
git-fetch-with-cli = true

// 安装必要依赖以防martin安装失败
apt-get install pkg-config
apt-get install libssl-dev
cargo install martin

如果已经安装了martin可以进行覆盖更新,譬如我之前的martin版本为0.8.7,执行下面代码后,更新到0.11.0版本

cargo install martin --force

本地准备好 otf/ttf/ttc等常见格式字体文件,执行下面代码,发布pbf字体服务:

/root/.cargo/bin/martin --font /home/lqq/fonts // 发布 --font 后面路径的下所有字体文件
/root/.cargo/bin/martin --font /home/lqq/fonts --font /home/lqq2/fonts // 发布多个 --font 路径下的字体文件 
/root/.cargo/bin/martin --font /home/lqq/fonts/Abril Fatface Regular.ttf  // 发布单个字体文件

参考博客:
在国内更方便的使用node-fontnik
ArcGIS API For JavaScript Font字体简介下载及本地部署
Mapbox样式字体本地化方法
基于martin为在线地图构建字体切片服务

标签:cargo,rsproxy,--,切片,pbf,字体,martin,fontnik
From: https://www.cnblogs.com/lqqgis/p/18048426

相关文章

  • 列表切片
    句法结构 slice=list[start:stop:step]list是你要进行切片的列表。start是切片的起始索引,如果省略,则从列表的开头开始。stop是切片的结束索引,但不包括该索引对应的元素。如果省略,则切片会一直到列表的末尾。step是切片的步长,即每次跳过多少个元素。如果省略,则默认为1......
  • 修改linux终端命令行各字体颜色
    1.了解PS1PS1是Linux终端用户的一个环境变量,用来定义命令行提示符的参数。在终端输入命令: echo$PS1     PS1的常用参数以及含义:\d:代表日期,格式为weekdaymonthdate,例如:"MonAug1"\H:完整的主机名称\h:仅取主机名中的第一个名字\t:......
  • aardio ide 字体 及设置
    需求aardioide只支持一个字体,英文字体肯定是Fira但是中文字体不好,所以只好将两个字体合并上使用。有教程。但是我发现已经有合并好的,就拿来使用吧放到fonts目录里面代码importide;ide.setConfig("editor_font_name","FiraFZHMedium");资料教程完美字体合并教程/中......
  • cesium加载地形,倾斜摄影,wmts切片服务
    一、wmts切片渲染样例constmap=newHGZH3D.Map('map')//可加载ArcGISMapServer服务的网址,如下为部分服务路径:// 影像图层-https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer// 物理地图-https://services.arcgisonline.com/arcgis/......
  • golang数组&切片&map
    数组数组声明funcmain(){ /*语法一*///数组名字[数组长度]数组类型 //声明一个数组长度为3类型是int会初始化为int类型的零值,默认值是[000] //声明数组的时候指定长度是一个常量,数组的不可改变,超出长度会报错 vararr[3]int //数组赋值 arr[0]=1......
  • 如何通过矢量数据生成矢量瓦片(矢量切片)?
    ​   通过以下方法可以将矢量数据生成矢量瓦片。 方法/步骤下载三维地图浏览器http://www.geosaas.com/download/map3dbrowser.exe,安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“3、点击“矢量瓦片”下拉菜单,然后点击......
  • echarts自适应问题,echarts中怎么改变字体单位实现自适应
    参考文档:https://blog.csdn.net/MFWSCQ/article/details/102522944最初想着怎么给echarts设置vw单位或者rem,echart中怎么把legend的单位设置为vw或者rem来使表格自适应,后面发现行不通。项目中使用px-to-vw包,将所有px转为对应的vw,所有可以根据相同比例进行缩放,做到自适应效果。但......
  • Go语言指南练习:切片
    题目:实现Pic。它应当返回一个长度为dy的切片,其中每个元素是一个长度为dx,元素类型为uint8的切片。当你运行此程序时,它会将每个整数解释为灰度值(好吧,其实是蓝度值)并显示它所对应的图像。图像的选择由你来定。几个有趣的函数包括(x+y)/2,x*y,x^y,x*log(y)和x%(y+1)。(提示:需要......
  • [CSS] 字体渐变色
    实现思路:盒子设置为inline-block,这样盒子的大小就由文本量决定;盒子背景图片使用linear-gradient设置渐变色;设置background-clip:text;使用文字区域截取背景;此时文字覆盖在背景上方,只能看到原本纯色的文字,设置文本颜色为透明:color:transparent;,就能看到底部的渐变色的文字。......
  • [CSS] 字体渐变色
    实现思路:盒子设置为inline-block,这样盒子的大小就由文本量决定;盒子背景图片使用linear-gradient设置渐变色;设置background-clip:text;使用文字区域截取背景;此时文字覆盖在背景上方,只能看到原本纯色的文字,设置文本颜色为透明:color:transparent;,就能看到底部的渐变色的文字。......