79 static hb_bool_t harfbuzzGetGlyph(
hb_font_t* hbFont,
void* fontData,
hb_codepoint_t unicode,
hb_codepoint_t variationSelector,
hb_codepoint_t* glyph,
void* userData)
80 {
81 HarfBuzzFontData* hbFontData = reinterpret_cast<HarfBuzzFontData*>(fontData);
82
83 if (unicode > 0x10ffff) {
84 unicode = 0xfffd;
85 }
86 SkPaint* paint = hbFontData->m_paint;
87
88 paint->setTextEncoding(SkPaint::kUTF16_TextEncoding);
89 uint16_t glyph16;
90 uint16_t unichar[2];
91 size_t size = SkUTF16_FromUnichar(unicode, unichar);
92 paint->textToGlyphs(unichar, size * sizeof(*unichar), &glyph16);
93 *glyph = glyph16;
94 return !!*glyph;
95 }