summaryrefslogtreecommitdiff
path: root/unotools
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2022-03-17 15:24:27 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-03-18 09:59:04 +0100
commit7cb91a40e20b0ea405042429a1b497bf3c983e01 (patch)
tree9440fc68ac2ac23c4aa8b69b5ed8158e0a784188 /unotools
parentf451878ccff475dd263ad67ade5e1896cf9fc734 (diff)
tdf#133603 cache languagetag in FontSubstConfiguration
speeds up saving XLSX by 10% Change-Id: I5f48fcd3de44675d27e275c6ff2f4e51a067c750 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131727 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'unotools')
-rw-r--r--unotools/source/config/fontcfg.cxx15
-rw-r--r--unotools/source/misc/fontdefs.cxx19
2 files changed, 17 insertions, 17 deletions
diff --git a/unotools/source/config/fontcfg.cxx b/unotools/source/config/fontcfg.cxx
index ef94981d7746..371084708084 100644
--- a/unotools/source/config/fontcfg.cxx
+++ b/unotools/source/config/fontcfg.cxx
@@ -299,7 +299,8 @@ FontSubstConfiguration& FontSubstConfiguration::get()
*/
FontSubstConfiguration::FontSubstConfiguration() :
- maSubstHash( 300 )
+ maSubstHash( 300 ),
+ maLanguageTag("en")
{
if (utl::ConfigManager::IsFuzzing())
return;
@@ -339,6 +340,9 @@ FontSubstConfiguration::FontSubstConfiguration() :
}
SAL_INFO("unotools.config", "config provider: " << m_xConfigProvider.is()
<< ", config access: " << m_xConfigAccess.is());
+
+ if( maLanguageTag.isSystemLocale() )
+ maLanguageTag = SvtSysLocale().GetUILanguageTag();
}
/*
@@ -1042,13 +1046,8 @@ const FontNameAttr* FontSubstConfiguration::getSubstInfo( const OUString& rFontN
FontNameAttr aSearchAttr;
aSearchAttr.Name = aSearchFont;
- LanguageTag aLanguageTag("en");
-
- if( aLanguageTag.isSystemLocale() )
- aLanguageTag = SvtSysLocale().GetUILanguageTag();
-
- ::std::vector< OUString > aFallbacks( aLanguageTag.getFallbackStrings( true));
- if (aLanguageTag.getLanguage() != "en")
+ ::std::vector< OUString > aFallbacks( maLanguageTag.getFallbackStrings( true));
+ if (maLanguageTag.getLanguage() != "en")
aFallbacks.emplace_back("en");
for (const auto& rFallback : aFallbacks)
diff --git a/unotools/source/misc/fontdefs.cxx b/unotools/source/misc/fontdefs.cxx
index 66bd91363be7..9015f93e9de6 100644
--- a/unotools/source/misc/fontdefs.cxx
+++ b/unotools/source/misc/fontdefs.cxx
@@ -545,18 +545,19 @@ OUString GetSubsFontName( const OUString& rName, SubsFontFlags nFlags )
|| aOrgName == "opensymbol" ) )
return aName;
- const utl::FontNameAttr* pAttr = utl::FontSubstConfiguration::get().getSubstInfo( aOrgName );
- if ( pAttr && (nFlags & SubsFontFlags::MS) )
+ if (nFlags & SubsFontFlags::MS)
{
- for( const auto& rSubstitution : pAttr->MSSubstitutions )
- if( ! ImplIsFontToken( rName, rSubstitution ) )
- {
- ImplAppendFontToken( aName, rSubstitution );
- if( nFlags & SubsFontFlags::ONLYONE )
+ const utl::FontNameAttr* pAttr = utl::FontSubstConfiguration::get().getSubstInfo( aOrgName );
+ if (pAttr)
+ for( const auto& rSubstitution : pAttr->MSSubstitutions )
+ if( ! ImplIsFontToken( rName, rSubstitution ) )
{
- break;
+ ImplAppendFontToken( aName, rSubstitution );
+ if( nFlags & SubsFontFlags::ONLYONE )
+ {
+ break;
+ }
}
- }
}
return aName;