3 #define TAG_FINF 'FNIF'
7 #define TO_MEM_ALLOCATED 0x0001
8 #define TO_ALL_PTRS_VALID 0x0002
9 #define TO_VALID 0x0004
10 #define TO_ESC_NOT_ORIENT 0x0008
11 #define TO_PWSZ_ALLOCATED 0x0010
12 #define TSIM_UNDERLINE1 0x0020
13 #define TSIM_UNDERLINE2 0x0040
14 #define TSIM_STRIKEOUT 0x0080
15 #define TO_HIGHRESTEXT 0x0100
16 #define TO_BITMAPS 0x0200
17 #define TO_PARTITION_INIT 0x0400
18 #define TO_ALLOC_FACENAME 0x0800
19 #define TO_SYS_PARTITION 0x1000
23 typedef struct _STRGDI
25 STROBJ StrObj
; // Text string object header.
28 INT cgposPositionsEnumerated
;
29 PVOID prfo
; // PRFONT -> PFONTGDI
33 POINTFIX ptfxEscapement
;
41 RECTL rclBackGroundSave
;
47 POINTL ptlBaseLineAdjust
;
51 INT cNumFaceNameGlyphs
;
52 PVOID pacFaceNameGlyphs
;
53 ULONG acFaceNameGlyphs
[8];
56 #define TEXTOBJECT_INIT 0x00010000
58 /* GDI logical font object */
61 /* Header for all gdi objects in the handle table.
62 Do not (re)move this. */
63 BASEOBJECT BaseObject
;
67 WCHAR FullName
[LF_FULLFACESIZE
];
68 WCHAR Style
[LF_FACESIZE
];
69 WCHAR FaceName
[LF_FACESIZE
];
70 DWORD dwOffsetEndArray
;
72 ENUMLOGFONTEXDVW logfont
;
74 } TEXTOBJ
, *PTEXTOBJ
, LFONT
, *PLFONT
;
76 /* Internal interface */
78 #define LFONT_AllocFontWithHandle() ((PLFONT)GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_FONT, sizeof(TEXTOBJ)))
79 #define LFONT_ShareLockFont(hfont) (PLFONT)GDIOBJ_ReferenceObjectByHandle(hfont, GDIObjType_LFONT_TYPE)
80 #define LFONT_ShareUnlockFont(plfnt) GDIOBJ_vDereferenceObject((POBJ)plfnt)
81 #define LFONT_UnlockFont(plfnt) GDIOBJ_vUnlockObject((POBJ)plfnt)
85 TEXTOBJ_LockText(HFONT hfont
)
87 PLFONT plfnt
= LFONT_ShareLockFont(hfont
);
90 KeEnterCriticalRegion();
91 ExAcquirePushLockExclusive(&plfnt
->lock
);
98 TEXTOBJ_UnlockText(PLFONT plfnt
)
100 ExReleasePushLockExclusive(&plfnt
->lock
);
101 KeLeaveCriticalRegion();
102 LFONT_ShareUnlockFont(plfnt
);
106 PTEXTOBJ FASTCALL
RealizeFontInit(HFONT
);
107 NTSTATUS FASTCALL
TextIntRealizeFont(HFONT
,PTEXTOBJ
);
108 NTSTATUS FASTCALL
TextIntCreateFontIndirect(CONST LPLOGFONTW lf
, HFONT
*NewFont
);
109 BOOL FASTCALL
InitFontSupport(VOID
);
110 BOOL FASTCALL
IntIsFontRenderingEnabled(VOID
);
111 BOOL FASTCALL
IntIsFontRenderingEnabled(VOID
);
112 VOID FASTCALL
IntEnableFontRendering(BOOL Enable
);
113 ULONG FASTCALL
FontGetObject(PTEXTOBJ TextObj
, ULONG Count
, PVOID Buffer
);
114 VOID FASTCALL
IntLoadSystemFonts(VOID
);
115 VOID FASTCALL
IntGdiCleanupPrivateFontsForProcess(VOID
);
116 INT FASTCALL
IntGdiAddFontResource(PUNICODE_STRING FileName
, DWORD Characteristics
);
117 HANDLE FASTCALL
IntGdiAddFontMemResource(PVOID Buffer
, DWORD dwSize
, PDWORD pNumAdded
);
118 BOOL FASTCALL
IntGdiRemoveFontMemResource(HANDLE hMMFont
);
119 ULONG FASTCALL
ftGdiGetGlyphOutline(PDC
,WCHAR
,UINT
,LPGLYPHMETRICS
,ULONG
,PVOID
,LPMAT2
,BOOL
);
120 INT FASTCALL
IntGetOutlineTextMetrics(PFONTGDI
,UINT
,OUTLINETEXTMETRICW
*);
121 BOOL FASTCALL
TextIntUpdateSize(PDC
,PTEXTOBJ
,PFONTGDI
,BOOL
);
122 BOOL FASTCALL
ftGdiGetRasterizerCaps(LPRASTERIZER_STATUS
);
123 BOOL FASTCALL
TextIntGetTextExtentPoint(PDC
,PTEXTOBJ
,LPCWSTR
,INT
,ULONG
,LPINT
,LPINT
,LPSIZE
,FLONG
);
124 BOOL FASTCALL
ftGdiGetTextMetricsW(HDC
,PTMW_INTERNAL
);
125 DWORD FASTCALL
IntGetFontLanguageInfo(PDC
);
126 INT FASTCALL
ftGdiGetTextCharsetInfo(PDC
,PFONTSIGNATURE
,DWORD
);
127 DWORD FASTCALL
ftGetFontUnicodeRanges(PFONTGDI
, PGLYPHSET
);
128 DWORD FASTCALL
ftGdiGetFontData(PFONTGDI
,DWORD
,DWORD
,PVOID
,DWORD
);
129 BOOL FASTCALL
IntGdiGetFontResourceInfo(PUNICODE_STRING
,PVOID
,DWORD
*,DWORD
);
130 BOOL FASTCALL
ftGdiRealizationInfo(PFONTGDI
,PREALIZATION_INFO
);
131 DWORD FASTCALL
ftGdiGetKerningPairs(PFONTGDI
,DWORD
,LPKERNINGPAIR
);
132 BOOL NTAPI
GreExtTextOutW(IN HDC
,IN INT
,IN INT
,IN UINT
,IN OPTIONAL RECTL
*,
133 IN LPCWSTR
, IN INT
, IN OPTIONAL LPINT
, IN DWORD
);
134 DWORD FASTCALL
IntGetCharDimensions(HDC
, PTEXTMETRICW
, PDWORD
);
135 BOOL FASTCALL
GreGetTextExtentW(HDC
,LPCWSTR
,INT
,LPSIZE
,UINT
);
136 BOOL FASTCALL
GreGetTextExtentExW(HDC
,LPCWSTR
,ULONG
,ULONG
,PULONG
,PULONG
,LPSIZE
,FLONG
);
137 BOOL FASTCALL
GreTextOutW(HDC
,int,int,LPCWSTR
,int);
138 HFONT FASTCALL
GreCreateFontIndirectW( LOGFONTW
* );
139 BOOL WINAPI
GreGetTextMetricsW( _In_ HDC hdc
, _Out_ LPTEXTMETRICW lptm
);
141 #define IntLockProcessPrivateFonts(W32Process) \
142 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&W32Process->PrivateFontListLock)
144 #define IntUnLockProcessPrivateFonts(W32Process) \
145 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&W32Process->PrivateFontListLock)