67 pdcattr =
dc->pdcattr;
82 if (
Count && krnpair )
120 GreGetCharacterPlacementW(
147 cSet = nSet = nCount;
157 tmpDxCaretPos = gcpwSave.
lpDx;
175 if ( tmpDxCaretPos && nSet > 0)
177 for (
i = (nSet - 1);
i > 0;
i--)
179 tmpDxCaretPos[
i] -= tmpDxCaretPos[
i - 1];
207 DPRINT1(
"We Need to Do Something HERE!\n");
214 if (
Size.cx > nMaxExtent )
216 for (Cx =
Size.cx; nSet > 0; nSet--)
218 Cx -= tmpDxCaretPos[nSet - 1];
220 if ( Cx <= nMaxExtent )
break;
239 DPRINT1(
"We Need to Do Something HERE 2!\n");
270 for (
i = 0;
i < nSet;
i++)
304 DPRINT(
"FontGetObject font not initialized!\n");
309 DPRINT1(
"FontGetObject(TextIntRealizeFont) Status = 0x%lx\n",
Status);
338 static const WCHAR alphabet[] = {
339 'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
340 'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
341 'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',0};
349 pdcattr = pdc->pdcattr;
365 return (sz.
cx / 26 + 1) / 2;
375 static const DWORD GCP_DBCS_MASK=0x003F0000,
376 GCP_DIACRITIC_MASK=0x00000000,
377 FLI_GLYPHS_MASK=0x00000000,
378 GCP_GLYPHSHAPE_MASK=0x00000040,
379 GCP_KASHIDA_MASK=0x00000000,
380 GCP_LIGATE_MASK=0x00000000,
381 GCP_USEKERNING_MASK=0x00000000,
382 GCP_REORDER_MASK=0x00000060;
389 if( (fontsig.
fsCsb[0]&GCP_DBCS_MASK)!=0 )
392 if( (fontsig.
fsCsb[0]&GCP_DIACRITIC_MASK)!=0 )
395 if( (fontsig.
fsCsb[0]&FLI_GLYPHS_MASK)!=0 )
398 if( (fontsig.
fsCsb[0]&GCP_GLYPHSHAPE_MASK)!=0 )
401 if( (fontsig.
fsCsb[0]&GCP_KASHIDA_MASK)!=0 )
404 if( (fontsig.
fsCsb[0]&GCP_LIGATE_MASK)!=0 )
407 if( (fontsig.
fsCsb[0]&GCP_USEKERNING_MASK)!=0 )
410 pdcattr = Dc->pdcattr;
414 if( (fontsig.
fsCsb[0]&GCP_REORDER_MASK)!=0 )
461 DPRINT(
"NtGdiAddFontResourceW\n");
509 DPRINT(
"NtGdiAddFontMemResourceEx\n");
538 *pNumFonts = NumFonts;
577 return GreGetCharacterPlacementW(
hdc,
624 pdcattr = Dc->pdcattr;
670 pdcattr = pDc->pdcattr;
675 if ( TextObj ==
NULL)
744 if (UnsafeBuf &&
cjBuf)
825 pdcattr =
dc->pdcattr;
840 if (
Count && krnpair )
842 if (
Count > NumPairs)
900 pdcattr =
dc->pdcattr;
918 if (!otm)
return Size;
967 DWORD dwBytes, dwBytesRequested;
983 cbStringSize = cwc *
sizeof(
WCHAR);
988 if (!SafeFileNames.
Buffer)
1004 dwBytesRequested = dwBytes;
1042 if (pvBuf && dwBytesRequested > 0)
1090 pdcattr = pDc->pdcattr;
1167 if (pelfw->elfEnumLogfontEx.elfLogFont.lfEscapement !=
1168 pelfw->elfEnumLogfontEx.elfLogFont.lfOrientation)
1176 if (pvCliData && hNewFont)
1183 Entry->UserData = pvCliData;
1229 return HfontCreate(&SafeLogfont, cjElfw, lft,
fl, pvCliData);
#define LFONT_UnlockFont(plfnt)
#define ERROR_INVALID_PARAMETER
#define GDI_HANDLE_GET_INDEX(h)
DWORD FASTCALL ftGetFontUnicodeRanges(PFONTGDI Font, PGLYPHSET glyphset)
_In_ ULONG_PTR _In_opt_ DESIGNVECTOR * pdv
WCHAR elfFullName[LF_FULLFACESIZE]
DWORD APIENTRY NtGdiGetKerningPairs(HDC hDC, ULONG NumPairs, LPKERNINGPAIR krnpair)
PVOID NTAPI ExAllocatePoolWithQuotaTag(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag)
FORCEINLINE PDC DC_LockDc(HDC hdc)
INT APIENTRY NtGdiAddFontResourceW(IN WCHAR *pwcFiles, IN ULONG cwc, IN ULONG cFiles, IN FLONG fl, IN DWORD dwPidTid, IN OPTIONAL DESIGNVECTOR *pdv)
DWORD APIENTRY NtGdiGetFontUnicodeRanges(IN HDC hdc, OUT OPTIONAL LPGLYPHSET pgs)
IN BOOLEAN OUT PSTR Buffer
FORCEINLINE PTEXTOBJ TEXTOBJ_LockText(HFONT hfont)
#define DBG_UNREFERENCED_PARAMETER(P)
BOOL FASTCALL IntGdiGetFontResourceInfo(PUNICODE_STRING FileName, PVOID pBuffer, DWORD *pdwBytes, DWORD dwType)
DWORD FASTCALL IntGetFontLanguageInfo(PDC Dc)
BOOL FASTCALL GreGetTextExtentW(HDC hDC, LPCWSTR lpwsz, INT cwc, LPSIZE psize, UINT flOpts)
#define ERROR_INVALID_HANDLE
#define ERROR_NOT_ENOUGH_MEMORY
IN PVOID IN PVOID IN USHORT IN USHORT Size
FORCEINLINE VOID TEXTOBJ_UnlockText(PLFONT plfnt)
DWORD APIENTRY NtGdiGetCharacterPlacementW(IN HDC hdc, IN LPWSTR pwsz, IN INT nCount, IN INT nMaxExtent, IN OUT LPGCP_RESULTSW pgcpw, IN DWORD dwFlags)
HFONT APIENTRY NtGdiHfontCreate(IN PENUMLOGFONTEXDVW pelfw, IN ULONG cjElfw, IN LFTYPE lft, IN FLONG fl, IN PVOID pvCliData)
ULONG APIENTRY NtGdiGetOutlineTextMetricsInternalW(HDC hDC, ULONG Data, OUTLINETEXTMETRICW *otm, TMDIFF *Tmd)
BOOL APIENTRY NtGdiGetRealizationInfo(IN HDC hdc, OUT PREALIZATION_INFO pri, IN HFONT hf)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
WCHAR elfStyle[LF_FACESIZE]
DWORD FASTCALL ftGdiGetKerningPairs(PFONTGDI Font, DWORD cPairs, LPKERNINGPAIR pKerningPair)
NTSTATUS FASTCALL TextIntRealizeFont(HFONT FontHandle, PTEXTOBJ pTextObj)
BOOL FASTCALL TextIntUpdateSize(PDC dc, PTEXTOBJ TextObj, PFONTGDI FontGDI, BOOL bDoLock)
DWORD FASTCALL IntGetCharDimensions(HDC hdc, PTEXTMETRICW ptm, PDWORD height)
INT FASTCALL IntGetOutlineTextMetrics(PFONTGDI FontGDI, UINT Size, OUTLINETEXTMETRICW *Otm)
WCHAR elfScript[LF_FACESIZE]
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
ULONG APIENTRY NtGdiGetGlyphOutline(IN HDC hdc, IN WCHAR wch, IN UINT iFormat, OUT LPGLYPHMETRICS pgm, IN ULONG cjBuf, OUT OPTIONAL PVOID UnsafeBuf, IN LPMAT2 pmat2, IN BOOL bIgnoreRotation)
#define ExInitializePushLock
HFONT FASTCALL GreCreateFontIndirectW(LOGFONTW *lplf)
HFONT APIENTRY HfontCreate(IN PENUMLOGFONTEXDVW pelfw, IN ULONG cjElfw, IN LFTYPE lft, IN FLONG fl, IN PVOID pvCliData)
DWORD FASTCALL ftGdiGetFontData(PFONTGDI FontGdi, DWORD Table, DWORD Offset, PVOID Buffer, DWORD Size)
#define UNICODE_STRING_MAX_CHARS
#define NT_SUCCESS(StatCode)
struct tagLOGFONTW LOGFONTW
#define RtlFillMemory(Dest, Length, Fill)
_In_ WDFCOLLECTION _In_ ULONG Index
#define EXCEPTION_EXECUTE_HANDLER
static PWSTR PDWORD pdwBytes
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define KeEnterCriticalRegion()
BOOL FASTCALL ftGdiGetTextMetricsW(HDC hDC, PTMW_INTERNAL ptmwi)
_In_ ULONG _In_ CLIPOBJ _In_ RECTL _In_ ULONG cjIn
W32KAPI BOOL APIENTRY NtGdiGetFontResourceInfoInternalW(IN LPWSTR pwszFiles, IN ULONG cwc, IN ULONG cFiles, IN UINT cjIn, IN OUT LPDWORD pdwBytes, OUT LPVOID pvBuf, IN DWORD dwType)
VOID FASTCALL SetLastNtError(NTSTATUS Status)
INT FASTCALL IntGdiAddFontResource(PUNICODE_STRING FileName, DWORD Characteristics)
GLint GLint GLsizei GLsizei height
_In_ SIZEL _In_ ULONG iFormat
_In_ ULONG _In_ ULONG Offset
#define KeLeaveCriticalRegion()
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
PTEXTOBJ FASTCALL RealizeFontInit(HFONT hFont)
ULONG FASTCALL ftGdiGetGlyphOutline(PDC dc, WCHAR wch, UINT iFormat, LPGLYPHMETRICS pgm, ULONG cjBuf, PVOID pvBuf, LPMAT2 pmat2, BOOL bIgnoreRotation)
#define FIELD_OFFSET(t, f)
BOOL FASTCALL ftGdiRealizationInfo(PFONTGDI Font, PREALIZATION_INFO Info)
#define CFONT_REALIZATION
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
DESIGNVECTOR elfDesignVector
ULONG FASTCALL FontGetObject(PTEXTOBJ plfont, ULONG cjBuffer, PVOID pvBuffer)
HANDLE FASTCALL IntGdiAddFontMemResource(PVOID Buffer, DWORD dwSize, PDWORD pNumAdded)
#define RtlZeroMemory(Destination, Length)
#define ObjToGDI(ClipObj, Type)
BOOL APIENTRY NtGdiRemoveFontMemResourceEx(IN HANDLE hMMFont)
#define RtlCopyMemory(Destination, Source, Length)
DWORD APIENTRY NtGdiGetFontData(HDC hDC, DWORD Table, DWORD Offset, LPVOID Buffer, DWORD Size)
BOOL FASTCALL IntGdiRemoveFontMemResource(HANDLE hMMFont)
#define _SEH2_EXCEPT(...)
DWORD FASTCALL GreGetKerningPairs(HDC hDC, ULONG NumPairs, LPKERNINGPAIR krnpair)
#define _SEH2_GetExceptionCode()
ENUMLOGFONTEXW elfEnumLogfontEx
#define _SEH2_YIELD(__stmt)
BOOL FASTCALL TextIntGetTextExtentPoint(PDC dc, PTEXTOBJ TextObj, LPCWSTR String, INT Count, ULONG MaxExtent, LPINT Fit, LPINT Dx, LPSIZE Size, FLONG fl)
INT FASTCALL ftGdiGetTextCharsetInfo(PDC Dc, LPFONTSIGNATURE lpSig, DWORD dwFlags)
#define ExFreePoolWithTag(_P, _T)
HANDLE APIENTRY NtGdiAddFontMemResourceEx(IN PVOID pvBuffer, IN DWORD cjBuffer, IN DESIGNVECTOR *pdv, IN ULONG cjDV, OUT DWORD *pNumFonts)
BOOL FASTCALL GreGetTextExtentExW(HDC hDC, LPCWSTR String, ULONG Count, ULONG MaxExtent, PULONG Fit, PULONG Dx, LPSIZE pSize, FLONG fl)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
base of all file and directory entries
#define LFONT_AllocFontWithHandle()
#define ERROR_INSUFFICIENT_BUFFER
PULONG MinorVersion OPTIONAL