|
|
// *------------------------------------------------------------------------*
// * makepfm.h
// *------------------------------------------------------------------------*
//
// Copyright 1990, 1991 -- Adobe Systems, Inc.
// PostScript is a trademark of Adobe Systems, Inc.
//
// NOTICE: All information contained herein or attendant hereto is, and
// remains, the property of Adobe Systems, Inc. Many of the intellectual
// and technical concepts contained herein are proprietary to Adobe Systems,
// Inc. and may be covered by U.S. and Foreign Patents or Patents Pending or
// are protected as trade secrets. Any dissemination of this information or
// reproduction of this material are strictly forbidden unless prior written
// permission is obtained from Adobe Systems, Inc.
//
//---------------------------------------------------------------------------
typedef char *LPSZ;
#define OPEN FileOpen
#define CLOSE _lclose
#define READ_BLOCK _lread
#define WRITE_BLOCK _lwrite
#define STRCPY lstrcpy
#define STRCAT lstrcat
#define STRCMP lstrcmp
/*--------------------------------------------------------------------------*/ #define DEBUG_MODE 0
typedef struct { /* A lookup table for converting strings to tokens */ char *szKey; /* Ptr to the string */ int iValue; /* The corresponding token value */ } KEY;
#define TK_UNDEFINED 0 /* tokens for ReadFontInfo */
#define TK_EOF 1
#define TK_MSMENUNAME 2
#define TK_VPSTYLE 3
#define TK_PI 4
#define TK_SERIF 5
#define TK_PCLSTYLE 6
#define TK_PCLSTROKEWEIGHT 7
#define TK_PCLTYPEFACEID 8
#define TK_INF_CAPHEIGHT 9
#define LAST_FI_TOKEN 9
#define TK_ANGLE 10 // added for ATM ( GetINFFontDescription )
#define TK_PSNAME 11 // added for ATM ( GetINFFontDescription )
/*----------------------------------------------------------------------------*/ /* EM describes the basic character cell dimension (in Adobe units) */ #define EM 1000
/*----------------------------------------------------------------------------*/ #define ANSI_CHARSET 0
#define SYMBOL_CHARSET 2
#define OEM_CHARSET 255
#define PCL_PI_CHARSET 181
#define PS_FONTTYPE 0x0081
#define PCL_FONTTYPE 0x0080
#define FW_NORMAL 400
#define FW_BOLD 700
/* GDI font families. */ #define WIN30
#ifdef WIN30
#define FF_DONTCARE (0<<4) /* Don't care or don't know. */
#define FF_ROMAN (1<<4) /* Variable stroke width, serifed. Times Roman, Century Schoolbook, etc. */
#define FF_SWISS (2<<4) /* Variable stroke width, sans-serifed. Helvetica, Swiss, etc. */
#define FF_MODERN (3<<4) /* Const stroke width, serifed or sans-serifed. Pica, Elite, Courier, etc. */
#define FF_SCRIPT (4<<4) /* Cursive, etc. */
#define FF_DECORATIVE (5<<4) /* Old English, etc. */
#endif
typedef struct { SHORT left; SHORT bottom; SHORT right; SHORT top; } BBOX;
typedef struct { SHORT capHeight; SHORT xHeight; SHORT loAscent; /* Lower-case ascent */ SHORT loDescent; /* Lower-case descent */ SHORT ulOffset; /* The underline offset */ SHORT ulThick; /* The underline thickness */ SHORT iSlant; /* The italic angle */ BBOX rcBounds; /* The font bounding box */ } EMM;
typedef struct { char szFont[32]; /* The PostScript font name */ char szFace[32]; /* The face name of the font */ BOOL fEnumerate; /* TRUE if the font should be enumerated */ BOOL fItalic; /* TRUE if this is an italic font */ BOOL fSymbol; /* TRUE if the font is decorative */ SHORT iFamily; /* The fonts family */ WORD iWeight; /* TRUE if this is a bold font */ SHORT iFirstChar; /* The first character in the font */ SHORT iLastChar; /* The last character in the font */ SHORT rgWidths[256]; /* Character widths from 0x020 to 0x0ff */ } FONT;
extern void PutByte(SHORT); extern void PutWord(SHORT); extern void PutLong(long);
typedef struct { WORD iKey; SHORT iKernAmount; } KX, *PKX;
typedef struct { WORD cPairs; /* The number of kerning pairs */ PKX rgPairs; } KP;
/* The info for a single kern track */ typedef struct { SHORT iDegree; /* The degree of kerning */ SHORT iPtMin; /* The minimum point size */ SHORT iKernMin; /* The minimum kern amount */ SHORT iPtMax; /* The maximum point size */ SHORT iKernMax; /* The maximum kern amount */ } TRACK;
#define MAXTRACKS 16
/* The track kerning table for a font */ typedef struct { SHORT cTracks; /* The number of kern tracks */ TRACK rgTracks[MAXTRACKS]; /* The kern track information */ } KT;
/* Character metrics */ typedef struct { BBOX rc; SHORT iWidth; } CM;
typedef struct { WORD iPtSize; SHORT iFirstChar; SHORT iLastChar; SHORT iAvgWidth; SHORT iMaxWidth; SHORT iItalicAngle; SHORT iFamily; SHORT ulOffset; SHORT ulThick; SHORT iAscent; SHORT iDescent; BOOL fVariablePitch; BOOL fWasVariablePitch; char szFile[MAX_PATH + 4]; // +1 for nul term, +3 for alignment.
char szFont[80]; char szFace[80]; SHORT iWeight; KP kp; KT kt; BBOX rcBBox; CM rgcm[256]; /* The character metrics */ } AFM;
/*----------------------------------------------------------------------------*/
typedef struct { SHORT iSize; SHORT iPointSize; SHORT iOrientation; SHORT iMasterHeight; SHORT iMinScale; SHORT iMaxScale; SHORT iMasterUnits; SHORT iCapHeight; SHORT iXHeight; SHORT iLowerCaseAscent; SHORT iLowerCaseDescent; SHORT iSlant; SHORT iSuperScript; SHORT iSubScript; SHORT iSuperScriptSize; SHORT iSubScriptSize; SHORT iUnderlineOffset; SHORT iUnderlineWidth; SHORT iDoubleUpperUnderlineOffset; SHORT iDoubleLowerUnderlineOffset; SHORT iDoubleUpperUnderlineWidth; SHORT iDoubleLowerUnderlineWidth; SHORT iStrikeOutOffset; SHORT iStrikeOutWidth; WORD nKernPairs; WORD nKernTracks; } ETM;
/*----------------------------------------------------------------------------*/
typedef struct { WORD iVersion; DWORD iSize; CHAR szCopyright[60]; WORD iType; WORD iPoints; WORD iVertRes; WORD iHorizRes; WORD iAscent; WORD iInternalLeading; WORD iExternalLeading; BYTE iItalic; BYTE iUnderline; BYTE iStrikeOut; WORD iWeight; BYTE iCharSet; WORD iPixWidth; WORD iPixHeight; BYTE iPitchAndFamily; WORD iAvgWidth; WORD iMaxWidth; BYTE iFirstChar; BYTE iLastChar; BYTE iDefaultChar; BYTE iBreakChar; WORD iWidthBytes; DWORD oDevice; DWORD oFace; DWORD oBitsPointer; DWORD oBitsOffset; } PFM;
typedef struct { WORD oSizeFields; DWORD oExtMetricsOffset; DWORD oExtentTable; DWORD oOriginTable; DWORD oPairKernTable; DWORD oTrackKernTable; DWORD oDriverInfo; DWORD iReserved; } PFMEXT;
/*----------------------------------------------------------------------------*/
typedef enum { epsymUserDefined, epsymRoman8, epsymKana8, epsymMath8, epsymUSASCII, epsymLineDraw, epsymMathSymbols, epsymUSLegal, epsymRomanExt, epsymISO_DenNor, epsymISO_UK, epsymISO_France, epsymISO_German, epsymISO_Italy, epsymISO_SwedFin, epsymISO_Spain, epsymGENERIC7, epsymGENERIC8, epsymECMA94 } SYMBOLSET;
typedef struct { SYMBOLSET symbolSet; /* kind of translation table */ DWORD offset; /* location of user-defined table */ WORD len; /* length (in bytes) of table */ BYTE firstchar, lastchar; /* table ranges from firstchar to lastchar */ } TRANSTABLE;
typedef struct { WORD epSize; /* size of this data structure */ WORD epVersion; /* number indicating version of struct */ DWORD epMemUsage; /* amt of memory font takes up in printer */ DWORD epEscape; /* pointer to escape that selects the font */ TRANSTABLE xtbl; /* character set translation info */ } DRIVERINFO;
/*----------------------------------------------------------------------------*/
#define POSTSCRIPT (1)
#define PCL (2)
/*----------------------------------------------------------------------------*/
typedef enum { PORTRAIT, LANDSCAPE } ORIENTATION;
#define ASCII_SET ("0U")
#define ROMAN8_SET ("8U")
#define WINANSI_SET ("9U")
#define PI_SET ("15U")
typedef struct { ORIENTATION orientation; char symbolsetStr[4]; SYMBOLSET symbolsetNum; SHORT style; SHORT strokeWeight; SHORT typefaceLen; WORD typeface; char *epEscapeSequence; /* escape sequence that selects the font */ } PCLINFO;
/*--------------------------------------------------------------------------*/ #define EOS '\0'
#define FNAMEMAX (80)
/*--------------------------------------------------------------------------*/
#define BUFFLEN 80
#define MANDATORY 1
#define CookedReadMode "r"
#define FATALEXIT (2)
|