updated freetype to 2.3.9
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29657 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
f11f17301f
commit
89bbd37a10
@ -25,14 +25,6 @@
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* The `raster' component duplicates some of the declarations in */
|
||||
/* freetype.h for stand-alone use if _FREETYPE_ isn't defined. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#ifndef __FREETYPE_H__
|
||||
#define __FREETYPE_H__
|
||||
|
||||
@ -395,8 +387,8 @@ FT_BEGIN_HEADER
|
||||
/* Use @FT_Done_Face to destroy it (along with its slot and sizes). */
|
||||
/* */
|
||||
/* <Also> */
|
||||
/* The @FT_FaceRec details the publicly accessible fields of a given */
|
||||
/* face object. */
|
||||
/* See @FT_FaceRec for the publicly accessible fields of a given face */
|
||||
/* object. */
|
||||
/* */
|
||||
typedef struct FT_FaceRec_* FT_Face;
|
||||
|
||||
@ -425,8 +417,8 @@ FT_BEGIN_HEADER
|
||||
/* activated at any given time per face. */
|
||||
/* */
|
||||
/* <Also> */
|
||||
/* The @FT_SizeRec structure details the publicly accessible fields */
|
||||
/* of a given size object. */
|
||||
/* See @FT_SizeRec for the publicly accessible fields of a given size */
|
||||
/* object. */
|
||||
/* */
|
||||
typedef struct FT_SizeRec_* FT_Size;
|
||||
|
||||
@ -438,7 +430,7 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A handle to a given `glyph slot'. A slot is a container where it */
|
||||
/* is possible to load any one of the glyphs contained in its parent */
|
||||
/* is possible to load any of the glyphs contained in its parent */
|
||||
/* face. */
|
||||
/* */
|
||||
/* In other words, each time you call @FT_Load_Glyph or */
|
||||
@ -447,7 +439,7 @@ FT_BEGIN_HEADER
|
||||
/* other control information. */
|
||||
/* */
|
||||
/* <Also> */
|
||||
/* @FT_GlyphSlotRec details the publicly accessible glyph fields. */
|
||||
/* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */
|
||||
/* */
|
||||
typedef struct FT_GlyphSlotRec_* FT_GlyphSlot;
|
||||
|
||||
@ -478,8 +470,8 @@ FT_BEGIN_HEADER
|
||||
/* the list and automatically activates it. */
|
||||
/* */
|
||||
/* <Also> */
|
||||
/* The @FT_CharMapRec details the publicly accessible fields of a */
|
||||
/* given character map. */
|
||||
/* See @FT_CharMapRec for the publicly accessible fields of a given */
|
||||
/* character map. */
|
||||
/* */
|
||||
typedef struct FT_CharMapRec_* FT_CharMap;
|
||||
|
||||
@ -535,123 +527,123 @@ FT_BEGIN_HEADER
|
||||
/* Other encodings might be defined in the future. */
|
||||
/* */
|
||||
/* <Values> */
|
||||
/* FT_ENCODING_NONE :: */
|
||||
/* The encoding value~0 is reserved. */
|
||||
/* FT_ENCODING_NONE :: */
|
||||
/* The encoding value~0 is reserved. */
|
||||
/* */
|
||||
/* FT_ENCODING_UNICODE :: */
|
||||
/* Corresponds to the Unicode character set. This value covers */
|
||||
/* all versions of the Unicode repertoire, including ASCII and */
|
||||
/* Latin-1. Most fonts include a Unicode charmap, but not all */
|
||||
/* of them. */
|
||||
/* FT_ENCODING_UNICODE :: */
|
||||
/* Corresponds to the Unicode character set. This value covers */
|
||||
/* all versions of the Unicode repertoire, including ASCII and */
|
||||
/* Latin-1. Most fonts include a Unicode charmap, but not all */
|
||||
/* of them. */
|
||||
/* */
|
||||
/* FT_ENCODING_MS_SYMBOL :: */
|
||||
/* Corresponds to the Microsoft Symbol encoding, used to encode */
|
||||
/* mathematical symbols in the 32..255 character code range. For */
|
||||
/* more information, see `http://www.ceviz.net/symbol.htm'. */
|
||||
/* FT_ENCODING_MS_SYMBOL :: */
|
||||
/* Corresponds to the Microsoft Symbol encoding, used to encode */
|
||||
/* mathematical symbols in the 32..255 character code range. For */
|
||||
/* more information, see `http://www.ceviz.net/symbol.htm'. */
|
||||
/* */
|
||||
/* FT_ENCODING_SJIS :: */
|
||||
/* Corresponds to Japanese SJIS encoding. More info at */
|
||||
/* at `http://langsupport.japanreference.com/encoding.shtml'. */
|
||||
/* See note on multi-byte encodings below. */
|
||||
/* FT_ENCODING_SJIS :: */
|
||||
/* Corresponds to Japanese SJIS encoding. More info at */
|
||||
/* at `http://langsupport.japanreference.com/encoding.shtml'. */
|
||||
/* See note on multi-byte encodings below. */
|
||||
/* */
|
||||
/* FT_ENCODING_GB2312 :: */
|
||||
/* Corresponds to an encoding system for Simplified Chinese as used */
|
||||
/* used in mainland China. */
|
||||
/* FT_ENCODING_GB2312 :: */
|
||||
/* Corresponds to an encoding system for Simplified Chinese as used */
|
||||
/* used in mainland China. */
|
||||
/* */
|
||||
/* FT_ENCODING_BIG5 :: */
|
||||
/* Corresponds to an encoding system for Traditional Chinese as used */
|
||||
/* in Taiwan and Hong Kong. */
|
||||
/* FT_ENCODING_BIG5 :: */
|
||||
/* Corresponds to an encoding system for Traditional Chinese as */
|
||||
/* used in Taiwan and Hong Kong. */
|
||||
/* */
|
||||
/* FT_ENCODING_WANSUNG :: */
|
||||
/* Corresponds to the Korean encoding system known as Wansung. */
|
||||
/* For more information see */
|
||||
/* `http://www.microsoft.com/typography/unicode/949.txt'. */
|
||||
/* FT_ENCODING_WANSUNG :: */
|
||||
/* Corresponds to the Korean encoding system known as Wansung. */
|
||||
/* For more information see */
|
||||
/* `http://www.microsoft.com/typography/unicode/949.txt'. */
|
||||
/* */
|
||||
/* FT_ENCODING_JOHAB :: */
|
||||
/* The Korean standard character set (KS~C 5601-1992), which */
|
||||
/* corresponds to MS Windows code page 1361. This character set */
|
||||
/* includes all possible Hangeul character combinations. */
|
||||
/* FT_ENCODING_JOHAB :: */
|
||||
/* The Korean standard character set (KS~C 5601-1992), which */
|
||||
/* corresponds to MS Windows code page 1361. This character set */
|
||||
/* includes all possible Hangeul character combinations. */
|
||||
/* */
|
||||
/* FT_ENCODING_ADOBE_LATIN_1 :: */
|
||||
/* Corresponds to a Latin-1 encoding as defined in a Type~1 */
|
||||
/* PostScript font. It is limited to 256 character codes. */
|
||||
/* FT_ENCODING_ADOBE_LATIN_1 :: */
|
||||
/* Corresponds to a Latin-1 encoding as defined in a Type~1 */
|
||||
/* PostScript font. It is limited to 256 character codes. */
|
||||
/* */
|
||||
/* FT_ENCODING_ADOBE_STANDARD :: */
|
||||
/* Corresponds to the Adobe Standard encoding, as found in Type~1, */
|
||||
/* CFF, and OpenType/CFF fonts. It is limited to 256 character */
|
||||
/* codes. */
|
||||
/* FT_ENCODING_ADOBE_STANDARD :: */
|
||||
/* Corresponds to the Adobe Standard encoding, as found in Type~1, */
|
||||
/* CFF, and OpenType/CFF fonts. It is limited to 256 character */
|
||||
/* codes. */
|
||||
/* */
|
||||
/* FT_ENCODING_ADOBE_EXPERT :: */
|
||||
/* Corresponds to the Adobe Expert encoding, as found in Type~1, */
|
||||
/* CFF, and OpenType/CFF fonts. It is limited to 256 character */
|
||||
/* codes. */
|
||||
/* FT_ENCODING_ADOBE_EXPERT :: */
|
||||
/* Corresponds to the Adobe Expert encoding, as found in Type~1, */
|
||||
/* CFF, and OpenType/CFF fonts. It is limited to 256 character */
|
||||
/* codes. */
|
||||
/* */
|
||||
/* FT_ENCODING_ADOBE_CUSTOM :: */
|
||||
/* Corresponds to a custom encoding, as found in Type~1, CFF, and */
|
||||
/* OpenType/CFF fonts. It is limited to 256 character codes. */
|
||||
/* FT_ENCODING_ADOBE_CUSTOM :: */
|
||||
/* Corresponds to a custom encoding, as found in Type~1, CFF, and */
|
||||
/* OpenType/CFF fonts. It is limited to 256 character codes. */
|
||||
/* */
|
||||
/* FT_ENCODING_APPLE_ROMAN :: */
|
||||
/* Corresponds to the 8-bit Apple roman encoding. Many TrueType and */
|
||||
/* OpenType fonts contain a charmap for this encoding, since older */
|
||||
/* versions of Mac OS are able to use it. */
|
||||
/* FT_ENCODING_APPLE_ROMAN :: */
|
||||
/* Corresponds to the 8-bit Apple roman encoding. Many TrueType */
|
||||
/* and OpenType fonts contain a charmap for this encoding, since */
|
||||
/* older versions of Mac OS are able to use it. */
|
||||
/* */
|
||||
/* FT_ENCODING_OLD_LATIN_2 :: */
|
||||
/* This value is deprecated and was never used nor reported by */
|
||||
/* FreeType. Don't use or test for it. */
|
||||
/* FT_ENCODING_OLD_LATIN_2 :: */
|
||||
/* This value is deprecated and was never used nor reported by */
|
||||
/* FreeType. Don't use or test for it. */
|
||||
/* */
|
||||
/* FT_ENCODING_MS_SJIS :: */
|
||||
/* Same as FT_ENCODING_SJIS. Deprecated. */
|
||||
/* FT_ENCODING_MS_SJIS :: */
|
||||
/* Same as FT_ENCODING_SJIS. Deprecated. */
|
||||
/* */
|
||||
/* FT_ENCODING_MS_GB2312 :: */
|
||||
/* Same as FT_ENCODING_GB2312. Deprecated. */
|
||||
/* FT_ENCODING_MS_GB2312 :: */
|
||||
/* Same as FT_ENCODING_GB2312. Deprecated. */
|
||||
/* */
|
||||
/* FT_ENCODING_MS_BIG5 :: */
|
||||
/* Same as FT_ENCODING_BIG5. Deprecated. */
|
||||
/* FT_ENCODING_MS_BIG5 :: */
|
||||
/* Same as FT_ENCODING_BIG5. Deprecated. */
|
||||
/* */
|
||||
/* FT_ENCODING_MS_WANSUNG :: */
|
||||
/* Same as FT_ENCODING_WANSUNG. Deprecated. */
|
||||
/* FT_ENCODING_MS_WANSUNG :: */
|
||||
/* Same as FT_ENCODING_WANSUNG. Deprecated. */
|
||||
/* */
|
||||
/* FT_ENCODING_MS_JOHAB :: */
|
||||
/* Same as FT_ENCODING_JOHAB. Deprecated. */
|
||||
/* FT_ENCODING_MS_JOHAB :: */
|
||||
/* Same as FT_ENCODING_JOHAB. Deprecated. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* By default, FreeType automatically synthesizes a Unicode charmap */
|
||||
/* for PostScript fonts, using their glyph names dictionaries. */
|
||||
/* However, it also reports the encodings defined explicitly in the */
|
||||
/* font file, for the cases when they are needed, with the Adobe */
|
||||
/* values as well. */
|
||||
/* By default, FreeType automatically synthesizes a Unicode charmap */
|
||||
/* for PostScript fonts, using their glyph names dictionaries. */
|
||||
/* However, it also reports the encodings defined explicitly in the */
|
||||
/* font file, for the cases when they are needed, with the Adobe */
|
||||
/* values as well. */
|
||||
/* */
|
||||
/* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */
|
||||
/* is neither Unicode nor ISO-8859-1 (otherwise it is set to */
|
||||
/* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out which */
|
||||
/* encoding is really present. If, for example, the `cs_registry' */
|
||||
/* field is `KOI8' and the `cs_encoding' field is `R', the font is */
|
||||
/* encoded in KOI8-R. */
|
||||
/* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */
|
||||
/* is neither Unicode nor ISO-8859-1 (otherwise it is set to */
|
||||
/* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */
|
||||
/* which encoding is really present. If, for example, the */
|
||||
/* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */
|
||||
/* the font is encoded in KOI8-R. */
|
||||
/* */
|
||||
/* FT_ENCODING_NONE is always set (with a single exception) by the */
|
||||
/* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */
|
||||
/* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */
|
||||
/* which encoding is really present. For example, */
|
||||
/* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */
|
||||
/* Russian). */
|
||||
/* FT_ENCODING_NONE is always set (with a single exception) by the */
|
||||
/* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */
|
||||
/* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */
|
||||
/* which encoding is really present. For example, */
|
||||
/* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */
|
||||
/* Russian). */
|
||||
/* */
|
||||
/* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */
|
||||
/* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */
|
||||
/* FT_ENCODING_APPLE_ROMAN). */
|
||||
/* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */
|
||||
/* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */
|
||||
/* FT_ENCODING_APPLE_ROMAN). */
|
||||
/* */
|
||||
/* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */
|
||||
/* @FT_Get_CMap_Language_ID to query the Mac language ID which may be */
|
||||
/* needed to be able to distinguish Apple encoding variants. See */
|
||||
/* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */
|
||||
/* @FT_Get_CMap_Language_ID to query the Mac language ID which may */
|
||||
/* be needed to be able to distinguish Apple encoding variants. See */
|
||||
/* */
|
||||
/* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */
|
||||
/* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */
|
||||
/* */
|
||||
/* to get an idea how to do that. Basically, if the language ID is~0, */
|
||||
/* don't use it, otherwise subtract 1 from the language ID. Then */
|
||||
/* examine `encoding_id'. If, for example, `encoding_id' is */
|
||||
/* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */
|
||||
/* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */
|
||||
/* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */
|
||||
/* variant the Arabic encoding. */
|
||||
/* to get an idea how to do that. Basically, if the language ID */
|
||||
/* is~0, don't use it, otherwise subtract 1 from the language ID. */
|
||||
/* Then examine `encoding_id'. If, for example, `encoding_id' is */
|
||||
/* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */
|
||||
/* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */
|
||||
/* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */
|
||||
/* variant the Arabic encoding. */
|
||||
/* */
|
||||
typedef enum FT_Encoding_
|
||||
{
|
||||
@ -907,8 +899,8 @@ FT_BEGIN_HEADER
|
||||
/* charmap :: The current active charmap for this face. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* Fields may be changed after a call to @FT_Attach_File or */
|
||||
/* @FT_Attach_Stream. */
|
||||
/* Fields may be changed after a call to @FT_Attach_File or */
|
||||
/* @FT_Attach_Stream. */
|
||||
/* */
|
||||
typedef struct FT_FaceRec_
|
||||
{
|
||||
@ -1485,7 +1477,7 @@ FT_BEGIN_HEADER
|
||||
/* Only relevant for outline glyphs. */
|
||||
/* */
|
||||
/* advance :: This is the transformed advance width for the */
|
||||
/* glyph. */
|
||||
/* glyph (in 26.6 fractional pixel format). */
|
||||
/* */
|
||||
/* format :: This field indicates the format of the image */
|
||||
/* contained in the glyph slot. Typically */
|
||||
@ -1692,26 +1684,26 @@ FT_BEGIN_HEADER
|
||||
/* @FT_Open_Args structure. */
|
||||
/* */
|
||||
/* <Values> */
|
||||
/* FT_OPEN_MEMORY :: This is a memory-based stream. */
|
||||
/* FT_OPEN_MEMORY :: This is a memory-based stream. */
|
||||
/* */
|
||||
/* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */
|
||||
/* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */
|
||||
/* */
|
||||
/* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */
|
||||
/* name. */
|
||||
/* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */
|
||||
/* name. */
|
||||
/* */
|
||||
/* FT_OPEN_DRIVER :: Use the `driver' field. */
|
||||
/* FT_OPEN_DRIVER :: Use the `driver' field. */
|
||||
/* */
|
||||
/* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */
|
||||
/* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */
|
||||
/* */
|
||||
/* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */
|
||||
/* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */
|
||||
/* */
|
||||
/* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */
|
||||
/* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */
|
||||
/* */
|
||||
/* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */
|
||||
/* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */
|
||||
/* */
|
||||
/* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */
|
||||
/* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */
|
||||
/* */
|
||||
/* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */
|
||||
/* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */
|
||||
@ -1736,8 +1728,8 @@ FT_BEGIN_HEADER
|
||||
/* FT_Parameter */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple structure used to pass more or less generic parameters */
|
||||
/* to @FT_Open_Face. */
|
||||
/* A simple structure used to pass more or less generic parameters to */
|
||||
/* @FT_Open_Face. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* tag :: A four-byte identification tag. */
|
||||
@ -2128,8 +2120,8 @@ FT_BEGIN_HEADER
|
||||
/* value. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* If `width' is zero, then the horizontal scaling value is set */
|
||||
/* equal to the vertical scaling value, and vice versa. */
|
||||
/* If `width' is zero, then the horizontal scaling value is set equal */
|
||||
/* to the vertical scaling value, and vice versa. */
|
||||
/* */
|
||||
typedef struct FT_Size_RequestRec_
|
||||
{
|
||||
@ -2456,6 +2448,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* Besides deciding which hinter to use, you can also decide which
|
||||
* hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details.
|
||||
*
|
||||
*/
|
||||
#define FT_LOAD_DEFAULT 0x0
|
||||
#define FT_LOAD_NO_SCALE 0x1
|
||||
@ -2542,15 +2535,15 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD );
|
||||
* }
|
||||
*
|
||||
*/
|
||||
#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 )
|
||||
|
||||
#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 )
|
||||
|
||||
#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL )
|
||||
#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT )
|
||||
#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO )
|
||||
#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD )
|
||||
#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V )
|
||||
#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL )
|
||||
#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT )
|
||||
#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO )
|
||||
#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD )
|
||||
#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V )
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
@ -2563,7 +2556,6 @@ FT_BEGIN_HEADER
|
||||
* @FT_LOAD_TARGET_XXX value.
|
||||
*
|
||||
*/
|
||||
|
||||
#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) )
|
||||
|
||||
|
||||
@ -2611,9 +2603,9 @@ FT_BEGIN_HEADER
|
||||
/* FreeType~2. Each mode corresponds to a specific type of scanline */
|
||||
/* conversion performed on the outline. */
|
||||
/* */
|
||||
/* For bitmap fonts the `bitmap->pixel_mode' field in the */
|
||||
/* @FT_GlyphSlotRec structure gives the format of the returned */
|
||||
/* bitmap. */
|
||||
/* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */
|
||||
/* field in the @FT_GlyphSlotRec structure gives the format of the */
|
||||
/* returned bitmap. */
|
||||
/* */
|
||||
/* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity. */
|
||||
/* */
|
||||
@ -2634,7 +2626,7 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* FT_RENDER_MODE_LCD :: */
|
||||
/* This mode corresponds to horizontal RGB and BGR sub-pixel */
|
||||
/* displays, like LCD-screens. It produces 8-bit bitmaps that are */
|
||||
/* displays like LCD screens. It produces 8-bit bitmaps that are */
|
||||
/* 3~times the width of the original glyph outline in pixels, and */
|
||||
/* which use the @FT_PIXEL_MODE_LCD mode. */
|
||||
/* */
|
||||
@ -2645,11 +2637,16 @@ FT_BEGIN_HEADER
|
||||
/* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */
|
||||
/* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */
|
||||
/* (not active in the default builds). It is up to the caller to */
|
||||
/* either call @FT_Library_SetLcdFilter (if available) or do the */
|
||||
/* filtering itself. */
|
||||
/* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */
|
||||
/* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */
|
||||
/* (not active in the default builds). It is up to the caller to */
|
||||
/* either call @FT_Library_SetLcdFilter (if available) or do the */
|
||||
/* filtering itself. */
|
||||
/* */
|
||||
/* The selected render mode only affects vector glyphs of a font. */
|
||||
/* Embedded bitmaps often have a different pixel mode like */
|
||||
/* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */
|
||||
/* them into 8-bit pixmaps. */
|
||||
/* */
|
||||
typedef enum FT_Render_Mode_
|
||||
{
|
||||
@ -2674,8 +2671,8 @@ FT_BEGIN_HEADER
|
||||
/* @FT_Render_Mode values instead. */
|
||||
/* */
|
||||
/* <Values> */
|
||||
/* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */
|
||||
/* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */
|
||||
/* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */
|
||||
/* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */
|
||||
/* */
|
||||
#define ft_render_mode_normal FT_RENDER_MODE_NORMAL
|
||||
#define ft_render_mode_mono FT_RENDER_MODE_MONO
|
||||
@ -2822,14 +2819,14 @@ FT_BEGIN_HEADER
|
||||
/* Return the track kerning for a given face object at a given size. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to a source face object. */
|
||||
/* face :: A handle to a source face object. */
|
||||
/* */
|
||||
/* point_size :: The point size in 16.16 fractional points. */
|
||||
/* point_size :: The point size in 16.16 fractional points. */
|
||||
/* */
|
||||
/* degree :: The degree of tightness. */
|
||||
/* degree :: The degree of tightness. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* akerning :: The kerning in 16.16 fractional points. */
|
||||
/* akerning :: The kerning in 16.16 fractional points. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
@ -3060,7 +3057,7 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* Note that `*agindex' is set to~0 if the charmap is empty. The */
|
||||
/* result itself can be~0 in two cases: if the charmap is empty or */
|
||||
/* when the value~0 is the first valid character code. */
|
||||
/* if the value~0 is the first valid character code. */
|
||||
/* */
|
||||
FT_EXPORT( FT_ULong )
|
||||
FT_Get_First_Char( FT_Face face,
|
||||
@ -3082,7 +3079,7 @@ FT_BEGIN_HEADER
|
||||
/* char_code :: The starting character code. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* agindex :: Glyph index of first character code. 0~if charmap */
|
||||
/* agindex :: Glyph index of next character code. 0~if charmap */
|
||||
/* is empty. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
@ -3159,15 +3156,16 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @description:
|
||||
* Retrieve a description of a given subglyph. Only use it if
|
||||
* `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE, or an error is
|
||||
* returned.
|
||||
* `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is
|
||||
* returned otherwise.
|
||||
*
|
||||
* @input:
|
||||
* glyph ::
|
||||
* The source glyph slot.
|
||||
*
|
||||
* sub_index ::
|
||||
* The index of subglyph. Must be less than `glyph->num_subglyphs'.
|
||||
* The index of the subglyph. Must be less than
|
||||
* `glyph->num_subglyphs'.
|
||||
*
|
||||
* @output:
|
||||
* p_index ::
|
||||
@ -3739,26 +3737,27 @@ FT_BEGIN_HEADER
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FREETYPE_XXX
|
||||
* @enum:
|
||||
* FREETYPE_XXX
|
||||
*
|
||||
* @description:
|
||||
* These three macros identify the FreeType source code version.
|
||||
* Use @FT_Library_Version to access them at runtime.
|
||||
* @description:
|
||||
* These three macros identify the FreeType source code version.
|
||||
* Use @FT_Library_Version to access them at runtime.
|
||||
*
|
||||
* @values:
|
||||
* FREETYPE_MAJOR :: The major version number.
|
||||
* FREETYPE_MINOR :: The minor version number.
|
||||
* FREETYPE_PATCH :: The patch level.
|
||||
* @values:
|
||||
* FREETYPE_MAJOR :: The major version number.
|
||||
* FREETYPE_MINOR :: The minor version number.
|
||||
* FREETYPE_PATCH :: The patch level.
|
||||
*
|
||||
* @note:
|
||||
* The version number of FreeType if built as a dynamic link library
|
||||
* with the `libtool' package is _not_ controlled by these three
|
||||
* macros.
|
||||
*
|
||||
* @note:
|
||||
* The version number of FreeType if built as a dynamic link library
|
||||
* with the `libtool' package is _not_ controlled by these three
|
||||
* macros.
|
||||
*/
|
||||
#define FREETYPE_MAJOR 2
|
||||
#define FREETYPE_MINOR 3
|
||||
#define FREETYPE_PATCH 8
|
||||
#define FREETYPE_PATCH 9
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType API for accessing CID font information (specification). */
|
||||
/* */
|
||||
/* Copyright 2007 by Dereg Clegg. */
|
||||
/* Copyright 2007, 2009 by Dereg Clegg, Michael Toftdal. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
@ -88,6 +88,74 @@ FT_BEGIN_HEADER
|
||||
const char* *ordering,
|
||||
FT_Int *supplement);
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_CID_Is_Internally_CID_Keyed
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the type of the input face, CID keyed or not. In
|
||||
* constrast to the @FT_IS_CID_KEYED macro this function returns
|
||||
* successfully also for CID-keyed fonts in an SNFT wrapper.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* @output:
|
||||
* is_cid ::
|
||||
* The type of the face as an @FT_Bool.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with CID faces and OpenType fonts,
|
||||
* returning an error otherwise.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.9
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face,
|
||||
FT_Bool *is_cid );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_CID_From_Glyph_Index
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the CID of the input glyph index.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* glyph_index ::
|
||||
* The input glyph index.
|
||||
*
|
||||
* @output:
|
||||
* cid ::
|
||||
* The CID as an @FT_UInt.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with CID faces and OpenType fonts,
|
||||
* returning an error otherwise.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.9
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_CID_From_Glyph_Index( FT_Face face,
|
||||
FT_UInt glyph_index,
|
||||
FT_UInt *cid );
|
||||
|
||||
/* */
|
||||
|
||||
FT_END_HEADER
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType convenience functions to handle glyphs (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -194,7 +194,7 @@ FT_BEGIN_HEADER
|
||||
/* outline :: A descriptor for the outline. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* You can typecast a @FT_Glyph to @FT_OutlineGlyph if you have */
|
||||
/* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */
|
||||
/* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */
|
||||
/* the outline's content easily. */
|
||||
/* */
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType Multiple Master font interface (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2003, 2004, 2006 by */
|
||||
/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -257,7 +257,7 @@ FT_BEGIN_HEADER
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* amaster :: The Multiple Masters descriptor. */
|
||||
/* amaster :: The Multiple Masters/GX var descriptor. */
|
||||
/* Allocates a data structure, which the user must free */
|
||||
/* (a single call to FT_FREE will do it). */
|
||||
/* */
|
||||
|
@ -5,7 +5,7 @@
|
||||
/* Support for the FT_Outline type used to store glyph shapes of */
|
||||
/* most scalable font formats (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -130,8 +130,7 @@ FT_BEGIN_HEADER
|
||||
/* numContours :: The maximal number of contours within the outline. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* anoutline :: A handle to the new outline. NULL in case of */
|
||||
/* error. */
|
||||
/* anoutline :: A handle to the new outline. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
@ -362,7 +361,7 @@ FT_BEGIN_HEADER
|
||||
/* outline :: A pointer to the target outline descriptor. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This functions toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */
|
||||
/* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */
|
||||
/* the outline's `flags' field. */
|
||||
/* */
|
||||
/* It shouldn't be used by a normal client application, unless it */
|
||||
@ -416,7 +415,7 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Render an outline within a bitmap using the current scan-convert. */
|
||||
/* This functions uses an @FT_Raster_Params structure as an argument, */
|
||||
/* This function uses an @FT_Raster_Params structure as an argument, */
|
||||
/* allowing advanced features like direct composition, translucency, */
|
||||
/* etc. */
|
||||
/* */
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType API for accessing PFR-specific data (specification only). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003, 2004, 2006, 2008 by */
|
||||
/* Copyright 2002, 2003, 2004, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -62,8 +62,8 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @output:
|
||||
* aoutline_resolution ::
|
||||
* Outline resolution. This is equivalent to `face->units_per_EM'.
|
||||
* Optional (parameter can be NULL).
|
||||
* Outline resolution. This is equivalent to `face->units_per_EM'
|
||||
* for non-PFR fonts. Optional (parameter can be NULL).
|
||||
*
|
||||
* ametrics_resolution ::
|
||||
* Metrics resolution. This is equivalent to `outline_resolution'
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType size objects management (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2003, 2004, 2006 by */
|
||||
/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -129,8 +129,8 @@ FT_BEGIN_HEADER
|
||||
/* <Description> */
|
||||
/* Even though it is possible to create several size objects for a */
|
||||
/* given face (see @FT_New_Size for details), functions like */
|
||||
/* @FT_Load_Glyph or @FT_Load_Char only use the last-created one to */
|
||||
/* determine the `current character pixel size'. */
|
||||
/* @FT_Load_Glyph or @FT_Load_Char only use the one which has been */
|
||||
/* activated last to determine the `current character pixel size'. */
|
||||
/* */
|
||||
/* This function can be used to `activate' a previously created size */
|
||||
/* object. */
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType path stroker (specification). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2008 by */
|
||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -171,7 +171,7 @@ FT_BEGIN_HEADER
|
||||
* The source outline handle.
|
||||
*
|
||||
* @return:
|
||||
* The border index. @FT_STROKER_BORDER_LEFT for empty or invalid
|
||||
* The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid
|
||||
* outlines.
|
||||
*/
|
||||
FT_EXPORT( FT_StrokerBorder )
|
||||
|
@ -197,6 +197,7 @@ FT_BEGIN_HEADER
|
||||
{
|
||||
T1_FIELD_LOCATION_CID_INFO,
|
||||
T1_FIELD_LOCATION_FONT_DICT,
|
||||
T1_FIELD_LOCATION_FONT_EXTRA,
|
||||
T1_FIELD_LOCATION_FONT_INFO,
|
||||
T1_FIELD_LOCATION_PRIVATE,
|
||||
T1_FIELD_LOCATION_BBOX,
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* The FreeType CID font services (specification). */
|
||||
/* */
|
||||
/* Copyright 2007 by Derek Clegg. */
|
||||
/* Copyright 2007, 2009 by Derek Clegg, Michael Toftdal. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
@ -31,10 +31,19 @@ FT_BEGIN_HEADER
|
||||
const char* *registry,
|
||||
const char* *ordering,
|
||||
FT_Int *supplement );
|
||||
typedef FT_Error
|
||||
(*FT_CID_GetIsInternallyCIDKeyedFunc)( FT_Face face,
|
||||
FT_Bool *is_cid );
|
||||
typedef FT_Error
|
||||
(*FT_CID_GetCIDFromGlyphIndexFunc)( FT_Face face,
|
||||
FT_UInt glyph_index,
|
||||
FT_UInt *cid );
|
||||
|
||||
FT_DEFINE_SERVICE( CID )
|
||||
{
|
||||
FT_CID_GetRegistryOrderingSupplementFunc get_ros;
|
||||
FT_CID_GetIsInternallyCIDKeyedFunc get_is_cid;
|
||||
FT_CID_GetCIDFromGlyphIndexFunc get_cid_from_glyph_index;
|
||||
};
|
||||
|
||||
/* */
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* The FreeType PostScript info service (specification). */
|
||||
/* */
|
||||
/* Copyright 2003, 2004 by */
|
||||
/* Copyright 2003, 2004, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -33,6 +33,10 @@ FT_BEGIN_HEADER
|
||||
(*PS_GetFontInfoFunc)( FT_Face face,
|
||||
PS_FontInfoRec* afont_info );
|
||||
|
||||
typedef FT_Error
|
||||
(*PS_GetFontExtraFunc)( FT_Face face,
|
||||
PS_FontExtraRec* afont_extra );
|
||||
|
||||
typedef FT_Int
|
||||
(*PS_HasGlyphNamesFunc)( FT_Face face );
|
||||
|
||||
@ -44,6 +48,7 @@ FT_BEGIN_HEADER
|
||||
FT_DEFINE_SERVICE( PsInfo )
|
||||
{
|
||||
PS_GetFontInfoFunc ps_get_font_info;
|
||||
PS_GetFontExtraFunc ps_get_font_extra;
|
||||
PS_HasGlyphNamesFunc ps_has_glyph_names;
|
||||
PS_GetFontPrivateFunc ps_get_font_private;
|
||||
};
|
||||
|
@ -5,7 +5,7 @@
|
||||
/* Basic Type1/Type2 type definitions and interface (specification */
|
||||
/* only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -87,11 +87,24 @@ FT_BEGIN_HEADER
|
||||
} T1_EncodingType;
|
||||
|
||||
|
||||
/* used to hold extra data of PS_FontInfoRec that
|
||||
* cannot be stored in the publicly defined structure.
|
||||
*
|
||||
* Note these can't be blended with multiple-masters.
|
||||
*/
|
||||
typedef struct PS_FontExtraRec_
|
||||
{
|
||||
FT_UShort fs_type;
|
||||
|
||||
} PS_FontExtraRec;
|
||||
|
||||
|
||||
typedef struct T1_FontRec_
|
||||
{
|
||||
PS_FontInfoRec font_info; /* font info dictionary */
|
||||
PS_PrivateRec private_dict; /* private dictionary */
|
||||
FT_String* font_name; /* top-level dictionary */
|
||||
PS_FontInfoRec font_info; /* font info dictionary */
|
||||
PS_FontExtraRec font_extra; /* font info extra fields */
|
||||
PS_PrivateRec private_dict; /* private dictionary */
|
||||
FT_String* font_name; /* top-level dictionary */
|
||||
|
||||
T1_EncodingType encoding_type;
|
||||
T1_EncodingRec encoding;
|
||||
@ -231,6 +244,7 @@ FT_BEGIN_HEADER
|
||||
void* psnames;
|
||||
void* psaux;
|
||||
CID_FaceInfoRec cid;
|
||||
PS_FontExtraRec font_extra;
|
||||
#if 0
|
||||
void* afm_data;
|
||||
#endif
|
||||
|
@ -5,7 +5,7 @@
|
||||
/* Basic Type 1/Type 2 tables definitions and interface (specification */
|
||||
/* only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -78,10 +78,6 @@ FT_BEGIN_HEADER
|
||||
FT_Short underline_position;
|
||||
FT_UShort underline_thickness;
|
||||
|
||||
/* since 2.3.8 */
|
||||
|
||||
FT_UShort fs_type;
|
||||
|
||||
} PS_FontInfoRec;
|
||||
|
||||
|
||||
@ -486,11 +482,11 @@ FT_BEGIN_HEADER
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The string pointers within the font info structure are owned by
|
||||
* The string pointers within the @PS_PrivateRec structure are owned by
|
||||
* the face and don't need to be freed by the caller.
|
||||
*
|
||||
* If the font's format is not PostScript-based, this function will
|
||||
* return the `FT_Err_Invalid_Argument' error code.
|
||||
* If the font's format is not PostScript-based, this function returns
|
||||
* the `FT_Err_Invalid_Argument' error code.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
|
@ -5,7 +5,7 @@
|
||||
/* Basic SFNT/TrueType tables definitions and interface */
|
||||
/* (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -695,7 +695,7 @@ FT_BEGIN_HEADER
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* SFNT tables with length zero are treated as missing by Windows.
|
||||
* SFNT tables with length zero are treated as missing.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
|
@ -21,8 +21,10 @@ UseFreeTypeHeaders ;
|
||||
|
||||
if $(FT2_MULTI)
|
||||
{
|
||||
_sources = ftutil ftdbgmem ftstream ftcalc fttrigon ftgloadr ftoutln
|
||||
ftobjs ftnames ftrfork ;
|
||||
_sources = ftadvanc ftcalc ftdbgmem ftgloadr
|
||||
ftnames ftobjs ftoutln ftrfork
|
||||
ftstream fttrigon ftutil
|
||||
;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -35,11 +37,11 @@ UseFreeTypeHeaders ;
|
||||
# Add the optional/replaceable files.
|
||||
#
|
||||
{
|
||||
local _sources = system init glyph mm bdf
|
||||
bbox debug xf86 type1 pfr
|
||||
stroke winfnt otval bitmap synth
|
||||
gxval lcdfil gasp patent
|
||||
;
|
||||
local _sources = bbox bdf bitmap debug gasp
|
||||
glyph gxval init lcdfil mm
|
||||
otval pfr stroke synth system
|
||||
type1 winfnt xf86 patent
|
||||
;
|
||||
|
||||
FT2_Library $(FT2_LIB) : ft$(_sources).c ;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Quick computation of advance widths (body). */
|
||||
/* */
|
||||
/* Copyright 2008 by */
|
||||
/* Copyright 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -42,8 +42,8 @@
|
||||
else
|
||||
scale = face->size->metrics.x_scale;
|
||||
|
||||
/* this must be the same computation as to get linearHori/VertAdvance */
|
||||
/* (see `FT_Load_Glyph' implementation in src/base/ftobjs.c */
|
||||
/* this must be the same scaling as to get linear{Hori,Vert}Advance */
|
||||
/* (see `FT_Load_Glyph' implementation in src/base/ftobjs.c) */
|
||||
|
||||
for ( nn = 0; nn < count; nn++ )
|
||||
advances[nn] = FT_MulDiv( advances[nn], scale, 64 );
|
||||
@ -148,8 +148,8 @@
|
||||
break;
|
||||
|
||||
padvances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT )
|
||||
? face->glyph->advance.x
|
||||
: face->glyph->advance.y;
|
||||
? face->glyph->advance.y
|
||||
: face->glyph->advance.x;
|
||||
}
|
||||
|
||||
if ( error )
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType API for accessing CID font information. */
|
||||
/* */
|
||||
/* Copyright 2007 by Derek Clegg. */
|
||||
/* Copyright 2007, 2009 by Derek Clegg, Michael Toftdal. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
@ -16,6 +16,7 @@
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CID_H
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include FT_SERVICE_CID_H
|
||||
|
||||
@ -60,4 +61,57 @@
|
||||
}
|
||||
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face,
|
||||
FT_Bool *is_cid )
|
||||
{
|
||||
FT_Error error = FT_Err_Invalid_Argument;
|
||||
FT_Bool ic = 0;
|
||||
|
||||
|
||||
if ( face )
|
||||
{
|
||||
FT_Service_CID service;
|
||||
|
||||
|
||||
FT_FACE_FIND_SERVICE( face, service, CID );
|
||||
|
||||
if ( service && service->get_is_cid )
|
||||
error = service->get_is_cid( face, &ic);
|
||||
}
|
||||
|
||||
if ( is_cid )
|
||||
*is_cid = ic;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Get_CID_From_Glyph_Index( FT_Face face,
|
||||
FT_UInt glyph_index,
|
||||
FT_UInt *cid )
|
||||
{
|
||||
FT_Error error = FT_Err_Invalid_Argument;
|
||||
FT_UInt c = 0;
|
||||
|
||||
|
||||
if ( face )
|
||||
{
|
||||
FT_Service_CID service;
|
||||
|
||||
|
||||
FT_FACE_FIND_SERVICE( face, service, CID );
|
||||
|
||||
if ( service && service->get_cid_from_glyph_index )
|
||||
error = service->get_cid_from_glyph_index( face, glyph_index, &c);
|
||||
}
|
||||
|
||||
if ( cid )
|
||||
*cid = c;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
/* END */
|
||||
|
62
src/libs/freetype2/base/ftfstype.c
Normal file
62
src/libs/freetype2/base/ftfstype.c
Normal file
@ -0,0 +1,62 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftfstype.c */
|
||||
/* */
|
||||
/* FreeType utility file to access FSType data (body). */
|
||||
/* */
|
||||
/* Copyright 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_TYPE1_TABLES_H
|
||||
#include FT_TRUETYPE_TABLES_H
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_SERVICE_POSTSCRIPT_INFO_H
|
||||
|
||||
|
||||
/* documentation is in freetype.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_UShort )
|
||||
FT_Get_FSType_Flags( FT_Face face )
|
||||
{
|
||||
TT_OS2* os2;
|
||||
|
||||
|
||||
/* first, try to get the fs_type directly from the font */
|
||||
if ( face )
|
||||
{
|
||||
FT_Service_PsInfo service = NULL;
|
||||
|
||||
|
||||
FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );
|
||||
|
||||
if ( service && service->ps_get_font_extra )
|
||||
{
|
||||
PS_FontExtraRec extra;
|
||||
|
||||
|
||||
if ( !service->ps_get_font_extra( face, &extra ) &&
|
||||
extra.fs_type != 0 )
|
||||
return extra.fs_type;
|
||||
}
|
||||
}
|
||||
|
||||
/* look at FSType before fsType for Type42 */
|
||||
|
||||
if ( ( os2 = (TT_OS2*)FT_Get_Sfnt_Table( face, ft_sfnt_os2 ) ) != NULL &&
|
||||
os2->version != 0xFFFFU )
|
||||
return os2->fsType;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* END */
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Multiple Master font support (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2003, 2004, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -52,7 +52,7 @@
|
||||
*aservice,
|
||||
MULTI_MASTERS );
|
||||
|
||||
if ( aservice )
|
||||
if ( *aservice )
|
||||
error = FT_Err_Ok;
|
||||
}
|
||||
|
||||
|
@ -1140,6 +1140,7 @@
|
||||
|
||||
args.flags = FT_OPEN_PATHNAME;
|
||||
args.pathname = (char*)pathname;
|
||||
args.stream = NULL;
|
||||
|
||||
return FT_Open_Face( library, &args, face_index, aface );
|
||||
}
|
||||
@ -1166,6 +1167,7 @@
|
||||
args.flags = FT_OPEN_MEMORY;
|
||||
args.memory_base = file_base;
|
||||
args.memory_size = file_size;
|
||||
args.stream = NULL;
|
||||
|
||||
return FT_Open_Face( library, &args, face_index, aface );
|
||||
}
|
||||
@ -1417,7 +1419,7 @@
|
||||
&length,
|
||||
&is_sfnt_cid );
|
||||
if ( error )
|
||||
return error;
|
||||
goto Exit;
|
||||
|
||||
if ( FT_Stream_Seek( stream, pos + offset ) )
|
||||
goto Exit;
|
||||
@ -1436,8 +1438,19 @@
|
||||
is_sfnt_cid ? "cid" : "type1",
|
||||
aface );
|
||||
Exit:
|
||||
FT_Stream_Seek( stream, pos );
|
||||
return error;
|
||||
{
|
||||
FT_Error error1;
|
||||
|
||||
|
||||
if ( error == FT_Err_Unknown_File_Format )
|
||||
{
|
||||
error1 = FT_Stream_Seek( stream, pos );
|
||||
if ( error1 )
|
||||
return error1;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1605,6 +1618,10 @@
|
||||
if ( !error )
|
||||
goto Exit;
|
||||
|
||||
/* rewind sfnt stream before open_face_PS_from_sfnt_stream() */
|
||||
if ( FT_Stream_Seek( stream, flag_offset + 4 ) )
|
||||
goto Exit;
|
||||
|
||||
if ( FT_ALLOC( sfnt_data, (FT_Long)rlen ) )
|
||||
return error;
|
||||
error = FT_Stream_Read( stream, (FT_Byte *)sfnt_data, rlen );
|
||||
@ -2450,8 +2467,8 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
metrics->x_scale = 1L << 22;
|
||||
metrics->y_scale = 1L << 22;
|
||||
metrics->x_scale = 1L << 16;
|
||||
metrics->y_scale = 1L << 16;
|
||||
metrics->ascender = bsize->y_ppem;
|
||||
metrics->descender = 0;
|
||||
metrics->height = bsize->height << 6;
|
||||
@ -2562,8 +2579,8 @@
|
||||
else
|
||||
{
|
||||
FT_ZERO( metrics );
|
||||
metrics->x_scale = 1L << 22;
|
||||
metrics->y_scale = 1L << 22;
|
||||
metrics->x_scale = 1L << 16;
|
||||
metrics->y_scale = 1L << 16;
|
||||
}
|
||||
}
|
||||
|
||||
@ -4378,27 +4395,4 @@
|
||||
}
|
||||
|
||||
|
||||
/* documentation is in freetype.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_UShort )
|
||||
FT_Get_FSType_Flags( FT_Face face )
|
||||
{
|
||||
PS_FontInfoRec font_info;
|
||||
TT_OS2* os2;
|
||||
|
||||
|
||||
/* look at FSType before fsType for Type42 */
|
||||
|
||||
if ( !FT_Get_PS_Font_Info( face, &font_info ) &&
|
||||
font_info.fs_type != 0 )
|
||||
return font_info.fs_type;
|
||||
|
||||
if ( ( os2 = (TT_OS2*)FT_Get_Sfnt_Table( face, ft_sfnt_os2 ) ) != NULL &&
|
||||
os2->version != 0xFFFFU )
|
||||
return os2->fsType;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* END */
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Embedded resource forks accessor (body). */
|
||||
/* */
|
||||
/* Copyright 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* Masatake YAMATO and Redhat K.K. */
|
||||
/* */
|
||||
/* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are */
|
||||
@ -709,8 +709,12 @@
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
else
|
||||
FT_Stream_Skip( stream, 4 + 4 ); /* offset + length */
|
||||
{
|
||||
error = FT_Stream_Skip( stream, 4 + 4 ); /* offset + length */
|
||||
if ( error )
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
return FT_Err_Unknown_File_Format;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType path stroker (body). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2008 by */
|
||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -606,9 +606,6 @@
|
||||
|
||||
if ( tags[0] & FT_STROKE_TAG_END )
|
||||
{
|
||||
if ( in_contour == 0 )
|
||||
goto Fail;
|
||||
|
||||
in_contour = 0;
|
||||
num_contours++;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
|
||||
# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by
|
||||
# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
@ -33,7 +33,8 @@ BASE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SRC_DIR)/base)
|
||||
# All files listed here should be included in `ftbase.c' (for a `single'
|
||||
# build).
|
||||
#
|
||||
BASE_SRC := $(BASE_DIR)/ftcalc.c \
|
||||
BASE_SRC := $(BASE_DIR)/ftadvanc.c \
|
||||
$(BASE_DIR)/ftcalc.c \
|
||||
$(BASE_DIR)/ftdbgmem.c \
|
||||
$(BASE_DIR)/ftgloadr.c \
|
||||
$(BASE_DIR)/ftnames.c \
|
||||
@ -42,8 +43,8 @@ BASE_SRC := $(BASE_DIR)/ftcalc.c \
|
||||
$(BASE_DIR)/ftrfork.c \
|
||||
$(BASE_DIR)/ftstream.c \
|
||||
$(BASE_DIR)/fttrigon.c \
|
||||
$(BASE_DIR)/ftutil.c \
|
||||
$(BASE_DIR)/ftadvanc.c
|
||||
$(BASE_DIR)/ftutil.c
|
||||
|
||||
|
||||
ifneq ($(ftmac_c),)
|
||||
BASE_SRC += $(BASE_DIR)/$(ftmac_c)
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2000 Computing Research Labs, New Mexico State University
|
||||
* Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
||||
* Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||
* Francesco Zappa Nardelli
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -1394,6 +1394,12 @@
|
||||
font->font_descent = fp->value.int32;
|
||||
else if ( ft_memcmp( name, "SPACING", 7 ) == 0 )
|
||||
{
|
||||
if ( !fp->value.atom )
|
||||
{
|
||||
error = BDF_Err_Invalid_File_Format;
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
if ( fp->value.atom[0] == 'p' || fp->value.atom[0] == 'P' )
|
||||
font->spacing = BDF_PROPORTIONAL;
|
||||
else if ( fp->value.atom[0] == 'm' || fp->value.atom[0] == 'M' )
|
||||
@ -2072,6 +2078,7 @@
|
||||
error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
|
||||
if ( error )
|
||||
goto Exit;
|
||||
/* at this point, `p->font' can't be NULL */
|
||||
p->cnt = p->font->props_size = _bdf_atoul( p->list.field[1], 0, 10 );
|
||||
|
||||
if ( FT_NEW_ARRAY( p->font->props, p->cnt ) )
|
||||
|
5
src/libs/freetype2/cache/ftcmanag.c
vendored
5
src/libs/freetype2/cache/ftcmanag.c
vendored
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType Cache Manager (body). */
|
||||
/* */
|
||||
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2008 by */
|
||||
/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -608,7 +608,8 @@
|
||||
}
|
||||
|
||||
Exit:
|
||||
*acache = cache;
|
||||
if ( acache )
|
||||
*acache = cache;
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* OpenType font driver implementation (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -188,29 +188,28 @@
|
||||
|
||||
|
||||
FT_CALLBACK_DEF( FT_Error )
|
||||
cff_get_advances( FT_Face ftface,
|
||||
cff_get_advances( FT_Face face,
|
||||
FT_UInt start,
|
||||
FT_UInt count,
|
||||
FT_Int32 flags,
|
||||
FT_Fixed* advances )
|
||||
{
|
||||
CFF_Face face = (CFF_Face)ftface;
|
||||
FT_UInt nn;
|
||||
FT_Error error = CFF_Err_Ok;
|
||||
FT_GlyphSlot slot = face->root.glyph;
|
||||
FT_GlyphSlot slot = face->glyph;
|
||||
|
||||
|
||||
flags |= FT_LOAD_ADVANCE_ONLY;
|
||||
|
||||
for ( nn = 0; nn < count; nn++ )
|
||||
{
|
||||
error = Load_Glyph( slot, face->root.size, start+nn, flags );
|
||||
error = Load_Glyph( slot, face->size, start + nn, flags );
|
||||
if ( error )
|
||||
break;
|
||||
|
||||
advances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT )
|
||||
? slot->advance.y
|
||||
: slot->advance.x;
|
||||
? slot->linearVertAdvance
|
||||
: slot->linearHoriAdvance;
|
||||
}
|
||||
|
||||
return error;
|
||||
@ -371,7 +370,8 @@
|
||||
cff->font_info = font_info;
|
||||
}
|
||||
|
||||
*afont_info = *cff->font_info;
|
||||
if ( cff )
|
||||
*afont_info = *cff->font_info;
|
||||
|
||||
Fail:
|
||||
return error;
|
||||
@ -381,6 +381,7 @@
|
||||
static const FT_Service_PsInfoRec cff_service_ps_info =
|
||||
{
|
||||
(PS_GetFontInfoFunc) cff_ps_get_font_info,
|
||||
(PS_GetFontExtraFunc) NULL,
|
||||
(PS_HasGlyphNamesFunc) cff_ps_has_glyph_names,
|
||||
(PS_GetFontPrivateFunc)NULL /* unsupported with CFF fonts */
|
||||
};
|
||||
@ -506,9 +507,74 @@
|
||||
}
|
||||
|
||||
|
||||
static FT_Error
|
||||
cff_get_is_cid( CFF_Face face,
|
||||
FT_Bool *is_cid )
|
||||
{
|
||||
FT_Error error = CFF_Err_Ok;
|
||||
CFF_Font cff = (CFF_Font)face->extra.data;
|
||||
|
||||
|
||||
*is_cid = 0;
|
||||
|
||||
if ( cff )
|
||||
{
|
||||
CFF_FontRecDict dict = &cff->top_font.font_dict;
|
||||
|
||||
|
||||
if ( dict->cid_registry != 0xFFFFU )
|
||||
*is_cid = 1;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
static FT_Error
|
||||
cff_get_cid_from_glyph_index( CFF_Face face,
|
||||
FT_UInt glyph_index,
|
||||
FT_UInt *cid )
|
||||
{
|
||||
FT_Error error = CFF_Err_Ok;
|
||||
CFF_Font cff;
|
||||
|
||||
|
||||
cff = (CFF_Font)face->extra.data;
|
||||
|
||||
if ( cff )
|
||||
{
|
||||
FT_UInt c;
|
||||
CFF_FontRecDict dict = &cff->top_font.font_dict;
|
||||
|
||||
|
||||
if ( dict->cid_registry == 0xFFFFU )
|
||||
{
|
||||
error = CFF_Err_Invalid_Argument;
|
||||
goto Fail;
|
||||
}
|
||||
|
||||
if ( glyph_index > cff->num_glyphs )
|
||||
{
|
||||
error = CFF_Err_Invalid_Argument;
|
||||
goto Fail;
|
||||
}
|
||||
|
||||
c = cff->charset.sids[glyph_index];
|
||||
|
||||
if ( cid )
|
||||
*cid = c;
|
||||
}
|
||||
|
||||
Fail:
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
static const FT_Service_CIDRec cff_service_cid_info =
|
||||
{
|
||||
(FT_CID_GetRegistryOrderingSupplementFunc)cff_get_ros
|
||||
(FT_CID_GetRegistryOrderingSupplementFunc)cff_get_ros,
|
||||
(FT_CID_GetIsInternallyCIDKeyedFunc) cff_get_is_cid,
|
||||
(FT_CID_GetCIDFromGlyphIndexFunc) cff_get_cid_from_glyph_index
|
||||
};
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* OpenType Glyph Loader (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -420,7 +420,7 @@
|
||||
|
||||
sub = cff->subfonts[fd_index];
|
||||
|
||||
if ( builder->hints_funcs )
|
||||
if ( builder->hints_funcs && size )
|
||||
{
|
||||
CFF_Internal internal = (CFF_Internal)size->root.internal;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* OpenType and CFF data/program tables loader (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -319,7 +319,7 @@
|
||||
static FT_Error
|
||||
cff_index_load_offsets( CFF_Index idx )
|
||||
{
|
||||
FT_Error error = 0;
|
||||
FT_Error error = CFF_Err_Ok;
|
||||
FT_Stream stream = idx->stream;
|
||||
FT_Memory memory = stream->memory;
|
||||
|
||||
@ -402,6 +402,7 @@
|
||||
old_offset = 1;
|
||||
for ( n = 0; n <= idx->count; n++ )
|
||||
{
|
||||
/* at this point, `idx->offsets' can't be NULL */
|
||||
offset = idx->offsets[n];
|
||||
if ( !offset )
|
||||
offset = old_offset;
|
||||
@ -1540,9 +1541,6 @@
|
||||
if ( error )
|
||||
goto Exit;
|
||||
}
|
||||
else
|
||||
/* CID-keyed fonts only need CIDs */
|
||||
FT_FREE( font->charset.sids );
|
||||
}
|
||||
|
||||
/* get the font name (/CIDFontName for CID-keyed fonts, */
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* CFF token stream parser (body) */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -244,7 +244,7 @@
|
||||
if ( !nib && !number )
|
||||
exponent_add--;
|
||||
/* Only add digit if we don't overflow. */
|
||||
else if ( number < 0xCCCCCCCL )
|
||||
else if ( number < 0xCCCCCCCL && fraction_length < 9 )
|
||||
{
|
||||
fraction_length++;
|
||||
number = number * 10 + nib;
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* CID-keyed Type1 font loader (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -97,6 +97,10 @@
|
||||
object = (FT_Byte*)&cid->font_info;
|
||||
break;
|
||||
|
||||
case T1_FIELD_LOCATION_FONT_EXTRA:
|
||||
object = (FT_Byte*)&face->font_extra;
|
||||
break;
|
||||
|
||||
case T1_FIELD_LOCATION_BBOX:
|
||||
object = (FT_Byte*)&cid->font_bbox;
|
||||
break;
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* CID driver interface (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -74,13 +74,23 @@
|
||||
PS_FontInfoRec* afont_info )
|
||||
{
|
||||
*afont_info = ((CID_Face)face)->cid.font_info;
|
||||
return 0;
|
||||
|
||||
return CID_Err_Ok;
|
||||
}
|
||||
|
||||
static FT_Error
|
||||
cid_ps_get_font_extra( FT_Face face,
|
||||
PS_FontExtraRec* afont_extra )
|
||||
{
|
||||
*afont_extra = ((CID_Face)face)->font_extra;
|
||||
|
||||
return CID_Err_Ok;
|
||||
}
|
||||
|
||||
static const FT_Service_PsInfoRec cid_service_ps_info =
|
||||
{
|
||||
(PS_GetFontInfoFunc) cid_ps_get_font_info,
|
||||
(PS_GetFontExtraFunc) cid_ps_get_font_extra,
|
||||
(PS_HasGlyphNamesFunc) NULL, /* unsupported with CID fonts */
|
||||
(PS_GetFontPrivateFunc)NULL /* unsupported */
|
||||
};
|
||||
@ -112,9 +122,42 @@
|
||||
}
|
||||
|
||||
|
||||
static FT_Error
|
||||
cid_get_is_cid( CID_Face face,
|
||||
FT_Bool *is_cid )
|
||||
{
|
||||
FT_Error error = CID_Err_Ok;
|
||||
FT_UNUSED( face );
|
||||
|
||||
|
||||
if ( is_cid )
|
||||
*is_cid = 1; /* cid driver is only used for CID keyed fonts */
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
static FT_Error
|
||||
cid_get_cid_from_glyph_index( CID_Face face,
|
||||
FT_UInt glyph_index,
|
||||
FT_UInt *cid )
|
||||
{
|
||||
FT_Error error = CID_Err_Ok;
|
||||
FT_UNUSED( face );
|
||||
|
||||
|
||||
if ( cid )
|
||||
*cid = glyph_index; /* identity mapping */
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
static const FT_Service_CIDRec cid_service_cid_info =
|
||||
{
|
||||
(FT_CID_GetRegistryOrderingSupplementFunc)cid_get_ros
|
||||
(FT_CID_GetRegistryOrderingSupplementFunc)cid_get_ros,
|
||||
(FT_CID_GetIsInternallyCIDKeyedFunc) cid_get_is_cid,
|
||||
(FT_CID_GetCIDFromGlyphIndexFunc) cid_get_cid_from_glyph_index
|
||||
};
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* CID token definitions (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -48,6 +48,12 @@
|
||||
T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch, 0 )
|
||||
T1_FIELD_NUM ( "UnderlinePosition", underline_position, 0 )
|
||||
T1_FIELD_NUM ( "UnderlineThickness", underline_thickness, 0 )
|
||||
|
||||
#undef FT_STRUCTURE
|
||||
#define FT_STRUCTURE PS_FontExtraRec
|
||||
#undef T1CODE
|
||||
#define T1CODE T1_FIELD_LOCATION_FONT_EXTRA
|
||||
|
||||
T1_FIELD_NUM ( "FSType", fs_type, 0 )
|
||||
|
||||
|
||||
|
@ -569,7 +569,7 @@
|
||||
if ( error )
|
||||
result = 0;
|
||||
|
||||
FT_Stream_Seek( stream, old_pos );
|
||||
(void)FT_Stream_Seek( stream, old_pos );
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
FreeType font driver for pcf files
|
||||
|
||||
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008 by
|
||||
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by
|
||||
Francesco Zappa Nardelli
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
@ -442,7 +442,7 @@ THE SOFTWARE.
|
||||
FT_Int32 load_flags )
|
||||
{
|
||||
PCF_Face face = (PCF_Face)FT_SIZE_FACE( size );
|
||||
FT_Stream stream = face->root.stream;
|
||||
FT_Stream stream;
|
||||
FT_Error error = PCF_Err_Ok;
|
||||
FT_Bitmap* bitmap = &slot->bitmap;
|
||||
PCF_Metric metric;
|
||||
@ -459,6 +459,8 @@ THE SOFTWARE.
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
stream = face->root.stream;
|
||||
|
||||
if ( glyph_index > 0 )
|
||||
glyph_index--;
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
FreeType font driver for pcf fonts
|
||||
|
||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by
|
||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
|
||||
Francesco Zappa Nardelli
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
@ -470,7 +470,11 @@ THE SOFTWARE.
|
||||
if ( nprops & 3 )
|
||||
{
|
||||
i = 4 - ( nprops & 3 );
|
||||
FT_Stream_Skip( stream, i );
|
||||
if ( FT_STREAM_SKIP( i ) )
|
||||
{
|
||||
error = PCF_Err_Invalid_Stream_Skip;
|
||||
goto Bail;
|
||||
}
|
||||
}
|
||||
|
||||
if ( PCF_BYTE_ORDER( format ) == MSBFirst )
|
||||
@ -623,7 +627,7 @@ THE SOFTWARE.
|
||||
metrics = face->metrics;
|
||||
for ( i = 0; i < nmetrics; i++ )
|
||||
{
|
||||
pcf_get_metric( stream, format, metrics + i );
|
||||
error = pcf_get_metric( stream, format, metrics + i );
|
||||
|
||||
metrics[i].bits = 0;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* The FreeType glyph rasterizer (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2005, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2005, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -811,10 +811,10 @@ a };
|
||||
|
||||
|
||||
n = ras.num_Profs;
|
||||
p = ras.fProfile;
|
||||
|
||||
if ( n > 1 )
|
||||
if ( n > 1 && p )
|
||||
{
|
||||
p = ras.fProfile;
|
||||
while ( n > 0 )
|
||||
{
|
||||
if ( n > 1 )
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
|
||||
# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007 by
|
||||
# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
@ -37,8 +37,11 @@ SFNT_DRV_SRC := $(SFNT_DIR)/ttload.c \
|
||||
|
||||
# SFNT driver headers
|
||||
#
|
||||
SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) \
|
||||
$(SFNT_DIR)/sferrors.h
|
||||
# Note that ttsbit0.c gets #included by ttsbit.c.
|
||||
#
|
||||
SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) \
|
||||
$(SFNT_DIR)/sferrors.h \
|
||||
$(SFNT_DIR)/ttsbit0.c
|
||||
|
||||
|
||||
# SFNT driver object(s)
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* High-level SFNT driver interface (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -151,10 +151,35 @@
|
||||
}
|
||||
|
||||
|
||||
static FT_UInt
|
||||
sfnt_get_name_index( TT_Face face,
|
||||
FT_String* glyph_name )
|
||||
{
|
||||
FT_Face root = &face->root;
|
||||
FT_Long i;
|
||||
|
||||
|
||||
for ( i = 0; i < root->num_glyphs; i++ )
|
||||
{
|
||||
FT_String* gname;
|
||||
FT_Error error = tt_face_get_ps_name( face, i, &gname );
|
||||
|
||||
|
||||
if ( error )
|
||||
continue;
|
||||
|
||||
if ( !ft_strcmp( glyph_name, gname ) )
|
||||
return (FT_UInt)i;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const FT_Service_GlyphDictRec sfnt_service_glyph_dict =
|
||||
{
|
||||
(FT_GlyphDict_GetNameFunc) sfnt_get_glyph_name,
|
||||
(FT_GlyphDict_NameIndexFunc)NULL
|
||||
(FT_GlyphDict_NameIndexFunc)sfnt_get_name_index
|
||||
};
|
||||
|
||||
#endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */
|
||||
|
@ -408,7 +408,7 @@
|
||||
face->ttc_header.version = 1 << 16;
|
||||
face->ttc_header.count = 1;
|
||||
|
||||
if ( FT_NEW( face->ttc_header.offsets) )
|
||||
if ( FT_NEW( face->ttc_header.offsets ) )
|
||||
return error;
|
||||
|
||||
face->ttc_header.offsets[0] = offset;
|
||||
@ -862,12 +862,78 @@
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
|
||||
/*
|
||||
* Now allocate the root array of FT_Bitmap_Size records and
|
||||
* populate them. Unfortunately, it isn't possible to indicate bit
|
||||
* depths in the FT_Bitmap_Size record. This is a design error.
|
||||
*/
|
||||
{
|
||||
FT_UInt i, count;
|
||||
|
||||
|
||||
#ifndef FT_CONFIG_OPTION_OLD_INTERNALS
|
||||
count = face->sbit_num_strikes;
|
||||
#else
|
||||
count = (FT_UInt)face->num_sbit_strikes;
|
||||
#endif
|
||||
|
||||
if ( count > 0 )
|
||||
{
|
||||
FT_Memory memory = face->root.stream->memory;
|
||||
FT_UShort em_size = face->header.Units_Per_EM;
|
||||
FT_Short avgwidth = face->os2.xAvgCharWidth;
|
||||
FT_Size_Metrics metrics;
|
||||
|
||||
|
||||
if ( em_size == 0 || face->os2.version == 0xFFFFU )
|
||||
{
|
||||
avgwidth = 0;
|
||||
em_size = 1;
|
||||
}
|
||||
|
||||
if ( FT_NEW_ARRAY( root->available_sizes, count ) )
|
||||
goto Exit;
|
||||
|
||||
for ( i = 0; i < count; i++ )
|
||||
{
|
||||
FT_Bitmap_Size* bsize = root->available_sizes + i;
|
||||
|
||||
|
||||
error = sfnt->load_strike_metrics( face, i, &metrics );
|
||||
if ( error )
|
||||
goto Exit;
|
||||
|
||||
bsize->height = (FT_Short)( metrics.height >> 6 );
|
||||
bsize->width = (FT_Short)(
|
||||
( avgwidth * metrics.x_ppem + em_size / 2 ) / em_size );
|
||||
|
||||
bsize->x_ppem = metrics.x_ppem << 6;
|
||||
bsize->y_ppem = metrics.y_ppem << 6;
|
||||
|
||||
/* assume 72dpi */
|
||||
bsize->size = metrics.y_ppem << 6;
|
||||
}
|
||||
|
||||
root->face_flags |= FT_FACE_FLAG_FIXED_SIZES;
|
||||
root->num_fixed_sizes = (FT_Int)count;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
|
||||
|
||||
/* a font with no bitmaps and no outlines is scalable; */
|
||||
/* it has only empty glyphs then */
|
||||
if ( !FT_HAS_FIXED_SIZES( root ) && !FT_IS_SCALABLE( root ) )
|
||||
root->face_flags |= FT_FACE_FLAG_SCALABLE;
|
||||
|
||||
|
||||
/*********************************************************************/
|
||||
/* */
|
||||
/* Set up metrics. */
|
||||
/* */
|
||||
if ( has_outline == TRUE )
|
||||
if ( FT_IS_SCALABLE( root ) )
|
||||
{
|
||||
/* XXX What about if outline header is missing */
|
||||
/* (e.g. sfnt wrapped bitmap)? */
|
||||
@ -952,71 +1018,6 @@
|
||||
root->underline_thickness = face->postscript.underlineThickness;
|
||||
}
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
|
||||
/*
|
||||
* Now allocate the root array of FT_Bitmap_Size records and
|
||||
* populate them. Unfortunately, it isn't possible to indicate bit
|
||||
* depths in the FT_Bitmap_Size record. This is a design error.
|
||||
*/
|
||||
{
|
||||
FT_UInt i, count;
|
||||
|
||||
|
||||
#ifndef FT_CONFIG_OPTION_OLD_INTERNALS
|
||||
count = face->sbit_num_strikes;
|
||||
#else
|
||||
count = (FT_UInt)face->num_sbit_strikes;
|
||||
#endif
|
||||
|
||||
if ( count > 0 )
|
||||
{
|
||||
FT_Memory memory = face->root.stream->memory;
|
||||
FT_UShort em_size = face->header.Units_Per_EM;
|
||||
FT_Short avgwidth = face->os2.xAvgCharWidth;
|
||||
FT_Size_Metrics metrics;
|
||||
|
||||
|
||||
if ( em_size == 0 || face->os2.version == 0xFFFFU )
|
||||
{
|
||||
avgwidth = 0;
|
||||
em_size = 1;
|
||||
}
|
||||
|
||||
if ( FT_NEW_ARRAY( root->available_sizes, count ) )
|
||||
goto Exit;
|
||||
|
||||
for ( i = 0; i < count; i++ )
|
||||
{
|
||||
FT_Bitmap_Size* bsize = root->available_sizes + i;
|
||||
|
||||
|
||||
error = sfnt->load_strike_metrics( face, i, &metrics );
|
||||
if ( error )
|
||||
goto Exit;
|
||||
|
||||
bsize->height = (FT_Short)( metrics.height >> 6 );
|
||||
bsize->width = (FT_Short)(
|
||||
( avgwidth * metrics.x_ppem + em_size / 2 ) / em_size );
|
||||
|
||||
bsize->x_ppem = metrics.x_ppem << 6;
|
||||
bsize->y_ppem = metrics.y_ppem << 6;
|
||||
|
||||
/* assume 72dpi */
|
||||
bsize->size = metrics.y_ppem << 6;
|
||||
}
|
||||
|
||||
root->face_flags |= FT_FACE_FLAG_FIXED_SIZES;
|
||||
root->num_fixed_sizes = (FT_Int)count;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
|
||||
|
||||
/* a font with no bitmaps and no outlines is scalable; */
|
||||
/* it has only empty glyphs then */
|
||||
if ( !FT_HAS_FIXED_SIZES( root ) && !FT_IS_SCALABLE( root ) )
|
||||
root->face_flags |= FT_FACE_FLAG_SCALABLE;
|
||||
}
|
||||
|
||||
Exit:
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* TrueType character mapping table (cmap) support (body). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -231,7 +231,7 @@
|
||||
/* language 4 USHORT Mac language code */
|
||||
/* keys 6 USHORT[256] sub-header keys */
|
||||
/* subs 518 SUBHEAD[NSUBS] sub-headers array */
|
||||
/* glyph_ids 518+NSUB*8 USHORT[] glyph id array */
|
||||
/* glyph_ids 518+NSUB*8 USHORT[] glyph ID array */
|
||||
/* */
|
||||
/* The `keys' table is used to map charcode high-bytes to sub-headers. */
|
||||
/* The value of `NSUBS' is the number of sub-headers defined in the */
|
||||
@ -282,7 +282,7 @@
|
||||
FT_UInt n, max_subs;
|
||||
FT_Byte* keys; /* keys table */
|
||||
FT_Byte* subs; /* sub-headers */
|
||||
FT_Byte* glyph_ids; /* glyph id array */
|
||||
FT_Byte* glyph_ids; /* glyph ID array */
|
||||
|
||||
|
||||
if ( table + length > valid->limit || length < 6 + 512 )
|
||||
@ -605,14 +605,14 @@
|
||||
/* each segment; can be */
|
||||
/* zero */
|
||||
/* */
|
||||
/* glyphIds 16+NUM_SEGS*8 USHORT[] array of glyph id */
|
||||
/* glyphIds 16+NUM_SEGS*8 USHORT[] array of glyph ID */
|
||||
/* ranges */
|
||||
/* */
|
||||
/* Character codes are modelled by a series of ordered (increasing) */
|
||||
/* intervals called segments. Each segment has start and end codes, */
|
||||
/* provided by the `startCount' and `endCount' arrays. Segments must */
|
||||
/* not be overlapping and the last segment should always contain the */
|
||||
/* `0xFFFF' endCount. */
|
||||
/* not overlap, and the last segment should always contain the value */
|
||||
/* 0xFFFF for `endCount'. */
|
||||
/* */
|
||||
/* The fields `searchRange', `entrySelector' and `rangeShift' are better */
|
||||
/* ignored (they are traces of over-engineering in the TrueType */
|
||||
@ -629,10 +629,10 @@
|
||||
/* the segment, and the value of `idDelta' is added to it. */
|
||||
/* */
|
||||
/* */
|
||||
/* Finally, note that certain fonts contain invalid charmaps that */
|
||||
/* contain end=0xFFFF, start=0xFFFF, delta=0x0001, offset=0xFFFF at the */
|
||||
/* of their charmaps (e.g. opens___.ttf which comes with OpenOffice.org) */
|
||||
/* we need special code to deal with them correctly... */
|
||||
/* Finally, note that a lot of fonts contain an invalid last segment, */
|
||||
/* where `start' and `end' are correctly set to 0xFFFF but both `delta' */
|
||||
/* and `offset' are incorrect (e.g., `opens___.ttf' which comes with */
|
||||
/* OpenOffice.org). We need special code to deal with them correctly. */
|
||||
/* */
|
||||
|
||||
#ifdef TT_CONFIG_CMAP_FORMAT_4
|
||||
@ -697,6 +697,23 @@
|
||||
p += num_ranges * 2;
|
||||
offset = FT_PEEK_USHORT( p );
|
||||
|
||||
/* some fonts have an incorrect last segment; */
|
||||
/* we have to catch it */
|
||||
if ( range_index >= num_ranges - 1 &&
|
||||
cmap->cur_start == 0xFFFFU &&
|
||||
cmap->cur_end == 0xFFFFU )
|
||||
{
|
||||
TT_Face face = (TT_Face)cmap->cmap.cmap.charmap.face;
|
||||
FT_Byte* limit = face->cmap_table + face->cmap_size;
|
||||
|
||||
|
||||
if ( offset && p + offset + 2 > limit )
|
||||
{
|
||||
cmap->cur_delta = 1;
|
||||
offset = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( offset != 0xFFFFU )
|
||||
{
|
||||
cmap->cur_values = offset ? p + offset : NULL;
|
||||
@ -862,7 +879,7 @@
|
||||
offsets = deltas + num_segs * 2;
|
||||
glyph_ids = offsets + num_segs * 2;
|
||||
|
||||
/* check last segment, its end count must be 0xFFFF */
|
||||
/* check last segment; its end count value must be 0xFFFF */
|
||||
if ( valid->level >= FT_VALIDATE_PARANOID )
|
||||
{
|
||||
p = ends + ( num_segs - 1 ) * 2;
|
||||
@ -891,10 +908,10 @@
|
||||
if ( start > end )
|
||||
FT_INVALID_DATA;
|
||||
|
||||
/* this test should be performed at default validation level; */
|
||||
/* unfortunately, some popular Asian fonts present overlapping */
|
||||
/* ranges in their charmaps */
|
||||
/* */
|
||||
/* this test should be performed at default validation level; */
|
||||
/* unfortunately, some popular Asian fonts have overlapping */
|
||||
/* ranges in their charmaps */
|
||||
/* */
|
||||
if ( start <= last_end && n > 0 )
|
||||
{
|
||||
if ( valid->level >= FT_VALIDATE_TIGHT )
|
||||
@ -902,7 +919,7 @@
|
||||
else
|
||||
{
|
||||
/* allow overlapping segments, provided their start points */
|
||||
/* and end points, respectively, are in ascending order. */
|
||||
/* and end points, respectively, are in ascending order */
|
||||
/* */
|
||||
if ( last_start > start || last_end > end )
|
||||
error |= TT_CMAP_FLAG_UNSORTED;
|
||||
@ -913,7 +930,7 @@
|
||||
|
||||
if ( offset && offset != 0xFFFFU )
|
||||
{
|
||||
p += offset; /* start of glyph id array */
|
||||
p += offset; /* start of glyph ID array */
|
||||
|
||||
/* check that we point within the glyph IDs table only */
|
||||
if ( valid->level >= FT_VALIDATE_TIGHT )
|
||||
@ -922,11 +939,18 @@
|
||||
p + ( end - start + 1 ) * 2 > table + length )
|
||||
FT_INVALID_DATA;
|
||||
}
|
||||
/* some fonts handle the last segment incorrectly */
|
||||
else if ( n != num_segs - 1 ||
|
||||
!( start == 0xFFFFU &&
|
||||
end == 0xFFFFU &&
|
||||
delta == 0x1U ) )
|
||||
/* Some fonts handle the last segment incorrectly. In */
|
||||
/* theory, 0xFFFF might point to an ordinary glyph -- */
|
||||
/* a cmap 4 is versatile and could be used for any */
|
||||
/* encoding, not only Unicode. However, reality shows */
|
||||
/* that far too many fonts are sloppy and incorrectly */
|
||||
/* set all fields but `start' and `end' for the last */
|
||||
/* segment if it contains only a single character. */
|
||||
/* */
|
||||
/* We thus omit the test here, delaying it to the */
|
||||
/* routines which actually access the cmap. */
|
||||
else if ( n != num_segs - 1 ||
|
||||
!( start == 0xFFFFU && end == 0xFFFFU ) )
|
||||
{
|
||||
if ( p < glyph_ids ||
|
||||
p + ( end - start + 1 ) * 2 > valid->limit )
|
||||
@ -957,9 +981,9 @@
|
||||
/* some fonts (erroneously?) use a range offset of 0xFFFF */
|
||||
/* to mean missing glyph in cmap table */
|
||||
/* */
|
||||
if ( valid->level >= FT_VALIDATE_PARANOID ||
|
||||
n != num_segs - 1 ||
|
||||
!( start == 0xFFFFU && end == 0xFFFFU && delta == 0x1U ) )
|
||||
if ( valid->level >= FT_VALIDATE_PARANOID ||
|
||||
n != num_segs - 1 ||
|
||||
!( start == 0xFFFFU && end == 0xFFFFU ) )
|
||||
FT_INVALID_DATA;
|
||||
}
|
||||
|
||||
@ -1017,11 +1041,21 @@
|
||||
p += num_segs2;
|
||||
offset = TT_PEEK_USHORT( p );
|
||||
|
||||
/* some fonts handle the last segment incorrectly; */
|
||||
/* we have to catch it */
|
||||
if ( i >= num_segs - 1 &&
|
||||
start == 0xFFFFU && end == 0xFFFFU && delta == 0x1U )
|
||||
offset = 0;
|
||||
/* some fonts have an incorrect last segment; */
|
||||
/* we have to catch it */
|
||||
if ( i >= num_segs - 1 &&
|
||||
start == 0xFFFFU && end == 0xFFFFU )
|
||||
{
|
||||
TT_Face face = (TT_Face)cmap->cmap.charmap.face;
|
||||
FT_Byte* limit = face->cmap_table + face->cmap_size;
|
||||
|
||||
|
||||
if ( offset && p + offset + 2 > limit )
|
||||
{
|
||||
delta = 1;
|
||||
offset = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( offset == 0xFFFFU )
|
||||
continue;
|
||||
@ -1102,11 +1136,21 @@
|
||||
p += num_segs2;
|
||||
offset = TT_PEEK_USHORT( p );
|
||||
|
||||
/* some fonts handle the last segment incorrectly; */
|
||||
/* we have to catch it */
|
||||
if ( mid >= num_segs - 1 &&
|
||||
start == 0xFFFFU && end == 0xFFFFU && delta == 0x1U )
|
||||
offset = 0;
|
||||
/* some fonts have an incorrect last segment; */
|
||||
/* we have to catch it */
|
||||
if ( mid >= num_segs - 1 &&
|
||||
start == 0xFFFFU && end == 0xFFFFU )
|
||||
{
|
||||
TT_Face face = (TT_Face)cmap->cmap.charmap.face;
|
||||
FT_Byte* limit = face->cmap_table + face->cmap_size;
|
||||
|
||||
|
||||
if ( offset && p + offset + 2 > limit )
|
||||
{
|
||||
delta = 1;
|
||||
offset = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* search the first segment containing `charcode' */
|
||||
if ( cmap->flags & TT_CMAP_FLAG_OVERLAPPING )
|
||||
@ -1572,7 +1616,7 @@
|
||||
/* */
|
||||
/* start 0 ULONG first charcode */
|
||||
/* end 4 ULONG last charcode */
|
||||
/* startId 8 ULONG start glyph id for the group */
|
||||
/* startId 8 ULONG start glyph ID for the group */
|
||||
/* */
|
||||
|
||||
#ifdef TT_CONFIG_CMAP_FORMAT_8
|
||||
@ -1954,7 +1998,7 @@
|
||||
/* */
|
||||
/* start 0 ULONG first charcode */
|
||||
/* end 4 ULONG last charcode */
|
||||
/* startId 8 ULONG start glyph id for the group */
|
||||
/* startId 8 ULONG start glyph ID for the group */
|
||||
/* */
|
||||
|
||||
#ifdef TT_CONFIG_CMAP_FORMAT_12
|
||||
|
@ -5,7 +5,7 @@
|
||||
/* Load the basic TrueType kerning table. This doesn't handle */
|
||||
/* kerning data within the GPOS table at the moment. */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -103,6 +103,9 @@
|
||||
|
||||
p_next += length;
|
||||
|
||||
if ( p_next > p_limit ) /* handle broken table */
|
||||
p_next = p_limit;
|
||||
|
||||
/* only use horizontal kerning tables */
|
||||
if ( ( coverage & ~8 ) != 0x0001 ||
|
||||
p + 8 > p_limit )
|
||||
@ -111,8 +114,8 @@
|
||||
num_pairs = FT_NEXT_USHORT( p );
|
||||
p += 6;
|
||||
|
||||
if ( p + 6 * num_pairs > p_limit )
|
||||
goto NextTable;
|
||||
if ( ( p_next - p ) / 6 < (int)num_pairs ) /* handle broken count */
|
||||
num_pairs = (FT_UInt)( ( p_next - p ) / 6 );
|
||||
|
||||
avail |= mask;
|
||||
|
||||
@ -181,18 +184,22 @@
|
||||
FT_Int result = 0;
|
||||
FT_UInt count, mask = 1;
|
||||
FT_Byte* p = face->kern_table;
|
||||
FT_Byte* p_limit = p + face->kern_table_size;
|
||||
|
||||
|
||||
p += 4;
|
||||
mask = 0x0001;
|
||||
|
||||
for ( count = face->num_kern_tables; count > 0; count--, mask <<= 1 )
|
||||
for ( count = face->num_kern_tables;
|
||||
count > 0 && p + 6 <= p_limit;
|
||||
count--, mask <<= 1 )
|
||||
{
|
||||
FT_Byte* base = p;
|
||||
FT_Byte* next = base;
|
||||
FT_UInt version = FT_NEXT_USHORT( p );
|
||||
FT_UInt length = FT_NEXT_USHORT( p );
|
||||
FT_UInt coverage = FT_NEXT_USHORT( p );
|
||||
FT_UInt num_pairs;
|
||||
FT_Int value = 0;
|
||||
|
||||
FT_UNUSED( version );
|
||||
@ -200,22 +207,28 @@
|
||||
|
||||
next = base + length;
|
||||
|
||||
if ( next > p_limit ) /* handle broken table */
|
||||
next = p_limit;
|
||||
|
||||
if ( ( face->kern_avail_bits & mask ) == 0 )
|
||||
goto NextTable;
|
||||
|
||||
if ( p + 8 > next )
|
||||
goto NextTable;
|
||||
|
||||
num_pairs = FT_NEXT_USHORT( p );
|
||||
p += 6;
|
||||
|
||||
if ( ( next - p ) / 6 < (int)num_pairs ) /* handle broken count */
|
||||
num_pairs = (FT_UInt)( ( next - p ) / 6 );
|
||||
|
||||
switch ( coverage >> 8 )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
FT_UInt num_pairs = FT_NEXT_USHORT( p );
|
||||
FT_ULong key0 = TT_KERN_INDEX( left_glyph, right_glyph );
|
||||
FT_ULong key0 = TT_KERN_INDEX( left_glyph, right_glyph );
|
||||
|
||||
|
||||
p += 6;
|
||||
|
||||
if ( face->kern_order_bits & mask ) /* binary search */
|
||||
{
|
||||
FT_UInt min = 0;
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* TrueType and OpenType embedded bitmap support (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -83,7 +83,8 @@
|
||||
FT_Int line_bits,
|
||||
FT_Bool byte_padded,
|
||||
FT_Int x_offset,
|
||||
FT_Int y_offset )
|
||||
FT_Int y_offset,
|
||||
FT_Int source_height )
|
||||
{
|
||||
FT_Byte* line_buff;
|
||||
FT_Int line_incr;
|
||||
@ -116,7 +117,7 @@
|
||||
acc = 0; /* clear accumulator */
|
||||
loaded = 0; /* no bits were loaded */
|
||||
|
||||
for ( height = target->rows; height > 0; height-- )
|
||||
for ( height = source_height; height > 0; height-- )
|
||||
{
|
||||
FT_Byte* cur = line_buff; /* current write cursor */
|
||||
FT_Int count = line_bits; /* # of bits to extract per line */
|
||||
@ -772,7 +773,7 @@
|
||||
Found:
|
||||
/* return successfully! */
|
||||
*arange = range;
|
||||
return 0;
|
||||
return SFNT_Err_Ok;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1230,7 +1231,7 @@
|
||||
/* the sbit blitter doesn't make a difference between pixmap */
|
||||
/* depths. */
|
||||
blit_sbit( map, (FT_Byte*)stream->cursor, line_bits, pad_bytes,
|
||||
x_offset * pix_bits, y_offset );
|
||||
x_offset * pix_bits, y_offset, metrics->height );
|
||||
|
||||
FT_FRAME_EXIT();
|
||||
}
|
||||
@ -1324,7 +1325,11 @@
|
||||
range->image_format, metrics, stream );
|
||||
|
||||
case 8: /* compound format */
|
||||
FT_Stream_Skip( stream, 1L );
|
||||
if ( FT_STREAM_SKIP( 1L ) )
|
||||
{
|
||||
error = SFNT_Err_Invalid_Stream_Skip;
|
||||
goto Exit;
|
||||
}
|
||||
/* fallthrough */
|
||||
|
||||
case 9:
|
||||
|
@ -5,7 +5,7 @@
|
||||
/* TrueType and OpenType embedded bitmap support (body). */
|
||||
/* This is a heap-optimized version. */
|
||||
/* */
|
||||
/* Copyright 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -39,65 +39,16 @@
|
||||
#define FT_COMPONENT trace_ttsbit
|
||||
|
||||
|
||||
static const FT_Frame_Field tt_sbit_line_metrics_fields[] =
|
||||
{
|
||||
#undef FT_STRUCTURE
|
||||
#define FT_STRUCTURE TT_SBit_LineMetricsRec
|
||||
|
||||
/* no FT_FRAME_START */
|
||||
FT_FRAME_CHAR( ascender ),
|
||||
FT_FRAME_CHAR( descender ),
|
||||
FT_FRAME_BYTE( max_width ),
|
||||
|
||||
FT_FRAME_CHAR( caret_slope_numerator ),
|
||||
FT_FRAME_CHAR( caret_slope_denominator ),
|
||||
FT_FRAME_CHAR( caret_offset ),
|
||||
|
||||
FT_FRAME_CHAR( min_origin_SB ),
|
||||
FT_FRAME_CHAR( min_advance_SB ),
|
||||
FT_FRAME_CHAR( max_before_BL ),
|
||||
FT_FRAME_CHAR( min_after_BL ),
|
||||
FT_FRAME_CHAR( pads[0] ),
|
||||
FT_FRAME_CHAR( pads[1] ),
|
||||
FT_FRAME_END
|
||||
};
|
||||
|
||||
static const FT_Frame_Field tt_strike_start_fields[] =
|
||||
{
|
||||
#undef FT_STRUCTURE
|
||||
#define FT_STRUCTURE TT_SBit_StrikeRec
|
||||
|
||||
/* no FT_FRAME_START */
|
||||
FT_FRAME_ULONG( ranges_offset ),
|
||||
FT_FRAME_SKIP_LONG,
|
||||
FT_FRAME_ULONG( num_ranges ),
|
||||
FT_FRAME_ULONG( color_ref ),
|
||||
FT_FRAME_END
|
||||
};
|
||||
|
||||
static const FT_Frame_Field tt_strike_end_fields[] =
|
||||
{
|
||||
/* no FT_FRAME_START */
|
||||
FT_FRAME_USHORT( start_glyph ),
|
||||
FT_FRAME_USHORT( end_glyph ),
|
||||
FT_FRAME_BYTE ( x_ppem ),
|
||||
FT_FRAME_BYTE ( y_ppem ),
|
||||
FT_FRAME_BYTE ( bit_depth ),
|
||||
FT_FRAME_CHAR ( flags ),
|
||||
FT_FRAME_END
|
||||
};
|
||||
|
||||
|
||||
FT_LOCAL_DEF( FT_Error )
|
||||
tt_face_load_eblc( TT_Face face,
|
||||
FT_Stream stream )
|
||||
{
|
||||
FT_Error error = SFNT_Err_Ok;
|
||||
FT_Fixed version;
|
||||
FT_ULong num_strikes, table_size;
|
||||
FT_Byte* p;
|
||||
FT_Byte* p_limit;
|
||||
FT_UInt count;
|
||||
FT_Error error = SFNT_Err_Ok;
|
||||
FT_Fixed version;
|
||||
FT_ULong num_strikes, table_size;
|
||||
FT_Byte* p;
|
||||
FT_Byte* p_limit;
|
||||
FT_UInt count;
|
||||
|
||||
|
||||
face->sbit_num_strikes = 0;
|
||||
@ -111,7 +62,7 @@
|
||||
|
||||
if ( table_size < 8 )
|
||||
{
|
||||
FT_ERROR(( "%s: table too short!\n", "tt_face_load_sbit_strikes" ));
|
||||
FT_ERROR(( "tt_face_load_sbit_strikes: table too short!\n" ));
|
||||
error = SFNT_Err_Invalid_File_Format;
|
||||
goto Exit;
|
||||
}
|
||||
@ -129,8 +80,7 @@
|
||||
|
||||
if ( version != 0x00020000UL || num_strikes >= 0x10000UL )
|
||||
{
|
||||
FT_ERROR(( "%s: invalid table version!\n",
|
||||
"tt_face_load_sbit_strikes" ));
|
||||
FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version!\n" ));
|
||||
error = SFNT_Err_Invalid_File_Format;
|
||||
goto Fail;
|
||||
}
|
||||
@ -182,7 +132,7 @@
|
||||
FT_ULong strike_index,
|
||||
FT_Size_Metrics* metrics )
|
||||
{
|
||||
FT_Byte* strike;
|
||||
FT_Byte* strike;
|
||||
|
||||
|
||||
if ( strike_index >= (FT_ULong)face->sbit_num_strikes )
|
||||
@ -374,14 +324,11 @@
|
||||
if ( p + 5 > limit )
|
||||
goto Fail;
|
||||
|
||||
if ( !decoder->metrics_loaded )
|
||||
{
|
||||
metrics->height = p[0];
|
||||
metrics->width = p[1];
|
||||
metrics->horiBearingX = (FT_Char)p[2];
|
||||
metrics->horiBearingY = (FT_Char)p[3];
|
||||
metrics->horiAdvance = p[4];
|
||||
}
|
||||
metrics->height = p[0];
|
||||
metrics->width = p[1];
|
||||
metrics->horiBearingX = (FT_Char)p[2];
|
||||
metrics->horiBearingY = (FT_Char)p[3];
|
||||
metrics->horiAdvance = p[4];
|
||||
|
||||
p += 5;
|
||||
if ( big )
|
||||
@ -389,19 +336,16 @@
|
||||
if ( p + 3 > limit )
|
||||
goto Fail;
|
||||
|
||||
if ( !decoder->metrics_loaded )
|
||||
{
|
||||
metrics->vertBearingX = (FT_Char)p[0];
|
||||
metrics->vertBearingY = (FT_Char)p[1];
|
||||
metrics->vertAdvance = p[2];
|
||||
}
|
||||
metrics->vertBearingX = (FT_Char)p[0];
|
||||
metrics->vertBearingY = (FT_Char)p[1];
|
||||
metrics->vertAdvance = p[2];
|
||||
|
||||
p += 3;
|
||||
}
|
||||
|
||||
decoder->metrics_loaded = 1;
|
||||
*pp = p;
|
||||
return 0;
|
||||
return SFNT_Err_Ok;
|
||||
|
||||
Fail:
|
||||
return SFNT_Err_Invalid_Argument;
|
||||
@ -507,7 +451,7 @@
|
||||
if ( w > 0 )
|
||||
wval = (FT_UInt)( wval | ( *p++ & ( 0xFF00U >> w ) ) );
|
||||
|
||||
/* all bits read and there are ( x_pos + w ) bits to be written */
|
||||
/* all bits read and there are `x_pos + w' bits to be written */
|
||||
|
||||
write[0] = (FT_Byte)( write[0] | ( wval >> x_pos ) );
|
||||
|
||||
@ -587,7 +531,12 @@
|
||||
{
|
||||
w = ( width < 8 - x_pos ) ? width : 8 - x_pos;
|
||||
|
||||
if ( nbits < w )
|
||||
if ( h == height )
|
||||
{
|
||||
rval |= *p++;
|
||||
nbits += x_pos;
|
||||
}
|
||||
else if ( nbits < w )
|
||||
{
|
||||
rval |= *p++;
|
||||
nbits += 8 - w;
|
||||
@ -598,7 +547,8 @@
|
||||
nbits -= w;
|
||||
}
|
||||
|
||||
*write++ |= ( ( rval >> nbits ) & 0xFF ) & ~( 0xFF << w );
|
||||
*write++ |= ( ( rval >> nbits ) & 0xFF ) &
|
||||
( ~( 0xFF << w ) << ( 8 - w - x_pos ) );
|
||||
rval <<= 8;
|
||||
|
||||
w = width - w;
|
||||
@ -645,6 +595,13 @@
|
||||
FT_Error error = SFNT_Err_Ok;
|
||||
FT_UInt num_components, nn;
|
||||
|
||||
FT_Char horiBearingX = decoder->metrics->horiBearingX;
|
||||
FT_Char horiBearingY = decoder->metrics->horiBearingY;
|
||||
FT_Byte horiAdvance = decoder->metrics->horiAdvance;
|
||||
FT_Char vertBearingX = decoder->metrics->vertBearingX;
|
||||
FT_Char vertBearingY = decoder->metrics->vertBearingY;
|
||||
FT_Byte vertAdvance = decoder->metrics->vertAdvance;
|
||||
|
||||
|
||||
if ( p + 2 > limit )
|
||||
goto Fail;
|
||||
@ -653,6 +610,13 @@
|
||||
if ( p + 4 * num_components > limit )
|
||||
goto Fail;
|
||||
|
||||
if ( !decoder->bitmap_allocated )
|
||||
{
|
||||
error = tt_sbit_decoder_alloc_bitmap( decoder );
|
||||
if ( error )
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
for ( nn = 0; nn < num_components; nn++ )
|
||||
{
|
||||
FT_UInt gindex = FT_NEXT_USHORT( p );
|
||||
@ -667,6 +631,15 @@
|
||||
break;
|
||||
}
|
||||
|
||||
decoder->metrics->horiBearingX = horiBearingX;
|
||||
decoder->metrics->horiBearingY = horiBearingY;
|
||||
decoder->metrics->horiAdvance = horiAdvance;
|
||||
decoder->metrics->vertBearingX = vertBearingX;
|
||||
decoder->metrics->vertBearingY = vertBearingY;
|
||||
decoder->metrics->vertAdvance = vertAdvance;
|
||||
decoder->metrics->width = (FT_UInt)decoder->bitmap->width;
|
||||
decoder->metrics->height = (FT_UInt)decoder->bitmap->rows;
|
||||
|
||||
Exit:
|
||||
return error;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* TrueType bytecode interpreter (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -5099,7 +5099,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ( args[0] & 0x100 ) != 0 && CUR.tt_metrics.ppem < A )
|
||||
if ( ( args[0] & 0x100 ) != 0 && CUR.tt_metrics.ppem <= A )
|
||||
CUR.GS.scan_control = TRUE;
|
||||
|
||||
if ( ( args[0] & 0x200 ) != 0 && CUR.tt_metrics.rotated )
|
||||
@ -5108,7 +5108,7 @@
|
||||
if ( ( args[0] & 0x400 ) != 0 && CUR.tt_metrics.stretched )
|
||||
CUR.GS.scan_control = TRUE;
|
||||
|
||||
if ( ( args[0] & 0x800 ) != 0 && CUR.tt_metrics.ppem >= A )
|
||||
if ( ( args[0] & 0x800 ) != 0 && CUR.tt_metrics.ppem > A )
|
||||
CUR.GS.scan_control = FALSE;
|
||||
|
||||
if ( ( args[0] & 0x1000 ) != 0 && CUR.tt_metrics.rotated )
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Objects manager (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -153,6 +153,7 @@
|
||||
static const char* const trick_names[] =
|
||||
{
|
||||
"DFKaiSho-SB", /* dfkaisb.ttf */
|
||||
"DFKaiShu",
|
||||
"DFKai-SB", /* kaiu.ttf */
|
||||
"HuaTianSongTi?", /* htst3.ttf */
|
||||
"MingLiU", /* mingliu.ttf & mingliu.ttc */
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Type 1 driver interface (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -84,6 +84,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const FT_Service_GlyphDictRec t1_service_glyph_dict =
|
||||
{
|
||||
(FT_GlyphDict_GetNameFunc) t1_get_glyph_name,
|
||||
@ -91,10 +92,10 @@
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* POSTSCRIPT NAME SERVICE
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* POSTSCRIPT NAME SERVICE
|
||||
*
|
||||
*/
|
||||
|
||||
static const char*
|
||||
t1_get_ps_name( T1_Face face )
|
||||
@ -102,16 +103,17 @@
|
||||
return (const char*) face->type1.font_name;
|
||||
}
|
||||
|
||||
|
||||
static const FT_Service_PsFontNameRec t1_service_ps_name =
|
||||
{
|
||||
(FT_PsName_GetFunc)t1_get_ps_name
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* MULTIPLE MASTERS SERVICE
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* MULTIPLE MASTERS SERVICE
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
|
||||
static const FT_Service_MultiMastersRec t1_service_multi_masters =
|
||||
@ -125,17 +127,28 @@
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* POSTSCRIPT INFO SERVICE
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* POSTSCRIPT INFO SERVICE
|
||||
*
|
||||
*/
|
||||
|
||||
static FT_Error
|
||||
t1_ps_get_font_info( FT_Face face,
|
||||
PS_FontInfoRec* afont_info )
|
||||
{
|
||||
*afont_info = ((T1_Face)face)->type1.font_info;
|
||||
return 0;
|
||||
|
||||
return T1_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
static FT_Error
|
||||
t1_ps_get_font_extra( FT_Face face,
|
||||
PS_FontExtraRec* afont_extra )
|
||||
{
|
||||
*afont_extra = ((T1_Face)face)->type1.font_extra;
|
||||
|
||||
return T1_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
@ -143,6 +156,7 @@
|
||||
t1_ps_has_glyph_names( FT_Face face )
|
||||
{
|
||||
FT_UNUSED( face );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -152,17 +166,20 @@
|
||||
PS_PrivateRec* afont_private )
|
||||
{
|
||||
*afont_private = ((T1_Face)face)->type1.private_dict;
|
||||
return 0;
|
||||
|
||||
return T1_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
static const FT_Service_PsInfoRec t1_service_ps_info =
|
||||
{
|
||||
(PS_GetFontInfoFunc) t1_ps_get_font_info,
|
||||
(PS_GetFontExtraFunc) t1_ps_get_font_extra,
|
||||
(PS_HasGlyphNamesFunc) t1_ps_has_glyph_names,
|
||||
(PS_GetFontPrivateFunc)t1_ps_get_font_private,
|
||||
};
|
||||
|
||||
|
||||
#ifndef T1_CONFIG_OPTION_NO_AFM
|
||||
static const FT_Service_KerningRec t1_service_kerning =
|
||||
{
|
||||
@ -170,10 +187,11 @@
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* SERVICE LIST
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* SERVICE LIST
|
||||
*
|
||||
*/
|
||||
|
||||
static const FT_ServiceDescRec t1_services[] =
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Type 1 Glyph Loader (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -295,8 +295,16 @@
|
||||
if ( load_flags & FT_LOAD_NO_RECURSE )
|
||||
load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
|
||||
|
||||
glyph->x_scale = size->root.metrics.x_scale;
|
||||
glyph->y_scale = size->root.metrics.y_scale;
|
||||
if ( size )
|
||||
{
|
||||
glyph->x_scale = size->root.metrics.x_scale;
|
||||
glyph->y_scale = size->root.metrics.y_scale;
|
||||
}
|
||||
else
|
||||
{
|
||||
glyph->x_scale = 0x10000L;
|
||||
glyph->y_scale = 0x10000L;
|
||||
}
|
||||
|
||||
glyph->root.outline.n_points = 0;
|
||||
glyph->root.outline.n_contours = 0;
|
||||
@ -430,8 +438,8 @@
|
||||
}
|
||||
|
||||
/* Then scale the metrics */
|
||||
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale );
|
||||
metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale );
|
||||
metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale );
|
||||
}
|
||||
|
||||
/* compute the other metrics */
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Type 1 font loader (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -948,6 +948,12 @@
|
||||
}
|
||||
break;
|
||||
|
||||
case T1_FIELD_LOCATION_FONT_EXTRA:
|
||||
dummy_object = &face->type1.font_extra;
|
||||
objects = &dummy_object;
|
||||
max_objects = 0;
|
||||
break;
|
||||
|
||||
case T1_FIELD_LOCATION_PRIVATE:
|
||||
dummy_object = &face->type1.private_dict;
|
||||
objects = &dummy_object;
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Type 1 tokenizer (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -41,6 +41,12 @@
|
||||
T1_FIELD_DICT_FONTDICT )
|
||||
T1_FIELD_NUM ( "UnderlineThickness", underline_thickness,
|
||||
T1_FIELD_DICT_FONTDICT )
|
||||
|
||||
#undef FT_STRUCTURE
|
||||
#define FT_STRUCTURE PS_FontExtraRec
|
||||
#undef T1CODE
|
||||
#define T1CODE T1_FIELD_LOCATION_FONT_EXTRA
|
||||
|
||||
T1_FIELD_NUM ( "FSType", fs_type,
|
||||
T1_FIELD_DICT_FONTDICT )
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* High-level Type 42 driver interface (body). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003, 2004, 2006, 2007 by Roberto Alameda. */
|
||||
/* Copyright 2002, 2003, 2004, 2006, 2007, 2009 by Roberto Alameda. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
@ -49,11 +49,11 @@
|
||||
#define FT_COMPONENT trace_t42
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* GLYPH DICT SERVICE
|
||||
*
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* GLYPH DICT SERVICE
|
||||
*
|
||||
*/
|
||||
|
||||
static FT_Error
|
||||
t42_get_glyph_name( T42_Face face,
|
||||
@ -94,11 +94,11 @@
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* POSTSCRIPT NAME SERVICE
|
||||
*
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* POSTSCRIPT NAME SERVICE
|
||||
*
|
||||
*/
|
||||
|
||||
static const char*
|
||||
t42_get_ps_font_name( T42_Face face )
|
||||
@ -113,17 +113,28 @@
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* POSTSCRIPT INFO SERVICE
|
||||
*
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* POSTSCRIPT INFO SERVICE
|
||||
*
|
||||
*/
|
||||
|
||||
static FT_Error
|
||||
t42_ps_get_font_info( FT_Face face,
|
||||
PS_FontInfoRec* afont_info )
|
||||
{
|
||||
*afont_info = ((T42_Face)face)->type1.font_info;
|
||||
|
||||
return T42_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
static FT_Error
|
||||
t42_ps_get_font_extra( FT_Face face,
|
||||
PS_FontExtraRec* afont_extra )
|
||||
{
|
||||
*afont_extra = ((T42_Face)face)->type1.font_extra;
|
||||
|
||||
return T42_Err_Ok;
|
||||
}
|
||||
|
||||
@ -132,6 +143,7 @@
|
||||
t42_ps_has_glyph_names( FT_Face face )
|
||||
{
|
||||
FT_UNUSED( face );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -141,6 +153,7 @@
|
||||
PS_PrivateRec* afont_private )
|
||||
{
|
||||
*afont_private = ((T42_Face)face)->type1.private_dict;
|
||||
|
||||
return T42_Err_Ok;
|
||||
}
|
||||
|
||||
@ -148,16 +161,17 @@
|
||||
static const FT_Service_PsInfoRec t42_service_ps_info =
|
||||
{
|
||||
(PS_GetFontInfoFunc) t42_ps_get_font_info,
|
||||
(PS_GetFontExtraFunc) t42_ps_get_font_extra,
|
||||
(PS_HasGlyphNamesFunc) t42_ps_has_glyph_names,
|
||||
(PS_GetFontPrivateFunc)t42_ps_get_font_private
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* SERVICE LIST
|
||||
*
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* SERVICE LIST
|
||||
*
|
||||
*/
|
||||
|
||||
static const FT_ServiceDescRec t42_services[] =
|
||||
{
|
||||
|
@ -4,7 +4,8 @@
|
||||
/* */
|
||||
/* Type 42 font parser (body). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Roberto Alameda. */
|
||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* Roberto Alameda. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
@ -68,6 +69,12 @@
|
||||
T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch, 0 )
|
||||
T1_FIELD_NUM ( "UnderlinePosition", underline_position, 0 )
|
||||
T1_FIELD_NUM ( "UnderlineThickness", underline_thickness, 0 )
|
||||
|
||||
#undef FT_STRUCTURE
|
||||
#define FT_STRUCTURE PS_FontExtraRec
|
||||
#undef T1CODE
|
||||
#define T1CODE T1_FIELD_LOCATION_FONT_EXTRA
|
||||
|
||||
T1_FIELD_NUM ( "FSType", fs_type, 0 )
|
||||
|
||||
#undef FT_STRUCTURE
|
||||
|
Loading…
Reference in New Issue
Block a user