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_FIXEDEX 0x1000
59 #define FI_NORMAL 0x2000
60 #define FI_SUBSET 0x4000
61 #define FI_TRUETYPE 0x8000
66 #define FI_ENC_ISO8859 1
67 #define FI_ENC_ISO646 2
68 #define FI_ENC_MICROSOFT 3
70 #define FI_ENC_ASCII 5
71 #define FI_ENC_VISCII 6
73 #define FI_ENC_TIS620 8
78 X11DRV_CPTABLE_UNICODE
,
86 typedef struct tagFontInfo
88 struct tagFontInfo
* next
;
94 /* LFD parameters can be quite different from the actual metrics */
97 UINT16 lfd_resolution
;
101 /* Font resource list for EnumFont() purposes */
103 #define FR_SOFTFONT 0x1000 /* - .FON or .FOT file */
104 #define FR_SOFTRESOURCE 0x2000 /* - resource handle */
105 #define FR_REMOVED 0x4000 /* delayed remove */
106 #define FR_NAMESET 0x8000
108 #define LFD_FIELDS 14
115 const char* set_width
;
116 const char* add_style
;
117 const char* pixel_size
;
118 const char* point_size
;
119 const char* resolution_x
;
120 const char* resolution_y
;
122 const char* average_width
;
123 const char* charset_registry
;
124 const char* charset_encoding
;
127 typedef struct tagFontResource
129 struct tagFontResource
* next
;
136 HANDLE hOwner
; /* For FR_SOFTFONT/FR_SOFTRESOURCE fonts */
137 CHAR lfFaceName
[LF_FACESIZE
];
141 float a
,b
,c
,d
; /* pixelsize matrix, FIXME: switch to MAT2 format */
142 unsigned long RAW_ASCENT
;
143 unsigned long RAW_DESCENT
;
149 #define FO_RESOURCE_MASK 0x000F
150 #define FO_SYSTEM 0x0001 /* resident in cache */
151 #define FO_SOFTFONT 0x0002 /* installed at runtime */
152 #define FO_SHARED 0x0004 /* MITSHM */
153 #define FO_REMOVED 0x0008 /* remove when count falls to 0 */
155 #define FO_MATCH_MASK 0x00F0
156 #define FO_MATCH_NORASTER 0x0010
157 #define FO_MATCH_PAF 0x0020
158 #define FO_MATCH_XYINDEP 0x0040
160 #define FO_SYNTH_MASK 0xFF00
161 #define FO_SYNTH_HEIGHT 0x2000
162 #define FO_SYNTH_WIDTH 0x4000
163 #define FO_SYNTH_ROTATE 0x8000
164 #define FO_SYNTH_BOLD 0x0100
165 #define FO_SYNTH_ITALIC 0x0200
166 #define FO_SYNTH_UNDERLINE 0x0400
167 #define FO_SYNTH_STRIKEOUT 0x0800
169 /* Realized screen font */
173 XFontStruct
* fs
; /* text metrics */
174 fontResource
* fr
; /* font family */
175 fontInfo
* fi
; /* font instance info */
176 Pixmap
* lpPixmap
; /* optional character bitmasks for synth fonts */
178 XFONTTRANS
*lpX11Trans
; /* Info for X11R6 transform */
179 float rescale
; /* Rescale for large fonts */
180 INT16 foInternalLeading
;
181 INT16 foAvgCharWidth
;
182 INT16 foMaxCharWidth
;
185 /* font cache housekeeping */
204 LPLOGFONT16 lpLogFontParam
;
205 FONTENUMPROC16 lpEnumFunc
;
208 LPNEWTEXTMETRICEX16 lpTextMetric
;
209 LPENUMLOGFONTEX16 lpLogFont
;
210 SEGPTR segTextMetric
;
216 LPLOGFONTW lpLogFontParam
;
217 FONTENUMPROCEXW lpEnumFunc
;
220 LPNEWTEXTMETRICEXW lpTextMetric
;
221 LPENUMLOGFONTEXW lpLogFont
;
225 extern fontObject
* XFONT_GetFontObject( X_PHYSFONT pFont
);
226 extern XFontStruct
* XFONT_GetFontStruct( X_PHYSFONT pFont
);
227 extern LPIFONTINFO16
XFONT_GetFontInfo( X_PHYSFONT pFont
);
229 typedef struct tagX11DRV_CP
231 XChar2b
* (*punicode_to_char2b
)( fontObject
* pfo
,
232 LPCWSTR lpwstr
, UINT count
);
233 void (*pDrawString
)( fontObject
* pfo
, Display
* pdisp
, Drawable d
, GC gc
,
234 int x
, int y
, XChar2b
* pstr
, int count
);
235 int (*pTextWidth
)( fontObject
* pfo
, XChar2b
* pstr
, int count
);
236 void (*pDrawText
)( fontObject
* pfo
, Display
* pdisp
, Drawable d
, GC gc
,
237 int x
, int y
, XTextItem16
* pitems
, int count
);
238 void (*pTextExtents
)( fontObject
* pfo
, XChar2b
* pstr
, int count
,
239 int* pdir
, int* pascent
, int* pdescent
,
243 extern const X11DRV_CP X11DRV_cptable
[X11DRV_CPTABLE_COUNT
];
245 #endif /* __WINE_X11FONT_H */