mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-02-15 13:50:32 +01:00
[twin] Fix monospace for narrow glyphs
This commit is contained in:
parent
e8e6ae1294
commit
6e7a2c4ce3
1 changed files with 14 additions and 9 deletions
|
|
@ -443,10 +443,14 @@ twin_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font,
|
|||
/* Save glyph space, we need it when stroking */
|
||||
cairo_save (cr);
|
||||
|
||||
/* left margin + pen width, pen width */
|
||||
cairo_translate (cr, props->penx * 1.5, -props->peny * .5);
|
||||
/* center the pen */
|
||||
cairo_translate (cr, props->penx * .5, -props->peny * .5);
|
||||
|
||||
cairo_scale (cr, props->stretch, 1);
|
||||
/* small-caps */
|
||||
if (props->face_props->smallcaps && glyph >= 'a' && glyph <= 'z') {
|
||||
glyph += 'A' - 'a';
|
||||
cairo_scale (cr, 1, 28. / 42);
|
||||
}
|
||||
|
||||
/* slant */
|
||||
if (props->face_props->slant != CAIRO_FONT_SLANT_NORMAL) {
|
||||
|
|
@ -454,11 +458,6 @@ twin_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font,
|
|||
cairo_transform (cr, &shear);
|
||||
}
|
||||
|
||||
if (props->face_props->smallcaps && glyph >= 'a' && glyph <= 'z') {
|
||||
glyph += 'A' - 'a';
|
||||
cairo_scale (cr, 1, 28. / 42);
|
||||
}
|
||||
|
||||
b = _cairo_twin_outlines +
|
||||
_cairo_twin_charmap[unlikely (glyph >= ARRAY_LENGTH (_cairo_twin_charmap)) ? 0 : glyph];
|
||||
g = twin_glyph_draw(b);
|
||||
|
|
@ -468,10 +467,16 @@ twin_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font,
|
|||
/* monospace */
|
||||
if (props->face_props->monospace) {
|
||||
double monow = F(24);
|
||||
cairo_scale (cr, (monow+props->penx) / (gw+props->penx), 1);
|
||||
cairo_scale (cr, (monow+3*props->penx) / (gw+3*props->penx), 1);
|
||||
gw = monow;
|
||||
}
|
||||
|
||||
/* left margin */
|
||||
cairo_translate (cr, props->penx, 0);
|
||||
|
||||
/* stretch */
|
||||
cairo_scale (cr, props->stretch, 1);
|
||||
|
||||
_twin_compute_snap (cr, scaled_font, &info, b);
|
||||
|
||||
/* advance width */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue