| 1 | /* |
| 2 | * prntfont.h |
| 3 | * |
| 4 | * Declarations for Windows NT printer driver font metrics |
| 5 | * |
| 6 | * This file is part of the w32api package. |
| 7 | * |
| 8 | * Contributors: |
| 9 | * Created by Filip Navara <xnavara@volny.cz> |
| 10 | * |
| 11 | * THIS SOFTWARE IS NOT COPYRIGHTED |
| 12 | * |
| 13 | * This source code is offered for use in the public domain. You may |
| 14 | * use, modify or distribute it freely. |
| 15 | * |
| 16 | * This code is distributed in the hope that it will be useful but |
| 17 | * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| 18 | * DISCLAIMED. This includes but is not limited to warranties of |
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| 20 | * |
| 21 | */ |
| 22 | |
| 23 | #ifndef __PRNTFONT_H |
| 24 | #define __PRNTFONT_H |
| 25 | |
| 26 | #define UNIFM_VERSION_1_0		0x10000 |
| 27 | #define UNI_GLYPHSETDATA_VERSION_1_0	0x10000 |
| 28 | |
| 29 | #define UFM_SOFT	1 |
| 30 | #define UFM_CART 2 |
| 31 | #define UFM_SCALABLE 4 |
| 32 | |
| 33 | #define DF_TYPE_HPINTELLIFONT	0 |
| 34 | #define DF_TYPE_TRUETYPE	1 |
| 35 | #define DF_TYPE_PST1		2 |
| 36 | #define DF_TYPE_CAPSL		3 |
| 37 | #define DF_TYPE_OEM1		4 |
| 38 | #define DF_TYPE_OEM2		5 |
| 39 | #define DF_NOITALIC		1 |
| 40 | #define DF_NOUNDER		2 |
| 41 | #define DF_XM_CR		4 |
| 42 | #define DF_NO_BOLD		8 |
| 43 | #define DF_NO_DOUBLE_UNDERLINE	16 |
| 44 | #define DF_NO_STRIKETHRU	32 |
| 45 | #define DF_BKSP_OK		64 |
| 46 | |
| 47 | #define MTYPE_COMPOSE			1 |
| 48 | #define MTYPE_DIRECT			2 |
| 49 | #define MTYPE_PAIRED			4 |
| 50 | #define MTYPE_FORMAT_MASK		7 |
| 51 | #define MTYPE_SINGLE			8 |
| 52 | #define MTYPE_DOUBLE			16 |
| 53 | #define MTYPE_DOUBLEBYTECHAR_MASK	24 |
| 54 | #define MTYPE_REPLACE			32 |
| 55 | #define MTYPE_ADD			64 |
| 56 | #define MTYPE_DISABLE			128 |
| 57 | #define MTYPE_PREDEFIN_MASK		192 |
| 58 | |
| 59 | #define CC_NOPRECNV	0x0000FFFF |
| 60 | #define CC_DEFAULT	0 |
| 61 | #define CC_CP437	-1 |
| 62 | #define CC_CP850	-2 |
| 63 | #define CC_CP863	-3 |
| 64 | #define CC_BIG5		-10 |
| 65 | #define CC_ISC		-11 |
| 66 | #define CC_JIS		-12 |
| 67 | #define CC_JIS_ANK	-13 |
| 68 | #define CC_NS86		-14 |
| 69 | #define CC_TCA		-15 |
| 70 | #define CC_GB2312	-16 |
| 71 | #define CC_SJIS		-17 |
| 72 | #define CC_WANSUNG	-18 |
| 73 | |
| 74 | #define UFF_FILE_MAGIC		'UFF1' |
| 75 | #define UFF_VERSION_NUMBER	0x10001 |
| 76 | #define FONT_DIR_SORTED		1 |
| 77 | #define FONT_REC_SIG 'CERF' |
| 78 | #define WINNT_INSTALLER_SIG 'IFTN' |
| 79 | |
| 80 | #define FONT_FL_UFM 0x0001 |
| 81 | #define FONT_FL_IFI 0x0002 |
| 82 | #define FONT_FL_SOFTFONT 0x0004 |
| 83 | #define FONT_FL_PERMANENT_SF 0x0008 |
| 84 | #define FONT_FL_DEVICEFONT 0x0010 |
| 85 | #define FONT_FL_GLYPHSET_GTT 0x0020 |
| 86 | #define FONT_FL_GLYPHSET_RLE 0x0040 |
| 87 | #define FONT_FL_RESERVED 0x8000 |
| 88 | |
| 89 | #define DATA_UFM_SIG 'MFUD' |
| 90 | #define DATA_IFI_SIG 'IFID' |
| 91 | #define DATA_GTT_SIG 'TTGD' |
| 92 | #define DATA_CTT_SIG 'TTCD' |
| 93 | #define DATA_VAR_SIG 'RAVD' |
| 94 | |
| 95 | #define FG_CANCHANGE	128 |
| 96 | #define WM_FI_FILENAME	900 |
| 97 | |
| 98 | #define GET_UNIDRVINFO(pUFM) ((PUNIDRVINFO)((ULONG_PTR)(pUFM) + (pUFM)->loUnidrvInfo)) |
| 99 | #define GET_IFIMETRICS(pUFM) ((IFIMETRICS*)((ULONG_PTR)(pUFM) + (pUFM)->loIFIMetrics)) |
| 100 | #define GET_EXTTEXTMETRIC(pUFM) ((EXTTEXTMETRIC*)((ULONG_PTR)(pUFM) + (pUFM)->loExtTextMetric)) |
| 101 | #define GET_WIDTHTABLE(pUFM) ((PWIDTHTABLE)((ULONG_PTR)(pUFM) + (pUFM)->loWidthTable)) |
| 102 | #define GET_KERNDATA(pUFM) ((PKERNDATA)((ULONG_PTR)(pUFM) + (pUFM)->loKernPair)) |
| 103 | #define GET_SELECT_CMD(pUni) ((PCHAR)(pUni) + (pUni)->SelectFont.loOffset) |
| 104 | #define GET_UNSELECT_CMD(pUni) ((PCHAR)(pUni) + (pUni)->UnSelectFont.loOffset) |
| 105 | #define GET_GLYPHRUN(pGTT) ((PGLYPHRUN)((ULONG_PTR)(pGTT) + ((PUNI_GLYPHSETDATA)pGTT)->loRunOffset)) |
| 106 | #define GET_CODEPAGEINFO(pGTT) ((PUNI_CODEPAGEINFO)((ULONG_PTR)(pGTT) + ((PUNI_GLYPHSETDATA)pGTT)->loCodePageOffset)) |
| 107 | #define GET_MAPTABLE(pGTT) ((PMAPTABLE)((ULONG_PTR)(pGTT) + ((PUNI_GLYPHSETDATA)pGTT)->loMapTableOffset)) |
| 108 | |
| 109 | typedef struct _UNIFM_HDR |
| 110 | { |
| 111 | DWORD dwSize; |
| 112 | DWORD dwVersion; |
| 113 | ULONG ulDefaultCodepage; |
| 114 | LONG lGlyphSetDataRCID; |
| 115 | DWORD loUnidrvInfo; |
| 116 | DWORD loIFIMetrics; |
| 117 | DWORD loExtTextMetric; |
| 118 | DWORD loWidthTable; |
| 119 | DWORD loKernPair; |
| 120 | DWORD dwReserved[2]; |
| 121 | } UNIFM_HDR, *PUNIFM_HDR; |
| 122 | |
| 123 | typedef struct _INVOC |
| 124 | { |
| 125 | DWORD dwCount; |
| 126 | DWORD loOffset; |
| 127 | } INVOC, *PINVOC; |
| 128 | |
| 129 | typedef struct _UNIDRVINFO |
| 130 | { |
| 131 | DWORD dwSize; |
| 132 | DWORD flGenFlags; |
| 133 | WORD wType; |
| 134 | WORD fCaps; |
| 135 | WORD wXRes; |
| 136 | WORD wYRes; |
| 137 | SHORT sYAdjust; |
| 138 | SHORT sYMoved; |
| 139 | WORD wPrivateData; |
| 140 | SHORT sShift; |
| 141 | INVOC SelectFont; |
| 142 | INVOC UnSelectFont; |
| 143 | WORD wReserved[4]; |
| 144 | } UNIDRVINFO, *PUNIDRVINFO; |
| 145 | |
| 146 | typedef struct _EXTTEXTMETRIC |
| 147 | { |
| 148 | SHORT emSize; |
| 149 | SHORT emPointSize; |
| 150 | SHORT emOrientation; |
| 151 | SHORT emMasterHeight; |
| 152 | SHORT emMinScale; |
| 153 | SHORT emMaxScale; |
| 154 | SHORT emMasterUnits; |
| 155 | SHORT emCapHeight; |
| 156 | SHORT emXHeight; |
| 157 | SHORT emLowerCaseAscent; |
| 158 | SHORT emLowerCaseDescent; |
| 159 | SHORT emSlant; |
| 160 | SHORT emSuperScript; |
| 161 | SHORT emSubScript; |
| 162 | SHORT emSuperScriptSize; |
| 163 | SHORT emSubScriptSize; |
| 164 | SHORT emUnderlineOffset; |
| 165 | SHORT emUnderlineWidth; |
| 166 | SHORT emDoubleUpperUnderlineOffset; |
| 167 | SHORT emDoubleLowerUnderlineOffset; |
| 168 | SHORT emDoubleUpperUnderlineWidth; |
| 169 | SHORT emDoubleLowerUnderlineWidth; |
| 170 | SHORT emStrikeOutOffset; |
| 171 | SHORT emStrikeOutWidth; |
| 172 | WORD emKernPairs; |
| 173 | WORD emKernTracks; |
| 174 | } EXTTEXTMETRIC, *PEXTTEXTMETRIC; |
| 175 | |
| 176 | typedef struct _WIDTHRUN |
| 177 | { |
| 178 | WORD wStartGlyph; |
| 179 | WORD wGlyphCount; |
| 180 | DWORD loCharWidthOffset; |
| 181 | } WIDTHRUN, *PWIDTHRUN; |
| 182 | |
| 183 | typedef struct _WIDTHTABLE |
| 184 | { |
| 185 | DWORD dwSize; |
| 186 | DWORD dwRunNum; |
| 187 | WIDTHRUN WidthRun[1]; |
| 188 | } WIDTHTABLE, *PWIDTHTABLE; |
| 189 | |
| 190 | typedef struct _KERNDATA |
| 191 | { |
| 192 | DWORD dwSize; |
| 193 | DWORD dwKernPairNum; |
| 194 | FD_KERNINGPAIR KernPair[1]; |
| 195 | } KERNDATA, *PKERNDATA; |
| 196 | |
| 197 | typedef struct _UNI_GLYPHSETDATA |
| 198 | { |
| 199 | DWORD dwSize; |
| 200 | DWORD dwVersion; |
| 201 | DWORD dwFlags; |
| 202 | LONG lPredefinedID; |
| 203 | DWORD dwGlyphCount; |
| 204 | DWORD dwRunCount; |
| 205 | DWORD loRunOffset; |
| 206 | DWORD dwCodePageCount; |
| 207 | DWORD loCodePageOffset; |
| 208 | DWORD loMapTableOffset; |
| 209 | DWORD dwReserved[2]; |
| 210 | } UNI_GLYPHSETDATA, *PUNI_GLYPHSETDATA; |
| 211 | |
| 212 | typedef struct _UNI_CODEPAGEINFO |
| 213 | { |
| 214 | DWORD dwCodePage; |
| 215 | INVOC SelectSymbolSet; |
| 216 | INVOC UnSelectSymbolSet; |
| 217 | } UNI_CODEPAGEINFO, *PUNI_CODEPAGEINFO; |
| 218 | |
| 219 | typedef struct _GLYPHRUN |
| 220 | { |
| 221 | WCHAR wcLow; |
| 222 | WORD wGlyphCount; |
| 223 | } GLYPHRUN, *PGLYPHRUN; |
| 224 | |
| 225 | typedef struct _TRANSDATA |
| 226 | { |
| 227 | BYTE ubCodePageID; |
| 228 | BYTE ubType; |
| 229 | union |
| 230 | { |
| 231 | SHORT sCode; |
| 232 | BYTE ubCode; |
| 233 | BYTE ubPairs[2]; |
| 234 | } uCode; |
| 235 | } TRANSDATA, *PTRANSDATA; |
| 236 | |
| 237 | typedef struct _MAPTABLE { |
| 238 | DWORD dwSize; |
| 239 | DWORD dwGlyphNum; |
| 240 | TRANSDATA Trans[1]; |
| 241 | } MAPTABLE, *PMAPTABLE; |
| 242 | |
| 243 | typedef struct _UFF_FILEHEADER { |
| 244 | DWORD dwSignature; |
| 245 | DWORD dwVersion; |
| 246 | DWORD dwSize; |
| 247 | DWORD nFonts; |
| 248 | DWORD nGlyphSets; |
| 249 | DWORD nVarData; |
| 250 | DWORD offFontDir; |
| 251 | DWORD dwFlags; |
| 252 | DWORD dwReserved[4]; |
| 253 | } UFF_FILEHEADER, *PUFF_FILEHEADER; |
| 254 | |
| 255 | typedef struct _UFF_FONTDIRECTORY { |
| 256 | DWORD dwSignature; |
| 257 | WORD wSize; |
| 258 | WORD wFontID; |
| 259 | SHORT sGlyphID; |
| 260 | WORD wFlags; |
| 261 | DWORD dwInstallerSig; |
| 262 | DWORD offFontName; |
| 263 | DWORD offCartridgeName; |
| 264 | DWORD offFontData; |
| 265 | DWORD offGlyphData; |
| 266 | DWORD offVarData; |
| 267 | } UFF_FONTDIRECTORY, *PUFF_FONTDIRECTORY; |
| 268 | |
| 269 | typedef struct _DATA_HEADER { |
| 270 | DWORD dwSignature; |
| 271 | WORD wSize; |
| 272 | WORD wDataID; |
| 273 | DWORD dwDataSize; |
| 274 | DWORD dwReserved; |
| 275 | } DATA_HEADER, *PDATA_HEADER; |
| 276 | |
| 277 | typedef struct _OEMFONTINSTPARAM { |
| 278 | DWORD cbSize; |
| 279 | HANDLE hPrinter; |
| 280 | HANDLE hModule; |
| 281 | HANDLE hHeap; |
| 282 | DWORD dwFlags; |
| 283 | PWSTR pFontInstallerName; |
| 284 | } OEMFONTINSTPARAM, *POEMFONTINSTPARAM; |
| 285 | |
| 286 | #endif /* __PRNTFONT_H */ |