oox/qa/unit/data/tdf155412_typeface.pptx |binary oox/qa/unit/export.cxx | 16 ++++++++++++++++ oox/source/export/ThemeExport.cxx | 3 +++ 3 files changed, 19 insertions(+)
New commits: commit cfdf2c54f422bbd74642015443d07fe3e775b2da Author: Regina Henschel <rb.hensc...@t-online.de> AuthorDate: Sat May 20 19:26:26 2023 +0200 Commit: Aron Budea <aron.bu...@collabora.com> CommitDate: Fri Jun 16 22:51:57 2023 +0200 tdf#155412 ooxml export typeface attribute is mandatory The attribute 'typeface' is required for <a:ea>, <a:cs> and <a:latin> elements, see CT_TextFont in ISO/IEC 29500-1:2016. Its value may be the empty string. (cherry picked from commit 58926cc60c7868785c8db126fc199f6731269b86) Conflicts: oox/qa/unit/export.cxx Change-Id: I7c9316fa40ad6d1aabccb4191fee11be553c453b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152024 Tested-by: Jenkins Reviewed-by: Regina Henschel <rb.hensc...@t-online.de> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153183 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Aron Budea <aron.bu...@collabora.com> diff --git a/oox/qa/unit/data/tdf155412_typeface.pptx b/oox/qa/unit/data/tdf155412_typeface.pptx new file mode 100644 index 000000000000..30a486e70fff Binary files /dev/null and b/oox/qa/unit/data/tdf155412_typeface.pptx differ diff --git a/oox/qa/unit/export.cxx b/oox/qa/unit/export.cxx index e1da11eb5436..d20169f92993 100644 --- a/oox/qa/unit/export.cxx +++ b/oox/qa/unit/export.cxx @@ -768,6 +768,22 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf151008VertAnchor) assertXPath(pXmlDoc, "//p:spTree/p:sp[6]/p:txBody/a:bodyPr", "anchor", "b"); assertXPath(pXmlDoc, "//p:spTree/p:sp[6]/p:txBody/a:bodyPr", "anchorCtr", "1"); } + +CPPUNIT_TEST_FIXTURE(Test, testThemeFontTypeface) +{ + // Saving the document had produced a file which PowerPoint wants to repair. The mandatory + // attribute 'typeface' was missing in the <a:ea> elements. + + loadFromURL(u"tdf155412_typeface.pptx"); + + save("Impress Office Open XML"); + xmlDocUniquePtr pXmlDoc = parseExport("ppt/theme/theme1.xml"); + + // Make sure typeface is written. + OString sElement = "/a:theme/a:themeElements/a:fontScheme/"; + assertXPath(pXmlDoc, sElement + "a:majorFont/a:ea", "typeface", ""); + assertXPath(pXmlDoc, sElement + "a:minorFont/a:ea", "typeface", ""); +} } CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/oox/source/export/ThemeExport.cxx b/oox/source/export/ThemeExport.cxx index 511647ee1fc3..f09f9012e246 100644 --- a/oox/source/export/ThemeExport.cxx +++ b/oox/source/export/ThemeExport.cxx @@ -81,7 +81,10 @@ void fillAttrList(rtl::Reference<sax_fastparser::FastAttributeList> const& pAttr model::ThemeFont const& rThemeFont) { if (rThemeFont.maTypeface.isEmpty()) + { + pAttrList->add(XML_typeface, ""); // 'typeface' attribute is mandatory return; + } pAttrList->add(XML_typeface, rThemeFont.maTypeface);