Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/***
** ** Module: Builder ** ** Description: ** This is a module of the T1 to TT font converter. The module ** contains functions that will write the tables found in a ** TrueType font file. ** ** Author: Michael Jansson ** ** Created: 5/26/93 ** ***/
#ifndef _ARGS
# define IN const
# define OUT
# define INOUT
# define _ARGS(arg) arg
#endif
#define PREPSIZE 1000
#define MAXNOTDEFSIZE 1024
/* Referenced types. */ struct TTArg; struct TTHandle;
/* Argument types. */ struct TTGlyph { struct encoding *code;
USHORT num; USHORT stack; USHORT twilights; UBYTE *hints;
Outline *paths;
funit aw; funit lsb; };
struct TTComposite { struct encoding *aenc; struct encoding *benc; struct encoding *cenc; struct encoding *oenc; funit dx; funit dy; funit aw; funit lsb; };
typedef struct { ULONG a; ULONG b; } longdate;
struct TTMetrics { struct { USHORT ver; USHORT rev; } version; longdate created; char *family; char *copyright; char *name; char *id; char *notice; char *fullname; char *weight; char *verstr; f16d16 angle; funit underline; funit uthick; USHORT macStyle; USHORT usWeightClass; USHORT usWidthClass; USHORT fsSelection;
/* True Typographical metrics. */ funit typAscender; funit typDescender; funit typLinegap; Point superoff; Point supersize; Point suboff; Point subsize; funit strikeoff; funit strikesize; short isFixPitched;
/* Windows based metrics. */ funit winAscender; funit winDescender; UBYTE panose[10];
/* Mac based metrics. */ funit macLinegap;
funit emheight; USHORT FirstChar; USHORT LastChar; USHORT DefaultChar; USHORT BreakChar; USHORT CharSet; funit *widths; short *cvt; USHORT cvt_cnt; struct kerning *kerns; USHORT kernsize;
/* Copy of the encoding table. */ struct encoding *Encoding; USHORT encSize;
/* Hint specific information. */ const UBYTE *prep; /* PreProgram. */ USHORT prep_size; const UBYTE *fpgm; /* FontProgram. */ USHORT fpgm_size; USHORT maxstorage; USHORT maxprepstack; /* Max stack depth in pre-program. */ USHORT maxfpgm; /* Max number of function in the font program. */ USHORT onepix; /* Treshold where stems become >= 1.0 pixles. */ };
/***
** Function: InitTTOutput ** ** Description: ** This function allocates the resources needed to ** write a TT font file. ***/ errcode InitTTOutput _ARGS((IN struct TTArg *, OUT struct TTHandle **));
/***
** Function: CleanUpTT ** ** Description: ** This function free's the resources used while ** writing a TT font file. ***/ errcode CleanUpTT _ARGS((INOUT struct TTHandle *, IN struct TTArg *, IN errcode status));
/***
** Function: PutTTNotDefGlyph ** ** Description: ** This function adds a record for a the ".notdef" glyph to the ** 'glyf' table of the TT font file. ** ***/ errcode PutTTNotDefGlyph _ARGS((INOUT struct TTHandle *, IN struct TTGlyph*));
/** Function: PutTTGlyph
** ** Description: ** This function adds a record for a simple glyph to the ** 'glyf' table of the TT font file. ** ***/ errcode PutTTGlyph _ARGS((INOUT struct TTHandle *, IN struct TTGlyph*, IN boolean fStdEncoding));
/***
** Function: PutTTOther ** ** Description: ** This function writes the required TT tables to the ** TT font file, except for the 'glyf' table which is ** only completed (check sum is computed, etc.). ** ***/ errcode PutTTOther _ARGS((INOUT struct TTHandle *, INOUT struct TTMetrics *));
/***
** Function: FreeTTGlyph ** ** Description: ** This function will free the memory used to represent a ** a TrueType glyph. ** ***/ void FreeTTGlyph _ARGS((INOUT struct TTGlyph *));
/***
** Function: PutTTComposite ** ** Description: ** ***/ errcode PutTTComposite _ARGS((INOUT struct TTHandle *, OUT struct TTComposite *));
/***
** Function: WindowsBBox ** ** Description: ** Compute the bounding box of the characters that are ** used in Windows character set. ***/ void WindowsBBox _ARGS((IN struct TTHandle *tt, OUT Point *bbox));
/***
** Function: MacBBox ** ** Description: ** Compute the bounding box of the characters that are ** used in Mac character set. ** ** This is currently set to the global bounding box ** (tt->bbox) of all characters in the font. This will ** ensure that accents are not sqeezed on Mac platforms. ***/ void MacBBox _ARGS((IN struct TTHandle *tt, OUT Point *bbox));
// the name says it
void GlobalBBox _ARGS((IN struct TTHandle *tt, OUT Point *bbox));
/***
** Function: TypographicalAscender ** ** Description: ** Compute the typographical ascender height, as ymax of ** the letter 'b'. ***/ funit TypographicalDescender _ARGS((IN struct TTHandle *tt));
/***
** Function: TypographicalDescender ** ** Description: ** Compute the typographical descender height, as ymin of ** the letter 'g'. ***/ funit TypographicalAscender _ARGS((IN struct TTHandle *tt));
/***
** Function: FreeTTMetrics ** ** Description: ** This function free's the resources used to represent ** TT specific metrics and auxiliary font information. ***/ void FreeTTMetrics _ARGS((INOUT struct TTMetrics *));
/***
** Function: UsePrep ** ** Description: ** This function records the pre-program in the ** TTMetrics record, until an appropriate time ** when the data can be stored in the TT file. ** ***/ void UsePrep _ARGS((INOUT struct TTMetrics *, IN UBYTE *prep, IN USHORT size));
/***
** Function: SetFPGM ** ** Description: ** This function records the font-program in the ** TTMetrics record, until an appropriate time ** when the data can be stored in the TT file. ** ***/ void SetFPGM _ARGS((INOUT struct TTMetrics *, IN UBYTE *fpgm, IN USHORT size, IN USHORT num));
/***
** Function: GetPrep ** ** Description: ** This function allocates needed space for the ** pre-program. ** ***/ UBYTE *GetPrep _ARGS((IN int size));
|