Changeset 269


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

Location:
trunk/poppler/freetype2
Files:
1 added
49 edited

Legend:

Unmodified
Added
Removed
  • trunk/poppler/freetype2/devel/ftoption.h

    r262 r269  
    358358  /*   them for certain configurations only.                               */
    359359  /*                                                                       */
    360 //#define FT_DEBUG_LEVEL_ERROR
    361 //#define FT_DEBUG_LEVEL_TRACE
     360#define FT_DEBUG_LEVEL_ERROR
     361#define FT_DEBUG_LEVEL_TRACE
    362362
    363363
     
    377377  /*   it for certain configurations only.                                 */
    378378  /*                                                                       */
    379 //#define FT_DEBUG_MEMORY
     379#define FT_DEBUG_MEMORY
    380380
    381381
  • trunk/poppler/freetype2/include/freetype/config/ftconfig.h

    r262 r269  
    264264  /* Watcom doesn't provide 64-bit data types */
    265265#define FT_LONG64
    266 #define FT_INT64  long long int
     266#define FT_INT64  __int64
    267267
    268268#elif defined( __MWERKS__ )    /* Metrowerks CodeWarrior */
     
    360360      "shll  $16, %%edx\n"
    361361      "addl  %%edx, %%eax\n"
    362       : "=a"(result), "+d"(b)
    363       : "a"(a)
    364       : "%ecx" );
     362      : "=a"(result), "=d"(b)
     363      : "a"(a), "d"(b)
     364      : "%ecx", "cc" );
    365365    return result;
    366366  }
  • trunk/poppler/freetype2/include/freetype/freetype.h

    r262 r269  
    2626
    2727
    28   /*************************************************************************/
    29   /*                                                                       */
    30   /* The `raster' component duplicates some of the declarations in         */
    31   /* freetype.h for stand-alone use if _FREETYPE_ isn't defined.           */
    32   /*                                                                       */
    33   /*************************************************************************/
    34 
    35 
    3628#ifndef __FREETYPE_H__
    3729#define __FREETYPE_H__
     
    396388  /*                                                                       */
    397389  /* <Also>                                                                */
    398   /*    The @FT_FaceRec details the publicly accessible fields of a given */
    399   /*    face object.                                                       */
     390  /*    See @FT_FaceRec for the publicly accessible fields of a given face */
     391  /*    object.                                                            */
    400392  /*                                                                       */
    401393  typedef struct FT_FaceRec_*  FT_Face;
     
    426418  /*                                                                       */
    427419  /* <Also>                                                                */
    428   /*    The @FT_SizeRec structure details the publicly accessible fields  */
    429   /*    of a given size object.                                            */
     420  /*    See @FT_SizeRec for the publicly accessible fields of a given size */
     421  /*    object.                                                            */
    430422  /*                                                                       */
    431423  typedef struct FT_SizeRec_*  FT_Size;
     
    439431  /* <Description>                                                         */
    440432  /*    A handle to a given `glyph slot'.  A slot is a container where it  */
    441   /*    is possible to load any one of the glyphs contained in its parent  */
     433  /*    is possible to load any of the glyphs contained in its parent      */
    442434  /*    face.                                                              */
    443435  /*                                                                       */
     
    448440  /*                                                                       */
    449441  /* <Also>                                                                */
    450   /*    @FT_GlyphSlotRec details the publicly accessible glyph fields.     */
     442  /*    See @FT_GlyphSlotRec for the publicly accessible glyph fields.     */
    451443  /*                                                                       */
    452444  typedef struct FT_GlyphSlotRec_*  FT_GlyphSlot;
     
    479471  /*                                                                       */
    480472  /* <Also>                                                                */
    481   /*    The @FT_CharMapRec details the publicly accessible fields of a     */
    482   /*    given character map.                                               */
     473  /*    See @FT_CharMapRec for the publicly accessible fields of a given   */
     474  /*    character map.                                                     */
    483475  /*                                                                       */
    484476  typedef struct FT_CharMapRec_*  FT_CharMap;
     
    536528  /*                                                                       */
    537529  /* <Values>                                                              */
    538   /*   FT_ENCODING_NONE ::                                                 */
    539   /*     The encoding value~0 is reserved.                                 */
    540   /*                                                                       */
    541   /*   FT_ENCODING_UNICODE ::                                              */
    542   /*     Corresponds to the Unicode character set.  This value covers      */
    543   /*     all versions of the Unicode repertoire, including ASCII and       */
    544   /*     Latin-1.  Most fonts include a Unicode charmap, but not all       */
    545   /*     of them.                                                          */
    546   /*                                                                       */
    547   /*   FT_ENCODING_MS_SYMBOL ::                                            */
    548   /*     Corresponds to the Microsoft Symbol encoding, used to encode      */
    549   /*     mathematical symbols in the 32..255 character code range.  For    */
    550   /*     more information, see `http://www.ceviz.net/symbol.htm'.          */
    551   /*                                                                       */
    552   /*   FT_ENCODING_SJIS ::                                                 */
    553   /*     Corresponds to Japanese SJIS encoding.  More info at              */
    554   /*     at `http://langsupport.japanreference.com/encoding.shtml'.        */
    555   /*     See note on multi-byte encodings below.                           */
    556   /*                                                                       */
    557   /*   FT_ENCODING_GB2312 ::                                               */
    558   /*     Corresponds to an encoding system for Simplified Chinese as used */
    559   /*     used in mainland China.                                           */
    560   /*                                                                       */
    561   /*   FT_ENCODING_BIG5 ::                                                 */
    562   /*     Corresponds to an encoding system for Traditional Chinese as used */
    563   /*     in Taiwan and Hong Kong.                                          */
    564   /*                                                                       */
    565   /*   FT_ENCODING_WANSUNG ::                                              */
    566   /*     Corresponds to the Korean encoding system known as Wansung.       */
    567   /*     For more information see                                          */
    568   /*     `http://www.microsoft.com/typography/unicode/949.txt'.            */
    569   /*                                                                       */
    570   /*   FT_ENCODING_JOHAB ::                                                */
    571   /*     The Korean standard character set (KS~C 5601-1992), which         */
    572   /*     corresponds to MS Windows code page 1361.  This character set     */
    573   /*     includes all possible Hangeul character combinations.             */
    574   /*                                                                       */
    575   /*   FT_ENCODING_ADOBE_LATIN_1 ::                                        */
    576   /*     Corresponds to a Latin-1 encoding as defined in a Type~1          */
    577   /*     PostScript font.  It is limited to 256 character codes.           */
    578   /*                                                                       */
    579   /*   FT_ENCODING_ADOBE_STANDARD ::                                       */
    580   /*     Corresponds to the Adobe Standard encoding, as found in Type~1,   */
    581   /*     CFF, and OpenType/CFF fonts.  It is limited to 256 character      */
    582   /*     codes.                                                            */
    583   /*                                                                       */
    584   /*   FT_ENCODING_ADOBE_EXPERT ::                                         */
    585   /*     Corresponds to the Adobe Expert encoding, as found in Type~1,     */
    586   /*     CFF, and OpenType/CFF fonts.  It is limited to 256 character      */
    587   /*     codes.                                                            */
    588   /*                                                                       */
    589   /*   FT_ENCODING_ADOBE_CUSTOM ::                                         */
    590   /*     Corresponds to a custom encoding, as found in Type~1, CFF, and    */
    591   /*     OpenType/CFF fonts.  It is limited to 256 character codes.        */
    592   /*                                                                       */
    593   /*   FT_ENCODING_APPLE_ROMAN ::                                          */
    594   /*     Corresponds to the 8-bit Apple roman encoding.  Many TrueType and */
    595   /*     OpenType fonts contain a charmap for this encoding, since older   */
    596   /*     versions of Mac OS are able to use it.                            */
    597   /*                                                                       */
    598   /*   FT_ENCODING_OLD_LATIN_2 ::                                          */
    599   /*     This value is deprecated and was never used nor reported by       */
    600   /*     FreeType.  Don't use or test for it.                              */
    601   /*                                                                       */
    602   /*   FT_ENCODING_MS_SJIS ::                                              */
    603   /*     Same as FT_ENCODING_SJIS.  Deprecated.                            */
    604   /*                                                                       */
    605   /*   FT_ENCODING_MS_GB2312 ::                                            */
    606   /*     Same as FT_ENCODING_GB2312.  Deprecated.                          */
    607   /*                                                                       */
    608   /*   FT_ENCODING_MS_BIG5 ::                                              */
    609   /*     Same as FT_ENCODING_BIG5.  Deprecated.                            */
    610   /*                                                                       */
    611   /*   FT_ENCODING_MS_WANSUNG ::                                           */
    612   /*     Same as FT_ENCODING_WANSUNG.  Deprecated.                         */
    613   /*                                                                       */
    614   /*   FT_ENCODING_MS_JOHAB ::                                             */
    615   /*     Same as FT_ENCODING_JOHAB.  Deprecated.                           */
    616   /*                                                                       */
    617   /* <Note>                                                                */
    618   /*   By default, FreeType automatically synthesizes a Unicode charmap    */
    619   /*   for PostScript fonts, using their glyph names dictionaries.         */
    620   /*   However, it also reports the encodings defined explicitly in the    */
    621   /*   font file, for the cases when they are needed, with the Adobe       */
    622   /*   values as well.                                                     */
    623   /*                                                                       */
    624   /*   FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap   */
    625   /*   is neither Unicode nor ISO-8859-1 (otherwise it is set to           */
    626   /*   FT_ENCODING_UNICODE).  Use @FT_Get_BDF_Charset_ID to find out which */
    627   /*   encoding is really present.  If, for example, the `cs_registry'     */
    628   /*   field is `KOI8' and the `cs_encoding' field is `R', the font is     */
    629   /*   encoded in KOI8-R.                                                  */
    630   /*                                                                       */
    631   /*   FT_ENCODING_NONE is always set (with a single exception) by the     */
    632   /*   winfonts driver.  Use @FT_Get_WinFNT_Header and examine the         */
    633   /*   `charset' field of the @FT_WinFNT_HeaderRec structure to find out   */
    634   /*   which encoding is really present.  For example,                     */
    635   /*   @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for        */
    636   /*   Russian).                                                           */
    637   /*                                                                       */
    638   /*   FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */
    639   /*   and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to   */
    640   /*   FT_ENCODING_APPLE_ROMAN).                                           */
    641   /*                                                                       */
    642   /*   If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function        */
    643   /*   @FT_Get_CMap_Language_ID  to query the Mac language ID which may be */
    644   /*   needed to be able to distinguish Apple encoding variants.  See      */
    645   /*                                                                       */
    646   /*     http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT   */
    647   /*                                                                       */
    648   /*   to get an idea how to do that.  Basically, if the language ID is~0, */
    649   /*   don't use it, otherwise subtract 1 from the language ID.  Then      */
    650   /*   examine `encoding_id'.  If, for example, `encoding_id' is           */
    651   /*   @TT_MAC_ID_ROMAN and the language ID (minus~1) is                   */
    652   /*   `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman.         */
    653   /*   @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi        */
    654   /*   variant the Arabic encoding.                                        */
     530  /*    FT_ENCODING_NONE ::                                                */
     531  /*      The encoding value~0 is reserved.                                */
     532  /*                                                                       */
     533  /*    FT_ENCODING_UNICODE ::                                             */
     534  /*      Corresponds to the Unicode character set.  This value covers     */
     535  /*      all versions of the Unicode repertoire, including ASCII and      */
     536  /*      Latin-1.  Most fonts include a Unicode charmap, but not all      */
     537  /*      of them.                                                         */
     538  /*                                                                       */
     539  /*    FT_ENCODING_MS_SYMBOL ::                                           */
     540  /*      Corresponds to the Microsoft Symbol encoding, used to encode     */
     541  /*      mathematical symbols in the 32..255 character code range.  For   */
     542  /*      more information, see `http://www.ceviz.net/symbol.htm'.         */
     543  /*                                                                       */
     544  /*    FT_ENCODING_SJIS ::                                                */
     545  /*      Corresponds to Japanese SJIS encoding.  More info at             */
     546  /*      at `http://langsupport.japanreference.com/encoding.shtml'.       */
     547  /*      See note on multi-byte encodings below.                          */
     548  /*                                                                       */
     549  /*    FT_ENCODING_GB2312 ::                                              */
     550  /*      Corresponds to an encoding system for Simplified Chinese as used */
     551  /*      used in mainland China.                                          */
     552  /*                                                                       */
     553  /*    FT_ENCODING_BIG5 ::                                                */
     554  /*      Corresponds to an encoding system for Traditional Chinese as    */
     555  /*      used in Taiwan and Hong Kong.                                    */
     556  /*                                                                       */
     557  /*    FT_ENCODING_WANSUNG ::                                             */
     558  /*      Corresponds to the Korean encoding system known as Wansung.      */
     559  /*      For more information see                                         */
     560  /*      `http://www.microsoft.com/typography/unicode/949.txt'.           */
     561  /*                                                                       */
     562  /*    FT_ENCODING_JOHAB ::                                               */
     563  /*      The Korean standard character set (KS~C 5601-1992), which        */
     564  /*      corresponds to MS Windows code page 1361.  This character set    */
     565  /*      includes all possible Hangeul character combinations.            */
     566  /*                                                                       */
     567  /*    FT_ENCODING_ADOBE_LATIN_1 ::                                       */
     568  /*      Corresponds to a Latin-1 encoding as defined in a Type~1         */
     569  /*      PostScript font.  It is limited to 256 character codes.          */
     570  /*                                                                       */
     571  /*    FT_ENCODING_ADOBE_STANDARD ::                                      */
     572  /*      Corresponds to the Adobe Standard encoding, as found in Type~1,  */
     573  /*      CFF, and OpenType/CFF fonts.  It is limited to 256 character     */
     574  /*      codes.                                                           */
     575  /*                                                                       */
     576  /*    FT_ENCODING_ADOBE_EXPERT ::                                        */
     577  /*      Corresponds to the Adobe Expert encoding, as found in Type~1,    */
     578  /*      CFF, and OpenType/CFF fonts.  It is limited to 256 character     */
     579  /*      codes.                                                           */
     580  /*                                                                       */
     581  /*    FT_ENCODING_ADOBE_CUSTOM ::                                        */
     582  /*      Corresponds to a custom encoding, as found in Type~1, CFF, and   */
     583  /*      OpenType/CFF fonts.  It is limited to 256 character codes.       */
     584  /*                                                                       */
     585  /*    FT_ENCODING_APPLE_ROMAN ::                                         */
     586  /*      Corresponds to the 8-bit Apple roman encoding.  Many TrueType    */
     587  /*      and OpenType fonts contain a charmap for this encoding, since    */
     588  /*      older versions of Mac OS are able to use it.                     */
     589  /*                                                                       */
     590  /*    FT_ENCODING_OLD_LATIN_2 ::                                         */
     591  /*      This value is deprecated and was never used nor reported by      */
     592  /*      FreeType.  Don't use or test for it.                             */
     593  /*                                                                       */
     594  /*    FT_ENCODING_MS_SJIS ::                                             */
     595  /*      Same as FT_ENCODING_SJIS.  Deprecated.                           */
     596  /*                                                                       */
     597  /*    FT_ENCODING_MS_GB2312 ::                                           */
     598  /*      Same as FT_ENCODING_GB2312.  Deprecated.                         */
     599  /*                                                                       */
     600  /*    FT_ENCODING_MS_BIG5 ::                                             */
     601  /*      Same as FT_ENCODING_BIG5.  Deprecated.                           */
     602  /*                                                                       */
     603  /*    FT_ENCODING_MS_WANSUNG ::                                          */
     604  /*      Same as FT_ENCODING_WANSUNG.  Deprecated.                        */
     605  /*                                                                       */
     606  /*    FT_ENCODING_MS_JOHAB ::                                            */
     607  /*      Same as FT_ENCODING_JOHAB.  Deprecated.                          */
     608  /*                                                                       */
     609  /* <Note>                                                                */
     610  /*    By default, FreeType automatically synthesizes a Unicode charmap   */
     611  /*    for PostScript fonts, using their glyph names dictionaries.        */
     612  /*    However, it also reports the encodings defined explicitly in the   */
     613  /*    font file, for the cases when they are needed, with the Adobe      */
     614  /*    values as well.                                                    */
     615  /*                                                                       */
     616  /*    FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap  */
     617  /*    is neither Unicode nor ISO-8859-1 (otherwise it is set to          */
     618  /*    FT_ENCODING_UNICODE).  Use @FT_Get_BDF_Charset_ID to find out      */
     619  /*    which encoding is really present.  If, for example, the            */
     620  /*    `cs_registry' field is `KOI8' and the `cs_encoding' field is `R',  */
     621  /*    the font is encoded in KOI8-R.                                     */
     622  /*                                                                       */
     623  /*    FT_ENCODING_NONE is always set (with a single exception) by the    */
     624  /*    winfonts driver.  Use @FT_Get_WinFNT_Header and examine the        */
     625  /*    `charset' field of the @FT_WinFNT_HeaderRec structure to find out  */
     626  /*    which encoding is really present.  For example,                    */
     627  /*    @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for       */
     628  /*    Russian).                                                          */
     629  /*                                                                       */
     630  /*    FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */
     631  /*    and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to  */
     632  /*    FT_ENCODING_APPLE_ROMAN).                                          */
     633  /*                                                                       */
     634  /*    If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function       */
     635  /*    @FT_Get_CMap_Language_ID  to query the Mac language ID which may  */
     636  /*    be needed to be able to distinguish Apple encoding variants.  See  */
     637  /*                                                                       */
     638  /*      http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT  */
     639  /*                                                                       */
     640  /*    to get an idea how to do that.  Basically, if the language ID      */
     641  /*    is~0, don't use it, otherwise subtract 1 from the language ID.     */
     642  /*    Then examine `encoding_id'.  If, for example, `encoding_id' is     */
     643  /*    @TT_MAC_ID_ROMAN and the language ID (minus~1) is                  */
     644  /*    `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman.        */
     645  /*    @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi       */
     646  /*    variant the Arabic encoding.                                       */
    655647  /*                                                                       */
    656648  typedef enum  FT_Encoding_
     
    908900  /*                                                                       */
    909901  /* <Note>                                                                */
    910   /*   Fields may be changed after a call to @FT_Attach_File or            */
    911   /*   @FT_Attach_Stream.                                                  */
     902  /*    Fields may be changed after a call to @FT_Attach_File or           */
     903  /*    @FT_Attach_Stream.                                                 */
    912904  /*                                                                       */
    913905  typedef struct  FT_FaceRec_
     
    14861478  /*                                                                       */
    14871479  /*    advance           :: This is the transformed advance width for the */
    1488   /*                         glyph.                                        */
     1480  /*                         glyph (in 26.6 fractional pixel format).      */
    14891481  /*                                                                       */
    14901482  /*    format            :: This field indicates the format of the image  */
     
    16931685  /*                                                                       */
    16941686  /* <Values>                                                              */
    1695   /*    FT_OPEN_MEMORY      :: This is a memory-based stream.              */
    1696   /*                                                                       */
    1697   /*    FT_OPEN_STREAM      :: Copy the stream from the `stream' field.    */
    1698   /*                                                                       */
    1699   /*    FT_OPEN_PATHNAME    :: Create a new input stream from a C~path     */
    1700   /*                           name.                                       */
    1701   /*                                                                       */
    1702   /*    FT_OPEN_DRIVER      :: Use the `driver' field.                     */
    1703   /*                                                                       */
    1704   /*    FT_OPEN_PARAMS      :: Use the `num_params' and `params' fields.   */
    1705   /*                                                                       */
    1706   /*    ft_open_memory      :: Deprecated; use @FT_OPEN_MEMORY instead.    */
    1707   /*                                                                       */
    1708   /*    ft_open_stream      :: Deprecated; use @FT_OPEN_STREAM instead.    */
    1709   /*                                                                       */
    1710   /*    ft_open_pathname    :: Deprecated; use @FT_OPEN_PATHNAME instead.  */
    1711   /*                                                                       */
    1712   /*    ft_open_driver      :: Deprecated; use @FT_OPEN_DRIVER instead.    */
    1713   /*                                                                       */
    1714   /*    ft_open_params      :: Deprecated; use @FT_OPEN_PARAMS instead.    */
     1687  /*    FT_OPEN_MEMORY   :: This is a memory-based stream.                 */
     1688  /*                                                                       */
     1689  /*    FT_OPEN_STREAM   :: Copy the stream from the `stream' field.       */
     1690  /*                                                                       */
     1691  /*    FT_OPEN_PATHNAME :: Create a new input stream from a C~path        */
     1692  /*                        name.                                          */
     1693  /*                                                                       */
     1694  /*    FT_OPEN_DRIVER   :: Use the `driver' field.                        */
     1695  /*                                                                       */
     1696  /*    FT_OPEN_PARAMS   :: Use the `num_params' and `params' fields.      */
     1697  /*                                                                       */
     1698  /*    ft_open_memory   :: Deprecated; use @FT_OPEN_MEMORY instead.       */
     1699  /*                                                                       */
     1700  /*    ft_open_stream   :: Deprecated; use @FT_OPEN_STREAM instead.       */
     1701  /*                                                                       */
     1702  /*    ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead.     */
     1703  /*                                                                       */
     1704  /*    ft_open_driver   :: Deprecated; use @FT_OPEN_DRIVER instead.       */
     1705  /*                                                                       */
     1706  /*    ft_open_params   :: Deprecated; use @FT_OPEN_PARAMS instead.       */
    17151707  /*                                                                       */
    17161708  /* <Note>                                                                */
     
    17371729  /*                                                                       */
    17381730  /* <Description>                                                         */
    1739   /*    A simple structure used to pass more or less generic parameters   */
    1740   /*    to @FT_Open_Face.                                                  */
     1731  /*    A simple structure used to pass more or less generic parameters to */
     1732  /*    @FT_Open_Face.                                                     */
    17411733  /*                                                                       */
    17421734  /* <Fields>                                                              */
     
    21292121  /*                                                                       */
    21302122  /* <Note>                                                                */
    2131   /*    If `width' is zero, then the horizontal scaling value is set     */
    2132   /*    equal to the vertical scaling value, and vice versa.               */
     2123  /*    If `width' is zero, then the horizontal scaling value is set equal */
     2124  /*    to the vertical scaling value, and vice versa.                     */
    21332125  /*                                                                       */
    21342126  typedef struct  FT_Size_RequestRec_
     
    24572449   *   Besides deciding which hinter to use, you can also decide which
    24582450   *   hinting algorithm to use.  See @FT_LOAD_TARGET_XXX for details.
     2451   *
    24592452   */
    24602453#define FT_LOAD_DEFAULT                      0x0
     
    25432536   *       FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD );
    25442537   *     }
     2538   *
    25452539   */
    2546 
    2547 #define FT_LOAD_TARGET_( x )      ( (FT_Int32)( (x) & 15 ) << 16 )
    2548 
    2549 #define FT_LOAD_TARGET_NORMAL     FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL )
    2550 #define FT_LOAD_TARGET_LIGHT      FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT  )
    2551 #define FT_LOAD_TARGET_MONO       FT_LOAD_TARGET_( FT_RENDER_MODE_MONO   )
    2552 #define FT_LOAD_TARGET_LCD        FT_LOAD_TARGET_( FT_RENDER_MODE_LCD    )
    2553 #define FT_LOAD_TARGET_LCD_V      FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V  )
     2540#define FT_LOAD_TARGET_( x )   ( (FT_Int32)( (x) & 15 ) << 16 )
     2541
     2542#define FT_LOAD_TARGET_NORMAL  FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL )
     2543#define FT_LOAD_TARGET_LIGHT   FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT  )
     2544#define FT_LOAD_TARGET_MONO    FT_LOAD_TARGET_( FT_RENDER_MODE_MONO   )
     2545#define FT_LOAD_TARGET_LCD     FT_LOAD_TARGET_( FT_RENDER_MODE_LCD    )
     2546#define FT_LOAD_TARGET_LCD_V   FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V  )
    25542547
    25552548
     
    25642557   *
    25652558   */
    2566 
    25672559#define FT_LOAD_TARGET_MODE( x )  ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) )
    25682560
     
    26122604  /*    conversion performed on the outline.                               */
    26132605  /*                                                                       */
    2614   /*    For bitmap fonts the `bitmap->pixel_mode' field in the             */
    2615   /*    @FT_GlyphSlotRec structure gives the format of the returned        */
    2616   /*    bitmap.                                                            */
     2606  /*    For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode'     */
     2607  /*    field in the @FT_GlyphSlotRec structure gives the format of the    */
     2608  /*    returned bitmap.                                                   */
    26172609  /*                                                                       */
    26182610  /*    All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity.   */
     
    26352627  /*    FT_RENDER_MODE_LCD ::                                              */
    26362628  /*      This mode corresponds to horizontal RGB and BGR sub-pixel        */
    2637   /*      displays, like LCD-screens.  It produces 8-bit bitmaps that are  */
     2629  /*      displays like LCD screens.  It produces 8-bit bitmaps that are   */
    26382630  /*      3~times the width of the original glyph outline in pixels, and   */
    26392631  /*      which use the @FT_PIXEL_MODE_LCD mode.                           */
     
    26462638  /*                                                                       */
    26472639  /* <Note>                                                                */
    2648   /*   The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be  */
    2649   /*   filtered to reduce color-fringes by using @FT_Library_SetLcdFilter  */
    2650   /*   (not active in the default builds).  It is up to the caller to      */
    2651   /*   either call @FT_Library_SetLcdFilter (if available) or do the       */
    2652   /*   filtering itself.                                                   */
     2640  /*    The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */
     2641  /*    filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */
     2642  /*    (not active in the default builds).  It is up to the caller to     */
     2643  /*    either call @FT_Library_SetLcdFilter (if available) or do the      */
     2644  /*    filtering itself.                                                  */
     2645  /*                                                                       */
     2646  /*    The selected render mode only affects vector glyphs of a font.     */
     2647  /*    Embedded bitmaps often have a different pixel mode like            */
     2648  /*    @FT_PIXEL_MODE_MONO.  You can use @FT_Bitmap_Convert to transform  */
     2649  /*    them into 8-bit pixmaps.                                           */
    26532650  /*                                                                       */
    26542651  typedef enum  FT_Render_Mode_
     
    26752672  /*                                                                       */
    26762673  /* <Values>                                                              */
    2677   /*   ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL                 */
    2678   /*   ft_render_mode_mono   :: see @FT_RENDER_MODE_MONO                   */
     2674  /*    ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL                */
     2675  /*    ft_render_mode_mono   :: see @FT_RENDER_MODE_MONO                  */
    26792676  /*                                                                       */
    26802677#define ft_render_mode_normal  FT_RENDER_MODE_NORMAL
     
    28232820  /*                                                                       */
    28242821  /* <Input>                                                               */
    2825   /*    face        :: A handle to a source face object.                   */
    2826   /*                                                                       */
    2827   /*    point_size  :: The point size in 16.16 fractional points.          */
    2828   /*                                                                       */
    2829   /*    degree      :: The degree of tightness.                            */
     2822  /*    face       :: A handle to a source face object.                    */
     2823  /*                                                                       */
     2824  /*    point_size :: The point size in 16.16 fractional points.           */
     2825  /*                                                                       */
     2826  /*    degree     :: The degree of tightness.                             */
    28302827  /*                                                                       */
    28312828  /* <Output>                                                              */
    2832   /*    akerning    :: The kerning in 16.16 fractional points.             */
     2829  /*    akerning   :: The kerning in 16.16 fractional points.              */
    28332830  /*                                                                       */
    28342831  /* <Return>                                                              */
     
    30613058  /*    Note that `*agindex' is set to~0 if the charmap is empty.  The     */
    30623059  /*    result itself can be~0 in two cases: if the charmap is empty or    */
    3063   /*    when the value~0 is the first valid character code.                */
     3060  /*    if the value~0 is the first valid character code.                  */
    30643061  /*                                                                       */
    30653062  FT_EXPORT( FT_ULong )
     
    30833080  /*                                                                       */
    30843081  /* <Output>                                                              */
    3085   /*    agindex   :: Glyph index of first character code.  0~if charmap    */
     3082  /*    agindex   :: Glyph index of next character code.  0~if charmap     */
    30863083  /*                 is empty.                                             */
    30873084  /*                                                                       */
     
    31603157   * @description:
    31613158   *   Retrieve a description of a given subglyph.  Only use it if
    3162    *   `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE, or an error is
    3163    *   returned.
     3159   *   `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is
     3160   *   returned otherwise.
    31643161   *
    31653162   * @input:
     
    31683165   *
    31693166   *   sub_index ::
    3170    *     The index of subglyph.  Must be less than `glyph->num_subglyphs'.
     3167   *     The index of the subglyph.  Must be less than
     3168   *     `glyph->num_subglyphs'.
    31713169   *
    31723170   * @output:
     
    37403738  /*************************************************************************
    37413739   *
    3742    *  @enum:
    3743    *    FREETYPE_XXX
    3744    *
    3745    *  @description:
    3746    *    These three macros identify the FreeType source code version.
    3747    *    Use @FT_Library_Version to access them at runtime.
    3748    *
    3749    *  @values:
    3750    *    FREETYPE_MAJOR :: The major version number.
    3751    *    FREETYPE_MINOR :: The minor version number.
    3752    *    FREETYPE_PATCH :: The patch level.
    3753    *
    3754    *  @note:
    3755    *    The version number of FreeType if built as a dynamic link library
    3756    *    with the `libtool' package is _not_ controlled by these three
    3757    *    macros.
     3740   * @enum:
     3741   *   FREETYPE_XXX
     3742   *
     3743   * @description:
     3744   *   These three macros identify the FreeType source code version.
     3745   *   Use @FT_Library_Version to access them at runtime.
     3746   *
     3747   * @values:
     3748   *   FREETYPE_MAJOR :: The major version number.
     3749   *   FREETYPE_MINOR :: The minor version number.
     3750   *   FREETYPE_PATCH :: The patch level.
     3751   *
     3752   * @note:
     3753   *   The version number of FreeType if built as a dynamic link library
     3754   *   with the `libtool' package is _not_ controlled by these three
     3755   *   macros.
     3756   *
    37583757   */
    37593758#define FREETYPE_MAJOR  2
    37603759#define FREETYPE_MINOR  3
    3761 #define FREETYPE_PATCH  8
     3760#define FREETYPE_PATCH  9
    37623761
    37633762
  • trunk/poppler/freetype2/include/freetype/ftcid.h

    r251 r269  
    55/*    FreeType API for accessing CID font information (specification).     */
    66/*                                                                         */
    7 /*  Copyright 2007 by Dereg Clegg.                                         */
     7/*  Copyright 2007, 2009 by Dereg Clegg, Michael Toftdal.                  */
    88/*                                                                         */
    99/*  This file is part of the FreeType project, and may only be used,       */
     
    8989                                           FT_Int       *supplement);
    9090
     91
     92  /**********************************************************************
     93   *
     94   * @function:
     95   *    FT_Get_CID_Is_Internally_CID_Keyed
     96   *
     97   * @description:
     98   *    Retrieve the type of the input face, CID keyed or not.  In
     99   *    constrast to the @FT_IS_CID_KEYED macro this function returns
     100   *    successfully also for CID-keyed fonts in an SNFT wrapper.
     101   *
     102   * @input:
     103   *    face ::
     104   *       A handle to the input face.
     105   *
     106   * @output:
     107   *    is_cid ::
     108   *       The type of the face as an @FT_Bool.
     109   *
     110   * @return:
     111   *    FreeType error code.  0~means success.
     112   *
     113   * @note:
     114   *    This function only works with CID faces and OpenType fonts,
     115   *    returning an error otherwise.
     116   *
     117   * @since:
     118   *    2.3.9
     119   */
     120  FT_EXPORT( FT_Error )
     121  FT_Get_CID_Is_Internally_CID_Keyed( FT_Face   face,
     122                                      FT_Bool  *is_cid );
     123
     124
     125  /**********************************************************************
     126   *
     127   * @function:
     128   *    FT_Get_CID_From_Glyph_Index
     129   *
     130   * @description:
     131   *    Retrieve the CID of the input glyph index.
     132   *
     133   * @input:
     134   *    face ::
     135   *       A handle to the input face.
     136   *
     137   *    glyph_index ::
     138   *       The input glyph index.
     139   *
     140   * @output:
     141   *    cid ::
     142   *       The CID as an @FT_UInt.
     143   *
     144   * @return:
     145   *    FreeType error code.  0~means success.
     146   *
     147   * @note:
     148   *    This function only works with CID faces and OpenType fonts,
     149   *    returning an error otherwise.
     150   *
     151   * @since:
     152   *    2.3.9
     153   */
     154  FT_EXPORT( FT_Error )
     155  FT_Get_CID_From_Glyph_Index( FT_Face   face,
     156                               FT_UInt   glyph_index,
     157                               FT_UInt  *cid );
     158
    91159 /* */
    92160
  • trunk/poppler/freetype2/include/freetype/ftglyph.h

    r262 r269  
    55/*    FreeType convenience functions to handle glyphs (specification).     */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2006, 2008 by                         */
     7/*  Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by                   */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    195195  /*                                                                       */
    196196  /* <Note>                                                                */
    197   /*    You can typecast a @FT_Glyph to @FT_OutlineGlyph if you have       */
     197  /*    You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have      */
    198198  /*    `glyph->format == FT_GLYPH_FORMAT_OUTLINE'.  This lets you access  */
    199199  /*    the outline's content easily.                                      */
  • trunk/poppler/freetype2/include/freetype/ftmm.h

    r251 r269  
    55/*    FreeType Multiple Master font interface (specification).             */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2003, 2004, 2006 by                               */
     7/*  Copyright 1996-2001, 2003, 2004, 2006, 2009 by                         */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    258258  /*                                                                       */
    259259  /* <Output>                                                              */
    260   /*    amaster :: The Multiple Masters descriptor.                        */
     260  /*    amaster :: The Multiple Masters/GX var descriptor.                 */
    261261  /*               Allocates a data structure, which the user must free    */
    262262  /*               (a single call to FT_FREE will do it).                  */
  • trunk/poppler/freetype2/include/freetype/ftoutln.h

    r262 r269  
    66/*    most scalable font formats (specification).                          */
    77/*                                                                         */
    8 /*  Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008 by             */
     8/*  Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 by       */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    131131  /*                                                                       */
    132132  /* <Output>                                                              */
    133   /*    anoutline   :: A handle to the new outline.  NULL in case of       */
    134   /*                   error.                                              */
     133  /*    anoutline   :: A handle to the new outline.                        */
    135134  /*                                                                       */
    136135  /* <Return>                                                              */
     
    363362  /*                                                                       */
    364363  /* <Note>                                                                */
    365   /*    This functions toggles the bit flag @FT_OUTLINE_REVERSE_FILL in    */
     364  /*    This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in     */
    366365  /*    the outline's `flags' field.                                       */
    367366  /*                                                                       */
     
    417416  /* <Description>                                                         */
    418417  /*    Render an outline within a bitmap using the current scan-convert.  */
    419   /*    This functions uses an @FT_Raster_Params structure as an argument, */
     418  /*    This function uses an @FT_Raster_Params structure as an argument, */
    420419  /*    allowing advanced features like direct composition, translucency,  */
    421420  /*    etc.                                                               */
  • trunk/poppler/freetype2/include/freetype/ftpfr.h

    r262 r269  
    55/*    FreeType API for accessing PFR-specific data (specification only).   */
    66/*                                                                         */
    7 /*  Copyright 2002, 2003, 2004, 2006, 2008 by                              */
     7/*  Copyright 2002, 2003, 2004, 2006, 2008, 2009 by                        */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    6363  * @output:
    6464  *    aoutline_resolution ::
    65   *      Outline resolution.  This is equivalent to `face->units_per_EM'.
    66   *      Optional (parameter can be NULL).
     65  *      Outline resolution.  This is equivalent to `face->units_per_EM'
     66  *      for non-PFR fonts.  Optional (parameter can be NULL).
    6767  *
    6868  *    ametrics_resolution ::
  • trunk/poppler/freetype2/include/freetype/ftsizes.h

    r251 r269  
    55/*    FreeType size objects management (specification).                    */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2003, 2004, 2006 by                               */
     7/*  Copyright 1996-2001, 2003, 2004, 2006, 2009 by                         */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    130130  /*    Even though it is possible to create several size objects for a    */
    131131  /*    given face (see @FT_New_Size for details), functions like          */
    132   /*    @FT_Load_Glyph or @FT_Load_Char only use the last-created one to   */
    133   /*    determine the `current character pixel size'.                      */
     132  /*    @FT_Load_Glyph or @FT_Load_Char only use the one which has been    */
     133  /*    activated last to determine the `current character pixel size'.    */
    134134  /*                                                                       */
    135135  /*    This function can be used to `activate' a previously created size  */
  • trunk/poppler/freetype2/include/freetype/ftstroke.h

    r262 r269  
    55/*    FreeType path stroker (specification).                               */
    66/*                                                                         */
    7 /*  Copyright 2002, 2003, 2004, 2005, 2006, 2008 by                        */
     7/*  Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by                  */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    172172   *
    173173   * @return:
    174    *   The border index.  @FT_STROKER_BORDER_LEFT for empty or invalid
     174   *   The border index.  @FT_STROKER_BORDER_RIGHT for empty or invalid
    175175   *   outlines.
    176176   */
  • trunk/poppler/freetype2/include/freetype/internal/psaux.h

    r262 r269  
    198198    T1_FIELD_LOCATION_CID_INFO,
    199199    T1_FIELD_LOCATION_FONT_DICT,
     200    T1_FIELD_LOCATION_FONT_EXTRA,
    200201    T1_FIELD_LOCATION_FONT_INFO,
    201202    T1_FIELD_LOCATION_PRIVATE,
  • trunk/poppler/freetype2/include/freetype/internal/services/svcid.h

    r251 r269  
    55/*    The FreeType CID font services (specification).                      */
    66/*                                                                         */
    7 /*  Copyright 2007 by Derek Clegg.                                         */
     7/*  Copyright 2007, 2009 by Derek Clegg, Michael Toftdal.                  */
    88/*                                                                         */
    99/*  This file is part of the FreeType project, and may only be used,       */
     
    3232                                               const char*  *ordering,
    3333                                               FT_Int       *supplement );
     34  typedef FT_Error
     35  (*FT_CID_GetIsInternallyCIDKeyedFunc)( FT_Face   face,
     36                                         FT_Bool  *is_cid );
     37  typedef FT_Error
     38  (*FT_CID_GetCIDFromGlyphIndexFunc)( FT_Face   face,
     39                                      FT_UInt   glyph_index,
     40                                      FT_UInt  *cid );
    3441
    3542  FT_DEFINE_SERVICE( CID )
    3643  {
    3744    FT_CID_GetRegistryOrderingSupplementFunc  get_ros;
     45    FT_CID_GetIsInternallyCIDKeyedFunc        get_is_cid;
     46    FT_CID_GetCIDFromGlyphIndexFunc           get_cid_from_glyph_index;
    3847  };
    3948
  • trunk/poppler/freetype2/include/freetype/internal/services/svpsinfo.h

    r251 r269  
    55/*    The FreeType PostScript info service (specification).                */
    66/*                                                                         */
    7 /*  Copyright 2003, 2004 by                                                */
     7/*  Copyright 2003, 2004, 2009 by                                          */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    3434                         PS_FontInfoRec*  afont_info );
    3535
     36  typedef FT_Error
     37  (*PS_GetFontExtraFunc)( FT_Face           face,
     38                          PS_FontExtraRec*  afont_extra );
     39
    3640  typedef FT_Int
    3741  (*PS_HasGlyphNamesFunc)( FT_Face   face );
     
    4549  {
    4650    PS_GetFontInfoFunc     ps_get_font_info;
     51    PS_GetFontExtraFunc    ps_get_font_extra;
    4752    PS_HasGlyphNamesFunc   ps_has_glyph_names;
    4853    PS_GetFontPrivateFunc  ps_get_font_private;
  • trunk/poppler/freetype2/include/freetype/internal/t1types.h

    r262 r269  
    66/*    only).                                                               */
    77/*                                                                         */
    8 /*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by                   */
     8/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by             */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    8888
    8989
     90  /* used to hold extra data of PS_FontInfoRec that
     91   * cannot be stored in the publicly defined structure.
     92   *
     93   * Note these can't be blended with multiple-masters.
     94   */
     95  typedef struct  PS_FontExtraRec_
     96  {
     97    FT_UShort  fs_type;
     98
     99  } PS_FontExtraRec;
     100
     101
    90102  typedef struct  T1_FontRec_
    91103  {
    92     PS_FontInfoRec   font_info;         /* font info dictionary */
    93     PS_PrivateRec    private_dict;      /* private dictionary   */
    94     FT_String*       font_name;         /* top-level dictionary */
     104    PS_FontInfoRec   font_info;         /* font info dictionary   */
     105    PS_FontExtraRec  font_extra;        /* font info extra fields */
     106    PS_PrivateRec    private_dict;      /* private dictionary     */
     107    FT_String*       font_name;         /* top-level dictionary   */
    95108
    96109    T1_EncodingType  encoding_type;
     
    232245    void*            psaux;
    233246    CID_FaceInfoRec  cid;
     247    PS_FontExtraRec  font_extra;
    234248#if 0
    235249    void*            afm_data;
  • trunk/poppler/freetype2/include/freetype/t1tables.h

    r262 r269  
    66/*    only).                                                               */
    77/*                                                                         */
    8 /*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by                   */
     8/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by             */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    7878    FT_Short    underline_position;
    7979    FT_UShort   underline_thickness;
    80 
    81     /* since 2.3.8 */
    82 
    83     FT_UShort   fs_type;
    8480
    8581  } PS_FontInfoRec;
     
    487483   *
    488484   * @note:
    489    *    The string pointers within the font info structure are owned by
     485   *    The string pointers within the @PS_PrivateRec structure are owned by
    490486   *    the face and don't need to be freed by the caller.
    491487   *
    492    *    If the font's format is not PostScript-based, this function will
    493    *    return the `FT_Err_Invalid_Argument' error code.
     488   *    If the font's format is not PostScript-based, this function returns
     489   *    the `FT_Err_Invalid_Argument' error code.
    494490   *
    495491   */
  • trunk/poppler/freetype2/include/freetype/tttables.h

    r251 r269  
    66/*    (specification only).                                                */
    77/*                                                                         */
    8 /*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008 by                   */
     8/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008, 2009 by             */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    696696  *
    697697  * @note:
    698   *   SFNT tables with length zero are treated as missing by Windows.
     698  *   SFNT tables with length zero are treated as missing.
    699699  *
    700700  */
  • trunk/poppler/freetype2/src/base/ftadvanc.c

    r262 r269  
    55/*    Quick computation of advance widths (body).                          */
    66/*                                                                         */
    7 /*  Copyright 2008 by                                                      */
     7/*  Copyright 2008, 2009 by                                                */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    4343      scale = face->size->metrics.x_scale;
    4444
    45     /* this must be the same computation as to get linearHori/VertAdvance */
    46     /* (see `FT_Load_Glyph' implementation in src/base/ftobjs.c           */
     45    /* this must be the same scaling as to get linear{Hori,Vert}Advance */
     46    /* (see `FT_Load_Glyph' implementation in src/base/ftobjs.c)        */
    4747
    4848    for ( nn = 0; nn < count; nn++ )
     
    149149
    150150      padvances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT )
    151                       ? face->glyph->advance.x
    152                       : face->glyph->advance.y;
     151                      ? face->glyph->advance.y
     152                      : face->glyph->advance.x;
    153153    }
    154154
  • trunk/poppler/freetype2/src/base/ftcid.c

    r251 r269  
    55/*    FreeType API for accessing CID font information.                     */
    66/*                                                                         */
    7 /*  Copyright 2007 by Derek Clegg.                                         */
     7/*  Copyright 2007, 2009 by Derek Clegg, Michael Toftdal.                  */
    88/*                                                                         */
    99/*  This file is part of the FreeType project, and may only be used,       */
     
    1717
    1818#include <ft2build.h>
     19#include FT_CID_H
    1920#include FT_INTERNAL_OBJECTS_H
    2021#include FT_SERVICE_CID_H
     
    6162
    6263
     64  FT_EXPORT_DEF( FT_Error )
     65  FT_Get_CID_Is_Internally_CID_Keyed( FT_Face   face,
     66                                      FT_Bool  *is_cid )
     67  {
     68    FT_Error  error = FT_Err_Invalid_Argument;
     69    FT_Bool   ic = 0;
     70
     71
     72    if ( face )
     73    {
     74      FT_Service_CID  service;
     75
     76
     77      FT_FACE_FIND_SERVICE( face, service, CID );
     78
     79      if ( service && service->get_is_cid )
     80        error = service->get_is_cid( face, &ic);
     81    }
     82
     83    if ( is_cid )
     84      *is_cid = ic;
     85
     86    return error;
     87  }
     88
     89
     90  FT_EXPORT_DEF( FT_Error )
     91  FT_Get_CID_From_Glyph_Index( FT_Face   face,
     92                               FT_UInt   glyph_index,
     93                               FT_UInt  *cid )
     94  {
     95    FT_Error  error = FT_Err_Invalid_Argument;
     96    FT_UInt   c = 0;
     97
     98
     99    if ( face )
     100    {
     101      FT_Service_CID  service;
     102
     103
     104      FT_FACE_FIND_SERVICE( face, service, CID );
     105
     106      if ( service && service->get_cid_from_glyph_index )
     107        error = service->get_cid_from_glyph_index( face, glyph_index, &c);
     108    }
     109
     110    if ( cid )
     111      *cid = c;
     112
     113    return error;
     114  }
     115
     116
    63117/* END */
  • trunk/poppler/freetype2/src/base/ftmm.c

    r251 r269  
    55/*    Multiple Master font support (body).                                 */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2003, 2004 by                                     */
     7/*  Copyright 1996-2001, 2003, 2004, 2009 by                               */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    5353                              MULTI_MASTERS );
    5454
    55       if ( aservice )
     55      if ( *aservice )
    5656        error = FT_Err_Ok;
    5757    }
  • trunk/poppler/freetype2/src/base/ftobjs.c

    r262 r269  
    11411141    args.flags    = FT_OPEN_PATHNAME;
    11421142    args.pathname = (char*)pathname;
     1143    args.stream   = NULL;
    11431144
    11441145    return FT_Open_Face( library, &args, face_index, aface );
     
    11671168    args.memory_base = file_base;
    11681169    args.memory_size = file_size;
     1170    args.stream      = NULL;
    11691171
    11701172    return FT_Open_Face( library, &args, face_index, aface );
     
    14181420                                         &is_sfnt_cid );
    14191421    if ( error )
    1420       return error;
     1422      goto Exit;
    14211423
    14221424    if ( FT_Stream_Seek( stream, pos + offset ) )
     
    14371439                                   aface );
    14381440  Exit:
    1439     FT_Stream_Seek( stream, pos );
    1440     return error;
     1441    {
     1442      FT_Error  error1;
     1443
     1444
     1445      if ( error == FT_Err_Unknown_File_Format )
     1446      {
     1447        error1 = FT_Stream_Seek( stream, pos );
     1448        if ( error1 )
     1449          return error1;
     1450      }
     1451
     1452      return error;
     1453    }
    14411454  }
    14421455
     
    16061619      goto Exit;
    16071620
     1621    /* rewind sfnt stream before open_face_PS_from_sfnt_stream() */
     1622    if ( FT_Stream_Seek( stream, flag_offset + 4 ) )
     1623      goto Exit;
     1624
    16081625    if ( FT_ALLOC( sfnt_data, (FT_Long)rlen ) )
    16091626      return error;
     
    24512468    else
    24522469    {
    2453       metrics->x_scale     = 1L << 22;
    2454       metrics->y_scale     = 1L << 22;
     2470      metrics->x_scale     = 1L << 16;
     2471      metrics->y_scale     = 1L << 16;
    24552472      metrics->ascender    = bsize->y_ppem;
    24562473      metrics->descender   = 0;
     
    25632580    {
    25642581      FT_ZERO( metrics );
    2565       metrics->x_scale = 1L << 22;
    2566       metrics->y_scale = 1L << 22;
     2582      metrics->x_scale = 1L << 16;
     2583      metrics->y_scale = 1L << 16;
    25672584    }
    25682585  }
     
    43794396
    43804397
    4381   /* documentation is in freetype.h */
    4382 
    4383   FT_EXPORT_DEF( FT_UShort )
    4384   FT_Get_FSType_Flags( FT_Face  face )
    4385   {
    4386     PS_FontInfoRec  font_info;
    4387     TT_OS2*         os2;
    4388 
    4389 
    4390     /* look at FSType before fsType for Type42 */
    4391 
    4392     if ( !FT_Get_PS_Font_Info( face, &font_info ) &&
    4393          font_info.fs_type != 0                   )
    4394       return font_info.fs_type;
    4395 
    4396     if ( ( os2 = (TT_OS2*)FT_Get_Sfnt_Table( face, ft_sfnt_os2 ) ) != NULL &&
    4397          os2->version != 0xFFFFU                                           )
    4398       return os2->fsType;
    4399 
    4400     return 0;
    4401   }
    4402 
    4403 
    44044398/* END */
  • trunk/poppler/freetype2/src/base/ftrfork.c

    r262 r269  
    55/*    Embedded resource forks accessor (body).                             */
    66/*                                                                         */
    7 /*  Copyright 2004, 2005, 2006, 2007, 2008 by                              */
     7/*  Copyright 2004, 2005, 2006, 2007, 2008, 2009 by                        */
    88/*  Masatake YAMATO and Redhat K.K.                                        */
    99/*                                                                         */
     
    710710      }
    711711      else
    712         FT_Stream_Skip( stream, 4 + 4 );    /* offset + length */
     712      {
     713        error = FT_Stream_Skip( stream, 4 + 4 );    /* offset + length */
     714        if ( error )
     715          return error;
    713716      }
     717    }
    714718
    715719    return FT_Err_Unknown_File_Format;
  • trunk/poppler/freetype2/src/base/ftstroke.c

    r262 r269  
    55/*    FreeType path stroker (body).                                        */
    66/*                                                                         */
    7 /*  Copyright 2002, 2003, 2004, 2005, 2006, 2008 by                        */
     7/*  Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by                  */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    607607      if ( tags[0] & FT_STROKE_TAG_END )
    608608      {
    609         if ( in_contour == 0 )
    610           goto Fail;
    611 
    612609        in_contour = 0;
    613610        num_contours++;
  • trunk/poppler/freetype2/src/bdf/bdflib.c

    r209 r269  
    11/*
    22 * Copyright 2000 Computing Research Labs, New Mexico State University
    3  * Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007
     3 * Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
    44 *   Francesco Zappa Nardelli
    55 *
     
    13951395    else if ( ft_memcmp( name, "SPACING", 7 ) == 0 )
    13961396    {
     1397      if ( !fp->value.atom )
     1398      {
     1399        error = BDF_Err_Invalid_File_Format;
     1400        goto Exit;
     1401      }
     1402
    13971403      if ( fp->value.atom[0] == 'p' || fp->value.atom[0] == 'P' )
    13981404        font->spacing = BDF_PROPORTIONAL;
     
    20732079      if ( error )
    20742080        goto Exit;
     2081      /* at this point, `p->font' can't be NULL */
    20752082      p->cnt = p->font->props_size = _bdf_atoul( p->list.field[1], 0, 10 );
    20762083
  • trunk/poppler/freetype2/src/cache/ftcmanag.c

    r262 r269  
    55/*    FreeType Cache Manager (body).                                       */
    66/*                                                                         */
    7 /*  Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2008 by             */
     7/*  Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by       */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    609609
    610610  Exit:
    611     *acache = cache;
     611    if ( acache )
     612      *acache = cache;
    612613    return error;
    613614  }
  • 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
  • trunk/poppler/freetype2/src/cff/cffgload.c

    r262 r269  
    55/*    OpenType Glyph Loader (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/*                                                                         */
     
    421421      sub = cff->subfonts[fd_index];
    422422
    423       if ( builder->hints_funcs )
     423      if ( builder->hints_funcs && size )
    424424      {
    425425        CFF_Internal  internal = (CFF_Internal)size->root.internal;
  • trunk/poppler/freetype2/src/cff/cffload.c

    r262 r269  
    55/*    OpenType and CFF data/program tables loader (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/*                                                                         */
     
    320320  cff_index_load_offsets( CFF_Index  idx )
    321321  {
    322     FT_Error   error  = 0;
     322    FT_Error   error  = CFF_Err_Ok;
    323323    FT_Stream  stream = idx->stream;
    324324    FT_Memory  memory = stream->memory;
     
    403403      for ( n = 0; n <= idx->count; n++ )
    404404      {
     405        /* at this point, `idx->offsets' can't be NULL */
    405406        offset = idx->offsets[n];
    406407        if ( !offset )
     
    15411542          goto Exit;
    15421543      }
    1543       else
    1544         /* CID-keyed fonts only need CIDs */
    1545         FT_FREE( font->charset.sids );
    15461544    }
    15471545
  • trunk/poppler/freetype2/src/cff/cffparse.c

    r262 r269  
    55/*    CFF token stream parser (body)                                       */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2007, 2008 by                   */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2007, 2008, 2009 by             */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    245245          exponent_add--;
    246246        /* Only add digit if we don't overflow. */
    247         else if ( number < 0xCCCCCCCL )
     247        else if ( number < 0xCCCCCCCL && fraction_length < 9 )
    248248        {
    249249          fraction_length++;
  • trunk/poppler/freetype2/src/cid/cidload.c

    r262 r269  
    55/*    CID-keyed Type1 font loader (body).                                  */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by                   */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2009 by             */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    9696    case T1_FIELD_LOCATION_FONT_INFO:
    9797      object = (FT_Byte*)&cid->font_info;
     98      break;
     99
     100    case T1_FIELD_LOCATION_FONT_EXTRA:
     101      object = (FT_Byte*)&face->font_extra;
    98102      break;
    99103
  • trunk/poppler/freetype2/src/cid/cidriver.c

    r251 r269  
    55/*    CID driver interface (body).                                         */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by                   */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by             */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    7575  {
    7676    *afont_info = ((CID_Face)face)->cid.font_info;
    77     return 0;
    78   }
    79 
     77
     78    return CID_Err_Ok;
     79  }
     80
     81  static FT_Error
     82  cid_ps_get_font_extra( FT_Face          face,
     83                        PS_FontExtraRec*  afont_extra )
     84  {
     85    *afont_extra = ((CID_Face)face)->font_extra;
     86
     87    return CID_Err_Ok;
     88  }
    8089
    8190  static const FT_Service_PsInfoRec  cid_service_ps_info =
    8291  {
    8392    (PS_GetFontInfoFunc)   cid_ps_get_font_info,
     93    (PS_GetFontExtraFunc)  cid_ps_get_font_extra,
    8494    (PS_HasGlyphNamesFunc) NULL,        /* unsupported with CID fonts */
    8595    (PS_GetFontPrivateFunc)NULL         /* unsupported                */
     
    113123
    114124
     125  static FT_Error
     126  cid_get_is_cid( CID_Face  face,
     127                  FT_Bool  *is_cid )
     128  {
     129    FT_Error  error = CID_Err_Ok;
     130    FT_UNUSED( face );
     131
     132
     133    if ( is_cid )
     134      *is_cid = 1; /* cid driver is only used for CID keyed fonts */
     135
     136    return error;
     137  }
     138
     139
     140  static FT_Error
     141  cid_get_cid_from_glyph_index( CID_Face  face,
     142                                FT_UInt   glyph_index,
     143                                FT_UInt  *cid )
     144  {
     145    FT_Error  error = CID_Err_Ok;
     146    FT_UNUSED( face );
     147
     148
     149    if ( cid )
     150      *cid = glyph_index; /* identity mapping */
     151
     152    return error;
     153  }
     154
     155
    115156  static const FT_Service_CIDRec  cid_service_cid_info =
    116157  {
    117     (FT_CID_GetRegistryOrderingSupplementFunc)cid_get_ros
     158     (FT_CID_GetRegistryOrderingSupplementFunc)cid_get_ros,
     159     (FT_CID_GetIsInternallyCIDKeyedFunc)      cid_get_is_cid,
     160     (FT_CID_GetCIDFromGlyphIndexFunc)         cid_get_cid_from_glyph_index
    118161  };
    119162
  • trunk/poppler/freetype2/src/cid/cidtoken.h

    r262 r269  
    55/*    CID token definitions (specification only).                          */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2006, 2008 by                         */
     7/*  Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by                   */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    4949  T1_FIELD_NUM   ( "UnderlinePosition",  underline_position,  0 )
    5050  T1_FIELD_NUM   ( "UnderlineThickness", underline_thickness, 0 )
     51
     52#undef  FT_STRUCTURE
     53#define FT_STRUCTURE  PS_FontExtraRec
     54#undef  T1CODE
     55#define T1CODE        T1_FIELD_LOCATION_FONT_EXTRA
     56
    5157  T1_FIELD_NUM   ( "FSType",             fs_type,             0 )
    5258
  • trunk/poppler/freetype2/src/gzip/ftgzip.c

    r262 r269  
    570570        result = 0;
    571571
    572       FT_Stream_Seek( stream, old_pos );
     572      (void)FT_Stream_Seek( stream, old_pos );
    573573    }
    574574
  • trunk/poppler/freetype2/src/pcf/pcfdrivr.c

    r262 r269  
    33    FreeType font driver for pcf files
    44
    5     Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008 by
     5    Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by
    66    Francesco Zappa Nardelli
    77
     
    443443  {
    444444    PCF_Face    face   = (PCF_Face)FT_SIZE_FACE( size );
    445     FT_Stream   stream = face->root.stream;
     445    FT_Stream   stream;
    446446    FT_Error    error  = PCF_Err_Ok;
    447447    FT_Bitmap*  bitmap = &slot->bitmap;
     
    459459      goto Exit;
    460460    }
     461
     462    stream = face->root.stream;
    461463
    462464    if ( glyph_index > 0 )
  • trunk/poppler/freetype2/src/pcf/pcfread.c

    r262 r269  
    33    FreeType font driver for pcf fonts
    44
    5   Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by
     5  Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
    66  Francesco Zappa Nardelli
    77
     
    471471    {
    472472      i = 4 - ( nprops & 3 );
    473       FT_Stream_Skip( stream, i );
     473      if ( FT_STREAM_SKIP( i ) )
     474      {
     475        error = PCF_Err_Invalid_Stream_Skip;
     476        goto Bail;
     477      }
    474478    }
    475479
     
    624628    for ( i = 0; i < nmetrics; i++ )
    625629    {
    626       pcf_get_metric( stream, format, metrics + i );
     630      error = pcf_get_metric( stream, format, metrics + i );
    627631
    628632      metrics[i].bits = 0;
  • trunk/poppler/freetype2/src/raster/ftraster.c

    r262 r269  
    55/*    The FreeType glyph rasterizer (body).                                */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2005, 2007, 2008 by                   */
     7/*  Copyright 1996-2001, 2002, 2003, 2005, 2007, 2008, 2009 by             */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    812812
    813813    n = ras.num_Profs;
    814 
    815     if ( n > 1 )
    816     {
    817       p = ras.fProfile;
     814    p = ras.fProfile;
     815
     816    if ( n > 1 && p )
     817    {
    818818      while ( n > 0 )
    819819      {
  • trunk/poppler/freetype2/src/sfnt/sfdriver.c

    r209 r269  
    55/*    High-level SFNT driver interface (body).                             */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by       */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    152152
    153153
     154  static FT_UInt
     155  sfnt_get_name_index( TT_Face     face,
     156                       FT_String*  glyph_name )
     157  {
     158    FT_Face  root = &face->root;
     159    FT_Long  i;
     160
     161
     162    for ( i = 0; i < root->num_glyphs; i++ )
     163    {
     164      FT_String*  gname;
     165      FT_Error    error = tt_face_get_ps_name( face, i, &gname );
     166
     167
     168      if ( error )
     169        continue;
     170
     171      if ( !ft_strcmp( glyph_name, gname ) )
     172        return (FT_UInt)i;
     173    }
     174
     175    return 0;
     176  }
     177
     178
    154179  static const FT_Service_GlyphDictRec  sfnt_service_glyph_dict =
    155180  {
    156181    (FT_GlyphDict_GetNameFunc)  sfnt_get_glyph_name,
    157     (FT_GlyphDict_NameIndexFunc)NULL
     182    (FT_GlyphDict_NameIndexFunc)sfnt_get_name_index
    158183  };
    159184
  • trunk/poppler/freetype2/src/sfnt/sfobjs.c

    r262 r269  
    409409      face->ttc_header.count   = 1;
    410410
    411       if ( FT_NEW( face->ttc_header.offsets) )
     411      if ( FT_NEW( face->ttc_header.offsets ) )
    412412        return error;
    413413
     
    863863      }
    864864
     865#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
     866
     867      /*
     868       *  Now allocate the root array of FT_Bitmap_Size records and
     869       *  populate them.  Unfortunately, it isn't possible to indicate bit
     870       *  depths in the FT_Bitmap_Size record.  This is a design error.
     871       */
     872      {
     873        FT_UInt  i, count;
     874
     875
     876#ifndef FT_CONFIG_OPTION_OLD_INTERNALS
     877        count = face->sbit_num_strikes;
     878#else
     879        count = (FT_UInt)face->num_sbit_strikes;
     880#endif
     881
     882        if ( count > 0 )
     883        {
     884          FT_Memory        memory   = face->root.stream->memory;
     885          FT_UShort        em_size  = face->header.Units_Per_EM;
     886          FT_Short         avgwidth = face->os2.xAvgCharWidth;
     887          FT_Size_Metrics  metrics;
     888
     889
     890          if ( em_size == 0 || face->os2.version == 0xFFFFU )
     891          {
     892            avgwidth = 0;
     893            em_size = 1;
     894          }
     895
     896          if ( FT_NEW_ARRAY( root->available_sizes, count ) )
     897            goto Exit;
     898
     899          for ( i = 0; i < count; i++ )
     900          {
     901            FT_Bitmap_Size*  bsize = root->available_sizes + i;
     902
     903
     904            error = sfnt->load_strike_metrics( face, i, &metrics );
     905            if ( error )
     906              goto Exit;
     907
     908            bsize->height = (FT_Short)( metrics.height >> 6 );
     909            bsize->width = (FT_Short)(
     910                ( avgwidth * metrics.x_ppem + em_size / 2 ) / em_size );
     911
     912            bsize->x_ppem = metrics.x_ppem << 6;
     913            bsize->y_ppem = metrics.y_ppem << 6;
     914
     915            /* assume 72dpi */
     916            bsize->size   = metrics.y_ppem << 6;
     917          }
     918
     919          root->face_flags     |= FT_FACE_FLAG_FIXED_SIZES;
     920          root->num_fixed_sizes = (FT_Int)count;
     921        }
     922      }
     923
     924#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
     925
     926      /* a font with no bitmaps and no outlines is scalable; */
     927      /* it has only empty glyphs then                       */
     928      if ( !FT_HAS_FIXED_SIZES( root ) && !FT_IS_SCALABLE( root ) )
     929        root->face_flags |= FT_FACE_FLAG_SCALABLE;
     930
    865931
    866932      /*********************************************************************/
     
    868934      /*  Set up metrics.                                                  */
    869935      /*                                                                   */
    870       if ( has_outline == TRUE )
     936      if ( FT_IS_SCALABLE( root ) )
    871937      {
    872938        /* XXX What about if outline header is missing */
     
    9531019      }
    9541020
    955 #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
    956 
    957       /*
    958        *  Now allocate the root array of FT_Bitmap_Size records and
    959        *  populate them.  Unfortunately, it isn't possible to indicate bit
    960        *  depths in the FT_Bitmap_Size record.  This is a design error.
    961        */
    962       {
    963         FT_UInt  i, count;
    964 
    965 
    966 #ifndef FT_CONFIG_OPTION_OLD_INTERNALS
    967         count = face->sbit_num_strikes;
    968 #else
    969         count = (FT_UInt)face->num_sbit_strikes;
    970 #endif
    971 
    972         if ( count > 0 )
    973         {
    974           FT_Memory        memory   = face->root.stream->memory;
    975           FT_UShort        em_size  = face->header.Units_Per_EM;
    976           FT_Short         avgwidth = face->os2.xAvgCharWidth;
    977           FT_Size_Metrics  metrics;
    978 
    979 
    980           if ( em_size == 0 || face->os2.version == 0xFFFFU )
    981           {
    982             avgwidth = 0;
    983             em_size = 1;
    984           }
    985 
    986           if ( FT_NEW_ARRAY( root->available_sizes, count ) )
    987             goto Exit;
    988 
    989           for ( i = 0; i < count; i++ )
    990           {
    991             FT_Bitmap_Size*  bsize = root->available_sizes + i;
    992 
    993 
    994             error = sfnt->load_strike_metrics( face, i, &metrics );
    995             if ( error )
    996               goto Exit;
    997 
    998             bsize->height = (FT_Short)( metrics.height >> 6 );
    999             bsize->width = (FT_Short)(
    1000                 ( avgwidth * metrics.x_ppem + em_size / 2 ) / em_size );
    1001 
    1002             bsize->x_ppem = metrics.x_ppem << 6;
    1003             bsize->y_ppem = metrics.y_ppem << 6;
    1004 
    1005             /* assume 72dpi */
    1006             bsize->size   = metrics.y_ppem << 6;
    1007           }
    1008 
    1009           root->face_flags     |= FT_FACE_FLAG_FIXED_SIZES;
    1010           root->num_fixed_sizes = (FT_Int)count;
    1011         }
    1012       }
    1013 
    1014 #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
    1015 
    1016       /* a font with no bitmaps and no outlines is scalable; */
    1017       /* it has only empty glyphs then                       */
    1018       if ( !FT_HAS_FIXED_SIZES( root ) && !FT_IS_SCALABLE( root ) )
    1019         root->face_flags |= FT_FACE_FLAG_SCALABLE;
    10201021    }
    10211022
  • trunk/poppler/freetype2/src/sfnt/ttcmap.c

    r262 r269  
    55/*    TrueType character mapping table (cmap) support (body).              */
    66/*                                                                         */
    7 /*  Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 by                  */
     7/*  Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by            */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    232232  /*   keys        6              USHORT[256]     sub-header keys          */
    233233  /*   subs        518            SUBHEAD[NSUBS]  sub-headers array        */
    234   /*   glyph_ids   518+NSUB*8     USHORT[]        glyph id array           */
     234  /*   glyph_ids   518+NSUB*8     USHORT[]        glyph ID array           */
    235235  /*                                                                       */
    236236  /* The `keys' table is used to map charcode high-bytes to sub-headers.   */
     
    283283    FT_Byte*  keys;                         /* keys table */
    284284    FT_Byte*  subs;                         /* sub-headers */
    285     FT_Byte*  glyph_ids;                    /* glyph id array */
     285    FT_Byte*  glyph_ids;                    /* glyph ID array */
    286286
    287287
     
    606606  /*                                                  zero                 */
    607607  /*                                                                       */
    608   /*   glyphIds      16+NUM_SEGS*8  USHORT[]          array of glyph id    */
     608  /*   glyphIds      16+NUM_SEGS*8  USHORT[]          array of glyph ID    */
    609609  /*                                                  ranges               */
    610610  /*                                                                       */
     
    612612  /* intervals called segments.  Each segment has start and end codes,     */
    613613  /* provided by the `startCount' and `endCount' arrays.  Segments must    */
    614   /* not be overlapping and the last segment should always contain the     */
    615   /* `0xFFFF' endCount.                                                    */
     614  /* not overlap, and the last segment should always contain the value     */
     615  /* 0xFFFF for `endCount'.                                                */
    616616  /*                                                                       */
    617617  /* The fields `searchRange', `entrySelector' and `rangeShift' are better */
     
    630630  /*                                                                       */
    631631  /*                                                                       */
    632   /* Finally, note that certain fonts contain invalid charmaps that        */
    633   /* contain end=0xFFFF, start=0xFFFF, delta=0x0001, offset=0xFFFF at the  */
    634   /* of their charmaps (e.g. opens___.ttf which comes with OpenOffice.org) */
    635   /* we need special code to deal with them correctly...                   */
     632  /* Finally, note that a lot of fonts contain an invalid last segment,    */
     633  /* where `start' and `end' are correctly set to 0xFFFF but both `delta'  */
     634  /* and `offset' are incorrect (e.g., `opens___.ttf' which comes with    */
     635  /* OpenOffice.org).  We need special code to deal with them correctly.   */
    636636  /*                                                                       */
    637637
     
    697697      p     += num_ranges * 2;
    698698      offset = FT_PEEK_USHORT( p );
     699
     700      /* some fonts have an incorrect last segment; */
     701      /* we have to catch it                        */
     702      if ( range_index     >= num_ranges - 1 &&
     703           cmap->cur_start == 0xFFFFU        &&
     704           cmap->cur_end   == 0xFFFFU        )
     705      {
     706        TT_Face   face  = (TT_Face)cmap->cmap.cmap.charmap.face;
     707        FT_Byte*  limit = face->cmap_table + face->cmap_size;
     708
     709
     710        if ( offset && p + offset + 2 > limit )
     711        {
     712          cmap->cur_delta = 1;
     713          offset          = 0;
     714        }
     715      }
    699716
    700717      if ( offset != 0xFFFFU )
     
    863880    glyph_ids = offsets + num_segs * 2;
    864881
    865     /* check last segment, its end count must be 0xFFFF */
     882    /* check last segment; its end count value must be 0xFFFF */
    866883    if ( valid->level >= FT_VALIDATE_PARANOID )
    867884    {
     
    892909          FT_INVALID_DATA;
    893910
    894         /* this test should be performed at default validation level;  */
    895         /* unfortunately, some popular Asian fonts present overlapping */
    896         /* ranges in their charmaps                                    */
    897         /*                                                             */
     911        /* this test should be performed at default validation level; */
     912        /* unfortunately, some popular Asian fonts have overlapping  */
     913        /* ranges in their charmaps                                   */
     914        /*                                                            */
    898915        if ( start <= last_end && n > 0 )
    899916        {
     
    903920          {
    904921            /* allow overlapping segments, provided their start points */
    905             /* and end points, respectively, are in ascending order.   */
     922            /* and end points, respectively, are in ascending order    */
    906923            /*                                                         */
    907924            if ( last_start > start || last_end > end )
     
    914931        if ( offset && offset != 0xFFFFU )
    915932        {
    916           p += offset;  /* start of glyph id array */
     933          p += offset;  /* start of glyph ID array */
    917934
    918935          /* check that we point within the glyph IDs table only */
     
    923940              FT_INVALID_DATA;
    924941          }
    925           /* some fonts handle the last segment incorrectly */
    926           else if ( n != num_segs - 1     ||
    927                     !( start == 0xFFFFU &&
    928                        end   == 0xFFFFU &&
    929                        delta == 0x1U    ) )
     942          /* Some fonts handle the last segment incorrectly.  In */
     943          /* theory, 0xFFFF might point to an ordinary glyph --  */
     944          /* a cmap 4 is versatile and could be used for any     */
     945          /* encoding, not only Unicode.  However, reality shows */
     946          /* that far too many fonts are sloppy and incorrectly  */
     947          /* set all fields but `start' and `end' for the last   */
     948          /* segment if it contains only a single character.     */
     949          /*                                                     */
     950          /* We thus omit the test here, delaying it to the      */
     951          /* routines which actually access the cmap.            */
     952          else if ( n != num_segs - 1                       ||
     953                    !( start == 0xFFFFU && end == 0xFFFFU ) )
    930954          {
    931955            if ( p < glyph_ids                              ||
     
    958982          /* to mean missing glyph in cmap table                    */
    959983          /*                                                        */
    960           if ( valid->level >= FT_VALIDATE_PARANOID                     ||
    961                n != num_segs - 1                                        ||
    962                !( start == 0xFFFFU && end == 0xFFFFU && delta == 0x1U ) )
     984          if ( valid->level >= FT_VALIDATE_PARANOID    ||
     985               n != num_segs - 1                       ||
     986               !( start == 0xFFFFU && end == 0xFFFFU ) )
    963987            FT_INVALID_DATA;
    964988        }
     
    10181042          offset  = TT_PEEK_USHORT( p );
    10191043
    1020           /* some fonts handle the last segment incorrectly; */
    1021           /* we have to catch it                             */
    1022           if ( i >= num_segs - 1                                   &&
    1023                start == 0xFFFFU && end == 0xFFFFU && delta == 0x1U )
    1024             offset = 0;
     1044          /* some fonts have an incorrect last segment; */
     1045          /* we have to catch it                        */
     1046          if ( i >= num_segs - 1                  &&
     1047               start == 0xFFFFU && end == 0xFFFFU )
     1048          {
     1049            TT_Face   face  = (TT_Face)cmap->cmap.charmap.face;
     1050            FT_Byte*  limit = face->cmap_table + face->cmap_size;
     1051
     1052
     1053            if ( offset && p + offset + 2 > limit )
     1054            {
     1055              delta  = 1;
     1056              offset = 0;
     1057            }
     1058          }
    10251059
    10261060          if ( offset == 0xFFFFU )
     
    11031137        offset = TT_PEEK_USHORT( p );
    11041138
    1105         /* some fonts handle the last segment incorrectly; */
    1106         /* we have to catch it                             */
    1107         if ( mid >= num_segs - 1                                 &&
    1108              start == 0xFFFFU && end == 0xFFFFU && delta == 0x1U )
    1109           offset = 0;
     1139        /* some fonts have an incorrect last segment; */
     1140        /* we have to catch it                        */
     1141        if ( mid >= num_segs - 1                &&
     1142             start == 0xFFFFU && end == 0xFFFFU )
     1143        {
     1144          TT_Face   face  = (TT_Face)cmap->cmap.charmap.face;
     1145          FT_Byte*  limit = face->cmap_table + face->cmap_size;
     1146
     1147
     1148          if ( offset && p + offset + 2 > limit )
     1149          {
     1150            delta  = 1;
     1151            offset = 0;
     1152          }
     1153        }
    11101154
    11111155        /* search the first segment containing `charcode' */
     
    15731617  /*   start       0              ULONG       first charcode               */
    15741618  /*   end         4              ULONG       last charcode                */
    1575   /*   startId     8              ULONG       start glyph id for the group */
     1619  /*   startId     8              ULONG       start glyph ID for the group */
    15761620  /*                                                                       */
    15771621
     
    19551999  /*   start       0          ULONG      first charcode                    */
    19562000  /*   end         4          ULONG      last charcode                     */
    1957   /*   startId     8          ULONG      start glyph id for the group      */
     2001  /*   startId     8          ULONG      start glyph ID for the group      */
    19582002  /*                                                                       */
    19592003
  • trunk/poppler/freetype2/src/sfnt/ttkern.c

    r251 r269  
    66/*    kerning data within the GPOS table at the moment.                    */
    77/*                                                                         */
    8 /*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */
     8/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by       */
    99/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    1010/*                                                                         */
     
    104104      p_next += length;
    105105
     106      if ( p_next > p_limit )  /* handle broken table */
     107        p_next = p_limit;
     108
    106109      /* only use horizontal kerning tables */
    107110      if ( ( coverage & ~8 ) != 0x0001 ||
     
    112115      p        += 6;
    113116
    114       if ( p + 6 * num_pairs > p_limit )
    115         goto NextTable;
     117      if ( ( p_next - p ) / 6 < (int)num_pairs ) /* handle broken count */
     118        num_pairs = (FT_UInt)( ( p_next - p ) / 6 );
    116119
    117120      avail |= mask;
     
    182185    FT_UInt   count, mask = 1;
    183186    FT_Byte*  p       = face->kern_table;
     187    FT_Byte*  p_limit = p + face->kern_table_size;
    184188
    185189
     
    187191    mask = 0x0001;
    188192
    189     for ( count = face->num_kern_tables; count > 0; count--, mask <<= 1 )
     193    for ( count = face->num_kern_tables;
     194          count > 0 && p + 6 <= p_limit;
     195          count--, mask <<= 1 )
    190196    {
    191197      FT_Byte* base     = p;
     
    194200      FT_UInt  length   = FT_NEXT_USHORT( p );
    195201      FT_UInt  coverage = FT_NEXT_USHORT( p );
     202      FT_UInt  num_pairs;
    196203      FT_Int   value    = 0;
    197204
     
    200207
    201208      next = base + length;
     209
     210      if ( next > p_limit )  /* handle broken table */
     211        next = p_limit;
    202212
    203213      if ( ( face->kern_avail_bits & mask ) == 0 )
     
    206216      if ( p + 8 > next )
    207217        goto NextTable;
     218
     219      num_pairs = FT_NEXT_USHORT( p );
     220      p        += 6;
     221
     222      if ( ( next - p ) / 6 < (int)num_pairs )  /* handle broken count  */
     223        num_pairs = (FT_UInt)( ( next - p ) / 6 );
    208224
    209225      switch ( coverage >> 8 )
     
    211227      case 0:
    212228        {
    213           FT_UInt   num_pairs = FT_NEXT_USHORT( p );
    214           FT_ULong  key0      = TT_KERN_INDEX( left_glyph, right_glyph );
    215 
    216 
    217           p += 6;
     229          FT_ULong  key0 = TT_KERN_INDEX( left_glyph, right_glyph );
     230
    218231
    219232          if ( face->kern_order_bits & mask )   /* binary search */
  • trunk/poppler/freetype2/src/sfnt/ttsbit.c

    r262 r269  
    55/*    TrueType and OpenType embedded bitmap support (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/*                                                                         */
     
    8484             FT_Bool     byte_padded,
    8585             FT_Int      x_offset,
    86              FT_Int      y_offset )
     86             FT_Int      y_offset,
     87             FT_Int      source_height )
    8788  {
    8889    FT_Byte*   line_buff;
     
    117118    loaded = 0;  /* no bits were loaded */
    118119
    119     for ( height = target->rows; height > 0; height-- )
     120    for ( height = source_height; height > 0; height-- )
    120121    {
    121122      FT_Byte*  cur   = line_buff;        /* current write cursor          */
     
    773774        /* return successfully! */
    774775        *arange  = range;
    775         return 0;
     776        return SFNT_Err_Ok;
    776777      }
    777778    }
     
    12311232      /* depths.                                                   */
    12321233      blit_sbit( map, (FT_Byte*)stream->cursor, line_bits, pad_bytes,
    1233                  x_offset * pix_bits, y_offset );
     1234                 x_offset * pix_bits, y_offset, metrics->height );
    12341235
    12351236      FT_FRAME_EXIT();
     
    13251326
    13261327    case 8:  /* compound format */
    1327       FT_Stream_Skip( stream, 1L );
     1328      if ( FT_STREAM_SKIP( 1L ) )
     1329      {
     1330        error = SFNT_Err_Invalid_Stream_Skip;
     1331        goto Exit;
     1332      }
    13281333      /* fallthrough */
    13291334
  • 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:
  • trunk/poppler/freetype2/src/truetype/ttinterp.c

    r262 r269  
    55/*    TrueType bytecode interpreter (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/*                                                                         */
     
    51005100    }
    51015101
    5102     if ( ( args[0] & 0x100 ) != 0 && CUR.tt_metrics.ppem < A )
     5102    if ( ( args[0] & 0x100 ) != 0 && CUR.tt_metrics.ppem <= A )
    51035103      CUR.GS.scan_control = TRUE;
    51045104
     
    51095109      CUR.GS.scan_control = TRUE;
    51105110
    5111     if ( ( args[0] & 0x800 ) != 0 && CUR.tt_metrics.ppem >= A )
     5111    if ( ( args[0] & 0x800 ) != 0 && CUR.tt_metrics.ppem > A )
    51125112      CUR.GS.scan_control = FALSE;
    51135113
  • trunk/poppler/freetype2/src/truetype/ttobjs.c

    r262 r269  
    55/*    Objects manager (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/*                                                                         */
     
    154154    {
    155155      "DFKaiSho-SB",     /* dfkaisb.ttf */
     156      "DFKaiShu",
    156157      "DFKai-SB",        /* kaiu.ttf */
    157158      "HuaTianSongTi?",  /* htst3.ttf */
  • trunk/poppler/freetype2/src/type1/t1driver.c

    r262 r269  
    55/*    Type 1 driver interface (body).                                      */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by                   */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2009 by             */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    8585  }
    8686
     87
    8788  static const FT_Service_GlyphDictRec  t1_service_glyph_dict =
    8889  {
     
    9293
    9394
    94  /*
    95   *  POSTSCRIPT NAME SERVICE
    96   *
    97   */
     95  /*
     96   *  POSTSCRIPT NAME SERVICE
     97   *
     98   */
    9899
    99100  static const char*
     
    103104  }
    104105
     106
    105107  static const FT_Service_PsFontNameRec  t1_service_ps_name =
    106108  {
     
    109111
    110112
    111  /*
    112   *  MULTIPLE MASTERS SERVICE
    113   *
    114   */
     113  /*
     114   *  MULTIPLE MASTERS SERVICE
     115   *
     116   */
    115117
    116118#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
     
    126128
    127129
    128  /*
    129   *  POSTSCRIPT INFO SERVICE
    130   *
    131   */
     130  /*
     131   *  POSTSCRIPT INFO SERVICE
     132   *
     133   */
    132134
    133135  static FT_Error
     
    136138  {
    137139    *afont_info = ((T1_Face)face)->type1.font_info;
    138     return 0;
     140
     141    return T1_Err_Ok;
     142  }
     143
     144
     145  static FT_Error
     146  t1_ps_get_font_extra( FT_Face           face,
     147                        PS_FontExtraRec*  afont_extra )
     148  {
     149    *afont_extra = ((T1_Face)face)->type1.font_extra;
     150
     151    return T1_Err_Ok;
    139152  }
    140153
     
    144157  {
    145158    FT_UNUSED( face );
     159
    146160    return 1;
    147161  }
     
    153167  {
    154168    *afont_private = ((T1_Face)face)->type1.private_dict;
    155     return 0;
     169
     170    return T1_Err_Ok;
    156171  }
    157172
     
    160175  {
    161176    (PS_GetFontInfoFunc)   t1_ps_get_font_info,
     177    (PS_GetFontExtraFunc)  t1_ps_get_font_extra,
    162178    (PS_HasGlyphNamesFunc) t1_ps_has_glyph_names,
    163179    (PS_GetFontPrivateFunc)t1_ps_get_font_private,
    164180  };
    165181
     182
    166183#ifndef T1_CONFIG_OPTION_NO_AFM
    167184  static const FT_Service_KerningRec  t1_service_kerning =
     
    171188#endif
    172189
    173  /*
    174   *  SERVICE LIST
    175   *
    176   */
     190
     191  /*
     192   *  SERVICE LIST
     193   *
     194   */
    177195
    178196  static const FT_ServiceDescRec  t1_services[] =
  • trunk/poppler/freetype2/src/type1/t1gload.c

    r262 r269  
    55/*    Type 1 Glyph Loader (body).                                          */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008 by             */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by       */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    296296      load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
    297297
    298     glyph->x_scale = size->root.metrics.x_scale;
    299     glyph->y_scale = size->root.metrics.y_scale;
     298    if ( size )
     299    {
     300      glyph->x_scale = size->root.metrics.x_scale;
     301      glyph->y_scale = size->root.metrics.y_scale;
     302    }
     303    else
     304    {
     305      glyph->x_scale = 0x10000L;
     306      glyph->y_scale = 0x10000L;
     307    }
    300308
    301309    glyph->root.outline.n_points   = 0;
     
    431439
    432440          /* Then scale the metrics */
    433           metrics->horiAdvance  = FT_MulFix( metrics->horiAdvance, x_scale );
    434           metrics->vertAdvance  = FT_MulFix( metrics->vertAdvance, y_scale );
     441          metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale );
     442          metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale );
    435443        }
    436444
  • trunk/poppler/freetype2/src/type1/t1load.c

    r262 r269  
    55/*    Type 1 font loader (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/*                                                                         */
     
    949949      break;
    950950
     951    case T1_FIELD_LOCATION_FONT_EXTRA:
     952      dummy_object = &face->type1.font_extra;
     953      objects      = &dummy_object;
     954      max_objects  = 0;
     955      break;
     956
    951957    case T1_FIELD_LOCATION_PRIVATE:
    952958      dummy_object = &face->type1.private_dict;
  • trunk/poppler/freetype2/src/type1/t1tokens.h

    r262 r269  
    55/*    Type 1 tokenizer (specification).                                    */
    66/*                                                                         */
    7 /*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by                   */
     7/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by             */
    88/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    99/*                                                                         */
     
    4242  T1_FIELD_NUM   ( "UnderlineThickness", underline_thickness,
    4343                   T1_FIELD_DICT_FONTDICT )
     44
     45#undef  FT_STRUCTURE
     46#define FT_STRUCTURE  PS_FontExtraRec
     47#undef  T1CODE
     48#define T1CODE        T1_FIELD_LOCATION_FONT_EXTRA
     49
    4450  T1_FIELD_NUM   ( "FSType", fs_type,
    4551                   T1_FIELD_DICT_FONTDICT )
  • trunk/poppler/freetype2/src/type42/t42drivr.c

    r251 r269  
    55/*    High-level Type 42 driver interface (body).                          */
    66/*                                                                         */
    7 /*  Copyright 2002, 2003, 2004, 2006, 2007 by Roberto Alameda.             */
     7/*  Copyright 2002, 2003, 2004, 2006, 2007, 2009 by Roberto Alameda.       */
    88/*                                                                         */
    99/*  This file is part of the FreeType project, and may only be used,       */
     
    5050
    5151
    52  /*
    53   *
    54   *  GLYPH DICT SERVICE
    55   *
    56   */
     52  /*
     53   *
     54   *  GLYPH DICT SERVICE
     55   *
     56   */
    5757
    5858  static FT_Error
     
    9595
    9696
    97  /*
    98   *
    99   *  POSTSCRIPT NAME SERVICE
    100   *
    101   */
     97  /*
     98   *
     99   *  POSTSCRIPT NAME SERVICE
     100   *
     101   */
    102102
    103103  static const char*
     
    114114
    115115
    116  /*
    117   *
    118   *  POSTSCRIPT INFO SERVICE
    119   *
    120   */
     116  /*
     117   *
     118   *  POSTSCRIPT INFO SERVICE
     119   *
     120   */
    121121
    122122  static FT_Error
     
    125125  {
    126126    *afont_info = ((T42_Face)face)->type1.font_info;
     127
     128    return T42_Err_Ok;
     129  }
     130
     131
     132  static FT_Error
     133  t42_ps_get_font_extra( FT_Face           face,
     134                         PS_FontExtraRec*  afont_extra )
     135  {
     136    *afont_extra = ((T42_Face)face)->type1.font_extra;
     137
    127138    return T42_Err_Ok;
    128139  }
     
    133144  {
    134145    FT_UNUSED( face );
     146
    135147    return 1;
    136148  }
     
    142154  {
    143155    *afont_private = ((T42_Face)face)->type1.private_dict;
     156
    144157    return T42_Err_Ok;
    145158  }
     
    149162  {
    150163    (PS_GetFontInfoFunc)   t42_ps_get_font_info,
     164    (PS_GetFontExtraFunc)   t42_ps_get_font_extra,
    151165    (PS_HasGlyphNamesFunc) t42_ps_has_glyph_names,
    152166    (PS_GetFontPrivateFunc)t42_ps_get_font_private
     
    154168
    155169
    156  /*
    157   *
    158   *  SERVICE LIST
    159   *
    160   */
     170  /*
     171   *
     172   *  SERVICE LIST
     173   *
     174   */
    161175
    162176  static const FT_ServiceDescRec  t42_services[] =
  • trunk/poppler/freetype2/src/type42/t42parse.c

    r262 r269  
    55/*    Type 42 font parser (body).                                          */
    66/*                                                                         */
    7 /*  Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Roberto Alameda. */
     7/*  Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by            */
     8/*  Roberto Alameda.                                                       */
    89/*                                                                         */
    910/*  This file is part of the FreeType project, and may only be used,       */
     
    6970    T1_FIELD_NUM   ( "UnderlinePosition",  underline_position,  0 )
    7071    T1_FIELD_NUM   ( "UnderlineThickness", underline_thickness, 0 )
     72
     73#undef  FT_STRUCTURE
     74#define FT_STRUCTURE  PS_FontExtraRec
     75#undef  T1CODE
     76#define T1CODE        T1_FIELD_LOCATION_FONT_EXTRA
     77
    7178    T1_FIELD_NUM   ( "FSType",             fs_type,             0 )
    7279
Note: See TracChangeset for help on using the changeset viewer.