/* * X11 physical font definitions * * Copyright 1997 Alex Korobka */ #ifndef __WINE_X11FONT_H #define __WINE_X11FONT_H #include "gdi.h" #include "x11drv.h" #include "pshpack1.h" /* this is a part of the font resource header, should * make it easier to implement dynamic softfont loading */ typedef struct { INT16 dfType; INT16 dfPoints; INT16 dfVertRes; INT16 dfHorizRes; INT16 dfAscent; INT16 dfInternalLeading; INT16 dfExternalLeading; CHAR dfItalic; CHAR dfUnderline; CHAR dfStrikeOut; INT16 dfWeight; BYTE dfCharSet; INT16 dfPixWidth; INT16 dfPixHeight; CHAR dfPitchAndFamily; INT16 dfAvgWidth; INT16 dfMaxWidth; CHAR dfFirstChar; CHAR dfLastChar; CHAR dfDefaultChar; CHAR dfBreakChar; INT16 dfWidthBytes; LPCSTR dfDevice; LPCSTR dfFace; } IFONTINFO16, *LPIFONTINFO16; #include "poppack.h" /* internal flags */ #define FI_POLYWEIGHT 0x0001 #define FI_POLYSLANT 0x0002 #define FI_OBLIQUE 0x0004 #define FI_SCALABLE 0x0008 #define FI_FW_BOOK 0x0010 #define FI_FW_DEMI 0x0020 #define FI_VARIABLEPITCH 0x0040 #define FI_FIXEDPITCH 0x0080 #define FI_FIXEDEX 0x1000 #define FI_NORMAL 0x2000 #define FI_SUBSET 0x4000 #define FI_TRUETYPE 0x8000 /* code pages */ #define FI_ENC_ANSI 0 #define FI_ENC_ISO8859 1 #define FI_ENC_ISO646 2 #define FI_ENC_MICROSOFT 3 #define FI_ENC_KOI8 4 #define FI_ENC_ASCII 5 #define FI_ENC_VISCII 6 #define FI_ENC_TCVN 7 #define FI_ENC_TIS620 8 typedef struct tagFontInfo { struct tagFontInfo* next; UINT16 fi_flags; UINT16 fi_encoding; /* LFD parameters can be quite different from the actual metrics */ UINT16 lfd_height; UINT16 lfd_resolution; IFONTINFO16 df; } fontInfo; /* Font resource list for EnumFont() purposes */ #define FR_SOFTFONT 0x1000 /* - .FON or .FOT file */ #define FR_SOFTRESOURCE 0x2000 /* - resource handle */ #define FR_REMOVED 0x4000 /* delayed remove */ #define FR_NAMESET 0x8000 #define LFD_FIELDS 14 typedef struct { char* foundry; char* family; char* weight; char* slant; char* set_width; char* add_style; char* pixel_size; char* point_size; char* resolution_x; char* resolution_y; char* spacing; char* average_width; char* charset_registry; char* charset_encoding; } LFD; typedef struct tagFontResource { struct tagFontResource* next; UINT16 fr_flags; UINT16 fr_penalty; UINT16 fi_count; UINT16 fo_count; fontInfo* fi; LFD* resource; HANDLE hOwner; /* For FR_SOFTFONT/FR_SOFTRESOURCE fonts */ CHAR lfFaceName[LF_FACESIZE]; } fontResource; typedef struct { float a,b,c,d; /* pixelsize matrix, FIXME: switch to MAT2 format */ unsigned long RAW_ASCENT; unsigned long RAW_DESCENT; float pixelsize; float ascent; float descent; } XFONTTRANS; #define FO_RESOURCE_MASK 0x000F #define FO_SYSTEM 0x0001 /* resident in cache */ #define FO_SOFTFONT 0x0002 /* installed at runtime */ #define FO_SHARED 0x0004 /* MITSHM */ #define FO_REMOVED 0x0008 /* remove when count falls to 0 */ #define FO_MATCH_MASK 0x00F0 #define FO_MATCH_NORASTER 0x0010 #define FO_MATCH_PAF 0x0020 #define FO_MATCH_XYINDEP 0x0040 #define FO_SYNTH_MASK 0xFF00 #define FO_SYNTH_HEIGHT 0x2000 #define FO_SYNTH_WIDTH 0x4000 #define FO_SYNTH_ROTATE 0x8000 #define FO_SYNTH_BOLD 0x0100 #define FO_SYNTH_ITALIC 0x0200 #define FO_SYNTH_UNDERLINE 0x0400 #define FO_SYNTH_STRIKEOUT 0x0800 /* Realized screen font */ typedef struct { XFontStruct* fs; /* text metrics */ fontResource* fr; /* font family */ fontInfo* fi; /* font instance info */ Pixmap* lpPixmap; /* optional character bitmasks for synth fonts */ XFONTTRANS *lpX11Trans; /* Info for X11R6 transform */ float rescale; /* Rescale for large fonts */ INT16 foInternalLeading; INT16 foAvgCharWidth; INT16 foMaxCharWidth; UINT16 fo_flags; /* font cache housekeeping */ UINT16 count; UINT16 lru; UINT16 lfchecksum; LOGFONT16 lf; } fontObject; typedef struct { fontResource* pfr; fontInfo* pfi; UINT16 height; UINT16 flags; LPLOGFONT16 plf; } fontMatch; typedef struct { LPLOGFONT16 lpLogFontParam; FONTENUMPROC16 lpEnumFunc; LPARAM lpData; LPNEWTEXTMETRICEX16 lpTextMetric; LPENUMLOGFONTEX16 lpLogFont; SEGPTR segTextMetric; SEGPTR segLogFont; } fontEnum16; typedef struct { LPLOGFONTW lpLogFontParam; FONTENUMPROCEXW lpEnumFunc; LPARAM lpData; LPNEWTEXTMETRICEXW lpTextMetric; LPENUMLOGFONTEXW lpLogFont; DWORD dwFlags; } fontEnum32; extern fontObject* XFONT_GetFontObject( X_PHYSFONT pFont ); extern XFontStruct* XFONT_GetFontStruct( X_PHYSFONT pFont ); extern LPIFONTINFO16 XFONT_GetFontInfo( X_PHYSFONT pFont ); #endif /* __WINE_X11FONT_H */