Mapbox自定义字体

  • Post author:
  • Post category:其他




创建字体格式pbf

字体文件(ttf/otf)一般比较大(一般在10M左右,至少设计师给我的字体文件就是这般大),在网页中加载比较耗时。

mapbox加载的字体是经过处理的,加工成pbf格式。pbf格式文件是基于Google的Protocol Buffer协议进行组织,是一种二进制文件。Mapbox的矢量瓦片、字体都是采用这种数据结构进行存储、压缩的。

Mapbox官方提供了两种方式帮助我们字体转换成pbf格式(即ttf、otf => pbf)

  1. 开源工具

    fontnik
  2. 在线服务

    Fonts API

这两种方式都挺简单的,前者可用于本地化部署,后者是提供字体管理。



样式文件设置

在样式文件中的

glyphs

中设置成相应的字体服务,本地的字体地址如下:


http://localhost:3000/fonts/{fontstack}/{range}.pbf

如果使用在线的字体服务地址,则需要加上

access_token

,只设置

mapboxgl.access_token

无效。如下:


https://api.mapbox.com/fonts/v1/dahong/{fontstack}/{range}.pbf?access_token=YOUR_MAPBOX_ACCESS_TOKEN


dahong

是我的在mapbox官网上的用户名(username)



本地字体设置

在样式文件中设置后,地图中的并没有生效,查看控制台也确实请求到了字体(但不多)。我们发现地图上的字母、数字已经变成了自定义字体,但汉字没有。

mapboxgl对

CJK

和部分东亚的字体做了限制。他们认为这些地方的字体文件太大,加载耗时,默认使用“本地”字体。就是使用电脑本身或者手机本身的字体,就不用再去请求了。为了避免这种情况,我们需要在初始化map对象时,设置

localIdeographFontFamily

属性为空字符串

""

。不使用本地字体,就用自定义字体!

在这里插入图片描述



版权声明:本文为dahongdahong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。