include/vcl/embeddedfontsmanager.hxx | 2 ++ vcl/source/gdi/embeddedfontsmanager.cxx | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-)
New commits: commit 76ddec5beadb160e07875585780af8de3190ebcf Author: Caolán McNamara <[email protected]> AuthorDate: Wed Sep 24 20:35:35 2025 +0100 Commit: Caolán McNamara <[email protected]> CommitDate: Mon Sep 29 11:27:49 2025 +0200 expose and add explicit suffix to fileUrlForTemporaryFont Change-Id: I9be729d0e05eadf368a0c56aa5b9a64716d02f04 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191466 Reviewed-by: Miklos Vajna <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/include/vcl/embeddedfontsmanager.hxx b/include/vcl/embeddedfontsmanager.hxx index 84c12b695a6b..a7c5f2ef9356 100644 --- a/include/vcl/embeddedfontsmanager.hxx +++ b/include/vcl/embeddedfontsmanager.hxx @@ -119,6 +119,8 @@ public: EmbeddedFontsManager(const css::uno::Reference<css::frame::XModel>& xModel); ~EmbeddedFontsManager() COVERITY_NOEXCEPT_FALSE; + static OUString fileUrlForTemporaryFont(std::u16string_view name, std::u16string_view suffix); + // write text dump static bool tx_dump(const OUString& srcFontUrl, const OUString& destFileUrl); // write Type 1 font diff --git a/vcl/source/gdi/embeddedfontsmanager.cxx b/vcl/source/gdi/embeddedfontsmanager.cxx index d6bf678235c1..ebf706e78219 100644 --- a/vcl/source/gdi/embeddedfontsmanager.cxx +++ b/vcl/source/gdi/embeddedfontsmanager.cxx @@ -105,13 +105,15 @@ void clearDir( const OUString& path ) } } } +} // Returns a URL for a file where to store contents of a given temporary font. // The file may or not may not exist yet, and will be cleaned up automatically as appropriate. // Use activateFonts() to actually enable usage of the font. -OUString fileUrlForTemporaryFont(std::u16string_view name) +// static +OUString EmbeddedFontsManager::fileUrlForTemporaryFont(std::u16string_view name, std::u16string_view suffix) { - OUString filename = OUString::Concat(name) + ".ttf"; // TODO is it always ttf? + OUString filename = OUString::Concat(name) + suffix; if (!comphelper::OStorageHelper::IsValidZipEntryFileName(filename, false)) { @@ -127,6 +129,8 @@ OUString fileUrlForTemporaryFont(std::u16string_view name) RTL_TEXTENCODING_UTF8); } +namespace +{ bool writeFontBytesToFile(osl::File& file, const void* data, sal_uInt64 size) { auto bytes = static_cast<const char*>(data); @@ -164,7 +168,7 @@ bool writeFontBytesToFile(osl::File& file, const void* data, sal_uInt64 size) // @param name name of the font file OUString writeFontBytesToFile(const std::vector<char>& bytes, std::u16string_view name) { - OUString url = fileUrlForTemporaryFont(name); + OUString url = EmbeddedFontsManager::fileUrlForTemporaryFont(name, u".ttf"); std::optional<osl::File> file(url); auto rc = file->open(osl_File_OpenFlag_Create | osl_File_OpenFlag_Write); @@ -191,7 +195,7 @@ OUString writeFontBytesToFile(const std::vector<char>& bytes, std::u16string_vie } } } - url = fileUrlForTemporaryFont(Concat2View(name + OUString::number(counter++))); + url = EmbeddedFontsManager::fileUrlForTemporaryFont(Concat2View(name + OUString::number(counter++)), u".ttf"); file.emplace(url); rc = file->open(osl_File_OpenFlag_Create | osl_File_OpenFlag_Write); }
