Esri / esri-leaflet-vector

Display ArcGIS Online vector basemaps w/ Esri Leaflet
49 stars 52 forks source link

Text labels not showing for certain vector tile layers #121

Open gavinr opened 2 years ago

gavinr commented 2 years ago

Issue summary

When using Esri Leaflet Vector to add vector tile basemap layers in other languages, on some langauges (like Arabic) the text labels do not show on in the layer.

Italian is working:

See web map 4d1c336e57504552a04552600122f96a:

Arabic is not working:

See web map 8e0c793963b74220b0d18bbd332372cc:

Potential Cause

If you look at the style root.json, you'll see that text-font is an array, and the layer should "Fall back" to the second font if the first one is not found.

image

Is it possible that this "falling back" to Arial Unicode MS Regular is not happening and thus the font is not showing?

jwasilgeo commented 2 years ago

We indeed manipulate the text-font here in the source Util helper function: https://github.com/Esri/esri-leaflet-vector/blob/v3.1.1/src/Util.js#L161-L171

Which is used by the L.esri.Vector.vectorTileLayer here: https://github.com/Esri/esri-leaflet-vector/blob/v3.1.1/src/VectorTileLayer.js#L72

The mapbox style spec says it can be an array of strings: https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#layout-symbol-text-font

@patrickarlt do you recall the reason we decided to only keep the 1st? And can we change this to keep any/all that exist in the incoming style object?