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);
 

Reply via email to