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.
|
|
/********************************************************************
* * Header Name : font.h * Font structures defines for MLang fontlink2 * ********************************************************************/
#ifndef __FONT_H__
#define __FONT_H__
#define TWO_BYTE_NUM(p) (((p[0])<<8)|(p[1]))
#define FOUR_BYTE_NUM(p) (((p[0])<<24)|((p[1])<<16)|((p[2])<<8)|(p[3]))
#define OFFSET_OS2CPRANGE sizeof(SHORT) * 24 + sizeof(PANOSE) + sizeof(ULONG) * 4 + sizeof(CHAR) * 4
#define MAX_FONT_FILE_NAME 48
#define FONT_TABLE_INIT_SIZE 100
#define FONT_DATA_FILE_NAME TEXT("mlfcache.dat")
#define FONT_DATA_SIGNATURE "mlang font data"
#define REGFONTKEYNT TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts")
#define REGFONTKEY95 TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Fonts")
#define FONT_FOLDER TEXT("fonts")
#define MAX_FONT_INDEX 30
#define FONTDATATABLENUM 2
// Font database file format:
// Table header
// Table Entry [Table Entry]
// Table data [Table data]
typedef struct tagFontDataHeader{ char FileSig[16]; DWORD dwVersion; DWORD dwCheckSum; WORD nTable; } FONTDATAHEADER;
typedef struct tagFontTable{ char szName[4]; DWORD dwOffset; DWORD dwSize; } FONTDATATABLE;
typedef struct { char TTCTag [4]; BYTE Version [4]; BYTE DirCount [4]; BYTE OffsetTTF1[4]; } TTC_HEAD;
typedef struct { BYTE Version [4]; BYTE NumTables [2]; BYTE SearchRange [2]; BYTE EntrySelector[2]; BYTE RangeShift [2]; } TTF_HEAD;
typedef struct { char Tag [4]; BYTE CheckSum[4]; BYTE Offset [4]; BYTE Length [4]; } TABLE_DIR;
typedef struct { BYTE Format[2]; BYTE NumRec[2]; BYTE Offset[2]; } NAME_TABLE;
#define FONT_SUBFAMILY_NAME 2
#define FONT_NAME 4
#define MICROSOFT_PLATFORM 3
#define UNICODE_INDEXING 1
#define CMAP_FORMAT_FOUR 4
#define APPLE_UNICODE_PLATFORM 0
#define APPLE_UNICODE_INDEXING 3
#define UNICODE_SYMBOL_INDEXING 0
typedef struct { BYTE Platform[2]; BYTE Encoding[2]; // = 1 if string is in Unicode
BYTE LangID [2]; BYTE NameID [2]; // = 2 for font subfamily name
BYTE Length [2]; BYTE Offset [2]; } NAME_RECORD;
typedef struct { BYTE Version [2]; BYTE NumTables[2]; } CMAP_HEAD;
typedef struct { BYTE Platform[2]; // = 3 if Microsoft
BYTE Encoding[2]; // = 1 if string is in Unicode
BYTE Offset [4]; } CMAP_TABLE;
typedef struct { BYTE Platform[2]; // = 3 if Microsoft
BYTE Encoding[2]; // = 1 if string is in Unicode
BYTE Offset [4]; } OS2_TABLE;
typedef struct { BYTE Format [2]; // must be 4
BYTE Length [2]; BYTE Version [2]; BYTE SegCountX2 [2]; BYTE SeachgRange [2]; BYTE EntrySelector[2]; BYTE RangeShift [2]; } CMAP_FORMAT;
// font table
typedef struct tagFontInfo{ TCHAR szFaceName[LF_FACESIZE]; TCHAR szFileName[MAX_FONT_FILE_NAME]; DWORD dwCodePages[2]; LOGFONT lf; DWORD dwUniSubRanges[4]; SCRIPT_IDS scripts; } FONTINFO;
typedef struct tagSCRIPT { SCRIPT_ID sid; UINT uidDescription; // script name (localization needed)
UINT uiCodePage; // can be NULL to indicate no Windows code pages
WCHAR wcCandidate; // primary candiate for the script
UINT uidFixedWidthFont; // default fixed width font (localization needed)
UINT uidProportionalFont;// default proportional font (localization needed)
DWORD dwFlags; // script level flag
} SCRIPT;
//Unicode range table
typedef struct tagURangeFont{ WCHAR wcFrom; WCHAR wcTo; int nFonts; int *pFontIndex; } URANGEFONT;
extern UINT g_cScript;
extern const SCRIPT ScriptTable[];
//Script
#endif // __FONT_H__
|