Ignore:
Timestamp:
Apr 12, 2009, 10:25:05 AM (13 years ago)
Author:
Eugene Romanenko
Message:

PDF plugin: freetype library updated to version 2.3.9

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/poppler/freetype2/src/cff/cffdrivr.c

    r262 r269  
    55/*    OpenType font driver implementation (body).                          */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by      */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    189189
    190190  FT_CALLBACK_DEF( FT_Error )
    191   cff_get_advances( FT_Face    ftface,
     191  cff_get_advances( FT_Face    face,
    192192                    FT_UInt    start,
    193193                    FT_UInt    count,
     
    195195                    FT_Fixed*  advances )
    196196  {
    197     CFF_Face      face = (CFF_Face)ftface;
    198197    FT_UInt       nn;
    199198    FT_Error      error = CFF_Err_Ok;
    200     FT_GlyphSlot  slot  = face->root.glyph;
     199    FT_GlyphSlot  slot  = face->glyph;
    201200
    202201
     
    205204    for ( nn = 0; nn < count; nn++ )
    206205    {
    207       error = Load_Glyph( slot, face->root.size, start+nn, flags );
     206      error = Load_Glyph( slot, face->size, start + nn, flags );
    208207      if ( error )
    209208        break;
    210209
    211210      advances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT )
    212                      ? slot->advance.y
    213                      : slot->advance.x;
     211                     ? slot->linearVertAdvance
     212                     : slot->linearHoriAdvance;
    214213    }
    215214
     
    372371    }
    373372
    374     *afont_info = *cff->font_info;
     373    if ( cff )
     374      *afont_info = *cff->font_info;
    375375
    376376  Fail:
     
    382382  {
    383383    (PS_GetFontInfoFunc)   cff_ps_get_font_info,
     384    (PS_GetFontExtraFunc)  NULL,
    384385    (PS_HasGlyphNamesFunc) cff_ps_has_glyph_names,
    385386    (PS_GetFontPrivateFunc)NULL         /* unsupported with CFF fonts */
     
    507508
    508509
     510  static FT_Error
     511  cff_get_is_cid( CFF_Face  face,
     512                  FT_Bool  *is_cid )
     513  {
     514    FT_Error  error = CFF_Err_Ok;
     515    CFF_Font  cff   = (CFF_Font)face->extra.data;
     516
     517
     518    *is_cid = 0;
     519
     520    if ( cff )
     521    {
     522      CFF_FontRecDict  dict = &cff->top_font.font_dict;
     523
     524
     525      if ( dict->cid_registry != 0xFFFFU )
     526        *is_cid = 1;
     527    }
     528
     529    return error;
     530  }
     531
     532
     533  static FT_Error
     534  cff_get_cid_from_glyph_index( CFF_Face  face,
     535                                FT_UInt   glyph_index,
     536                                FT_UInt  *cid )
     537  {
     538    FT_Error  error = CFF_Err_Ok;
     539    CFF_Font  cff;
     540
     541
     542    cff = (CFF_Font)face->extra.data;
     543
     544    if ( cff )
     545    {
     546      FT_UInt          c;
     547      CFF_FontRecDict  dict = &cff->top_font.font_dict;
     548
     549
     550      if ( dict->cid_registry == 0xFFFFU )
     551      {
     552        error = CFF_Err_Invalid_Argument;
     553        goto Fail;
     554      }
     555
     556      if ( glyph_index > cff->num_glyphs )
     557      {
     558        error = CFF_Err_Invalid_Argument;
     559        goto Fail;
     560      }
     561
     562      c = cff->charset.sids[glyph_index];
     563
     564      if ( cid )
     565        *cid = c;
     566    }
     567
     568  Fail:
     569    return error;
     570  }
     571
     572
    509573  static const FT_Service_CIDRec  cff_service_cid_info =
    510574  {
    511     (FT_CID_GetRegistryOrderingSupplementFunc)cff_get_ros
     575    (FT_CID_GetRegistryOrderingSupplementFunc)cff_get_ros,
     576    (FT_CID_GetIsInternallyCIDKeyedFunc)      cff_get_is_cid,
     577    (FT_CID_GetCIDFromGlyphIndexFunc)         cff_get_cid_from_glyph_index
    512578  };
    513579
Note: See TracChangeset for help on using the changeset viewer.