vcl/inc/unx/fc_fontoptions.hxx                 |    3 --
 vcl/unx/generic/fontmanager/fontconfig.cxx     |   29 +++++++++++--------------
 vcl/unx/generic/gdi/cairotextrender.cxx        |   29 +++----------------------
 vcl/unx/generic/glyphs/freetype_glyphcache.cxx |    2 -
 4 files changed, 19 insertions(+), 44 deletions(-)

New commits:
commit 47e1fcac22af9c772a3abbd0ba270cb5eef18416
Author:     Khaled Hosny <[email protected]>
AuthorDate: Mon Mar 2 01:14:46 2026 +0200
Commit:     Khaled Hosny <[email protected]>
CommitDate: Mon Mar 2 01:14:46 2026 +0200

    yy
    
    Change-Id: I368c9a0bfa28a348eeec954daa4a5246c2a3292e

diff --git a/vcl/inc/unx/fc_fontoptions.hxx b/vcl/inc/unx/fc_fontoptions.hxx
index 51bec972f3a5..c9ea936164b2 100644
--- a/vcl/inc/unx/fc_fontoptions.hxx
+++ b/vcl/inc/unx/fc_fontoptions.hxx
@@ -32,8 +32,7 @@ public:
                             mpPattern(pPattern) {}
                         ~FontConfigFontOptions();
 
-    void                SyncPattern(const OString& rFileName, sal_uInt32 
nFontFace, sal_uInt32 nFontVariation, bool bEmbolden);
-    static void         AddVariations(FcPattern* pPattern, const 
std::vector<hb_variation_t>& rVariations);
+    void                SyncPattern(const OString& rFileName, sal_uInt32 
nFontFace, sal_uInt32 nFontVariation, bool bEmbolden, const 
std::vector<hb_variation_t>& rVariations);
     FcPattern*          GetPattern() const;
     static void         cairo_font_options_substitute(FcPattern* pPattern);
 private:
diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx 
b/vcl/unx/generic/fontmanager/fontconfig.cxx
index 0ee9ecfa8284..9836670eb29c 100644
--- a/vcl/unx/generic/fontmanager/fontconfig.cxx
+++ b/vcl/unx/generic/fontmanager/fontconfig.cxx
@@ -1299,7 +1299,7 @@ FcPattern *FontConfigFontOptions::GetPattern() const
 #define FC_FONT_VARIATIONS "fontvariations"
 #endif
 
