summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@google.com>2014-07-11 11:30:06 -0400
committerBehdad Esfahbod <behdad@google.com>2014-07-11 11:30:06 -0400
commit4422f4dd941628ad289bcabc75fbd788d37415f6 (patch)
tree48fd8bf625ed8ad1ba76ecbfbc3dbc1dc6ed5364
parenta8e7eb6316e7d5169f0800e8f6e5af6508d97b72 (diff)
downloadandroid_frameworks_minikin-4422f4dd941628ad289bcabc75fbd788d37415f6.tar.gz
android_frameworks_minikin-4422f4dd941628ad289bcabc75fbd788d37415f6.tar.bz2
android_frameworks_minikin-4422f4dd941628ad289bcabc75fbd788d37415f6.zip
Don't pass invalid Unicode codepoint to Skia
Bug: 15849380 Change-Id: Ib5285e57c5806bd399600fadd56e8bc809da323f
-rw-r--r--libs/minikin/Layout.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/libs/minikin/Layout.cpp b/libs/minikin/Layout.cpp
index 01b6599..21b8362 100644
--- a/libs/minikin/Layout.cpp
+++ b/libs/minikin/Layout.cpp
@@ -258,6 +258,12 @@ static hb_bool_t harfbuzzGetGlyph(hb_font_t* hbFont, void* fontData, hb_codepoin
MinikinPaint* paint = reinterpret_cast<MinikinPaint*>(fontData);
MinikinFont* font = paint->font;
uint32_t glyph_id;
+ /* HarfBuzz replaces broken input codepoints with (unsigned int) -1.
+ * Skia expects valid Unicode.
+ * Replace invalid codepoints with U+FFFD REPLACEMENT CHARACTER.
+ */
+ if (unicode > 0x10FFFF)
+ unicode = 0xFFFD;
bool ok = font->GetGlyph(unicode, &glyph_id);
if (ok) {
*glyph = glyph_id;