Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
3.9 KiB

  1. /********************************************************************
  2. *
  3. * Header Name : font.h
  4. * Font structures defines for MLang fontlink2
  5. *
  6. ********************************************************************/
  7. #ifndef __FONT_H__
  8. #define __FONT_H__
  9. #define TWO_BYTE_NUM(p) (((p[0])<<8)|(p[1]))
  10. #define FOUR_BYTE_NUM(p) (((p[0])<<24)|((p[1])<<16)|((p[2])<<8)|(p[3]))
  11. #define OFFSET_OS2CPRANGE sizeof(SHORT) * 24 + sizeof(PANOSE) + sizeof(ULONG) * 4 + sizeof(CHAR) * 4
  12. #define MAX_FONT_FILE_NAME 48
  13. #define FONT_TABLE_INIT_SIZE 100
  14. #define FONT_DATA_FILE_NAME TEXT("mlfcache.dat")
  15. #define FONT_DATA_SIGNATURE "mlang font data"
  16. #define REGFONTKEYNT TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts")
  17. #define REGFONTKEY95 TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Fonts")
  18. #define FONT_FOLDER TEXT("fonts")
  19. #define MAX_FONT_INDEX 30
  20. #define FONTDATATABLENUM 2
  21. // Font database file format:
  22. // Table header
  23. // Table Entry [Table Entry]
  24. // Table data [Table data]
  25. typedef struct tagFontDataHeader{
  26. char FileSig[16];
  27. DWORD dwVersion;
  28. DWORD dwCheckSum;
  29. WORD nTable;
  30. } FONTDATAHEADER;
  31. typedef struct tagFontTable{
  32. char szName[4];
  33. DWORD dwOffset;
  34. DWORD dwSize;
  35. } FONTDATATABLE;
  36. typedef struct {
  37. char TTCTag [4];
  38. BYTE Version [4];
  39. BYTE DirCount [4];
  40. BYTE OffsetTTF1[4];
  41. } TTC_HEAD;
  42. typedef struct {
  43. BYTE Version [4];
  44. BYTE NumTables [2];
  45. BYTE SearchRange [2];
  46. BYTE EntrySelector[2];
  47. BYTE RangeShift [2];
  48. } TTF_HEAD;
  49. typedef struct {
  50. char Tag [4];
  51. BYTE CheckSum[4];
  52. BYTE Offset [4];
  53. BYTE Length [4];
  54. } TABLE_DIR;
  55. typedef struct {
  56. BYTE Format[2];
  57. BYTE NumRec[2];
  58. BYTE Offset[2];
  59. } NAME_TABLE;
  60. #define FONT_SUBFAMILY_NAME 2
  61. #define FONT_NAME 4
  62. #define MICROSOFT_PLATFORM 3
  63. #define UNICODE_INDEXING 1
  64. #define CMAP_FORMAT_FOUR 4
  65. #define APPLE_UNICODE_PLATFORM 0
  66. #define APPLE_UNICODE_INDEXING 3
  67. #define UNICODE_SYMBOL_INDEXING 0
  68. typedef struct {
  69. BYTE Platform[2];
  70. BYTE Encoding[2]; // = 1 if string is in Unicode
  71. BYTE LangID [2];
  72. BYTE NameID [2]; // = 2 for font subfamily name
  73. BYTE Length [2];
  74. BYTE Offset [2];
  75. } NAME_RECORD;
  76. typedef struct {
  77. BYTE Version [2];
  78. BYTE NumTables[2];
  79. } CMAP_HEAD;
  80. typedef struct {
  81. BYTE Platform[2]; // = 3 if Microsoft
  82. BYTE Encoding[2]; // = 1 if string is in Unicode
  83. BYTE Offset [4];
  84. } CMAP_TABLE;
  85. typedef struct {
  86. BYTE Platform[2]; // = 3 if Microsoft
  87. BYTE Encoding[2]; // = 1 if string is in Unicode
  88. BYTE Offset [4];
  89. } OS2_TABLE;
  90. typedef struct {
  91. BYTE Format [2]; // must be 4
  92. BYTE Length [2];
  93. BYTE Version [2];
  94. BYTE SegCountX2 [2];
  95. BYTE SeachgRange [2];
  96. BYTE EntrySelector[2];
  97. BYTE RangeShift [2];
  98. } CMAP_FORMAT;
  99. // font table
  100. typedef struct tagFontInfo{
  101. TCHAR szFaceName[LF_FACESIZE];
  102. TCHAR szFileName[MAX_FONT_FILE_NAME];
  103. DWORD dwCodePages[2];
  104. LOGFONT lf;
  105. DWORD dwUniSubRanges[4];
  106. SCRIPT_IDS scripts;
  107. } FONTINFO;
  108. typedef struct tagSCRIPT
  109. {
  110. SCRIPT_ID sid;
  111. UINT uidDescription; // script name (localization needed)
  112. UINT uiCodePage; // can be NULL to indicate no Windows code pages
  113. WCHAR wcCandidate; // primary candiate for the script
  114. UINT uidFixedWidthFont; // default fixed width font (localization needed)
  115. UINT uidProportionalFont;// default proportional font (localization needed)
  116. DWORD dwFlags; // script level flag
  117. } SCRIPT;
  118. //Unicode range table
  119. typedef struct tagURangeFont{
  120. WCHAR wcFrom;
  121. WCHAR wcTo;
  122. int nFonts;
  123. int *pFontIndex;
  124. } URANGEFONT;
  125. extern UINT g_cScript;
  126. extern const SCRIPT ScriptTable[];
  127. //Script
  128. #endif // __FONT_H__