Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include Hiragana and Katakana code blocks for local glyph generation #8365

Merged
merged 1 commit into from
Jun 21, 2019

Conversation

asheemmamoowala
Copy link
Contributor

This PR adds support for locally generating glyphs in the Hiragana and Katakana code blocks. This allows layers with mixed japaense syllabary to be able to use a single font. Without this change - kanji would use the locally generated glyphs but hiragana and katakana would use glyphs based on the style.

The localIdeographFontFamily map option that is used to control this behavior is now not the best name given that Hiragana and Katakana are not ideographic. The name should be changed in a future API breaking release.

  • briefly describe the changes in this PR
  • write tests for all new functionality
  • document any changes to public APIs
  • [ ] post benchmark scores
  • manually test the debug page
  • tagged @mapbox/studio and/or @mapbox/maps-design if this PR includes style spec changes
  • tagged @mapbox/gl-native if this PR includes shader changes or needs a native port

cc @1ec5 @chloekraw @tristen

});
});

test('GlyphManager generates Hiragan PBF locally', (t) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo Hiragan

const manager = new GlyphManager((url) => ({url}), 'sans-serif');
manager.setURL('https://localhost/fonts/v1/{fontstack}/{range}.pbf');

//Hiragan letter te
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same typo

//Hiragan letter te
manager.getGlyphs({'Arial Unicode MS': [0x3066]}, (err, glyphs) => {
t.ifError(err);
t.equal(glyphs['Arial Unicode MS'][0x3066].metrics.advance, 24);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I fully understand what the tests do. I get that you're stubbing the draw method of the static TinySDF object. But how does this test ensure that TinySDF.draw was called as opposed to going through the regular pathway? In either case, wouldn't we expect the glyph to be 24px wide?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GlyphManager#loadGlyphRange would be the other code path, and that is not stubbed, so the test will error out if it tries to go down that path. The metrics test is to ensure that the code path called _tinySDF successfully and returned a StyleGlyph successfully.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah ok, that makes sense.

@asheemmamoowala asheemmamoowala merged commit 0c931d8 into master Jun 21, 2019
@asheemmamoowala asheemmamoowala deleted the more-local-glyphs branch June 21, 2019 19:43
peterqliu added a commit that referenced this pull request Jul 19, 2019
* [docs] adds docs-wide search component (#8349)

* update dr-ui, mr-ui

* add search component

* adjust columns to prevent overlap

* v1.1.0-beta.1 (#8353)

* Update CHANGELOG.md for v1.1.0-beta.1 release
* Bump package.json version to 1.1.0-beta.1

* [docs] updates to search component and layout (#8362)

* do not index /api sidebar

* exclude code snippets in examples from being indexed

* Update docs-page-shell

* update dr-ui, react, react-dom

* adjust columns to fit search and navigation better

* [docs] Replace example with a third-party raster source (#8274)

* remove Add a raster tile source example

* revert "remove Add a raster tile source example"

This reverts commit ea8bf28.

* add third-party tiles to map-tiles example

* fix attribution

* rm unused var

* Add mapbox-gl-framerate to plugins list (#8356)

* remove old plugins page and update reference to the maintained version (#8369)

* Add link to iOS SDK documentation (#8359)

* add ios sdk link per comment from stephen g

* add new link from minh and reword

* Include Hiragana and Katakana code blocks for local glyph generation (#8365) (#8378)

* document the tile size drawn with showTileBoundaries (#8379)

* use browser `Cache` interface to cache tiles (#8363)

Recent pricing changes introduced a `sku=` query parameter that changes with every map load. This defeats the browser's ability to cache these tiles. We're working around that by implementing our own caching with the new `Cache` api.

- skips caching tiles that expire soon
- only caches mapbox tiles (no 3rd party tiles, styles, etc because the browser should cache these fine)
- does not work in IE, Safari

Browser tests can be found in debug/cache_api.html

mapboxgl.clearStorage added to provide a way to clear the cache.

* fix cache support check for enforcing size limit

This was throwing errors in browsers that don't support the cache api
but wasn't previously noticed because it was not breaking anything.

* Fix background rotation hovering (#8367)

* update changelog

* mapbox-gl-geocoder@v4.4.0 (#8297)

* mapbox-gl-geocoder@v4.4.0

* add one more file to  v4.4.0

* fix Response construction in Edge, fix #8391 (#8392) (#8394)

Edge does not support constructing responses with readable streams.

* v1.1.0-beta.2 (#8395)

* Add sdk support spec section for text-radial-offset (#8384) (#8401)

This PR also assigns SDK versions for the `text-variable-anchor`
property (both `text-variable-anchor` and `text-radial-offset`
are the parts of the variable text placement feature).

* fix #8411, fetch in case of cache error (#8415) (#8417)

* fix #8411, fetch in case of cache error

* Use warnOnce

* v1.1.0 & style-spec@13.7.1 (#8408)

* Update style-spec version & changelog for style-spec@13.7.1

- Update style-spec/CHANGELOG.md to add bugfix items
- Bump style-spec/package.json version to 13.7.1 (patch)

* Update mapbox-gl package version to 1.1.0 for final release

* Add missing style-spec changelog entry

* Fix yarn.lock not installing under CI by auto-updating dependencies

* manually strip urls for faster cache matching (#8434) (#8449)

* update examples to use mapbox-gl-geocoder v4.4.1 (#8451)

* set antialias to true for custom layers and extrusion examples (#8474)

* swap map-tiles example to use https (#8482)

* fix race condition between caching and aborting (#8472)

fix #8470, continuous memory usage growth

* fix #8481, unbounded memory growth in IE (#8490)

Cancellable requests to workers should never call back after they have
been cancelled.

* v1.1.1

* [docs] fix SDK support for symbol-sort-key (#8501)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants