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/sfnt/ttsbit0.c

    r251 r269  
    66/*    This is a heap-optimized version.                                    */
    77/*                                                                         */
    8 /*  Copyright 2005, 2006, 2007, 2008 by                                    */
     8/*  Copyright 2005, 2006, 2007, 2008, 2009 by                              */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    4040
    4141
    42     static const FT_Frame_Field  tt_sbit_line_metrics_fields[] =
    43     {
    44 #undef  FT_STRUCTURE
    45 #define FT_STRUCTURE  TT_SBit_LineMetricsRec
    46 
    47       /* no FT_FRAME_START */
    48         FT_FRAME_CHAR( ascender ),
    49         FT_FRAME_CHAR( descender ),
    50         FT_FRAME_BYTE( max_width ),
    51 
    52         FT_FRAME_CHAR( caret_slope_numerator ),
    53         FT_FRAME_CHAR( caret_slope_denominator ),
    54         FT_FRAME_CHAR( caret_offset ),
    55 
    56         FT_FRAME_CHAR( min_origin_SB ),
    57         FT_FRAME_CHAR( min_advance_SB ),
    58         FT_FRAME_CHAR( max_before_BL ),
    59         FT_FRAME_CHAR( min_after_BL ),
    60         FT_FRAME_CHAR( pads[0] ),
    61         FT_FRAME_CHAR( pads[1] ),
    62       FT_FRAME_END
    63     };
    64 
    65     static const FT_Frame_Field  tt_strike_start_fields[] =
    66     {
    67 #undef  FT_STRUCTURE
    68 #define FT_STRUCTURE  TT_SBit_StrikeRec
    69 
    70       /* no FT_FRAME_START */
    71         FT_FRAME_ULONG( ranges_offset ),
    72         FT_FRAME_SKIP_LONG,
    73         FT_FRAME_ULONG( num_ranges ),
    74         FT_FRAME_ULONG( color_ref ),
    75       FT_FRAME_END
    76     };
    77 
    78     static const FT_Frame_Field  tt_strike_end_fields[] =
    79     {
    80       /* no FT_FRAME_START */
    81         FT_FRAME_USHORT( start_glyph ),
    82         FT_FRAME_USHORT( end_glyph ),
    83         FT_FRAME_BYTE  ( x_ppem ),
    84         FT_FRAME_BYTE  ( y_ppem ),
    85         FT_FRAME_BYTE  ( bit_depth ),
    86         FT_FRAME_CHAR  ( flags ),
    87       FT_FRAME_END
    88     };
    89 
    90 
    9142  FT_LOCAL_DEF( FT_Error )
    9243  tt_face_load_eblc( TT_Face    face,
    9344                     FT_Stream  stream )
    9445  {
    95     FT_Error   error = SFNT_Err_Ok;
    96     FT_Fixed   version;
    97     FT_ULong   num_strikes, table_size;
    98     FT_Byte*   p;
    99     FT_Byte*   p_limit;
    100     FT_UInt    count;
     46    FT_Error  error = SFNT_Err_Ok;
     47    FT_Fixed  version;
     48    FT_ULong  num_strikes, table_size;
     49    FT_Byte*  p;
     50    FT_Byte*  p_limit;
     51    FT_UInt   count;
    10152
    10253
     
    11263    if ( table_size < 8 )
    11364    {
    114       FT_ERROR(( "%s: table too short!\n", "tt_face_load_sbit_strikes" ));
     65      FT_ERROR(( "tt_face_load_sbit_strikes: table too short!\n" ));
    11566      error = SFNT_Err_Invalid_File_Format;
    11667      goto Exit;
     
    13081    if ( version != 0x00020000UL || num_strikes >= 0x10000UL )
    13182    {
    132       FT_ERROR(( "%s: invalid table version!\n",
    133                  "tt_face_load_sbit_strikes" ));
     83      FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version!\n" ));
    13484      error = SFNT_Err_Invalid_File_Format;
    13585      goto Fail;
     
    183133                               FT_Size_Metrics*  metrics )
    184134  {
    185     FT_Byte*         strike;
     135    FT_Byte*  strike;
    186136
    187137
     
    375325      goto Fail;
    376326
    377     if ( !decoder->metrics_loaded )
    378     {
    379       metrics->height       = p[0];
    380       metrics->width        = p[1];
    381       metrics->horiBearingX = (FT_Char)p[2];
    382       metrics->horiBearingY = (FT_Char)p[3];
    383       metrics->horiAdvance  = p[4];
    384     }
     327    metrics->height       = p[0];
     328    metrics->width        = p[1];
     329    metrics->horiBearingX = (FT_Char)p[2];
     330    metrics->horiBearingY = (FT_Char)p[3];
     331    metrics->horiAdvance  = p[4];
    385332
    386333    p += 5;
     
    390337        goto Fail;
    391338
    392       if ( !decoder->metrics_loaded )
    393       {
    394         metrics->vertBearingX = (FT_Char)p[0];
    395         metrics->vertBearingY = (FT_Char)p[1];
    396         metrics->vertAdvance  = p[2];
    397       }
     339      metrics->vertBearingX = (FT_Char)p[0];
     340      metrics->vertBearingY = (FT_Char)p[1];
     341      metrics->vertAdvance  = p[2];
    398342
    399343      p += 3;
     
    402346    decoder->metrics_loaded = 1;
    403347    *pp = p;
    404     return 0;
     348    return SFNT_Err_Ok;
    405349
    406350  Fail:
     
    508452          wval = (FT_UInt)( wval | ( *p++ & ( 0xFF00U >> w ) ) );
    509453
    510         /* all bits read and there are ( x_pos + w ) bits to be written */
     454        /* all bits read and there are `x_pos + w' bits to be written */
    511455
    512456        write[0] = (FT_Byte)( write[0] | ( wval >> x_pos ) );
     
    588532        w = ( width < 8 - x_pos ) ? width : 8 - x_pos;
    589533
    590         if ( nbits < w )
     534        if ( h == height )
     535        {
     536          rval  |= *p++;
     537          nbits += x_pos;
     538        }
     539        else if ( nbits < w )
    591540        {
    592541          rval  |= *p++;
     
    599548        }
    600549
    601         *write++ |= ( ( rval >> nbits ) & 0xFF ) & ~( 0xFF << w );
     550        *write++ |= ( ( rval >> nbits ) & 0xFF ) &
     551                    ( ~( 0xFF << w ) << ( 8 - w - x_pos ) );
    602552        rval    <<= 8;
    603553
     
    646596    FT_UInt   num_components, nn;
    647597
     598    FT_Char  horiBearingX = decoder->metrics->horiBearingX;
     599    FT_Char  horiBearingY = decoder->metrics->horiBearingY;
     600    FT_Byte  horiAdvance  = decoder->metrics->horiAdvance;
     601    FT_Char  vertBearingX = decoder->metrics->vertBearingX;
     602    FT_Char  vertBearingY = decoder->metrics->vertBearingY;
     603    FT_Byte  vertAdvance  = decoder->metrics->vertAdvance;
     604
    648605
    649606    if ( p + 2 > limit )
     
    653610    if ( p + 4 * num_components > limit )
    654611      goto Fail;
     612
     613    if ( !decoder->bitmap_allocated )
     614    {
     615      error = tt_sbit_decoder_alloc_bitmap( decoder );
     616      if ( error )
     617        goto Exit;
     618    }
    655619
    656620    for ( nn = 0; nn < num_components; nn++ )
     
    667631        break;
    668632    }
     633
     634    decoder->metrics->horiBearingX = horiBearingX;
     635    decoder->metrics->horiBearingY = horiBearingY;
     636    decoder->metrics->horiAdvance  = horiAdvance;
     637    decoder->metrics->vertBearingX = vertBearingX;
     638    decoder->metrics->vertBearingY = vertBearingY;
     639    decoder->metrics->vertAdvance  = vertAdvance;
     640    decoder->metrics->width        = (FT_UInt)decoder->bitmap->width;
     641    decoder->metrics->height       = (FT_UInt)decoder->bitmap->rows;
    669642
    670643  Exit:
Note: See TracChangeset for help on using the changeset viewer.