1 简介
大家好我是费老师,在之前的一篇文章(如何发布具有超高性能的地图服务)中我为大家介绍过martin
的安装与使用,它是由maplibre
开源维护的新一代高性能地图服务框架,底层基于rust
,使得其可以以远胜于geoserver
等传统地图服务框架的效率,进行矢量切片地图服务的发布。
而martin
除了构建矢量切片地图服务的核心功能外,还兼具了其他地图服务常用功能。今天的文章中,我就将为大家介绍如何使用martin
快捷构建自定义字体切片服务。
2 利用martin构建自定义字体切片服务
maplibre
、mapbox
等框架在构建在线地图应用时,如果需要在地图中使用自定义字体,由于字体文件尤其是中文等字体体积较大,出于应用资源加载速度优化的考虑,不会接受完整的字体文件,而是需要自行将原始的字体文件转换为pbf
切片的形式,并构建相应的web服务,供地图应用自动按需访问使用相应切片资源,这一套过程在过去,实现起来还是比较繁琐。
而martin
从0.10.0
版本开始提供快捷的字体切片服务功能,使得我们只需要一行命令即可搞定上述的所有过程😎。
首先我们执行cargo install martin --force
对martin
进行覆盖更新,譬如我之前的martin
版本为0.8.7
:
版本更新后来到0.11.0
:
接着我们只需要在本地准备好otf
、ttf
或ttc
等常见格式的字体文件,接着执行利用martin
命令的--font
参数进行字体源的定义,可以接受单个字体文件,也可以接受路径用于批量识别路径下所有字体文件,还可以通过多个--font
参数分别定义若干字体源规则,下面的示例中我们以识别目标路径下所有字体文件为例:
/home/feffery/.cargo/bin/martin --font .
就这么简单,我们就启动了自定义字体切片服务,默认访问本机的http://127.0.0.1:3000/catalog
地址,即可查看到已成功注册的各字体切片服务信息,其中fonts
下各个「键名」,就可以作为「字体名称」在地图应用中进行配置:
以maplibre
为例,按照我们示例服务的地址,为地图应用设置glyphs
为http://127.0.0.1:3000/font/{fontstack}/{range}
后,对于maplibre
要额外为地图实例设置localIdeographFontFamily
参数为false
,接着按照symbol
型图层参数配置要求设置好text-font
等参数即可。