Annotation of ntddk/src/print/pscript/pfm.h, revision 1.1

1.1     ! root        1: //--------------------------------------------------------------------------
        !             2: //
        !             3: // Module Name:  PFM.H
        !             4: //
        !             5: // Brief Description:  This module contains the PSCRIPT driver's
        !             6: // font metrics defines.
        !             7: //
        !             8: // Author:  Kent Settle (kentse)
        !             9: // Created: 22-Jan-1991
        !            10: //
        !            11: // Copyright (C) 1991 - 1992 Microsoft Corporation.
        !            12: //--------------------------------------------------------------------------
        !            13: 
        !            14: #define MAX_STRING      80
        !            15: #define MAX_KERNPAIRS  1024
        !            16: #define MAX_CHARS       300
        !            17: 
        !            18: #define ANSI_CHARSET    0
        !            19: #define SYMBOL_CHARSET  2
        !            20: #define OEM_CHARSET     255
        !            21: 
        !            22: #define PFM_VERSION     0x00010000
        !            23: 
        !            24: #define INIT_IFI    2048
        !            25: #define INIT_PFM  131072 + INIT_IFI   // storage to allocate to build NTFM.
        !            26: 
        !            27: #define MIN_UNICODE_VALUE       0
        !            28: #define MAX_UNICODE_VALUE       0xFFFE
        !            29: #define INVALID_UNICODE_VALUE   0xFFFF
        !            30: // The AFM tokens.
        !            31: 
        !            32: #define TK_UNDEFINED            0
        !            33: #define TK_STARTKERNDATA        2
        !            34: #define TK_STARTKERNPAIRS       3
        !            35: #define TK_KPX                  4
        !            36: #define TK_ENDKERNPAIRS         5
        !            37: #define TK_ENDKERNDATA          6
        !            38: #define TK_FONTNAME             7
        !            39: #define TK_WEIGHT               8
        !            40: #define TK_ITALICANGLE          9
        !            41: #define TK_ISFIXEDPITCH         10
        !            42: #define TK_UNDERLINEPOSITION    11
        !            43: #define TK_UNDERLINETHICKNESS   12
        !            44: #define TK_FONTBBOX             13
        !            45: #define TK_CAPHEIGHT            14
        !            46: #define TK_XHEIGHT              15
        !            47: #define TK_DESCENDER            16
        !            48: #define TK_ASCENDER             17
        !            49: #define TK_STARTCHARMETRICS     18
        !            50: #define TK_ENDCHARMETRICS       19
        !            51: #define TK_ENDFONTMETRICS       20
        !            52: #define TK_STARTFONTMETRICS     21
        !            53: #define TK_ENCODINGSCHEME       22
        !            54: #define TK_FULLNAME             23
        !            55: #define TK_FAMILYNAME           24
        !            56: #define TK_MSFAMILY             25
        !            57: 
        !            58: // font defines.
        !            59: 
        !            60: #define ARIAL                               1
        !            61: #define ARIAL_BOLD                          2
        !            62: #define ARIAL_BOLDOBLIQUE                   3
        !            63: #define ARIAL_OBLIQUE                       4
        !            64: #define ARIAL_NARROW                        5
        !            65: #define ARIAL_NARROW_BOLD                   6
        !            66: #define ARIAL_NARROW_BOLDOBLIQUE            7
        !            67: #define ARIAL_NARROW_OBLIQUE                8
        !            68: #define AVANTGARDE_BOOK                     9
        !            69: #define AVANTGARDE_BOOKOBLIQUE              10
        !            70: #define AVANTGARDE_DEMI                     11
        !            71: #define AVANTGARDE_DEMIOBLIQUE              12
        !            72: #define BOOKMAN_DEMI                        13
        !            73: #define BOOKMAN_DEMIITALIC                  14
        !            74: #define BOOKMAN_LIGHT                       15
        !            75: #define BOOKMAN_LIGHTITALIC                 16
        !            76: #define COURIER                             17
        !            77: #define COURIER_BOLD                        18
        !            78: #define COURIER_BOLDOBLIQUE                 19
        !            79: #define COURIER_OBLIQUE                     20
        !            80: #define GARAMOND_BOLD                       21
        !            81: #define GARAMOND_BOLDITALIC                 22
        !            82: #define GARAMOND_LIGHT                      23
        !            83: #define GARAMOND_LIGHTITALIC                24
        !            84: #define HELVETICA                           25
        !            85: #define HELVETICA_BLACK                     26
        !            86: #define HELVETICA_BLACKOBLIQUE              27
        !            87: #define HELVETICA_BOLD                      28
        !            88: #define HELVETICA_BOLDOBLIQUE               29
        !            89: #define HELVETICA_CONDENSED                 30
        !            90: #define HELVETICA_CONDENSED_BOLD            31
        !            91: #define HELVETICA_CONDENSED_BOLDOBL         32
        !            92: #define HELVETICA_CONDENSED_OBLIQUE         33
        !            93: #define HELVETICA_LIGHT                     34
        !            94: #define HELVETICA_LIGHTOBLIQUE              35
        !            95: #define HELVETICA_NARROW                    36
        !            96: #define HELVETICA_NARROW_BOLD               37
        !            97: #define HELVETICA_NARROW_BOLDOBLIQUE        38
        !            98: #define HELVETICA_NARROW_OBLIQUE            39
        !            99: #define HELVETICA_OBLIQUE                   40
        !           100: #define KORINNA_BOLD                        41
        !           101: #define KORINNA_KURSIVBOLD                  42
        !           102: #define KORINNA_KURSIVREGULAR               43
        !           103: #define KORINNA_REGULAR                     44
        !           104: #define LUBALINGRAPH_BOOK                   45
        !           105: #define LUBALINGRAPH_BOOKOBLIQUE            46
        !           106: #define LUBALINGRAPH_DEMI                   47
        !           107: #define LUBALINGRAPH_DEMIOBLIQUE            48
        !           108: #define NEWCENTURYSCHLBK_BOLD               49
        !           109: #define NEWCENTURYSCHLBK_BOLDITALIC         50
        !           110: #define NEWCENTURYSCHLBK_ITALIC             51
        !           111: #define NEWCENTURYSCHLBK_ROMAN              52
        !           112: #define PALATINO_BOLD                       53
        !           113: #define PALATINO_BOLDITALIC                 54
        !           114: #define PALATINO_ITALIC                     55
        !           115: #define PALATINO_ROMAN                      56
        !           116: #define SOUVENIR_DEMI                       57
        !           117: #define SOUVENIR_DEMIITALIC                 58
        !           118: #define SOUVENIR_LIGHT                      59
        !           119: #define SOUVENIR_LIGHTITALIC                60
        !           120: #define SYMBOL                              61
        !           121: #define TIMES_BOLD                          62
        !           122: #define TIMES_BOLDITALIC                    63
        !           123: #define TIMES_ITALIC                        64
        !           124: #define TIMES_ROMAN                         65
        !           125: #define TIMES_NEW_ROMAN                     66
        !           126: #define TIMES_NEW_ROMAN_BOLD                67
        !           127: #define TIMES_NEW_ROMAN_BOLDITALIC          68
        !           128: #define TIMES_NEW_ROMAN_ITALIC              69
        !           129: #define VARITIMES_BOLD                      70
        !           130: #define VARITIMES_BOLDITALIC                71
        !           131: #define VARITIMES_ITALIC                    72
        !           132: #define VARITIMES_ROMAN                     73
        !           133: #define ZAPFCALLIGRAPHIC_BOLD               74
        !           134: #define ZAPFCALLIGRAPHIC_BOLDITALIC         75
        !           135: #define ZAPFCALLIGRAPHIC_ITALIC             76
        !           136: #define ZAPFCALLIGRAPHIC_ROMAN              77
        !           137: #define ZAPFCHANCERY_MEDIUMITALIC           78
        !           138: #define ZAPFDINGBATS                        79
        !           139: 
        !           140: #define FIRST_FONT                          1
        !           141: #define DEFAULT_FONT                        COURIER
        !           142: #define NUM_INTERNAL_FONTS                  79
        !           143: 
        !           144: extern PutByte(SHORT);
        !           145: extern PutWord(SHORT);
        !           146: extern PutLong(long);
        !           147: 
        !           148: typedef USHORT  SOFFSET;        // short offset.
        !           149: 
        !           150: #define DWORDALIGN(a) ((a + (sizeof(DWORD) - 1)) & ~(sizeof(DWORD) - 1))
        !           151: #define WCHARALIGN(a) ((a + (sizeof(WCHAR) - 1)) & ~(sizeof(WCHAR) - 1))
        !           152: 
        !           153: typedef struct
        !           154: {
        !           155:     CHAR   *pstrAdobeFace;
        !           156:     CHAR   *pstrWinFace;
        !           157: } WINFONTPAIR;
        !           158: 
        !           159: typedef struct
        !           160: {
        !           161:     SHORT   left;
        !           162:     SHORT   top;
        !           163:     SHORT   right;
        !           164:     SHORT   bottom;
        !           165: } SRECT;
        !           166: 
        !           167: // entry for each soft font.
        !           168: 
        !           169: typedef struct
        !           170: {
        !           171:     ULONG   iFace;                      // identifier for this font.
        !           172:     PWSTR   pwstrPFMFile;               // pointer to .PFM filename for this font.
        !           173:     struct _SOFTFONTENTRY *psfePrev;   // pointer to previout entry.
        !           174:     struct _SOFTFONTENTRY *psfeNext;   // pointer to next SOFTFONTENTRY.
        !           175: } SOFTFONTENTRY, *PSOFTFONTENTRY;
        !           176: 
        !           177: // NT Font Metrics structure.
        !           178: 
        !           179: typedef struct
        !           180: {
        !           181:     ULONG   cjThis;             // size of this struct, with attached data.
        !           182:     ULONG   ulVersion;          // version of this structure.
        !           183:     ULONG   cjSoftFont;        // size of softfont data, if any.
        !           184:     RECT    rcBBox;             // bounding box of entire font.
        !           185:     FWORD   fwdLowerCaseAscent;
        !           186:     LOFFSET loszFullName;       // offset to FullName from top of struct.
        !           187:     LOFFSET loszFontName;       // offset to FontName.
        !           188:     LOFFSET loszFamilyName;     // offset to FamilyName.
        !           189:     ULONG   cKernPairs;
        !           190:     LOFFSET loKernPairs;        // offset to start of FD_KERNINGPAIR structs.
        !           191:     ULONG   cCharacters;
        !           192:     LOFFSET loCharMetrics;      // offset to array of USHORTS then BYTES.
        !           193:     LOFFSET loSoftFont;         // offset to softfont code, if any, else NULL.
        !           194:     LOFFSET loIFIMETRICS;       // offset to IFIMETRICS structure.
        !           195: } NTFM, *PNTFM;
        !           196: 
        !           197: // AFM to PFM compiler data structure.
        !           198: 
        !           199: typedef struct _PARSEDATA
        !           200: {
        !           201:     char        rgbBuffer[2048];    // the input buffer.
        !           202:     int         cbBuffer;           // number bytes in buffer.
        !           203:     char       *pbBuffer;           // pointer to current location in buffer.
        !           204:     char        rgbLine[160];       // The current line of text being processed
        !           205:     char       *szLine;             // Ptr to the current location in the line
        !           206:     BOOL        fEOF;
        !           207:     BOOL        fUnGetLine;
        !           208:     HANDLE      hFile;
        !           209:     PNTFM       pntfm;
        !           210:     IFIMETRICS *pTmpIFI;
        !           211:     int         cbFullName;
        !           212:     int         cbFontName;
        !           213:     int         cbFamilyName;
        !           214:     char        szTmpFullName[MAX_STRING];
        !           215:     char        szTmpFontName[MAX_STRING];
        !           216:     char        szTmpFamilyName[MAX_STRING];
        !           217:     FD_KERNINGPAIR TmpKernPairs[MAX_KERNPAIRS];
        !           218:     USHORT      TmpCharWidths[MAX_CHARS];
        !           219:     BYTE        TmpCharCodes[MAX_CHARS];
        !           220: } PARSEDATA, *PPARSEDATA;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.