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 109typedef 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 123typedef struct _INVOC 124{ 125 DWORD dwCount; 126 DWORD loOffset; 127} INVOC, *PINVOC; 128 129typedef 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 146typedef 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 176typedef struct _WIDTHRUN 177{ 178 WORD wStartGlyph; 179 WORD wGlyphCount; 180 DWORD loCharWidthOffset; 181} WIDTHRUN, *PWIDTHRUN; 182 183typedef struct _WIDTHTABLE 184{ 185 DWORD dwSize; 186 DWORD dwRunNum; 187 WIDTHRUN WidthRun[1]; 188} WIDTHTABLE, *PWIDTHTABLE; 189 190typedef struct _KERNDATA 191{ 192 DWORD dwSize; 193 DWORD dwKernPairNum; 194 FD_KERNINGPAIR KernPair[1]; 195} KERNDATA, *PKERNDATA; 196 197typedef 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 212typedef struct _UNI_CODEPAGEINFO 213{ 214 DWORD dwCodePage; 215 INVOC SelectSymbolSet; 216 INVOC UnSelectSymbolSet; 217} UNI_CODEPAGEINFO, *PUNI_CODEPAGEINFO; 218 219typedef struct _GLYPHRUN 220{ 221 WCHAR wcLow; 222 WORD wGlyphCount; 223} GLYPHRUN, *PGLYPHRUN; 224 225typedef 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 237typedef struct _MAPTABLE { 238 DWORD dwSize; 239 DWORD dwGlyphNum; 240 TRANSDATA Trans[1]; 241} MAPTABLE, *PMAPTABLE; 242 243typedef 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 255typedef 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 269typedef struct _DATA_HEADER { 270 DWORD dwSignature; 271 WORD wSize; 272 WORD wDataID; 273 DWORD dwDataSize; 274 DWORD dwReserved; 275} DATA_HEADER, *PDATA_HEADER; 276 277typedef 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 */ 287