mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-01-06 12:00:22 +01:00
Oops. Call _cairo_scaled_font_set_metrics to set user-space metrics for scaled fonts.
reviewed by: otaylor deserves credit for noticing a problem
This commit is contained in:
parent
25edf235f0
commit
0cfa350fa8
2 changed files with 20 additions and 10 deletions
|
|
@ -1,3 +1,11 @@
|
|||
2005-09-01 Keith Packard <keithp@keithp.com>
|
||||
|
||||
reviewed by: otaylor deserves credit for noticing a problem
|
||||
|
||||
* src/cairo-ft-font.c: (_cairo_ft_scaled_font_create):
|
||||
Oops. Call _cairo_scaled_font_set_metrics to set user-space
|
||||
metrics for scaled fonts.
|
||||
|
||||
2005-09-01 Bertram Felgenhauer <int-e@gmx.de>
|
||||
|
||||
* src/cairo-scaled-font.c (_cairo_scaled_font_text_to_glyphs):
|
||||
|
|
|
|||
|
|
@ -1398,6 +1398,7 @@ _cairo_ft_scaled_font_create (cairo_ft_unscaled_font_t *unscaled,
|
|||
cairo_ft_scaled_font_t *scaled_font = NULL;
|
||||
FT_Face face;
|
||||
FT_Size_Metrics *metrics;
|
||||
cairo_font_extents_t fs_metrics;
|
||||
|
||||
face = _cairo_ft_unscaled_font_lock_face (unscaled);
|
||||
if (!face)
|
||||
|
|
@ -1444,24 +1445,25 @@ _cairo_ft_scaled_font_create (cairo_ft_unscaled_font_t *unscaled,
|
|||
else
|
||||
y_factor = 1 / unscaled->y_scale;
|
||||
|
||||
scaled_font->base.extents.ascent = DOUBLE_FROM_26_6(metrics->ascender) * y_factor;
|
||||
scaled_font->base.extents.descent = DOUBLE_FROM_26_6(- metrics->descender) * y_factor;
|
||||
scaled_font->base.extents.height = DOUBLE_FROM_26_6(metrics->height) * y_factor;
|
||||
scaled_font->base.extents.max_x_advance = DOUBLE_FROM_26_6(metrics->max_advance) * x_factor;
|
||||
fs_metrics.ascent = DOUBLE_FROM_26_6(metrics->ascender) * y_factor;
|
||||
fs_metrics.descent = DOUBLE_FROM_26_6(- metrics->descender) * y_factor;
|
||||
fs_metrics.height = DOUBLE_FROM_26_6(metrics->height) * y_factor;
|
||||
fs_metrics.max_x_advance = DOUBLE_FROM_26_6(metrics->max_advance) * x_factor;
|
||||
} else {
|
||||
double scale = face->units_per_EM;
|
||||
|
||||
scaled_font->base.extents.ascent = face->ascender / scale;
|
||||
scaled_font->base.extents.descent = - face->descender / scale;
|
||||
scaled_font->base.extents.height = face->height / scale;
|
||||
scaled_font->base.extents.max_x_advance = face->max_advance_width / scale;
|
||||
fs_metrics.ascent = face->ascender / scale;
|
||||
fs_metrics.descent = - face->descender / scale;
|
||||
fs_metrics.height = face->height / scale;
|
||||
fs_metrics.max_x_advance = face->max_advance_width / scale;
|
||||
}
|
||||
|
||||
|
||||
/* FIXME: this doesn't do vertical layout atm. */
|
||||
scaled_font->base.extents.max_y_advance = 0.0;
|
||||
|
||||
fs_metrics.max_y_advance = 0.0;
|
||||
|
||||
_cairo_scaled_font_set_metrics (&scaled_font->base, &fs_metrics);
|
||||
|
||||
return &scaled_font->base;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue