summaryrefslogtreecommitdiff
path: root/vcl/win/gdi
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2020-01-13 03:32:31 +0300
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2020-01-14 13:29:59 +0100
commit25f4cc12fb59284392914c93a0ae6ad199ecc069 (patch)
tree68271ae91888a2d044fc96029c74daedb5fbcdc6 /vcl/win/gdi
parent4e0a6e43f48ef2d39433bdd8af3b6fd1906e2940 (diff)
tdf#128226: make OpenSymbol font an internal resource
OpenSymbol is crucial for Math; so it is not just some font that could be used if present, but part of program resources. As such, it must be available with other program resources, and not depend on user preferences, like uninstallation of the font from system. This patch puts it into program/resource/common/fonts, and adds that path to the paths used for private fonts. This is in addition to share/fonts/truetype, which is optional, and is usually absent on most Linux and Windows installations (on Linux, it is usually in a separate package installing it to system fonts; on Windows, it is also installed to system by MSI). Change-Id: Ibf5e12e70dacb62b965035645fc53e9d83cd8793 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86649 Reviewed-by: Andras Timar <andras.timar@collabora.com> Reviewed-by: Rene Engelhard <rene@debian.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'vcl/win/gdi')
-rw-r--r--vcl/win/gdi/salfont.cxx45
1 files changed, 26 insertions, 19 deletions
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index 323b6af952e9..ccc1138e6d54 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -1210,10 +1210,27 @@ bool WinSalGraphics::AddTempDevFont(PhysicalFontCollection* pFontCollection,
void WinSalGraphics::GetDevFontList( PhysicalFontCollection* pFontCollection )
{
// make sure all LO shared fonts are registered temporarily
- static bool bOnce = true;
- if( bOnce )
+ static bool bOnce = []()
{
- bOnce = false;
+ auto registerFontsIn = [](const OUString& dir) {
+ // collect fonts in font path that could not be registered
+ osl::Directory aFontDir(dir);
+ osl::FileBase::RC rcOSL = aFontDir.open();
+ if (rcOSL == osl::FileBase::E_None)
+ {
+ osl::DirectoryItem aDirItem;
+ SalData* pSalData = GetSalData();
+ assert(pSalData);
+
+ while (aFontDir.getNextItem(aDirItem, 10) == osl::FileBase::E_None)
+ {
+ osl::FileStatus aFileStatus(osl_FileStatus_Mask_FileURL);
+ rcOSL = aDirItem.getFileStatus(aFileStatus);
+ if (rcOSL == osl::FileBase::E_None)
+ lcl_AddFontResource(*pSalData, aFileStatus.getFileURL(), true);
+ }
+ }
+ };
// determine font path
// since we are only interested in fonts that could not be
@@ -1222,24 +1239,14 @@ void WinSalGraphics::GetDevFontList( PhysicalFontCollection* pFontCollection )
OUString aPath("$BRAND_BASE_DIR");
rtl_bootstrap_expandMacros(&aPath.pData);
+ // internal font resources, required for normal operation, like OpenSymbol
+ registerFontsIn(aPath + "/" LIBO_SHARE_RESOURCE_FOLDER "/common/fonts");
+
// collect fonts in font path that could not be registered
- osl::Directory aFontDir(aPath + "/" LIBO_SHARE_FOLDER "/fonts/truetype");
- osl::FileBase::RC rcOSL = aFontDir.open();
- if( rcOSL == osl::FileBase::E_None )
- {
- osl::DirectoryItem aDirItem;
- SalData* pSalData = GetSalData();
- assert(pSalData);
+ registerFontsIn(aPath + "/" LIBO_SHARE_FOLDER "/fonts/truetype");
- while( aFontDir.getNextItem( aDirItem, 10 ) == osl::FileBase::E_None )
- {
- osl::FileStatus aFileStatus( osl_FileStatus_Mask_FileURL );
- rcOSL = aDirItem.getFileStatus( aFileStatus );
- if ( rcOSL == osl::FileBase::E_None )
- lcl_AddFontResource(*pSalData, aFileStatus.getFileURL(), true);
- }
- }
- }
+ return true;
+ }();
ImplEnumInfo aInfo;
aInfo.mhDC = getHDC();