mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-08 17:18:42 +02:00
[twin] Resnap margin under monospace
This commit is contained in:
parent
3c91d9f5a2
commit
ab1febbf22
1 changed files with 13 additions and 1 deletions
|
|
@ -449,6 +449,7 @@ twin_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font,
|
||||||
cairo_text_extents_t *metrics)
|
cairo_text_extents_t *metrics)
|
||||||
{
|
{
|
||||||
double x1, y1, x2, y2, x3, y3;
|
double x1, y1, x2, y2, x3, y3;
|
||||||
|
double marginl;
|
||||||
twin_scaled_properties_t *props;
|
twin_scaled_properties_t *props;
|
||||||
twin_snap_info_t info;
|
twin_snap_info_t info;
|
||||||
const int8_t *b;
|
const int8_t *b;
|
||||||
|
|
@ -467,6 +468,7 @@ twin_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font,
|
||||||
/* small-caps */
|
/* small-caps */
|
||||||
if (props->face_props->smallcaps && glyph >= 'a' && glyph <= 'z') {
|
if (props->face_props->smallcaps && glyph >= 'a' && glyph <= 'z') {
|
||||||
glyph += 'A' - 'a';
|
glyph += 'A' - 'a';
|
||||||
|
/* 28 and 42 are small and capital letter heights of the glyph data */
|
||||||
cairo_scale (cr, 1, 28. / 42);
|
cairo_scale (cr, 1, 28. / 42);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -482,15 +484,25 @@ twin_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font,
|
||||||
w = twin_glyph_right(b);
|
w = twin_glyph_right(b);
|
||||||
gw = F(w);
|
gw = F(w);
|
||||||
|
|
||||||
|
marginl = props->marginl;
|
||||||
|
|
||||||
/* monospace */
|
/* monospace */
|
||||||
if (props->face_props->monospace) {
|
if (props->face_props->monospace) {
|
||||||
double monow = F(24);
|
double monow = F(24);
|
||||||
double extra = props->penx + props->marginl + props->marginr;
|
double extra = props->penx + props->marginl + props->marginr;
|
||||||
cairo_scale (cr, (monow + extra) / (gw + extra), 1);
|
cairo_scale (cr, (monow + extra) / (gw + extra), 1);
|
||||||
gw = monow;
|
gw = monow;
|
||||||
|
|
||||||
|
/* resnap margin for new transform */
|
||||||
|
{
|
||||||
|
double x, y, x_scale, x_scale_inv;
|
||||||
|
x = 1; y = 0;
|
||||||
|
compute_hinting_scale (cr, x, y, &x_scale, &x_scale_inv);
|
||||||
|
marginl = SNAPXI (marginl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_translate (cr, props->marginl, 0); /* XXX if monospace, we need to snap again */
|
cairo_translate (cr, marginl, 0);
|
||||||
|
|
||||||
/* stretch */
|
/* stretch */
|
||||||
cairo_scale (cr, props->stretch, 1);
|
cairo_scale (cr, props->stretch, 1);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue