diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-03-17 15:24:27 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-03-18 09:59:04 +0100 |
commit | 7cb91a40e20b0ea405042429a1b497bf3c983e01 (patch) | |
tree | 9440fc68ac2ac23c4aa8b69b5ed8158e0a784188 /unotools/source | |
parent | f451878ccff475dd263ad67ade5e1896cf9fc734 (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/source')
-rw-r--r-- | unotools/source/config/fontcfg.cxx | 15 | ||||
-rw-r--r-- | unotools/source/misc/fontdefs.cxx | 19 |
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; |