diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-08-04 14:44:22 +0300 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-08-13 13:32:56 +0300 |
commit | 1b9d4d792cbd877f627987cbd0d5ed41709375c8 (patch) | |
tree | 5571f19bc807620e61a5762e41a8e2c2a6561134 /src/mbgl/text/quads.cpp | |
parent | 03bb17f8c506164efa39708cd2caea7aa11403f7 (diff) | |
download | qtlocation-mapboxgl-1b9d4d792cbd877f627987cbd0d5ed41709375c8.tar.gz |
[core] Render half-width glyphs in upright orientation
This change forces glyphs whose natural orientation in vertical writing
mode is 'sideways' to be rendered in upright orientation (only for non complex
text layouts). This is different compared to W3C / browser behavior that is by
default, renders glyphs in their respective natural orientation.
In the future, there might need to add a new layout property that would control
glyph orientation separately (e.g., text-glyph-orientation: natural | upright).
Diffstat (limited to 'src/mbgl/text/quads.cpp')
-rw-r--r-- | src/mbgl/text/quads.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mbgl/text/quads.cpp b/src/mbgl/text/quads.cpp index 9ff26ddd8d..b08c2bc0ba 100644 --- a/src/mbgl/text/quads.cpp +++ b/src/mbgl/text/quads.cpp @@ -160,7 +160,11 @@ SymbolQuads getGlyphQuads(const Shaping& shapedText, const Point<float> center{ -halfAdvance, halfAdvance - Shaping::yOffset }; const float verticalRotation = -M_PI_2; - const Point<float> xOffsetCorrection{ 5.0f - Shaping::yOffset, 0.0f }; + + // xHalfWidhtOffsetcorrection is a difference between full-width and half-width + // advance, should be 0 for full-width glyphs and will pull up half-width glyphs. + const float xHalfWidhtOffsetcorrection = util::ONE_EM / 2 - halfAdvance; + const Point<float> xOffsetCorrection{ 5.0f - Shaping::yOffset - xHalfWidhtOffsetcorrection, 0.0f }; tl = util::rotate(tl - center, verticalRotation) + center + xOffsetCorrection + verticalizedLabelOffset; tr = util::rotate(tr - center, verticalRotation) + center + xOffsetCorrection + verticalizedLabelOffset; |