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.
158 lines
5.4 KiB
158 lines
5.4 KiB
/******************************Module*Header*******************************\
|
|
* Module Name: mapfile.h
|
|
*
|
|
* Created: 26-Oct-1990 18:07:56
|
|
* Author: Bodin Dresevic [BodinD]
|
|
*
|
|
* Copyright (c) 1990-1999 Microsoft Corporation
|
|
*
|
|
\**************************************************************************/
|
|
|
|
|
|
// warning the first two fields of FILEVIEW and FONTFILE view must be
|
|
// the same so that they can be used in common routines
|
|
|
|
typedef struct _FILEVIEW {
|
|
LARGE_INTEGER LastWriteTime; // time stamp
|
|
PVOID pvKView; // for kernel mode font access
|
|
PVOID pvViewFD; // font driver process view of file
|
|
ULONG cjView; // size of font file view in bytes
|
|
void *pSection; // kernel mode pointer to the section object
|
|
BOOL bLastUpdated; // Add this for the bug #383101
|
|
} FILEVIEW, *PFILEVIEW;
|
|
|
|
typedef struct _FONTFILEVIEW {
|
|
FILEVIEW fv;
|
|
LPWSTR pwszPath; // path of the file
|
|
SIZE_T ulRegionSize; // used by ZwFreeVirtualMemory
|
|
ULONG cKRefCount; // kernel mode load count
|
|
ULONG cRefCountFD; // font driver load count
|
|
PVOID SpoolerBase; // base of spooler's view of spooler section
|
|
W32PID SpoolerPid; // spooler pid
|
|
} FONTFILEVIEW, *PFONTFILEVIEW;
|
|
|
|
#define FONTFILEVIEW_bRemote(p) (((FONTFILEVIEW*)(p))->pwszPath==0)
|
|
|
|
//moved from "engine.h"
|
|
|
|
typedef struct tagDOWNLOADFONTHEADER
|
|
{
|
|
ULONG Type1ID; // if non-zero then this is a remote Type1 font
|
|
ULONG NumFiles;
|
|
ULONG FileOffsets[1];
|
|
}DOWNLOADFONTHEADER,*PDOWNLOADFONTHEADER;
|
|
|
|
|
|
// file mapping
|
|
|
|
|
|
BOOL bMapFile(
|
|
PWSTR pwszFileName,
|
|
PFILEVIEW pfvw,
|
|
INT iFileSize,
|
|
BOOL *pbIsFAT
|
|
);
|
|
|
|
VOID vUnmapFile( PFILEVIEW pfvw );
|
|
|
|
INT cComputeGlyphSet(
|
|
WCHAR *pwc, // input buffer with a sorted array of cChar supported WCHAR's
|
|
BYTE *pj, // input buffer with original ansi values
|
|
INT cChar,
|
|
INT cRuns, // if nonzero, the same as return value
|
|
FD_GLYPHSET *pgset // output buffer to be filled with cRanges runs
|
|
);
|
|
|
|
INT cUnicodeRangesSupported(
|
|
INT cp, // code page, not used for now, the default system code page is used
|
|
INT iFirstChar, // first ansi char supported
|
|
INT cChar, // # of ansi chars supported, cChar = iLastChar + 1 - iFirstChar
|
|
WCHAR *pwc, // input buffer with a sorted array of cChar supported WCHAR's
|
|
BYTE *pj
|
|
);
|
|
|
|
// size of glyphset with runs and glyph handles appended at the bottom
|
|
|
|
#define SZ_GLYPHSET(cRuns, cGlyphs) \
|
|
(offsetof(FD_GLYPHSET,awcrun) \
|
|
+ sizeof(WCRUN)*(cRuns) \
|
|
+ sizeof(HGLYPH)*(cGlyphs))
|
|
|
|
//
|
|
// WINBUG #83140 2-7-2000 bhouse Investgate removal of vToUNICODEN macro
|
|
// Old Comment:
|
|
// - bogus macro that we need to remove.
|
|
//
|
|
|
|
#define vToUNICODEN( pwszDst, cwch, pszSrc, cch ) \
|
|
{ \
|
|
EngMultiByteToUnicodeN((LPWSTR)(pwszDst),(ULONG)((cwch)*sizeof(WCHAR)), \
|
|
(PULONG)NULL,(PSZ)(pszSrc),(ULONG)(cch)); \
|
|
(pwszDst)[(cwch)-1] = 0; \
|
|
}
|
|
|
|
|
|
typedef struct _CP_GLYPHSET {
|
|
UINT uiRefCount; // Number of references to this FD_GLYPHSET
|
|
UINT uiFirstChar; // First char supported
|
|
UINT uiLastChar; // Last char supported
|
|
BYTE jCharset; // charset
|
|
struct _CP_GLYPHSET *pcpNext; // Next element in list
|
|
FD_GLYPHSET gset; // The actual glyphset
|
|
|
|
} CP_GLYPHSET;
|
|
|
|
|
|
CP_GLYPHSET
|
|
*pcpComputeGlyphset(
|
|
CP_GLYPHSET **pcpHead,
|
|
UINT uiFirst,
|
|
UINT uiLast,
|
|
BYTE jCharSet
|
|
);
|
|
|
|
VOID
|
|
vUnloadGlyphset(
|
|
CP_GLYPHSET **pcpHead,
|
|
CP_GLYPHSET *pcpTarget
|
|
);
|
|
|
|
|
|
// needed in font substitutions
|
|
|
|
// FACE_CHARSET structure represents either value name or the value data
|
|
// of an entry in the font substitution section of "win.ini".
|
|
|
|
// this flag describes one of the old style entries where char set is not
|
|
// specified.
|
|
|
|
#define FJ_NOTSPECIFIED 1
|
|
|
|
// this flag indicates that the charset is not one of those that the
|
|
// system knows about. Could be garbage or application defined charset.
|
|
|
|
#define FJ_GARBAGECHARSET 2
|
|
|
|
typedef struct _FACE_CHARSET {
|
|
WCHAR awch[LF_FACESIZE];
|
|
BYTE jCharSet;
|
|
BYTE fjFlags;
|
|
} FACE_CHARSET;
|
|
|
|
|
|
VOID vCheckCharSet(FACE_CHARSET *pfcs, const WCHAR * pwsz); // in mapfile.c
|
|
|
|
|
|
#define IS_DBCS_CHARSET(CharSet) (((CharSet) == DBCS_CHARSET) ? TRUE : FALSE)
|
|
|
|
#define IS_ANY_DBCS_CHARSET( CharSet ) \
|
|
( ((CharSet) == SHIFTJIS_CHARSET) ? TRUE : \
|
|
((CharSet) == HANGEUL_CHARSET) ? TRUE : \
|
|
((CharSet) == CHINESEBIG5_CHARSET) ? TRUE : \
|
|
((CharSet) == GB2312_CHARSET) ? TRUE : FALSE )
|
|
|
|
|
|
#define IS_ANY_DBCS_CODEPAGE( CodePage ) (((CodePage) == 932) ? TRUE : \
|
|
((CodePage) == 949) ? TRUE : \
|
|
((CodePage) == 950) ? TRUE : \
|
|
((CodePage) == 936) ? TRUE : FALSE )
|