vcl/qa/unx/generic/generic.cxx | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-)
New commits: commit f0bbb73a0dfe90b043fdf5fec1457563fcf39663 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Sun Jul 28 16:17:04 2024 +0100 Commit: Thorsten Behrens <thorsten.behr...@allotropia.de> CommitDate: Tue Nov 5 21:21:00 2024 +0100 Related: tdf#162072 compare fallback to what "serif" resolves to instead of assuming that the resolved serif font will have serif in its name. Change-Id: I3f85e2a8abd1dbf851debec9196e55d5c2da4e66 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171144 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> (cherry picked from commit d01dcab81a6a66fd5b4448ccff348f69c82c538d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176063 Tested-by: allotropia jenkins <jenk...@allotropia.de> Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de> diff --git a/vcl/qa/unx/generic/generic.cxx b/vcl/qa/unx/generic/generic.cxx index 8b79d99e510a..22176c28633c 100644 --- a/vcl/qa/unx/generic/generic.cxx +++ b/vcl/qa/unx/generic/generic.cxx @@ -30,32 +30,40 @@ public: : UnoApiTest(u"/vcl/qa/unx/generic/data/"_ustr) { } + static OUString GetFallbackFont(const vcl::Font& rFont) + { + Size aSize(0, 3840); + float fExactHeight = 3840; + bool bNonAntialias = false; + vcl::font::FontSelectPattern aPattern(rFont, rFont.GetFamilyName(), aSize, fExactHeight, + bNonAntialias); + aPattern.maTargetName = rFont.GetFamilyName(); + psp::PrintFontManager& rMgr = psp::PrintFontManager::get(); + OUString aMissingCodes; + + rMgr.Substitute(aPattern, aMissingCodes); + + return aPattern.maSearchName; + } }; CPPUNIT_TEST_FIXTURE(Test, testFontFallbackSerif) { + OUString sResolvedSerif = GetFallbackFont(vcl::Font("serif", Size(12, 12))); + // Given a font select pattern with a font name we don't bundle and with a serif family: vcl::Font aFont; aFont.SetFamilyName("IBM Plex Serif"); aFont.SetFamily(FAMILY_ROMAN); - Size aSize(0, 3840); - float fExactHeight = 3840; - bool bNonAntialias = false; - vcl::font::FontSelectPattern aPattern(aFont, aFont.GetFamilyName(), aSize, fExactHeight, - bNonAntialias); - aPattern.maTargetName = aFont.GetFamilyName(); - psp::PrintFontManager& rMgr = psp::PrintFontManager::get(); - OUString aMissingCodes; - - // When substituting that font: - rMgr.Substitute(aPattern, aMissingCodes); + + OUString sPlexFallback = GetFallbackFont(aFont); // Then make sure we get a serif fallback: // Without the accompanying fix in place, this test would have failed with: // - Expected: Noto Serif (or DejaVu Serif) // - Actual : Noto Kufi Arabic // i.e. we got a sans fallback for a serif pattern, which is clearly poor. - CPPUNIT_ASSERT(aPattern.maSearchName.endsWith(u"Serif")); + CPPUNIT_ASSERT_EQUAL(sResolvedSerif, sPlexFallback); } CPPUNIT_TEST_FIXTURE(Test, testFontFallbackCaching)