master
  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 */