font.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 4k
Category:

Windows Kernel

Development Platform:

Visual C++

  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__