Switch to using alphabetic baseline for local glyphs. #10390
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR integrates the TinySDF changes at mapbox/tiny-sdf#30 which switch to drawing glyphs on the "alphabetic" baseline instead of the "middle" baseline. This gives better visual alignment between fonts. The new version of TinySDF will have to be published before this PR builds successfully.
Here's an overlay of the Meiryo and YaHei fonts, showing how the alphabetic baseline matches expectations (Meiryo "broke" earlier assumption because it has a very large font descender):
TinySDF's "top" metric now means "distance from alphabetic baseline to top of glyph" which seems pretty intuitive but notably different from what https://github.com/mapbox/sdf-glyph-foundry generates. This PR adjusts to bring the two metrics mostly into line.
Here are some cross browser/font/platform test results (it would be great to figure out a good way to automate this):
Chrome MacOS Meiryo : Server Arial












Chrome macOS Meiryo:Meiryo
Chrome MacOS san-serif all
Chrome MacOS sans-serif: server Arial
Chrome Windows 10 : sans-serif all
Chrome Windows 10 sans-serif : Server Arial
Edge Windows 10 sans-serif : Server Arial
Edge Windows 10 sans-serif all
Firefox MacOS san-serif : Server Arial
Firefox MacOS sans-serif all
Firefox Windows 10 sans-serif : Server Arial Unicode
Firefox Windows 10 sans-serif all
For an example of what was broken before, see this customer screenshot using Meiryo / Server Arial:
Launch Checklist
@mapbox/map-design-team
@mapbox/static-apis
if this PR includes style spec API or visual changes@mapbox/gl-native
if this PR includes shader changes or needs a native portmapbox-gl-js
changelog:@mourner @asheemmamoowala @tsuz