Index: reactos/win32ss/gdi/ntgdi/freetype.c =================================================================== --- reactos/win32ss/gdi/ntgdi/freetype.c (revision 74316) +++ reactos/win32ss/gdi/ntgdi/freetype.c (working copy) @@ -2111,7 +2111,8 @@ } static void FASTCALL -FontFamilyFillInfo(PFONTFAMILYINFO Info, PCWSTR FaceName, PFONTGDI FontGDI) +FontFamilyFillInfo(PFONTFAMILYINFO Info, LPCWSTR FaceName, + LPCWSTR FullName, PFONTGDI FontGDI) { ANSI_STRING StyleA; UNICODE_STRING StyleW; @@ -2126,6 +2127,7 @@ DWORD fs0; NTSTATUS status; FT_Face Face = FontGDI->SharedFace->Face; + UNICODE_STRING NameW; RtlZeroMemory(Info, sizeof(FONTFAMILYINFO)); Size = IntGetOutlineTextMetrics(FontGDI, 0, NULL); @@ -2189,28 +2191,39 @@ ExFreePoolWithTag(Otm, GDITAG_TEXT); /* face name */ - /* TODO: full name */ if (FaceName) { - RtlStringCbCopyW(Info->EnumLogFontEx.elfLogFont.lfFaceName, - sizeof(Info->EnumLogFontEx.elfLogFont.lfFaceName), - FaceName); + RtlStringCbCopyW(Lf->lfFaceName, sizeof(Lf->lfFaceName), FaceName); + } + else + { + RtlInitUnicodeString(&NameW, NULL); + status = IntGetFontLocalizedName(&NameW, Face, TT_NAME_ID_FONT_FAMILY, + gusLanguageID); + if (NT_SUCCESS(status)) + { + /* store it */ + RtlStringCbCopyW(Lf->lfFaceName, sizeof(Lf->lfFaceName), + NameW.Buffer); + RtlFreeUnicodeString(&NameW); + } + } + + /* full name */ + if (FullName) + { RtlStringCbCopyW(Info->EnumLogFontEx.elfFullName, sizeof(Info->EnumLogFontEx.elfFullName), - FaceName); + FullName); } else { - UNICODE_STRING NameW; RtlInitUnicodeString(&NameW, NULL); - status = IntGetFontLocalizedName(&NameW, Face, TT_NAME_ID_FONT_FAMILY, + status = IntGetFontLocalizedName(&NameW, Face, TT_NAME_ID_FULL_NAME, gusLanguageID); if (NT_SUCCESS(status)) { /* store it */ - RtlStringCbCopyW(Info->EnumLogFontEx.elfLogFont.lfFaceName, - sizeof(Info->EnumLogFontEx.elfLogFont.lfFaceName), - NameW.Buffer); RtlStringCbCopyW(Info->EnumLogFontEx.elfFullName, sizeof(Info->EnumLogFontEx.elfFullName), NameW.Buffer); @@ -2371,7 +2384,8 @@ { if (*Count < Size) { - FontFamilyFillInfo(Info + *Count, EntryFaceNameW.Buffer, FontGDI); + FontFamilyFillInfo(Info + *Count, EntryFaceNameW.Buffer, + NULL, FontGDI); } (*Count)++; } @@ -2442,7 +2456,7 @@ if (InfoContext->Count < InfoContext->Size) { FontFamilyFillInfo(InfoContext->Info + InfoContext->Count, - RegistryName.Buffer, FontGDI); + RegistryName.Buffer, NULL, FontGDI); } InfoContext->Count++; return STATUS_SUCCESS; @@ -4715,7 +4729,7 @@ IsEqual = FALSE; FontFamilyFillInfo(&FamInfo[Count], FontEntry->FaceName.Buffer, - FontEntry->Font); + NULL, FontEntry->Font); for (i = 0; i < Count; ++i) { if (EqualFamilyInfo(&FamInfo[i], &FamInfo[Count]))