This commit is contained in:
Behdad Esfahbod 2017-01-22 17:47:49 -08:00
parent d2f249e745
commit 7647a05a0b
4 changed files with 15 additions and 8 deletions

View File

@ -1639,9 +1639,12 @@ hb_font_set_var_coords_normalized (hb_font_t *font,
/** /**
* hb_font_set_var_coords_normalized: * hb_font_set_var_coords_normalized:
* *
* Return value is valid as long as variation coordinates of the font
* are not modified.
*
* Since: 1.4.2 * Since: 1.4.2
*/ */
int * const int *
hb_font_get_var_coords_normalized (hb_font_t *font, hb_font_get_var_coords_normalized (hb_font_t *font,
unsigned int *length) unsigned int *length)
{ {

View File

@ -618,7 +618,7 @@ hb_font_set_var_coords_normalized (hb_font_t *font,
const int *coords, /* 2.14 normalized */ const int *coords, /* 2.14 normalized */
unsigned int coords_length); unsigned int coords_length);
HB_EXTERN int * HB_EXTERN const int *
hb_font_get_var_coords_normalized (hb_font_t *font, hb_font_get_var_coords_normalized (hb_font_t *font,
unsigned int *length); unsigned int *length);

View File

@ -742,7 +742,7 @@ hb_ft_font_set_funcs (hb_font_t *font)
} }
unsigned int num_coords; unsigned int num_coords;
int *coords = hb_font_get_var_coords_normalized (font, &num_coords); const int *coords = hb_font_get_var_coords_normalized (font, &num_coords);
if (num_coords) if (num_coords)
{ {
FT_Fixed *ft_coords = (FT_Fixed *) calloc (num_coords, sizeof (FT_Fixed)); FT_Fixed *ft_coords = (FT_Fixed *) calloc (num_coords, sizeof (FT_Fixed));

View File

@ -104,13 +104,17 @@ helper_cairo_create_scaled_font (const font_options_t *font_opts)
else else
{ {
unsigned int num_coords; unsigned int num_coords;
int *coords = hb_font_get_var_coords_normalized (font, &num_coords); const int *coords = hb_font_get_var_coords_normalized (font, &num_coords);
if (num_coords) if (num_coords)
{ {
FT_Fixed ft_coords[num_coords]; FT_Fixed *ft_coords = (FT_Fixed *) calloc (num_coords, sizeof (FT_Fixed));
if (ft_coords)
{
for (unsigned int i = 0; i < num_coords; i++) for (unsigned int i = 0; i < num_coords; i++)
ft_coords[i] = coords[i] << 2; ft_coords[i] = coords[i] << 2;
FT_Set_Var_Blend_Coordinates (ft_face, num_coords, ft_coords); FT_Set_Var_Blend_Coordinates (ft_face, num_coords, ft_coords);
free (ft_coords);
}
} }
cairo_face = cairo_ft_font_face_create_for_ft_face (ft_face, 0); cairo_face = cairo_ft_font_face_create_for_ft_face (ft_face, 0);