prntfont.h 6.8 KB

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