diff options
author | Roozbeh Pournader <roozbeh@google.com> | 2015-06-12 22:30:03 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-12 22:30:03 +0000 |
commit | 0d2dbb55c90cc540aad264577c756103660ddff5 (patch) | |
tree | 024136ad0313243d8b599846357520f03e0df19e | |
parent | 17e78fa864df7b1f3ee737db6ad6c193dffc2396 (diff) | |
parent | f997dd21968bac16966269aede235247fb08a00b (diff) | |
download | android_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.cpp | 12 |
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; |