diff options
author | Behdad Esfahbod <behdad@google.com> | 2014-07-11 11:30:06 -0400 |
---|---|---|
committer | Behdad Esfahbod <behdad@google.com> | 2014-07-11 11:30:06 -0400 |
commit | 4422f4dd941628ad289bcabc75fbd788d37415f6 (patch) | |
tree | 48fd8bf625ed8ad1ba76ecbfbc3dbc1dc6ed5364 /libs/minikin | |
parent | a8e7eb6316e7d5169f0800e8f6e5af6508d97b72 (diff) | |
download | android_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
Diffstat (limited to 'libs/minikin')
-rw-r--r-- | libs/minikin/Layout.cpp | 6 |
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; |