-void FontConfigFontOptions::SyncPattern(const OString& rFileName, sal_uInt32 
nIndex, sal_uInt32 nVariation, bool bEmbolden)
+void FontConfigFontOptions::SyncPattern(const OString& rFileName, sal_uInt32 
nIndex, sal_uInt32 nVariation, bool bEmbolden, const 
std::vector<hb_variation_t>& rVariations)
 {
     FcPatternDel(mpPattern, FC_FILE);
     FcPatternAddString(mpPattern, FC_FILE, reinterpret_cast<FcChar8 const 
*>(rFileName.getStr()));
@@ -1308,24 +1308,21 @@ void FontConfigFontOptions::SyncPattern(const OString& 
rFileName, sal_uInt32 nIn
     FcPatternAddInteger(mpPattern, FC_INDEX, nFcIndex);
     FcPatternDel(mpPattern, FC_EMBOLDEN);
     FcPatternAddBool(mpPattern, FC_EMBOLDEN, bEmbolden ? FcTrue : FcFalse);
-}
-
-void FontConfigFontOptions::AddVariations(FcPattern* pPattern, const 
std::vector<hb_variation_t>& rVariations)
-{
-    if (rVariations.empty())
-        return;
 
-    OStringBuffer aVarStr;
-    for (const auto& var : rVariations)
+    FcPatternDel(mpPattern, FC_FONT_VARIATIONS);
+    if (!rVariations.empty())
     {
-        if (!aVarStr.isEmpty())
-            aVarStr.append(',');
-        char tag[4];
-        hb_tag_to_string(var.tag, tag);
-        aVarStr.append(tag, 4).append('=').append(OString::number(var.value));
+        OStringBuffer aVarStr;
+        for (const auto& var : rVariations)
+        {
+            if (!aVarStr.isEmpty())
+                aVarStr.append(',');
+            char tag[4];
+            hb_tag_to_string(var.tag, tag);
+            aVarStr.append(tag, 
4).append('=').append(OString::number(var.value));
+        }
+        FcPatternAddString(mpPattern, FC_FONT_VARIATIONS, 
reinterpret_cast<const FcChar8*>(aVarStr.getStr()));
     }
-    FcPatternDel(pPattern, FC_FONT_VARIATIONS);
-    FcPatternAddString(pPattern, FC_FONT_VARIATIONS, reinterpret_cast<const 
FcChar8*>(aVarStr.getStr()));
 }
 
 std::unique_ptr<FontConfigFontOptions> PrintFontManager::getFontOptions(const 
FontAttributes& rInfo, int nSize)
diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx 
b/vcl/unx/generic/gdi/cairotextrender.cxx
index 03617b91cc9c..14ee838df33d 100644
--- a/vcl/unx/generic/gdi/cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/cairotextrender.cxx
@@ -29,10 +29,8 @@
 #include <sallayout.hxx>
 #include <salinst.hxx>
 
-#include <hb.h>
 #include <cairo.h>
 #include <cairo-ft.h>
-#include <fontconfig/fontconfig.h>
 #if defined(CAIRO_HAS_SVG_SURFACE)
 #include <cairo-svg.h>
 #elif defined(CAIRO_HAS_PDF_SURFACE)
@@ -45,7 +43,6 @@ namespace {
 
 typedef struct FT_FaceRec_* FT_Face;
 
-
 class CairoFontsCache : public CacheOwner
 {
 public:
@@ -55,22 +52,12 @@ public:
         const FontConfigFontOptions *mpOptions;
         bool mbEmbolden;
         bool mbVerticalMetrics;
-        std::vector<hb_variation_t> maVariations;
         bool operator ==(const CacheId& rOther) const
         {
-            if (maFace != rOther.maFace ||
-                mpOptions != rOther.mpOptions ||
-                mbEmbolden != rOther.mbEmbolden ||
-                mbVerticalMetrics != rOther.mbVerticalMetrics ||
-                maVariations.size() != rOther.maVariations.size())
-                return false;
-            for (size_t i = 0; i < maVariations.size(); ++i)
-            {
-                if (maVariations[i].tag != rOther.maVariations[i].tag ||
-                    maVariations[i].value != rOther.maVariations[i].value)
-                    return false;
-            }
-            return true;
+            return maFace == rOther.maFace &&
+                mpOptions == rOther.mpOptions &&
+                mbEmbolden == rOther.mbEmbolden &&
+                mbVerticalMetrics == rOther.mbVerticalMetrics;
         }
     };
 
@@ -240,14 +227,7 @@ static void ApplyFont(cairo_t* cr, const 
CairoFontsCache::CacheId& rId, double n
     {
         const FontConfigFontOptions *pOptions = rId.mpOptions;
         FcPattern *pPattern = pOptions->GetPattern();
-        if (!rId.maVariations.empty())
-        {
-            pPattern = FcPatternDuplicate(pPattern);
-            FontConfigFontOptions::AddVariations(pPattern, rId.maVariations);
-        }
         font_face = cairo_ft_font_face_create_for_pattern(pPattern);
-        if (!rId.maVariations.empty())
-            FcPatternDestroy(pPattern);
         rCache.CacheFont(font_face, rId);
     }
     cairo_set_font_face(cr, font_face);
@@ -288,7 +268,6 @@ static CairoFontsCache::CacheId makeCacheId(const 
GenericSalLayout& rLayout)
     aId.mpOptions = rFont.GetFontOptions();
     aId.mbEmbolden = rInstance.NeedsArtificialBold();
     aId.mbVerticalMetrics = false;
-    aId.maVariations = rInstance.GetVariations();
 
     return aId;
 }
diff --git a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx 
b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
index b2d47f717ed3..20836be4750c 100644
--- a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
+++ b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
@@ -476,7 +476,7 @@ const FontConfigFontOptions* FreetypeFont::GetFontOptions() 
const
     if (!mxFontOptions)
     {
         mxFontOptions = GetFCFontOptions(mxFontInfo->GetFontAttributes(), 
mrFontInstance.GetFontSelectPattern().mnHeight);
-        mxFontOptions->SyncPattern(GetFontFileName(), GetFontFaceIndex(), 
GetFontFaceVariation(), mrFontInstance.NeedsArtificialBold());
+        mxFontOptions->SyncPattern(GetFontFileName(), GetFontFaceIndex(), 
GetFontFaceVariation(), mrFontInstance.NeedsArtificialBold(), 
mrFontInstance.GetVariations());
     }
     return mxFontOptions.get();
 }

Reply via email to