[Libreoffice-commits] core.git: sw/qa writerfilter/source

Szabolcs Toth (via logerrit) logerrit at kemper.freedesktop.org
Fri Jan 10 13:25:49 UTC 2020


 sw/qa/extras/ooxmlexport/data/tdf120344_FontTypes.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport3.cxx              |   17 +++++++++++++++++
 writerfilter/source/dmapper/NumberingManager.cxx       |   15 ++++++++-------
 3 files changed, 25 insertions(+), 7 deletions(-)

New commits:
commit f8c12eca80b1faa65f130dfc64c303dcf88a3ac9
Author:     Szabolcs Toth <szabolcs450 at gmail.com>
AuthorDate: Mon Jan 6 15:43:03 2020 +0100
Commit:     László Németh <nemeth at numbertext.org>
CommitDate: Fri Jan 10 14:25:15 2020 +0100

    tdf#120344 DOCX: fix font style of numbering
    
    (numbers and letters) when list items
    use different font type by direct formatting,
    solving also the mixed and changing numbering
    style during editing.
    
    Change-Id: I7ebf125bb1b67cbb33078a4e218798e7ffc06260
    Co-Author: Balázs Nádasdy (NISZ)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86277
    Tested-by: Jenkins
    Reviewed-by: László Németh <nemeth at numbertext.org>

diff --git a/sw/qa/extras/ooxmlexport/data/tdf120344_FontTypes.docx b/sw/qa/extras/ooxmlexport/data/tdf120344_FontTypes.docx
new file mode 100644
index 000000000000..74bcd59e24c6
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf120344_FontTypes.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
index 48257077f0c3..478ee10310b7 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
@@ -1070,6 +1070,23 @@ DECLARE_OOXMLEXPORT_TEST(testBottomBorders, "tdf129452_BottomBorders.docx")
     assertXPath(pXmlDocument, "/w:document/w:body/w:tbl/w:tr[4]/w:tc[2]/w:tcPr/w:tcBorders/w:bottom [@w:val = 'nil']", 0);
 }
 
+DECLARE_OOXMLEXPORT_TEST(testFontTypes, "tdf120344_FontTypes.docx")
+{
+    // tdf#120344: Font type of numbering symbols can be different than the font type of the text.
+
+    // Check the font type of the text, should be Consolas.
+    xmlDocPtr pXmlDocument = parseExport("word/document.xml");
+    if (!pXmlDocument)
+        return;
+    assertXPath(pXmlDocument, "/w:document/w:body/w:p[1]/w:r/w:rPr/w:rFonts [@w:ascii='Consolas']", 1);
+
+    // Now the font type of the numbering symbols, should be Arial Black.
+    xmlDocPtr qXmlDocument = parseExport("word/numbering.xml");
+    if (!qXmlDocument)
+        return;
+    assertXPath(qXmlDocument, "/w:numbering/w:abstractNum[1]/w:lvl[1]/w:rPr/w:rFonts [@w:ascii='Arial Black']", 1);
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx
index f55282f3df4f..33290f276be6 100644
--- a/writerfilter/source/dmapper/NumberingManager.cxx
+++ b/writerfilter/source/dmapper/NumberingManager.cxx
@@ -203,11 +203,15 @@ uno::Sequence<beans::PropertyValue> ListLevel::GetProperties(bool bDefaults)
     return aLevelProps;
 }
 
-static bool IgnoreForCharStyle(const OUString& aStr)
+static bool IgnoreForCharStyle(const OUString& aStr, const bool bIsSymbol)
 {
     //Names found in PropertyIds.cxx, Lines 56-396
     return (aStr=="Adjust" || aStr=="IndentAt" || aStr=="FirstLineIndent"
-            || aStr=="FirstLineOffset" || aStr=="LeftMargin" || aStr=="CharFontName"
+            || aStr=="FirstLineOffset" || aStr=="LeftMargin"
+            || aStr=="CharInteropGrabBag" || aStr=="ParaInteropGrabBag" ||
+            // We need font names when they are different for the bullet and for the text.
+            // But leave symbols alone, we only want to keep the font style for letters and numbers.
+            (bIsSymbol && aStr=="CharFontName")
         );
 }
 uno::Sequence< beans::PropertyValue > ListLevel::GetCharStyleProperties( )
@@ -217,13 +221,10 @@ uno::Sequence< beans::PropertyValue > ListLevel::GetCharStyleProperties( )
     uno::Sequence< beans::PropertyValue > vPropVals = PropertyMap::GetPropertyValues();
     beans::PropertyValue* aValIter = vPropVals.begin();
     beans::PropertyValue* aEndIter = vPropVals.end();
+    const bool bIsSymbol(m_sBulletChar.getLength() <= 1);
     for( ; aValIter != aEndIter; ++aValIter )
-    {
-        if (IgnoreForCharStyle(aValIter->Name))
-            continue;
-        else if ( aValIter->Name != "CharInteropGrabBag" && aValIter->Name != "ParaInteropGrabBag" )
+        if (! IgnoreForCharStyle(aValIter->Name, bIsSymbol))
             rProperties.emplace_back(aValIter->Name, 0, aValIter->Value, beans::PropertyState_DIRECT_VALUE);
-    }
 
     return comphelper::containerToSequence(rProperties);
 }


More information about the Libreoffice-commits mailing list