summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoozbeh Pournader <roozbeh@google.com>2015-06-12 22:30:03 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-12 22:30:03 +0000
commit0d2dbb55c90cc540aad264577c756103660ddff5 (patch)
tree024136ad0313243d8b599846357520f03e0df19e
parent17e78fa864df7b1f3ee737db6ad6c193dffc2396 (diff)
parentf997dd21968bac16966269aede235247fb08a00b (diff)
downloadandroid_frameworks_minikin-0d2dbb55c90cc540aad264577c756103660ddff5.tar.gz
android_frameworks_minikin-0d2dbb55c90cc540aad264577c756103660ddff5.tar.bz2
android_frameworks_minikin-0d2dbb55c90cc540aad264577c756103660ddff5.zip
Merge "Use ASCII HYPHEN-MINUS when there's no HYPHEN in the font." into mnc-dev
-rw-r--r--libs/minikin/Layout.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/minikin/Layout.cpp b/libs/minikin/Layout.cpp
index 88baeac..17ce596 100644
--- a/libs/minikin/Layout.cpp
+++ b/libs/minikin/Layout.cpp
@@ -729,7 +729,17 @@ void Layout::doLayoutRun(const uint16_t* buf, size_t start, size_t count, size_t
// TODO: check whether this is really the desired semantics. It could have the
// effect of assigning the hyphen width to a nonspacing mark
unsigned int lastCluster = srunend - 1;
- hb_buffer_add(buffer, 0x2010, lastCluster);
+
+ hb_codepoint_t hyphenChar = 0x2010; // HYPHEN
+ hb_codepoint_t glyph;
+ // Fallback to ASCII HYPHEN-MINUS if the font didn't have a glyph for HYPHEN. Note
+ // that we intentionally don't do anything special if the font doesn't have a
+ // HYPHEN-MINUS either, so a tofu could be shown, hinting towards something
+ // missing.
+ if (!hb_font_get_glyph(hbFont, hyphenChar, 0, &glyph)) {
+ hyphenChar = 0x002D; // HYPHEN-MINUS
+ }
+ hb_buffer_add(buffer, hyphenChar, lastCluster);
}
hb_shape(hbFont, buffer, features.empty() ? NULL : &features[0], features.size());
unsigned int numGlyphs;