2 * X11 physical font definitions
4 * Copyright 1997 Alex Korobka
7 #ifndef __WINE_X11FONT_H
8 #define __WINE_X11FONT_H
14 /* this is a part of the font resource header, should
15 * make it easier to implement dynamic softfont loading */
24 INT16 dfInternalLeading
;
25 INT16 dfExternalLeading
;
33 CHAR dfPitchAndFamily
;
43 } IFONTINFO16
, *LPIFONTINFO16
;
49 #define FI_POLYWEIGHT 0x0001
50 #define FI_POLYSLANT 0x0002
51 #define FI_OBLIQUE 0x0004
52 #define FI_SCALABLE 0x0008
53 #define FI_FW_BOOK 0x0010
54 #define FI_FW_DEMI 0x0020
55 #define FI_VARIABLEPITCH 0x0040
56 #define FI_FIXEDPITCH 0x0080
58 #define FI_ENC_ISO8859 0x0100 /* iso8859-* */
59 #define FI_ENC_ISO646 0x0200 /* iso646* */
60 #define FI_ENC_ANSI 0x0400 /* ansi-0 */
61 #define FI_ENC_MSCODEPAGE 0x0800 /* cp125-* */
63 #define FI_FIXEDEX 0x1000
64 #define FI_NORMAL 0x2000
65 #define FI_SUBSET 0x4000
66 #define FI_TRUETYPE 0x8000
68 typedef struct tagFontInfo
70 struct tagFontInfo
* next
;
73 /* LFD parameters can be quite different from the actual metrics */
77 UINT16 lfd_decipoints
;
78 UINT16 lfd_resolution
;
82 /* Font resource list for EnumFont() purposes */
84 #define FR_SOFTFONT 0x1000 /* - .FON or .FOT file */
85 #define FR_SOFTRESOURCE 0x2000 /* - resource handle */
86 #define FR_REMOVED 0x4000 /* delayed remove */
87 #define FR_NAMESET 0x8000
89 typedef struct tagFontResource
91 struct tagFontResource
* next
;
96 CHAR lfFaceName
[LF_FACESIZE
];
100 float a
,b
,c
,d
; /* pixelsize matrix */
101 unsigned long RAW_ASCENT
;
102 unsigned long RAW_DESCENT
;
108 #define FO_RESOURCE_MASK 0x000F
109 #define FO_SYSTEM 0x0001 /* resident in cache */
110 #define FO_SOFTFONT 0x0002 /* installed at runtime */
111 #define FO_SHARED 0x0004 /* MITSHM */
112 #define FO_REMOVED 0x0008 /* remove when count falls to 0 */
114 #define FO_MATCH_MASK 0x00F0
115 #define FO_MATCH_NORASTER 0x0010
116 #define FO_MATCH_PAF 0x0020
117 #define FO_MATCH_XYINDEP 0x0040
119 #define FO_SYNTH_MASK 0xFF00
120 #define FO_SYNTH_HEIGHT 0x2000
121 #define FO_SYNTH_WIDTH 0x4000
122 #define FO_SYNTH_ROTATE 0x8000
123 #define FO_SYNTH_BOLD 0x0100
124 #define FO_SYNTH_ITALIC 0x0200
125 #define FO_SYNTH_UNDERLINE 0x0400
126 #define FO_SYNTH_STRIKEOUT 0x0800
128 /* Realized screen font */
132 XFontStruct
* fs
; /* text metrics */
133 fontResource
* fr
; /* font family */
134 fontInfo
* fi
; /* font instance info */
135 LPMAT2
* lpXForm
; /* optional transformation matrix */
136 Pixmap
* lpPixmap
; /* optional character bitmasks for synth fonts */
138 XFONTTRANS
*lpX11Trans
; /* Info for X11R6 transform */
139 INT16 foInternalLeading
;
140 INT16 foAvgCharWidth
;
141 INT16 foMaxCharWidth
;
144 /* font cache housekeeping */
163 LPLOGFONT16 lpLogFontParam
;
164 FONTENUMPROC16 lpEnumFunc
;
167 LPNEWTEXTMETRICEX16 lpTextMetric
;
168 LPENUMLOGFONTEX16 lpLogFont
;
169 SEGPTR segTextMetric
;
175 LPLOGFONT32W lpLogFontParam
;
176 FONTENUMPROC32W lpEnumFunc
;
179 LPNEWTEXTMETRICEX32W lpTextMetric
;
180 LPENUMLOGFONTEX32W lpLogFont
;
184 extern fontObject
* XFONT_GetFontObject( X_PHYSFONT pFont
);
185 extern XFontStruct
* XFONT_GetFontStruct( X_PHYSFONT pFont
);
186 extern LPIFONTINFO16
XFONT_GetFontInfo( X_PHYSFONT pFont
);
188 #endif __WINE_X11FONT_H