int i;
ENUMLOGFONTEXA EnumLogFontExA;
NEWTEXTMETRICEXA NewTextMetricExA;
+ LOGFONTW lfW;
Info = RtlAllocateHeap(GetProcessHeap(), 0,
INITIAL_FAMILY_COUNT * sizeof(FONTFAMILYINFO));
{
return 0;
}
+
+ if (!LogFont)
+ {
+ lfW.lfCharSet = DEFAULT_CHARSET;
+ lfW.lfPitchAndFamily = 0;
+ lfW.lfFaceName[0] = 0;
+ LogFont = &lfW;
+ }
+
FontFamilyCount = NtGdiGetFontFamilyInfo(Dc, LogFont, Info, INITIAL_FAMILY_COUNT);
if (FontFamilyCount < 0)
{
return 0;
}
- nSet = uCount;
+ nSet = uCount;
if ( nSet > lpResults->nGlyphs )
nSet = lpResults->nGlyphs;
iFirstChar,
(ULONG)(iLastChar - iFirstChar + 1),
(PWCHAR) NULL,
- 0,
+ 0,
(PVOID) pxBuffer);
}
wstr[0],
(ULONG) count,
(PWCHAR) wstr,
- GCW_NOFLOAT|GCW_WIN32,
+ GCW_NOFLOAT|GCW_WIN32,
(PVOID) lpBuffer);
HeapFree(GetProcessHeap(), 0, str);
return FALSE;
}
- ret = NtGdiGetCharABCWidthsW( hdc,
+ ret = NtGdiGetCharABCWidthsW( hdc,
wstr[0],
(ULONG)count,
(PWCHAR)wstr,
if ((Ret == ARABIC_CHARSET) || (Ret == HEBREW_CHARSET))
Ret = (GCP_KASHIDA|GCP_DIACRITIC|GCP_LIGATE|GCP_GLYPHSHAPE|GCP_REORDER);
}
- Gcp = GetDCDWord(hDc, GdiGetFontLanguageInfo, GCP_ERROR);
+ Gcp = GetDCDWord(hDc, GdiGetFontLanguageInfo, GCP_ERROR);
if ( Gcp == GCP_ERROR)
return Gcp;
else
INT countW;
lpstrW = FONT_mbtowc(hdc, lpstr, count, &countW, NULL);
+
+ if (lpstrW == NULL)
+ return GDI_ERROR;
+
Ret = NtGdiGetGlyphIndicesW(hdc, lpstrW, countW, pgi, flags);
HeapFree(GetProcessHeap(), 0, lpstrW);
return Ret;
/*
* @implemented
*/
-DWORD
+LONG
WINAPI
GdiGetCharDimensions(HDC hdc, LPTEXTMETRICW lptm, LONG *height)
{
int index = 0;
switch (flags) {
case TCI_SRCFONTSIG:
- while (!(*lpSrc>>index & 0x0001) && index<MAXTCIINDEX) index++;
+ while (index < MAXTCIINDEX && !(*lpSrc>>index & 0x0001)) index++;
break;
case TCI_SRCCODEPAGE:
- while (PtrToUlong(lpSrc) != FONT_tci[index].ciACP && index < MAXTCIINDEX) index++;
+ while (index < MAXTCIINDEX && PtrToUlong(lpSrc) != FONT_tci[index].ciACP) index++;
break;
case TCI_SRCCHARSET:
- while (PtrToUlong(lpSrc) != FONT_tci[index].ciCharset && index < MAXTCIINDEX) index++;
+ while (index < MAXTCIINDEX && PtrToUlong(lpSrc) != FONT_tci[index].ciCharset) index++;
break;
default:
return FALSE;