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