@@ -65,7 +65,8 @@ static bool PairsFitInAtlasOfSize(const FontGlyphPair::Vector& pairs,
6565
6666 for (const auto & pair : pairs) {
6767 const auto glyph_size =
68- ISize::Ceil (pair.font .GetMetrics ().GetBoundingBox ().size );
68+ ISize::Ceil (pair.font .GetMetrics ().GetBoundingBox ().size *
69+ pair.font .GetMetrics ().scale );
6970 SkIPoint16 location_in_atlas;
7071 if (!rect_packer->addRect (glyph_size.width , //
7172 glyph_size.height , //
@@ -125,21 +126,23 @@ static std::optional<SkBitmap> CreateAtlasBitmap(const GlyphAtlas& atlas,
125126
126127 SkFont sk_font (
127128 TypefaceSkia::Cast (*font_glyph.font .GetTypeface ()).GetSkiaTypeface (),
128- font_glyph.font .GetMetrics ().point_size );
129+ font_glyph.font .GetMetrics ().point_size *
130+ font_glyph.font .GetMetrics ().scale );
129131
130132 const auto & metrics = font_glyph.font .GetMetrics ();
131133
132134 auto glyph_color = SK_ColorWHITE;
133135
134136 SkPaint glyph_paint;
135137 glyph_paint.setColor (glyph_color);
136- canvas->drawGlyphs (1u , // count
137- &glyph_id, // glyphs
138- &position, // positions
139- SkPoint::Make (-metrics.min_extent .x ,
140- -metrics.ascent ), // origin
141- sk_font, // font
142- glyph_paint // paint
138+ canvas->drawGlyphs (
139+ 1u , // count
140+ &glyph_id, // glyphs
141+ &position, // positions
142+ SkPoint::Make (-metrics.min_extent .x * metrics.scale ,
143+ -metrics.ascent * metrics.scale ), // origin
144+ sk_font, // font
145+ glyph_paint // paint
143146 );
144147 return true ;
145148 });
0 commit comments