summaryrefslogtreecommitdiff
path: root/Build/source/libs/freetype/freetype-1.5/lib/freetype.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/freetype/freetype-1.5/lib/freetype.h')
-rw-r--r--Build/source/libs/freetype/freetype-1.5/lib/freetype.h1184
1 files changed, 0 insertions, 1184 deletions
diff --git a/Build/source/libs/freetype/freetype-1.5/lib/freetype.h b/Build/source/libs/freetype/freetype-1.5/lib/freetype.h
deleted file mode 100644
index ad6e434893c..00000000000
--- a/Build/source/libs/freetype/freetype-1.5/lib/freetype.h
+++ /dev/null
@@ -1,1184 +0,0 @@
-/*******************************************************************
- *
- * freetype.h
- *
- * High-level interface specification.
- *
- * Copyright 1996-2001, 2002 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.
- *
- * Note:
- *
- * This is the only file that should be included by client
- * application sources. All other types and functions defined
- * in the `tt*.h' files are library internals and should not be
- * included.
- *
- ******************************************************************/
-
-#ifndef FREETYPE_H
-#define FREETYPE_H
-
-
-#define TT_FREETYPE_MAJOR 1
-#define TT_FREETYPE_MINOR 5
-
-
-#include "fterrid.h"
-#include "ftnameid.h"
-
-#if defined(WIN32)
-#ifdef FREETYPE_DLL
-#ifdef MAKE_FREETYPE_DLL
-#define FREETYPEDLL __declspec( dllexport)
-#else
-#define FREETYPEDLL __declspec( dllimport)
-#endif
-#else
-#define FREETYPEDLL
-#endif
-#else /* ! WIN32 */
-#define FREETYPEDLL
-#endif
-
-/*************************************************************************/
-/* Define FT_EXPORT_DEF as needed to use e.g. a DLL. */
-/* All variables and functions visible from outside have these prefixes. */
-/* */
-/* To make freetype.h independent from configuration files we check */
-/* whether FT_EXPORT_DEF has been defined already. */
-
-/* Backward compatibility only. Don't use for new code. */
-#ifdef EXPORT_DEF
-#define FT_EXPORT_DEF( type ) EXPORT_DEF type
-#endif
-/* End of backward compatibility section. */
-
-#ifndef FT_EXPORT_DEF
-#define FT_EXPORT_DEF( type ) extern type
-#endif
-
-/* This is for variables; default is using the same as functions. */
-#ifndef FT_EXPORT_DECL
-#define FT_EXPORT_DECL( type ) FT_EXPORT_DEF( type )
-#endif
-
-/* The same for TT_Text. If you define the HAVE_TT_TEXT macro, you have */
-/* to provide a typedef declaration for TT_Text before including this */
-/* file. */
-
-#ifndef HAVE_TT_TEXT
-#define HAVE_TT_TEXT
- typedef char TT_Text; /* The data type to represent */
- /* file name string elements. */
-#endif
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-
- /*******************************************************************/
- /* */
- /* FreeType types definitions. */
- /* */
- /* All these begin with a 'TT_' prefix. */
- /* */
- /*******************************************************************/
-
- typedef int TT_Bool;
-
- typedef signed long TT_Fixed; /* signed fixed 16.16 float */
-
- typedef signed short TT_FWord; /* distance in FUnits */
- typedef unsigned short TT_UFWord; /* unsigned distance */
-
- typedef char TT_String;
- typedef signed char TT_Char;
- typedef unsigned char TT_Byte;
- typedef signed short TT_Short;
- typedef unsigned short TT_UShort;
- typedef int TT_Int;
- typedef unsigned int TT_UInt;
- typedef signed long TT_Long;
- typedef unsigned long TT_ULong;
-
- typedef signed short TT_F2Dot14; /* Signed fixed float 2.14 used for */
- /* unit vectors, with layout */
- /* */
- /* s : 1 -- sign bit */
- /* m : 1 -- integer bit */
- /* f : 14 -- unsigned fractional */
- /* */
- /* `s:m' is the 2-bit signed int */
- /* value to which the positive */
- /* fractional part should be added. */
-
- typedef signed long TT_F26Dot6; /* 26.6 fixed float, used for */
- /* glyph points pixel coordinates. */
-
- typedef signed long TT_Pos; /* Point position, expressed either */
- /* in fractional pixels or notional */
- /* units, depending on context. */
- /* For example, glyph coordinates */
- /* returned by TT_Load_Glyph() are */
- /* expressed in font units if */
- /* scaling wasn't requested, and */
- /* in 26.6 fractional pixels if it */
- /* was. */
-
-
- struct TT_UnitVector_ /* guess what... */
- {
- TT_F2Dot14 x;
- TT_F2Dot14 y;
- };
-
- typedef struct TT_UnitVector_ TT_UnitVector;
-
-
- struct TT_Vector_ /* simple vector type */
- {
- TT_F26Dot6 x;
- TT_F26Dot6 y;
- };
-
- typedef struct TT_Vector_ TT_Vector;
-
-
- /* A simple 2x2 matrix used for transformations. */
- /* You should use 16.16 fixed floats. */
- /* */
- /* x' = xx*x + xy*y */
- /* y' = yx*x + yy*y */
- /* */
-
- struct TT_Matrix_
- {
- TT_Fixed xx, xy;
- TT_Fixed yx, yy;
- };
-
- typedef struct TT_Matrix_ TT_Matrix;
-
-
- /* A structure used to describe the source glyph to the renderer. */
-
- struct TT_Outline_
- {
- TT_Short n_contours; /* number of contours in glyph */
- TT_UShort n_points; /* number of points in the glyph */
-
- TT_Vector* points; /* the outline's points */
- TT_Byte* flags; /* the points flags */
- TT_UShort* contours; /* the contour end points */
-
- /* The following flag indicates that the outline owns the arrays it */
- /* refers to. Typically, this is true of outlines created from the */
- /* TT_New_Outline() API, while it isn't for those returned by */
- /* TT_Get_Glyph_Outline(). */
-
- TT_Bool owner; /* The outline owns the coordinates, */
- /* flags and contours array it uses. */
-
- /* The following flags are set automatically by */
- /* TT_Get_Glyph_Outline(). Their meaning is the following: */
- /* */
- /* high_precision If true, the scan-line converter will use a */
- /* higher precision to render bitmaps (i.e., a */
- /* 1/1024 pixel precision). This is important for */
- /* small ppem sizes. */
- /* */
- /* second_pass If true, the scan-line converter performs a */
- /* second sweep phase dedicated to find vertical */
- /* drop-outs. If false, only horizontal drop-outs */
- /* will be checked during the first vertical */
- /* sweep (yes, this is a bit confusing but it is */
- /* really the way it should work). This is */
- /* important for small ppems too. */
- /* */
- /* dropout_mode Specifies the TrueType drop-out mode to use for */
- /* continuity checking. Valid values are 0 (no */
- /* check), 1, 2, 4, and 5. */
- /* */
- /* Most of the engine's users will safely ignore these fields... */
-
- TT_Bool high_precision; /* high precision rendering */
- TT_Bool second_pass; /* two sweeps rendering */
- TT_Char dropout_mode; /* dropout mode */
- };
-
- typedef struct TT_Outline_ TT_Outline;
-
-
- /* A structure used to describe a simple bounding box. */
-
- struct TT_BBox_
- {
- TT_Pos xMin;
- TT_Pos yMin;
- TT_Pos xMax;
- TT_Pos yMax;
- };
-
- typedef struct TT_BBox_ TT_BBox;
-
-
- /* A structure used to return glyph metrics. */
- /* */
- /* The `bearingX' isn't called `left-side bearing' anymore because */
- /* it has different meanings depending on the glyph's orientation. */
- /* */
- /* The same is true for `bearingY', which is the top-side bearing */
- /* defined by the TT_Spec, i.e., the distance from the baseline to */
- /* the top of the glyph's bbox. According to our current convention, */
- /* this is always the same as `bbox.yMax' but we make it appear for */
- /* consistency in its proper field. */
- /* */
- /* The `advance' field is the advance width for horizontal layout, */
- /* and advance height for vertical layouts. */
-
- struct TT_Glyph_Metrics_
- {
- TT_BBox bbox; /* glyph bounding box */
-
- TT_Pos bearingX; /* left-side bearing */
- TT_Pos bearingY; /* top-side bearing, per se the TT spec */
-
- TT_Pos advance; /* advance width (or height) */
- };
-
- typedef struct TT_Glyph_Metrics_ TT_Glyph_Metrics;
-
-
- /* A structure used to return horizontal _and_ vertical glyph */
- /* metrics. */
- /* */
- /* A glyph can be used either in a horizontal or vertical layout. */
- /* Its glyph metrics vary with orientation. The TT_Big_Glyph_Metrics */
- /* structure is used to return _all_ metrics in one call. */
-
- struct TT_Big_Glyph_Metrics_
- {
- TT_BBox bbox; /* glyph bounding box */
-
- TT_Pos horiBearingX; /* left side bearing in horizontal layouts */
- TT_Pos horiBearingY; /* top side bearing in horizontal layouts */
-
- TT_Pos vertBearingX; /* left side bearing in vertical layouts */
- TT_Pos vertBearingY; /* top side bearing in vertical layouts */
-
- TT_Pos horiAdvance; /* advance width for horizontal layout */
- TT_Pos vertAdvance; /* advance height for vertical layout */
-
- /* The following fields represent unhinted scaled metrics values. */
- /* They can be useful for applications needing to do some device */
- /* independent placement of glyphs. */
- /* */
- /* Applying these metrics to hinted glyphs will most surely ruin */
- /* the grid fitting performed by the bytecode interpreter. These */
- /* values are better used to compute accumulated positioning */
- /* distances. */
-
- TT_Pos linearHoriBearingX; /* linearly scaled horizontal lsb */
- TT_Pos linearHoriAdvance; /* linearly scaled horizontal advance */
-
- TT_Pos linearVertBearingY; /* linearly scaled vertical tsb */
- TT_Pos linearVertAdvance; /* linearly scaled vertical advance */
- };
-
- typedef struct TT_Big_Glyph_Metrics_ TT_Big_Glyph_Metrics;
-
-
- /* A structure used to return instance metrics. */
-
- struct TT_Instance_Metrics_
- {
- TT_F26Dot6 pointSize; /* char. size in points (1pt = 1/72 inch) */
-
- TT_UShort x_ppem; /* horizontal pixels per EM square */
- TT_UShort y_ppem; /* vertical pixels per EM square */
-
- TT_Fixed x_scale; /* 16.16 to convert from EM units to 26.6 pix */
- TT_Fixed y_scale; /* 16.16 to convert from EM units to 26.6 pix */
-
- TT_UShort x_resolution; /* device horizontal resolution in dpi */
- TT_UShort y_resolution; /* device vertical resolution in dpi */
- };
-
- typedef struct TT_Instance_Metrics_ TT_Instance_Metrics;
-
-
- /* Flow constants: */
- /* */
- /* The flow of a bitmap refers to the way lines are oriented */
- /* within the bitmap data, i.e., the orientation of the Y */
- /* coordinate axis. */
- /* */
- /* For example, if the first bytes of the bitmap pertain to */
- /* its top-most line, then the flow is `down'. If these bytes */
- /* pertain to its lowest line, the the flow is `up'. */
-
-#define TT_Flow_Down -1 /* bitmap is oriented from top to bottom */
-#define TT_Flow_Up 1 /* bitmap is oriented from bottom to top */
-#define TT_Flow_Error 0 /* an error occurred during rendering */
-
-
- /* A structure used to describe the target bitmap or pixmap to the */
- /* renderer. Note that there is nothing in this structure that */
- /* gives the nature of the buffer. */
- /* */
- /* IMPORTANT NOTE: */
- /* */
- /* In the case of a pixmap, the `width' and `cols' fields must */
- /* have the _same_ values, and _must_ be padded to 32-bits, i.e., */
- /* be a multiple of 4. Clipping problems will arise otherwise, */
- /* if not even page faults! */
- /* */
- /* The typical settings are: */
- /* */
- /* - for a WxH bitmap: */
- /* */
- /* rows = H */
- /* cols = (W+7) / 8 */
- /* width = W */
- /* flow = your_choice */
- /* */
- /* - for a WxH pixmap: */
- /* */
- /* rows = H */
- /* cols = (W+3) & ~3 */
- /* width = cols */
- /* flow = your_choice */
-
- struct TT_Raster_Map_
- {
- int rows; /* number of rows */
- int cols; /* number of columns (bytes) per row */
- int width; /* number of pixels per line */
- int flow; /* bitmap orientation */
-
- void* bitmap; /* bit/pixmap buffer */
- long size; /* bit/pixmap size in bytes */
- };
-
- typedef struct TT_Raster_Map_ TT_Raster_Map;
-
-
- /* ------ The font header TrueType table structure ------ */
-
- struct TT_Header_
- {
- TT_Fixed Table_Version;
- TT_Fixed Font_Revision;
-
- TT_Long CheckSum_Adjust;
- TT_Long Magic_Number;
-
- TT_UShort Flags;
- TT_UShort Units_Per_EM;
-
- TT_Long Created [2];
- TT_Long Modified[2];
-
- TT_FWord xMin;
- TT_FWord yMin;
- TT_FWord xMax;
- TT_FWord yMax;
-
- TT_UShort Mac_Style;
- TT_UShort Lowest_Rec_PPEM;
-
- TT_Short Font_Direction;
- TT_Short Index_To_Loc_Format;
- TT_Short Glyph_Data_Format;
- };
-
- typedef struct TT_Header_ TT_Header;
-
-
- /* ------ The horizontal header TrueType table structure ------ */
-
- /*******************************************************/
- /* This structure is the one defined by the TrueType */
- /* specification, plus two fields used to link the */
- /* font-units metrics to the header. */
-
- struct TT_Horizontal_Header_
- {
- TT_Fixed Version;
- TT_FWord Ascender;
- TT_FWord Descender;
- TT_FWord Line_Gap;
-
- TT_UFWord advance_Width_Max; /* advance width maximum */
-
- TT_FWord min_Left_Side_Bearing; /* minimum left-sb */
- TT_FWord min_Right_Side_Bearing; /* minimum right-sb */
- TT_FWord xMax_Extent; /* xmax extents */
- TT_FWord caret_Slope_Rise;
- TT_FWord caret_Slope_Run;
-
- TT_Short Reserved0,
- Reserved1,
- Reserved2,
- Reserved3,
- Reserved4;
-
- TT_Short metric_Data_Format;
- TT_UShort number_Of_HMetrics;
-
- /* The following fields are not defined by the TrueType specification */
- /* but they're used to connect the metrics header to the relevant */
- /* `HMTX' or `VMTX' table. */
-
- void* long_metrics;
- void* short_metrics;
- };
-
- typedef struct TT_Horizontal_Header_ TT_Horizontal_Header;
-
-
- /*******************************************************/
- /* This structure is the one defined by the TrueType */
- /* specification. Note that it has exactly the same */
- /* layout as the horizontal header (both are loaded */
- /* by the same function). */
-
- struct TT_Vertical_Header_
- {
- TT_Fixed Version;
- TT_FWord Ascender;
- TT_FWord Descender;
- TT_FWord Line_Gap;
-
- TT_UFWord advance_Height_Max; /* advance height maximum */
-
- TT_FWord min_Top_Side_Bearing; /* minimum left-sb or top-sb */
- TT_FWord min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */
- TT_FWord yMax_Extent; /* xmax or ymax extents */
- TT_FWord caret_Slope_Rise;
- TT_FWord caret_Slope_Run;
- TT_FWord caret_Offset;
-
- TT_Short Reserved1,
- Reserved2,
- Reserved3,
- Reserved4;
-
- TT_Short metric_Data_Format;
- TT_UShort number_Of_VMetrics;
-
- /* The following fields are not defined by the TrueType specification */
- /* but they're used to connect the metrics header to the relevant */
- /* `HMTX' or `VMTX' table. */
-
- void* long_metrics;
- void* short_metrics;
- };
-
- typedef struct TT_Vertical_Header_ TT_Vertical_Header;
-
-
- /* ------ The OS/2 table ------ */
-
- /************************************************************************/
- /* Note that since FreeType 1.3, we support Mac fonts which do not have */
- /* an OS/2 table. In this case the `version' field will be set to */
- /* 0xFFFF by the table loader; all other fields should be 0. */
-
- struct TT_OS2_
- {
- TT_UShort version; /* 0x0001 */
- TT_FWord xAvgCharWidth;
- TT_UShort usWeightClass;
- TT_UShort usWidthClass;
- TT_Short fsType;
- TT_FWord ySubscriptXSize;
- TT_FWord ySubscriptYSize;
- TT_FWord ySubscriptXOffset;
- TT_FWord ySubscriptYOffset;
- TT_FWord ySuperscriptXSize;
- TT_FWord ySuperscriptYSize;
- TT_FWord ySuperscriptXOffset;
- TT_FWord ySuperscriptYOffset;
- TT_FWord yStrikeoutSize;
- TT_FWord yStrikeoutPosition;
- TT_Short sFamilyClass;
-
- TT_Byte panose[10];
-
- TT_ULong ulUnicodeRange1; /* Bits 0-31 */
- TT_ULong ulUnicodeRange2; /* Bits 32-63 */
- TT_ULong ulUnicodeRange3; /* Bits 64-95 */
- TT_ULong ulUnicodeRange4; /* Bits 96-127 */
-
- TT_Char achVendID[4];
-
- TT_UShort fsSelection;
- TT_UShort usFirstCharIndex;
- TT_UShort usLastCharIndex;
- TT_Short sTypoAscender;
- TT_Short sTypoDescender;
- TT_Short sTypoLineGap;
- TT_UShort usWinAscent;
- TT_UShort usWinDescent;
-
- /* only version 1 tables: */
-
- TT_ULong ulCodePageRange1; /* Bits 0-31 */
- TT_ULong ulCodePageRange2; /* Bits 32-63 */
-
- /* only version 2 tables: */
-
- TT_Short sxHeight;
- TT_Short sCapHeight;
- TT_UShort usDefaultChar;
- TT_UShort usBreakChar;
- TT_UShort usMaxContext;
- };
-
- typedef struct TT_OS2_ TT_OS2;
-
-
- /* ------ The PostScript table ------ */
-
- struct TT_Postscript_
- {
- TT_Fixed FormatType;
- TT_Fixed italicAngle;
- TT_FWord underlinePosition;
- TT_FWord underlineThickness;
- TT_ULong isFixedPitch;
- TT_ULong minMemType42;
- TT_ULong maxMemType42;
- TT_ULong minMemType1;
- TT_ULong maxMemType1;
-
- /* Glyph names follow in the file, but we don't */
- /* load them by default. See the ftxpost.c extension. */
- };
-
- typedef struct TT_Postscript_ TT_Postscript;
-
-
- /* ------ The horizontal device metrics table (`hdmx') ------ */
-
- struct TT_Hdmx_Record_
- {
- TT_Byte ppem;
- TT_Byte max_width;
- TT_Byte* widths;
- };
-
- typedef struct TT_Hdmx_Record_ TT_Hdmx_Record;
-
-
- struct TT_Hdmx_
- {
- TT_UShort version;
- TT_Short num_records;
- TT_Hdmx_Record* records;
- };
-
- typedef struct TT_Hdmx_ TT_Hdmx;
-
-
- /* A structure used to describe face properties. */
-
- struct TT_Face_Properties_
- {
- TT_UShort num_Glyphs; /* number of glyphs in face */
- TT_UShort max_Points; /* maximum number of points in a glyph */
- TT_UShort max_Contours; /* maximum number of contours in a glyph */
-
- TT_UShort num_CharMaps; /* number of charmaps in the face */
- TT_UShort num_Names; /* number of name records in the face */
-
- TT_ULong num_Faces; /* 1 for normal TrueType files, and the */
- /* number of embedded faces for TrueType */
- /* collections */
-
- TT_Header* header; /* TrueType header table */
- TT_Horizontal_Header* horizontal; /* TrueType horizontal header */
- TT_OS2* os2; /* TrueType OS/2 table */
- TT_Postscript* postscript; /* TrueType Postscript table */
- TT_Hdmx* hdmx; /* TrueType hor. dev. metr. table */
- TT_Vertical_Header* vertical; /* TT Vertical header, if present */
- };
-
- typedef struct TT_Face_Properties_ TT_Face_Properties;
-
-
- /* Here are the definitions of the handle types used for FreeType's */
- /* most common objects accessed by the client application. We use */
- /* a simple trick: */
- /* */
- /* Each handle type is a structure that only contains one */
- /* pointer. The advantage of structures is that they are */
- /* mutually exclusive types. We could have defined the */
- /* following types: */
- /* */
- /* typedef void* TT_Stream; */
- /* typedef void* TT_Face; */
- /* typedef void* TT_Instance; */
- /* typedef void* TT_Glyph; */
- /* typedef void* TT_CharMap; */
- /* */
- /* but these would have allowed lines like: */
- /* */
- /* stream = instance; */
- /* */
- /* in the client code this would be a severe bug, unnoticed */
- /* by the compiler! */
- /* */
- /* Thus, we enforce type checking with a simple language */
- /* trick... */
- /* */
- /* NOTE: Some macros are defined in tttypes.h to perform */
- /* automatic type conversions for library hackers... */
-
- struct TT_Engine_ { void* z; };
- struct TT_Stream_ { void* z; };
- struct TT_Face_ { void* z; };
- struct TT_Instance_ { void* z; };
- struct TT_Glyph_ { void* z; };
- struct TT_CharMap_ { void* z; };
-
- typedef struct TT_Engine_ TT_Engine; /* engine instance */
- typedef struct TT_Stream_ TT_Stream; /* stream handle type */
- typedef struct TT_Face_ TT_Face; /* face handle type */
- typedef struct TT_Instance_ TT_Instance; /* instance handle type */
- typedef struct TT_Glyph_ TT_Glyph; /* glyph handle type */
- typedef struct TT_CharMap_ TT_CharMap; /* character map handle type */
-
-
- /* Almost all functions return an error code of this type. */
-
- typedef long TT_Error;
-
-
- /*******************************************************************/
- /* */
- /* FreeType API */
- /* */
- /* All these begin with a `TT_' prefix. */
- /* */
- /* Most of them are implemented in the `ttapi.c' source file. */
- /* */
- /*******************************************************************/
-
- /* Get version information. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_FreeType_Version( int *major,
- int *minor );
-
-
- /* Initialize the engine. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Init_FreeType( TT_Engine* engine );
-
-
- /* Finalize the engine, and release all allocated objects. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Done_FreeType( TT_Engine engine );
-
-
- /* Set the gray level palette. This is an array of 5 bytes used */
- /* to produce the font smoothed pixmaps. By convention: */
- /* */
- /* palette[0] = background (white) */
- /* palette[1] = light */
- /* palette[2] = medium */
- /* palette[3] = dark */
- /* palette[4] = foreground (black) */
- /* */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Set_Raster_Gray_Palette( TT_Engine engine,
- TT_Byte* palette );
-
-
- /* ----------------------- face management ----------------------- */
-
- /* Open a new TrueType font file, and returns a handle for */
- /* it in variable '*face'. */
- /* */
- /* Note: The file can be either a TrueType file (*.ttf) or */
- /* a TrueType collection (*.ttc, in this case, only */
- /* the first face is opened). The number of faces in */
- /* the same collection can be obtained in the face's */
- /* properties, using TT_Get_Face_Properties() and the */
- /* `max_Faces' field. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Open_Face( TT_Engine engine,
- const TT_Text* fontPathName,
- TT_Face* face );
-
-
- /* Open a TrueType font file located inside a collection. */
- /* The font is assigned by its index in `fontIndex'. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Open_Collection( TT_Engine engine,
- const TT_Text* collectionPathName,
- TT_ULong fontIndex,
- TT_Face* face );
-
-
- /* Return face properties in the `properties' structure. */
- /* */
- /* Note that since version 1.3, we support font files with no */
- /* OS/2 table (mainly old Mac fonts). In this case, the OS/2 */
- /* `version' field will be set to 0xFFFF, and all other fields */
- /* will be zeroed. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Face_Properties( TT_Face face,
- TT_Face_Properties* properties );
-
-
- /* Set a face object's generic pointer */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Set_Face_Pointer( TT_Face face,
- void* data );
-
-
- /* Get a face object's generic pointer */
-
- FT_EXPORT_DEF( void* )
- TT_Get_Face_Pointer( TT_Face face );
-
-
- /* Close a face's file handle to save system resources. The file */
- /* will be re-opened automatically on the next disk access. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Flush_Face( TT_Face face );
-
- /* Get a face's glyph metrics expressed in font units. Returns any */
- /* number of arrays. Set the fields to NULL if you are not interested */
- /* by a given array. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Face_Metrics( TT_Face face,
- TT_UShort firstGlyph,
- TT_UShort lastGlyph,
- TT_Short* leftBearings,
- TT_UShort* widths,
- TT_Short* topBearings,
- TT_UShort* heights );
-
-
- /* Close a given font object, destroying all associated */
- /* instances. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Close_Face( TT_Face face );
-
-
- /* Get font or table data. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Font_Data( TT_Face face,
- TT_ULong tag,
- TT_Long offset,
- void* buffer,
- TT_Long* length );
-
-
-/* A simple macro to build table tags from ASCII chars */
-
-#define MAKE_TT_TAG( _x1, _x2, _x3, _x4 ) \
- (((TT_ULong)_x1 << 24) | \
- ((TT_ULong)_x2 << 16) | \
- ((TT_ULong)_x3 << 8) | \
- (TT_ULong)_x4)
-
-
-
- /* ----------------------- instance management -------------------- */
-
- /* Open a new font instance and returns an instance handle */
- /* for it in `*instance'. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_New_Instance( TT_Face face,
- TT_Instance* instance );
-
-
- /* Set device resolution for a given instance. The values are */
- /* given in dpi (Dots Per Inch). Default is 96 in both directions. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Set_Instance_Resolutions( TT_Instance instance,
- TT_UShort xResolution,
- TT_UShort yResolution );
-
-
- /* Set the pointsize for a given instance. Default is 10pt. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Set_Instance_CharSize( TT_Instance instance,
- TT_F26Dot6 charSize );
-
- FT_EXPORT_DEF( TT_Error )
- TT_Set_Instance_CharSizes( TT_Instance instance,
- TT_F26Dot6 charWidth,
- TT_F26Dot6 charHeight );
-
-#define TT_Set_Instance_PointSize( ins, ptsize ) \
- TT_Set_Instance_CharSize( ins, ptsize*64L )
-
- FT_EXPORT_DEF( TT_Error )
- TT_Set_Instance_PixelSizes( TT_Instance instance,
- TT_UShort pixelWidth,
- TT_UShort pixelHeight,
- TT_F26Dot6 pointSize );
-
-
- /* This function has been deprecated! Do not use it, as it */
- /* doesn't work reliably. You can perfectly control hinting */
- /* yourself when loading glyphs, then apply transforms as usual. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Set_Instance_Transform_Flags( TT_Instance instance,
- TT_Bool rotated,
- TT_Bool stretched );
-
-
- /* Return instance metrics in `metrics'. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Instance_Metrics( TT_Instance instance,
- TT_Instance_Metrics* metrics );
-
-
- /* Set an instance's generic pointer. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Set_Instance_Pointer( TT_Instance instance,
- void* data );
-
-
- /* Get an instance's generic pointer. */
-
- FT_EXPORT_DEF( void* )
- TT_Get_Instance_Pointer( TT_Instance instance );
-
-
- /* Close a given instance object, destroying all associated data. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Done_Instance( TT_Instance instance );
-
-
-
- /* ----------------------- glyph management ----------------------- */
-
- /* Create a new glyph object related to the given `face'. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_New_Glyph( TT_Face face,
- TT_Glyph* glyph );
-
-
- /* Discard (and destroy) a given glyph object. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Done_Glyph( TT_Glyph glyph );
-
-
-#define TTLOAD_SCALE_GLYPH 1
-#define TTLOAD_HINT_GLYPH 2
-#define TTLOAD_PEDANTIC 128
-#define TTLOAD_IGNORE_GLOBAL_ADVANCE_WIDTH 256
-
-#define TTLOAD_DEFAULT (TTLOAD_SCALE_GLYPH | TTLOAD_HINT_GLYPH)
-
-
- /* Load and process (scale/transform and hint) a glyph from the */
- /* given `instance'. The glyph and instance handles must be */
- /* related to the same face object. The glyph index can be */
- /* computed with a call to TT_Char_Index(). */
- /* */
- /* The 'load_flags' argument is a combination of the macros */
- /* TTLOAD_SCALE_GLYPH and TTLOAD_HINT_GLYPH. Hinting will be */
- /* applied only if the scaling is selected. */
- /* */
- /* If scaling is off (i.e., load_flags = 0), the returned */
- /* outlines are in EM square coordinates (also called FUnits), */
- /* extracted directly from the font with no hinting. Other */
- /* glyph metrics are also in FUnits. */
- /* */
- /* If scaling is on, the returned outlines are in fractional */
- /* pixel units (i.e. TT_F26Dot6 = 26.6 fixed floats). */
- /* */
- /* NOTE: The glyph index must be in the range 0..num_glyphs-1, */
- /* where `num_glyphs' is the total number of glyphs in */
- /* the font file (given in the face properties). */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Load_Glyph( TT_Instance instance,
- TT_Glyph glyph,
- TT_UShort glyphIndex,
- TT_UShort loadFlags );
-
-
- /* Return glyph outline pointers in `outline'. Note that the returned */
- /* pointers are owned by the glyph object, and will be destroyed with */
- /* it. The client application should _not_ change the pointers. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Glyph_Outline( TT_Glyph glyph,
- TT_Outline* outline );
-
-
- /* Copy the glyph metrics into `metrics'. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Glyph_Metrics( TT_Glyph glyph,
- TT_Glyph_Metrics* metrics );
-
-
- /* Copy the glyph's big metrics into `metrics'. */
- /* Necessary to obtain vertical metrics. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Glyph_Big_Metrics( TT_Glyph glyph,
- TT_Big_Glyph_Metrics* metrics );
-
-
- /* Render the glyph into a bitmap, with given position offsets. */
- /* */
- /* Note: Only use integer pixel offsets to preserve the fine */
- /* hinting of the glyph and the `correct' anti-aliasing */
- /* (where vertical and horizontal stems aren't grayed). This */
- /* means that `xOffset' and `yOffset' must be multiples */
- /* of 64! */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Glyph_Bitmap( TT_Glyph glyph,
- TT_Raster_Map* bitmap,
- TT_F26Dot6 xOffset,
- TT_F26Dot6 yOffset );
-
-
- /* Render the glyph into a pixmap, with given position offsets. */
- /* */
- /* Note: Only use integer pixel offsets to preserve the fine */
- /* hinting of the glyph and the `correct' anti-aliasing */
- /* (where vertical and horizontal stems aren't grayed). This */
- /* means that `xOffset' and `yOffset' must be multiples */
- /* of 64! */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Glyph_Pixmap( TT_Glyph glyph,
- TT_Raster_Map* pixmap,
- TT_F26Dot6 xOffset,
- TT_F26Dot6 yOffset );
-
-
-
- /* ----------------------- outline support ------------------------ */
-
- /* Allocate a new outline. Reserve space for `numPoints' and */
- /* `numContours'. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_New_Outline( TT_UShort numPoints,
- TT_Short numContours,
- TT_Outline* outline );
-
-
- /* Release an outline. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Done_Outline( TT_Outline* outline );
-
-
- /* Copy an outline into another one. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Copy_Outline( TT_Outline* source,
- TT_Outline* target );
-
-
- /* Render an outline into a bitmap. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Outline_Bitmap( TT_Engine engine,
- TT_Outline* outline,
- TT_Raster_Map* bitmap );
-
-
- /* Render an outline into a pixmap. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Outline_Pixmap( TT_Engine engine,
- TT_Outline* outline,
- TT_Raster_Map* pixmap );
-
-
- /* Return an outline's bounding box -- this function is slow as it */
- /* performs a complete scan-line process, without drawing, to get */
- /* the most accurate values. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Outline_BBox( TT_Outline* outline,
- TT_BBox* bbox );
-
-
- /* Apply a transformation to a glyph outline. */
-
- FT_EXPORT_DEF( void )
- TT_Transform_Outline( TT_Outline* outline,
- TT_Matrix* matrix );
-
-
- /* Apply a translation to a glyph outline. */
-
- FT_EXPORT_DEF( void )
- TT_Translate_Outline( TT_Outline* outline,
- TT_F26Dot6 xOffset,
- TT_F26Dot6 yOffset );
-
-
- /* Apply a transformation to a vector. */
-
- FT_EXPORT_DEF( void )
- TT_Transform_Vector( TT_F26Dot6* x,
- TT_F26Dot6* y,
- TT_Matrix* matrix );
-
-
- /* Compute A*B/C with 64 bits intermediate precision. */
-
- FT_EXPORT_DEF( TT_Long )
- TT_MulDiv( TT_Long A,
- TT_Long B,
- TT_Long C );
-
-
- /* Compute A*B/0x10000 with 64 bits intermediate precision. */
- /* Useful to multiply by a 16.16 fixed float value. */
-
- FT_EXPORT_DEF( TT_Long )
- TT_MulFix( TT_Long A,
- TT_Long B );
-
-
- /* ----------------- character mapping support --------------- */
-
- /* Return the number of character mappings found in this file. */
- /* Returns -1 in case of failure (invalid face handle). */
- /* */
- /* DON'T USE THIS FUNCTION! IT HAS BEEN DEPRECATED! */
- /* */
- /* It is retained for backwards compatibility only and will */
- /* fail on 16bit systems. */
- /* */
- /* You can now get the charmap count in the `num_CharMaps' */
- /* field of a face's properties. */
- /* */
-
- FT_EXPORT_DEF( int )
- TT_Get_CharMap_Count( TT_Face face );
-
-
- /* Return the ID of charmap number `charmapIndex' of a given face */
- /* used to enumerate the charmaps present in a TrueType file. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_CharMap_ID( TT_Face face,
- TT_UShort charmapIndex,
- TT_UShort* platformID,
- TT_UShort* encodingID );
-
-
- /* Look up the character maps found in `face' and return a handle */
- /* for the one matching `platformID' and `platformEncodingID' */
- /* (see the TrueType specs relating to the `cmap' table for */
- /* information on these ID numbers). Returns an error code. */
- /* In case of failure, the handle is set to NULL and is invalid. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_CharMap( TT_Face face,
- TT_UShort charmapIndex,
- TT_CharMap* charMap );
-
-
- /* Translate a character code through a given character map */
- /* and return the corresponding glyph index to be used in */
- /* a TT_Load_Glyph() call. This function returns 0 in case */
- /* of failure. */
-
- FT_EXPORT_DEF( TT_UShort )
- TT_Char_Index( TT_CharMap charMap,
- TT_ULong charCode );
-
-
-
- /* --------------------- names table support ------------------- */
-
- /* Return the number of name strings found in the name table. */
- /* Returns -1 in case of failure (invalid face handle). */
- /* */
- /* DON'T USE THIS FUNCTION! IT HAS BEEN DEPRECATED! */
- /* */
- /* It is retained for backwards compatibility only and will */
- /* fail on 16bit systems. */
- /* */
- /* You can now get the number of name strings in a face with */
- /* the `num_Names' field of its properties. */
-
- FT_EXPORT_DEF( int )
- TT_Get_Name_Count( TT_Face face );
-
-
- /* Return the ID of the name number `nameIndex' of a given face */
- /* used to enumerate the charmaps present in a TrueType file. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Name_ID( TT_Face face,
- TT_UShort nameIndex,
- TT_UShort* platformID,
- TT_UShort* encodingID,
- TT_UShort* languageID,
- TT_UShort* nameID );
-
-
- /* Return the address and length of the name number `nameIndex' */
- /* of a given face in the variables `stringPtr' resp. `length'. */
- /* The string is part of the face object and shouldn't be */
- /* written to or released. */
- /* */
- /* Note that for an invalid platform ID a null pointer will be */
- /* returned. */
-
- FT_EXPORT_DEF( TT_Error )
- TT_Get_Name_String( TT_Face face,
- TT_UShort nameIndex,
- TT_String** stringPtr,
- TT_UShort* length );
-
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* FREETYPE_H */
-
-
-/* END */