mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-06-08 22:08:22 +02:00
Type 1 subset: Fix glyph advance
https://bugs.freedesktop.org/show_bug.cgi?id=31062
(cherry picked from commit 6dc0b19adb)
This commit is contained in:
parent
f747ea81fb
commit
f47830dbbc
1 changed files with 15 additions and 15 deletions
|
|
@ -69,8 +69,8 @@ typedef struct _cairo_type1_font_subset {
|
|||
unsigned int font_id;
|
||||
char *base_font;
|
||||
unsigned int num_glyphs;
|
||||
long x_min, y_min, x_max, y_max;
|
||||
long ascent, descent;
|
||||
double x_min, y_min, x_max, y_max;
|
||||
double ascent, descent;
|
||||
|
||||
const char *data;
|
||||
unsigned long header_size;
|
||||
|
|
@ -146,12 +146,12 @@ _cairo_type1_font_subset_init (cairo_type1_font_subset_t *font,
|
|||
memset (font, 0, sizeof (*font));
|
||||
font->base.unscaled_font = _cairo_unscaled_font_reference (unscaled_font);
|
||||
font->base.num_glyphs = face->num_glyphs;
|
||||
font->base.x_min = face->bbox.xMin;
|
||||
font->base.y_min = face->bbox.yMin;
|
||||
font->base.x_max = face->bbox.xMax;
|
||||
font->base.y_max = face->bbox.yMax;
|
||||
font->base.ascent = face->ascender;
|
||||
font->base.descent = face->descender;
|
||||
font->base.x_min = face->bbox.xMin / (double)face->units_per_EM;
|
||||
font->base.y_min = face->bbox.yMin / (double)face->units_per_EM;
|
||||
font->base.x_max = face->bbox.xMax / (double)face->units_per_EM;
|
||||
font->base.y_max = face->bbox.yMax / (double)face->units_per_EM;
|
||||
font->base.ascent = face->ascender / (double)face->units_per_EM;
|
||||
font->base.descent = face->descender / (double)face->units_per_EM;
|
||||
|
||||
if (face->family_name) {
|
||||
font->base.base_font = strdup (face->family_name);
|
||||
|
|
@ -566,7 +566,7 @@ cairo_type1_font_subset_get_glyph_names_and_widths (cairo_type1_font_subset_t *f
|
|||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
}
|
||||
|
||||
font->glyphs[i].width = font->face->glyph->linearHoriAdvance / 65536.0; /* 16.16 format */
|
||||
font->glyphs[i].width = font->face->glyph->metrics.horiAdvance / (double)font->face->units_per_EM;
|
||||
|
||||
error = FT_Get_Glyph_Name(font->face, i, buffer, sizeof buffer);
|
||||
if (error != FT_Err_Ok) {
|
||||
|
|
@ -1356,12 +1356,12 @@ _cairo_type1_subset_init (cairo_type1_subset_t *type1_subset,
|
|||
font.glyphs[i].width;
|
||||
}
|
||||
|
||||
type1_subset->x_min = font.base.x_min/1000.0;
|
||||
type1_subset->y_min = font.base.y_min/1000.0;
|
||||
type1_subset->x_max = font.base.x_max/1000.0;
|
||||
type1_subset->y_max = font.base.y_max/1000.0;
|
||||
type1_subset->ascent = font.base.ascent/1000.0;
|
||||
type1_subset->descent = font.base.descent/1000.0;
|
||||
type1_subset->x_min = font.base.x_min;
|
||||
type1_subset->y_min = font.base.y_min;
|
||||
type1_subset->x_max = font.base.x_max;
|
||||
type1_subset->y_max = font.base.y_max;
|
||||
type1_subset->ascent = font.base.ascent;
|
||||
type1_subset->descent = font.base.descent;
|
||||
|
||||
length = font.base.header_size +
|
||||
font.base.data_size +
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue