Let PrintFontManager::addFontFile directly take a file URL
...instead of converting from a file URL to a filesystem pathname at the (sole)
call site and then back to a file URL in addFontFile
Change-Id: I468dbfc183b062668209c6bd84fcfed122ceff37
Reviewed-on: https://gerrit.libreoffice.org/78202
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
diff --git a/vcl/inc/unx/fontmanager.hxx b/vcl/inc/unx/fontmanager.hxx
index 88187ef..3c67adc 100644
--- a/vcl/inc/unx/fontmanager.hxx
+++ b/vcl/inc/unx/fontmanager.hxx
@@ -199,7 +199,7 @@ public:
static PrintFontManager& get(); // one instance only
// There may be multiple font ids for font collections
std::vector<fontID> addFontFile( const OString& rFileName );
std::vector<fontID> addFontFile( const OUString& rFileUrl );
void initialize();
diff --git a/vcl/unx/generic/fontmanager/fontmanager.cxx b/vcl/unx/generic/fontmanager/fontmanager.cxx
index 8389ba2..a4d07ec 100644
--- a/vcl/unx/generic/fontmanager/fontmanager.cxx
+++ b/vcl/unx/generic/fontmanager/fontmanager.cxx
@@ -163,10 +163,10 @@ int PrintFontManager::getDirectoryAtom( const OString& rDirectory )
return nAtom;
}
std::vector<fontID> PrintFontManager::addFontFile( const OString& rFileName )
std::vector<fontID> PrintFontManager::addFontFile( const OUString& rFileUrl )
{
rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
INetURLObject aPath( OStringToOUString( rFileName, aEncoding ), FSysStyle::Detect );
INetURLObject aPath( rFileUrl );
OString aName(OUStringToOString(aPath.GetLastName(INetURLObject::DecodeMechanism::WithCharset, aEncoding), aEncoding));
OString aDir( OUStringToOString(
INetURLObject::decode( aPath.GetPath(), INetURLObject::DecodeMechanism::WithCharset, aEncoding ), aEncoding ) );
diff --git a/vcl/unx/generic/print/genpspgraphics.cxx b/vcl/unx/generic/print/genpspgraphics.cxx
index 1eb7340..38a39e7 100644
--- a/vcl/unx/generic/print/genpspgraphics.cxx
+++ b/vcl/unx/generic/print/genpspgraphics.cxx
@@ -671,12 +671,8 @@ bool GenPspGraphics::AddTempDevFontHelper( PhysicalFontCollection* pFontCollecti
GlyphCache &rGC )
{
// inform PSP font manager
OUString aUSystemPath;
OSL_VERIFY( !osl::FileBase::getSystemPathFromFileURL( rFileURL, aUSystemPath ) );
rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
OString aOFileName( OUStringToOString( aUSystemPath, aEncoding ) );
psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
std::vector<psp::fontID> aFontIds = rMgr.addFontFile( aOFileName );
std::vector<psp::fontID> aFontIds = rMgr.addFontFile( rFileURL );
if( aFontIds.empty() )
return false;