[FREETYPE][NTGDI] Fix ftGdiGetTextMetricsW return for raster fonts (#7635)

Try to get ready to support raster fonts.
JIRA issue: CORE-17327
- Fix the return value of
  ftGdiGetTextMetricsW function
  for raster fonts.
This commit is contained in:
Katayama Hirofumi MZ 2025-01-18 22:33:00 +09:00 committed by GitHub
parent dad3a0938a
commit 82b7d4f3da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3164,7 +3164,7 @@ IntGetOutlineTextMetrics(PFONTGDI FontGDI,
Otm->otmSize = Cache->OutlineRequiredSize;
FillTM(&Otm->otmTextMetrics, FontGDI, pOS2, pHori, !Error ? &WinFNT : 0);
FillTM(&Otm->otmTextMetrics, FontGDI, pOS2, pHori, (Error ? NULL : &WinFNT));
if (!pOS2)
goto skip_os2;
@ -5318,25 +5318,26 @@ ftGdiGetTextMetricsW(
Status = STATUS_SUCCESS;
IntLockFreeType();
Error = FT_Get_WinFNT_Header(Face, &Win);
pOS2 = FT_Get_Sfnt_Table(Face, ft_sfnt_os2);
if (NULL == pOS2)
pHori = FT_Get_Sfnt_Table(Face, ft_sfnt_hhea);
if (!pOS2 && Error)
{
DPRINT1("Can't find OS/2 table - not TT font?\n");
Status = STATUS_INTERNAL_ERROR;
}
pHori = FT_Get_Sfnt_Table(Face, ft_sfnt_hhea);
if (NULL == pHori)
if (!pHori && Error)
{
DPRINT1("Can't find HHEA table - not TT font?\n");
Status = STATUS_INTERNAL_ERROR;
}
Error = FT_Get_WinFNT_Header(Face, &Win);
if (NT_SUCCESS(Status) || !Error)
if (NT_SUCCESS(Status))
{
FillTM(&ptmwi->TextMetric, FontGDI, pOS2, pHori, !Error ? &Win : 0);
FillTM(&ptmwi->TextMetric, FontGDI, pOS2, pHori, (Error ? NULL : &Win));
/* FIXME: Fill Diff member */
}