Use CTFont::draw_glyphs to rasterize glyphs

This API supports rendering emojis in addition to normal glyphs.
This commit is contained in:
Antonio Scandurra 2022-04-12 19:37:26 +02:00
parent 00fb5755a3
commit 6b629dfa5c

View File

@ -198,15 +198,18 @@ impl FontSystemState {
ty: -transform.vector.y() as CGFloat,
});
cx.set_font(&font.native_font().copy_to_CGFont());
cx.set_font_size(font_size as CGFloat);
cx.show_glyphs_at_positions(
&[glyph_id as CGGlyph],
&[CGPoint::new(
(subpixel_shift.x() / scale_factor) as CGFloat,
(subpixel_shift.y() / scale_factor) as CGFloat,
)],
);
cx.set_should_subpixel_position_fonts(true);
cx.set_should_subpixel_quantize_fonts(false);
font.native_font()
.clone_with_font_size(font_size as CGFloat)
.draw_glyphs(
&[glyph_id as CGGlyph],
&[CGPoint::new(
(subpixel_shift.x() / scale_factor) as CGFloat,
(subpixel_shift.y() / scale_factor) as CGFloat,
)],
cx,
);
Some((bounds, pixels))
}