| Index: third_party/freetype/src/cff/cffobjs.c
|
| diff --git a/third_party/freetype/src/cff/cffobjs.c b/third_party/freetype/src/cff/cffobjs.c
|
| index da3d0190fe49890e90ad1564d5e65501c319aa0d..0e0d5b034b6cc594aed1367584cb2c9f75cba494 100644
|
| --- a/third_party/freetype/src/cff/cffobjs.c
|
| +++ b/third_party/freetype/src/cff/cffobjs.c
|
| @@ -4,7 +4,7 @@
|
| /* */
|
| /* OpenType objects manager (body). */
|
| /* */
|
| -/* Copyright 1996-2014 by */
|
| +/* Copyright 1996-2015 by */
|
| /* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
| /* */
|
| /* This file is part of the FreeType project, and may only be used, */
|
| @@ -226,8 +226,8 @@
|
| CFF_Font font = (CFF_Font)face->extra.data;
|
| CFF_Internal internal = (CFF_Internal)size->internal;
|
|
|
| - FT_ULong top_upm = font->top_font.font_dict.units_per_em;
|
| - FT_UInt i;
|
| + FT_Long top_upm = (FT_Long)font->top_font.font_dict.units_per_em;
|
| + FT_UInt i;
|
|
|
|
|
| funcs->set_scale( internal->topfont,
|
| @@ -237,7 +237,7 @@
|
| for ( i = font->num_subfonts; i > 0; i-- )
|
| {
|
| CFF_SubFont sub = font->subfonts[i - 1];
|
| - FT_ULong sub_upm = sub->font_dict.units_per_em;
|
| + FT_Long sub_upm = (FT_Long)sub->font_dict.units_per_em;
|
| FT_Pos x_scale, y_scale;
|
|
|
|
|
| @@ -298,8 +298,8 @@
|
| CFF_Font font = (CFF_Font)cffface->extra.data;
|
| CFF_Internal internal = (CFF_Internal)size->internal;
|
|
|
| - FT_ULong top_upm = font->top_font.font_dict.units_per_em;
|
| - FT_UInt i;
|
| + FT_Long top_upm = (FT_Long)font->top_font.font_dict.units_per_em;
|
| + FT_UInt i;
|
|
|
|
|
| funcs->set_scale( internal->topfont,
|
| @@ -309,7 +309,7 @@
|
| for ( i = font->num_subfonts; i > 0; i-- )
|
| {
|
| CFF_SubFont sub = font->subfonts[i - 1];
|
| - FT_ULong sub_upm = sub->font_dict.units_per_em;
|
| + FT_Long sub_upm = (FT_Long)sub->font_dict.units_per_em;
|
| FT_Pos x_scale, y_scale;
|
|
|
|
|
| @@ -342,7 +342,7 @@
|
| FT_LOCAL_DEF( void )
|
| cff_slot_done( FT_GlyphSlot slot )
|
| {
|
| - slot->internal->glyph_hints = 0;
|
| + slot->internal->glyph_hints = NULL;
|
| }
|
|
|
|
|
| @@ -583,16 +583,21 @@
|
| if ( error )
|
| goto Exit;
|
|
|
| + /* if we are performing a simple font format check, exit immediately */
|
| + /* (this is here for pure CFF) */
|
| + if ( face_index < 0 )
|
| + return FT_Err_Ok;
|
| +
|
| cff->pshinter = pshinter;
|
| cff->psnames = psnames;
|
|
|
| - cffface->face_index = face_index;
|
| + cffface->face_index = face_index & 0xFFFF;
|
|
|
| /* Complement the root flags with some interesting information. */
|
| /* Note that this is only necessary for pure CFF and CEF fonts; */
|
| /* SFNT based fonts use the `name' table instead. */
|
|
|
| - cffface->num_glyphs = cff->num_glyphs;
|
| + cffface->num_glyphs = (FT_Long)cff->num_glyphs;
|
|
|
| dict = &cff->top_font.font_dict;
|
|
|
| @@ -629,7 +634,7 @@
|
| if ( !dict->has_font_matrix )
|
| dict->units_per_em = pure_cff ? 1000 : face->root.units_per_EM;
|
|
|
| - /* Normalize the font matrix so that `matrix->xx' is 1; the */
|
| + /* Normalize the font matrix so that `matrix->yy' is 1; the */
|
| /* scaling is done with `units_per_em' then (at this point, */
|
| /* it already contains the scaling factor, but without */
|
| /* normalization of the matrix). */
|
| @@ -646,7 +651,7 @@
|
|
|
| if ( temp != 0x10000L )
|
| {
|
| - *upm = FT_DivFix( *upm, temp );
|
| + *upm = (FT_ULong)FT_DivFix( (FT_Long)*upm, temp );
|
|
|
| matrix->xx = FT_DivFix( matrix->xx, temp );
|
| matrix->yx = FT_DivFix( matrix->yx, temp );
|
| @@ -682,7 +687,8 @@
|
| if ( top->has_font_matrix )
|
| {
|
| if ( top->units_per_em > 1 && sub->units_per_em > 1 )
|
| - scaling = FT_MIN( top->units_per_em, sub->units_per_em );
|
| + scaling = (FT_Long)FT_MIN( top->units_per_em,
|
| + sub->units_per_em );
|
| else
|
| scaling = 1;
|
|
|
| @@ -693,9 +699,10 @@
|
| &top->font_matrix,
|
| scaling );
|
|
|
| - sub->units_per_em = FT_MulDiv( sub->units_per_em,
|
| - top->units_per_em,
|
| - scaling );
|
| + sub->units_per_em = (FT_ULong)
|
| + FT_MulDiv( (FT_Long)sub->units_per_em,
|
| + (FT_Long)top->units_per_em,
|
| + scaling );
|
| }
|
| }
|
| else
|
| @@ -713,7 +720,7 @@
|
|
|
| if ( temp != 0x10000L )
|
| {
|
| - *upm = FT_DivFix( *upm, temp );
|
| + *upm = (FT_ULong)FT_DivFix( (FT_Long)*upm, temp );
|
|
|
| matrix->xx = FT_DivFix( matrix->xx, temp );
|
| matrix->yx = FT_DivFix( matrix->yx, temp );
|
| @@ -733,13 +740,13 @@
|
|
|
|
|
| /* set up num_faces */
|
| - cffface->num_faces = cff->num_faces;
|
| + cffface->num_faces = (FT_Long)cff->num_faces;
|
|
|
| /* compute number of glyphs */
|
| if ( dict->cid_registry != 0xFFFFU )
|
| - cffface->num_glyphs = cff->charset.max_cid + 1;
|
| + cffface->num_glyphs = (FT_Long)( cff->charset.max_cid + 1 );
|
| else
|
| - cffface->num_glyphs = cff->charstrings_index.count;
|
| + cffface->num_glyphs = (FT_Long)cff->charstrings_index.count;
|
|
|
| /* set global bbox, as well as EM size */
|
| cffface->bbox.xMin = dict->font_bbox.xMin >> 16;
|
| @@ -763,7 +770,9 @@
|
| (FT_Short)( dict->underline_thickness >> 16 );
|
|
|
| /* retrieve font family & style name */
|
| - cffface->family_name = cff_index_get_name( cff, face_index );
|
| + cffface->family_name = cff_index_get_name(
|
| + cff,
|
| + (FT_UInt)( face_index & 0xFFFF ) );
|
| if ( cffface->family_name )
|
| {
|
| char* full = cff_index_get_sid_string( cff,
|
|
|