summaryrefslogtreecommitdiff
path: root/src/mbgl/layout/symbol_layout.cpp
diff options
context:
space:
mode:
authorChris Loer <chris.loer@gmail.com>2016-11-16 12:50:57 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-11-17 14:33:03 -0800
commitd4fc66af3924805d40576989c1e139ddafcc4670 (patch)
tree87e8dac7bc21051086f2765b4d04e884aad4cec7 /src/mbgl/layout/symbol_layout.cpp
parentbceeba29a3fa85105c21718ed0be8704508ab585 (diff)
downloadqtlocation-mapboxgl-d4fc66af3924805d40576989c1e139ddafcc4670.tar.gz
[core] Add minimal line breaking support for RTL text.
Diffstat (limited to 'src/mbgl/layout/symbol_layout.cpp')
-rw-r--r--src/mbgl/layout/symbol_layout.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp
index 00395fafc2..6556d65d3d 100644
--- a/src/mbgl/layout/symbol_layout.cpp
+++ b/src/mbgl/layout/symbol_layout.cpp
@@ -92,7 +92,9 @@ SymbolLayout::SymbolLayout(std::string bucketName_,
u8string = platform::lowercase(u8string);
}
- ft.text = bidi.bidiTransform(util::utf8_to_utf16::convert(u8string));
+ std::u16string u16string = util::utf8_to_utf16::convert(u8string);
+ ft.text = bidi.bidiTransform(u16string);
+ ft.writingDirection = bidi.baseWritingDirection(u16string);
// Loop through all characters of this text and collect unique codepoints.
for (char16_t chr : *ft.text) {
@@ -196,6 +198,7 @@ void SymbolLayout::prepare(uintptr_t tileUID,
if (feature.text) {
shapedText = glyphSet->getShaping(
/* string */ *feature.text,
+ /* base direction of text */ *feature.writingDirection,
/* maxWidth: ems */ layout.symbolPlacement != SymbolPlacementType::Line ?
layout.textMaxWidth * 24 : 0,
/* lineHeight: ems */ layout.textLineHeight * 24,