Removed MGLIdeographicFontFamilyName validation from MGLRendererConfiguration, since mbgl::LocalGlyphRasterizer performs more robust validation. Removed C++ from MGLRendererConfiguration interface, implementation, and tests for simplicity.
Pass all the specified font and font family names into mbgl so that mbgl::LocalGlyphRasterizer can form a full font cascade list.
* Fix an issue that the heading indicator does not rotate if Settings > Privacy > Location Services > System Services > Compass Calibration is off.
* Update CHANGELOG.md
Co-authored-by: Nishant Karajgikar <nishant-karajgikar@users.noreply.github.com>
Co-authored-by: Minh Nguyễn <mxn@1ec5.org>
Get glyph metrics from the font in the process of drawing each glyph into a bitmap context. These metrics result in more accurate kerning and better aligned baselines than the previous hard-coded values.
Align iOS/macOS local glyph rasterization test fixture to Qt.
Prefer local fonts that match the names specified in the font stack (from the text-font layout property), except for the last resort fonts that mbgl hard-codes. Fall back to the list of fallback CJK fonts in user defaults, then the fonts passed in through the platform-agnostic interface (that come from Info.plist). Explicitly use the first font descriptor in the cascade list instead of the system default of Helvetica.
Since the font stack can vary from one rasterization operation to the next, avoid caching the resolved font for now. Removed null checks that are unrealistic given the Core Text API contract.
mbgl::Renderer and mbgl::MapSnapshotter can now contain a list of font family names, font display names, and font PostScript names, each name separated by a newline.
In tile mode, we're supposed to have only one tile, which is achieved with provided camera options.
However, if camera options are not accurate enough more tile could be used, which could cause:
* various symbol placement problems like, symbol duplications or cut-offs
* memory/cpu overhead
Now, if `mbgl::tileCover()` returns several tiles, only the first one is used (given that tiles are sorted by the distance to the map center)
Especially, there may be more TYPE_ACCELEROMETER events in some devices, such that TYPE_MAGNETIC_FIELD events could be dropped easily.
Also, it took longer time to reflect the latest heading if there are few events, due to the lowPassFilter.
The compass engine has not adjusted the heading according to the device orientation. This causes wrong heading if the device is not in its normal orientation.