aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2017-04-06 22:26:56 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-07 14:12:36 +0000
commit3390cdfef8c0ad1f04810a4bb1e98a04e3d56a1a (patch)
tree4243f087e6fbb05148e06a0a5eec8318a02d10cb
parentca878ccfb5d514b4e7baea9e6d410b0085211b40 (diff)
SkTypeface_win_dw: populate_glyph_to_unicode uses lowest unichar
BUG=chromium:538133 BUG=chromium:359065 Change-Id: I8208efc63579e0f1ebb77680beae2cd08cdba547 Reviewed-on: https://skia-review.googlesource.com/11681 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Hal Canary <halcanary@google.com>
-rw-r--r--src/ports/SkTypeface_win_dw.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/ports/SkTypeface_win_dw.cpp b/src/ports/SkTypeface_win_dw.cpp
index 7d18da9d5a..42d1319fbb 100644
--- a/src/ports/SkTypeface_win_dw.cpp
+++ b/src/ports/SkTypeface_win_dw.cpp
@@ -297,7 +297,8 @@ static void populate_glyph_to_unicode(IDWriteFontFace* fontFace,
const unsigned glyphCount,
SkTDArray<SkUnichar>* glyphToUnicode) {
//Do this like free type instead
- SkAutoTMalloc<SkUnichar> glyphToUni(glyphCount);
+ SkAutoTMalloc<SkUnichar> glyphToUni(
+ (SkUnichar*)sk_calloc_throw(sizeof(SkUnichar) * glyphCount));
int maxGlyph = -1;
for (UINT32 c = 0; c < 0x10FFFF; ++c) {
UINT16 glyph = 0;
@@ -309,10 +310,11 @@ static void populate_glyph_to_unicode(IDWriteFontFace* fontFace,
}
if (0 < glyph) {
maxGlyph = SkTMax(static_cast<int>(glyph), maxGlyph);
- glyphToUni[glyph] = c;
+ if (glyphToUni[glyph] == 0) {
+ glyphToUni[glyph] = c; // Always use lowest-index unichar.
+ }
}
}
-
SkTDArray<SkUnichar>(glyphToUni, maxGlyph + 1).swap(*glyphToUnicode);
}