1.使用的字体库为超图的字体库
2.在线字体库地址为:https://iserver.supermap.io/iserver/services/map-beijing/rest/maps/beijingMap/tileFeature/sdffonts/{fontstack}/{range}.pbf
3.在使用mapbox-gl直接创建地图时,glyphs属性设置为在线地址,可以查看到具体的访问pbf二进制文件的地址,例如
https://iserver.supermap.io/iserver/services/map-beijing/rest/maps/beijingMap/tileFeature/sdffonts/Open%20Sans%20Regular,Arial%20Unicode%20MS%20Regular/0-255.pbf
4.创建文件夹“Open Sans Regular,Arial Unicode MS Regular”,将下载下来的pbf文件放到该文件夹下,然后将mapbox-gl的glyphs属性设置为自定义路径,例如:‘…/…/glyphs/{fontstack}/{range}.pbf’,将“Open Sans Regular,Arial Unicode MS Regular”文件夹放到“glyphs”文件夹下,{fontstack}和{range}为固定格式不需要改。
import requests
import os
base_url = 'https://iserver.supermap.io/iserver/services/map-beijing/rest/maps/beijingMap/tileFeature/sdffonts/Open%20Sans%20Regular,Arial%20Unicode%20MS%20Regular/'
filename_template = '{}-{}.pbf'
download_dir = 'G:/GIS/glyphs/'
for start in range(0, 65536, 256):
end = start + 255
url = base_url + filename_template.format(start, end)
filename = filename_template.format(start, end)
response = requests.get(url)
if response.status_code == 200:
filepath = os.path.join(download_dir, filename)
with open(filepath, 'wb') as f:
f.write(response.content)
print(f"Downloaded {filename} ({len(response.content)} bytes)")
else:
print(
f"Failed to download {filename} ({response.status_code} {response.reason})")