1 /*********************************************************************\ 2 * Module Name: 32IFIMET.H 3 * 4 * OS/2 Intelligent Font Interface 5 * 6 * Copyright (c) 1989,1994 IBM Corporation 7 * Copyright (c) 1989 Microsoft Corporation 8 * 9 * Definition and description of IFIMETRICS structure 10 * This file is included by FDSTRUCS.H 11 * 12 \*********************************************************************/ 13 #ifndef __32IFIMET_H__ 14 #define __32IFIMET_H__ 15 16 #define FACESIZE 32 17 #define GLYPHNAMESIZE 16 18 19 /* #defines for fsType in IFIMETRICS */ 20 21 #define IFIMETRICS_FIXED 0x0001 /*Fixed pitch */ 22 #define IFIMETRICS_LICENSED 0x0002 /*Font subject of licensing agreement */ 23 #define IFIMETRICS_KERNING 0x0004 /*Font has kerning data */ 24 #define IFIMETRICS_DBCS 0x0010 /*DBCS font */ 25 #define IFIMETRICS_MBCS 0x0018 /*MBCS (DBCS + SBCS) font */ 26 /* Reserved 0x8000 */ 27 #define IFIMETRICS_ATOMS 0x4000 /*The atom name fields are valid */ 28 #define IFIMETRICS_FAMTRUNC 0x2000 /*Familyname field is truncated */ 29 #define IFIMETRICS_FACETRUNC 0x1000 /*Facename field is truncated */ 30 #define IFIMETRICS_ANTIALIASED 0x0020 31 #define IFIMETRICS_UNICODE 0x0040 32 #define IFIMETRICS_NO_CACHE 0x0080 33 34 /* #defines for fsDefn in IFIMETRICS */ 35 36 #define IFIMETRICS_OUTLINE 0x0001 /*1 - Outline. 0 - Raster */ 37 /* Reserved 0x0002 */ 38 /* Reserved 0x0004 */ 39 /* Reserved 0x8000 */ 40 #define IFIMETRICS_UDC_FONT 0x0010 /*User defined font */ 41 /* Reserved */ 42 43 /* #defines for fsSelection in IFIMETRICS valid for bitmap or outline fonts */ 44 45 #define IFIMETRICS_ITALIC 0x8000 /*Italic */ 46 #define IFIMETRICS_UNDERSCORE 0x4000 /*Underscored */ 47 #define IFIMETRICS_OVERSTRUCK 0x2000 /*Overstruck */ 48 49 /* #defines for fsSelection in IFIMETRICS valid for bitmap fonts */ 50 51 #define IFIMETRICS_NEGATIVE 0x1000 /*Negative image */ 52 #define IFIMETRICS_HOLLOW 0x0800 /*Outline (hollow) */ 53 54 #if defined(__IBMCPP__) || defined(__IBMC__) 55 #pragma pack(1) 56 #else 57 #pragma Align_members(1) 58 #endif 59 60 typedef struct _IFIMETRICS /* ifim */ 61 { /* UNITS */ 62 UCHAR szFamilyname[FACESIZE]; /*Font Family Name, e.g. Roman */ 63 UCHAR szFacename[FACESIZE]; /*Face name, e.g. Tms Rmn Bold Italic */ 64 UCHAR szGlyphlistName[GLYPHNAMESIZE]; /*e.g. PM316, Latin-2, Greek */ 65 USHORT idRegistry; /*IBM registration number (or zero). I */ 66 LONG lCapEmHeight; /*Height of uppercase M N */ 67 LONG lXHeight; /*Nominal height of lowercase N */ 68 LONG lMaxAscender; /*Maximum height above baseline of any char N */ 69 LONG lMaxDescender; /*Maximum depth below baseline of any char N */ 70 LONG lLowerCaseAscent; /*Maximum height above baseline of any a-z N */ 71 LONG lLowerCaseDescent; /*Maximum depth below basiline of any a-z N */ 72 LONG lInternalLeading; /*White space within character N */ 73 LONG lExternalLeading; /*White space between lines N */ 74 LONG lAveCharWidth; /*Weighted average character width N */ 75 LONG lMaxCharInc; /*Maximum character increment N */ 76 LONG lEmInc; /*Increment for Capitals (typically 'M') N */ 77 LONG lMaxBaselineExt; /*Height of character cell N */ 78 FIXED fxCharSlope; /*Slope angle, degrees, clockwise D */ 79 FIXED fxInlineDir; /*Drawing direction, degrees clockwise D */ 80 FIXED fxCharRot; /*Glyph rotation in cell, degrees clockwise D */ 81 USHORT usWeightClass; /*Character weight, 1-9 (1=ultra-light) I */ 82 USHORT usWidthClass; /*Character width, 1-9 (1=ultra condensed) I */ 83 LONG lEmSquareSizeX; /*Em Square size, x-direction N */ 84 LONG lEmSquareSizeY; /*Em Square size, y-direction N */ 85 GLYPH giFirstChar; /*Number of first glyph in font I */ 86 GLYPH giLastChar; /*Number of last glyph in font I */ 87 GLYPH giDefaultChar; /*Glyph used if requested glyph invalid I */ 88 GLYPH giBreakChar; /*Space glyph I */ 89 USHORT usNominalPointSize; /*Point size for which font was designed N */ 90 USHORT usMinimumPointSize; /*Minimum point size scaling for font N */ 91 USHORT usMaximumPointSize; /*Maximum point size scaling for font N */ 92 USHORT fsType; /*Type indicators (see #defines) B */ 93 USHORT fsDefn; /*Font definition data (see #defines) B */ 94 USHORT fsSelection; /*Font selection flags (see #defines) B */ 95 USHORT fsCapabilities; /*Font capabilities must be 0 B */ 96 LONG lSubscriptXSize; /*Size in x-direction of subscript N */ 97 LONG lSubscriptYSize; /*Size in y-direction of subscript N */ 98 LONG lSubscriptXOffset; /*Offset in x-direction of subscript N */ 99 LONG lSubscriptYOffset; /*Offset in y-direction of subscript N */ 100 LONG lSuperscriptXSize; /*Size in x-direction of superscript N */ 101 LONG lSuperscriptYSize; /*Size in y-direction of superscript N */ 102 LONG lSuperscriptXOffset; /*Offset in x-direction of superscript N */ 103 LONG lSuperscriptYOffset; /*Offset in y-direction of superscript N */ 104 LONG lUnderscoreSize; /*Underscore size N */ 105 LONG lUnderscorePosition; /*Underscore position N */ 106 LONG lStrikeoutSize; /*Strikeout size N */ 107 LONG lStrikeoutPosition; /*Strikeout position N */ 108 SHORT cKerningPairs; /*Number of kerning pairs in pair table I */ 109 ULONG ulFontClass; /*IBM font classification B */ 110 } IFIMETRICS; 111 typedef IFIMETRICS FAR *PIFIMETRICS; 112 #if defined(__IBMCPP__) || defined(__IBMC__) 113 #pragma pack() 114 #else 115 #pragma Align_members() 116 #endif 117 118 #endif 119