mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-03-12 05:20:35 +01:00
win32: Grow glyph extents to account for ClearType
Add extra pixel on each side of the glyph's black box returned by GetGlyphOutlineW, to avoid clipping ClearType pixels. From https://bugzilla.mozilla.org/show_bug.cgi?id=445087
This commit is contained in:
parent
d65e8064c0
commit
35307fc66f
1 changed files with 13 additions and 0 deletions
|
|
@ -979,6 +979,19 @@ _cairo_win32_scaled_font_init_glyph_metrics (cairo_win32_scaled_font_t *scaled_f
|
|||
GGO_METRICS | GGO_GLYPH_INDEX,
|
||||
&metrics, 0, NULL, &matrix) == GDI_ERROR) {
|
||||
memset (&metrics, 0, sizeof (GLYPHMETRICS));
|
||||
} else {
|
||||
if (metrics.gmBlackBoxX > 0 && scaled_font->base.options.antialias != CAIRO_ANTIALIAS_NONE) {
|
||||
/* The bounding box reported by Windows supposedly contains the glyph's "black" area;
|
||||
* however, antialiasing (especially with ClearType) means that the actual image that
|
||||
* needs to be rendered may "bleed" into the adjacent pixels, mainly on the right side.
|
||||
* To avoid clipping the glyphs when drawn by _cairo_surface_fallback_show_glyphs,
|
||||
* for example, or other code that uses glyph extents to determine the area to update,
|
||||
* we add a pixel of "slop" to left side of the nominal "black" area returned by GDI,
|
||||
* and two pixels to the right (as tests show some glyphs bleed into this column).
|
||||
*/
|
||||
metrics.gmptGlyphOrigin.x -= 1;
|
||||
metrics.gmBlackBoxX += 3;
|
||||
}
|
||||
}
|
||||
cairo_win32_scaled_font_done_font (&scaled_font->base);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue