diff options
author | Khaled Hosny <khaled@aliftype.com> | 2022-09-11 18:28:54 +0200 |
---|---|---|
committer | خالد حسني <khaled@aliftype.com> | 2022-09-19 12:23:47 +0200 |
commit | 92d67d4d32dee25c6b40ade5924f9d1ab488a16c (patch) | |
tree | 3b1b1226074cb711919aed827c7d0b9e16eb1d93 /vcl/source/font/PhysicalFontFace.cxx | |
parent | 54e84cf2f75504232e41b4c2fdab1318f259cd66 (diff) |
vcl: Don’t use temporary files for CreateFontSubset()
The callers pass a path to a temporary file for the function to write
to, then they immediately read from it. This change cuts the unnecessary
use of temporary files and passes the subset font data around instead.
The CFF subsetting code really wants files and needs more invasive
change, so it still uses a temporary files but this is hidden from its
caller.
Change-Id: I2a2117e967b76fb903ff0d32c435925049bc6e56
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140122
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
Reviewed-by: خالد حسني <khaled@aliftype.com>
Diffstat (limited to 'vcl/source/font/PhysicalFontFace.cxx')
-rw-r--r-- | vcl/source/font/PhysicalFontFace.cxx | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/vcl/source/font/PhysicalFontFace.cxx b/vcl/source/font/PhysicalFontFace.cxx index b8b0bf0316cd..66cd3aae584b 100644 --- a/vcl/source/font/PhysicalFontFace.cxx +++ b/vcl/source/font/PhysicalFontFace.cxx @@ -284,21 +284,14 @@ bool PhysicalFontFace::GetFontCapabilities(vcl::FontCapabilities& rFontCapabilit return rFontCapabilities.oUnicodeRange || rFontCapabilities.oCodePageRange; } -bool PhysicalFontFace::CreateFontSubset(const OUString& rToFile, const sal_GlyphId* pGlyphIds, - const sal_uInt8* pEncoding, const int nGlyphCount, - FontSubsetInfo& rInfo) const +bool PhysicalFontFace::CreateFontSubset(std::vector<sal_uInt8>& rOutBuffer, + const sal_GlyphId* pGlyphIds, const sal_uInt8* pEncoding, + const int nGlyphCount, FontSubsetInfo& rInfo) const { - // Prepare the requested file name for writing the font-subset file - OUString aSysPath; - if (osl_File_E_None != osl_getSystemPathFromFileURL(rToFile.pData, &aSysPath.pData)) - return false; - - const OString aToFile(OUStringToOString(aSysPath, osl_getThreadTextEncoding())); - // Shortcut for CFF-subsetting. auto aData = GetRawFontData(T_CFF); if (!aData.empty()) - return CreateCFFfontSubset(aData.data(), aData.size(), aToFile, pGlyphIds, pEncoding, + return CreateCFFfontSubset(aData.data(), aData.size(), rOutBuffer, pGlyphIds, pEncoding, nGlyphCount, rInfo); // Prepare data for font subsetter. @@ -310,7 +303,7 @@ bool PhysicalFontFace::CreateFontSubset(const OUString& rToFile, const sal_Glyph FillFontSubsetInfo(&aSftFont, rInfo); // write subset into destination file - return CreateTTFfontSubset(aSftFont, aToFile, pGlyphIds, pEncoding, nGlyphCount); + return CreateTTFfontSubset(aSftFont, rOutBuffer, pGlyphIds, pEncoding, nGlyphCount); } } |