本文示例程式碼已上傳至我的
Github
倉庫https://github.com/CNFeffery/DataScienceStudyNotes
1 簡介
大家好我是費老師,在之前的一篇文章(基於martin的高效能向量切片地圖服務構建)中我為大家介紹過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
等引數即可。
下面我們純Python
編寫一個非常簡單的應用(完整原始碼見本文開頭倉庫),其中使用到feffery-maplibre
,是由我開源維護的用於在Dash
應用中實現高效能線上地圖的元件庫,其中展示了點線面各常見要素對應的文字標籤形式在不同字型下的效果:
更多資料請參考martin
官方文件https://maplibre.org/martin/37-sources-fonts.html
。
以上就是本文的全部內容,歡迎在評論區與我進行討論~