summaryrefslogtreecommitdiff
path: root/vcl/source/font/PhysicalFontFace.cxx
diff options
context:
space:
mode:
authorKhaled Hosny <khaled@aliftype.com>2022-09-11 18:28:54 +0200
committerخالد حسني <khaled@aliftype.com>2022-09-19 12:23:47 +0200
commit92d67d4d32dee25c6b40ade5924f9d1ab488a16c (patch)
tree3b1b1226074cb711919aed827c7d0b9e16eb1d93 /vcl/source/font/PhysicalFontFace.cxx
parent54e84cf2f75504232e41b4c2fdab1318f259cd66 (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.cxx17
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);
}
}