[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - sw/qa writerfilter/source

Mike Kaganski mike.kaganski at collabora.com
Fri Jun 9 18:50:32 UTC 2017


 sw/qa/extras/ooxmlexport/ooxmlexport8.cxx    |    4 ++--
 sw/qa/extras/ooxmlimport/data/tdf108350.docx |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx     |   11 +++++++++++
 writerfilter/source/dmapper/DomainMapper.cxx |   18 ++++++++++++++++++
 4 files changed, 31 insertions(+), 2 deletions(-)

New commits:
commit 8ebbfad8d31d75fe09c5521f70edb889ed5fa9c5
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date:   Mon Jun 5 23:47:13 2017 +0300

    tdf#108350: Use Carlito for DOCX import by default
    
    In OOXML (i.e. Word since 2007), the default document font is Calibri
    11 pt. If a document doesn't contain font information, we should assume
    our metric-compatible equivalent Carlito to provide best layout match.
    
    A unit test included.
    
    An existing unit test (testN766487) was corrected to match the font
    size that Word uses (11; was 12 which doesn't match Word's size).
    
    Reviewed-on: https://gerrit.libreoffice.org/38421
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    Tested-by: Jenkins <ci at libreoffice.org>
    (cherry picked from commit 5471a5585cba925bb0dcb2dc41e03ad563998166)
    
    Change-Id: I3040f235696282dc7a124cd83fb34a6d95a29a17
    Reviewed-on: https://gerrit.libreoffice.org/38589
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    Tested-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx
index 0dce2c56a1a8..cdf4c8e7e826 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport8.cxx
@@ -348,7 +348,7 @@ DECLARE_OOXMLEXPORT_TEST(testN766487, "n766487.docx")
      * oPara = oParas.nextElement
      * oRuns = oPara.createEnumeration
      * oRun = oRuns.nextElement
-     * xray oRun.CharHeight ' 12, was larger
+     * xray oRun.CharHeight ' 11, was larger
      * oPara = oParas.nextElement
      * xray oPara.ParaFirstLineIndent ' -635, was 0
      */
@@ -361,7 +361,7 @@ DECLARE_OOXMLEXPORT_TEST(testN766487, "n766487.docx")
     uno::Reference<beans::XPropertySet> xPropertySet(xRunEnum->nextElement(), uno::UNO_QUERY);
     float fValue = 0;
     xPropertySet->getPropertyValue("CharHeight") >>= fValue;
-    CPPUNIT_ASSERT_EQUAL(12.f, fValue);
+    CPPUNIT_ASSERT_EQUAL(11.f, fValue);
 
     xPropertySet.set(xParaEnum->nextElement(), uno::UNO_QUERY);
     sal_Int32 nValue = 0;
diff --git a/sw/qa/extras/ooxmlimport/data/tdf108350.docx b/sw/qa/extras/ooxmlimport/data/tdf108350.docx
new file mode 100644
index 000000000000..b62b3e127838
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/tdf108350.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 2e900ba0b83c..2111cea8e953 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -1379,6 +1379,17 @@ DECLARE_OOXMLIMPORT_TEST(testTdf100072, "tdf100072.docx")
     CPPUNIT_ASSERT_MESSAGE("Shape line width does not match", abs(nFirstEnd - nSecondEnd) < 10);
 }
 
+DECLARE_OOXMLIMPORT_TEST(testTdf108350, "tdf108350.docx")
+{
+    // For OOXML without explicit font information, font needs to be Carlito 11 pt,
+    // our bundled metrically compatible substitute for Calibri.
+    uno::Reference<text::XTextRange> xPara(getParagraph(1));
+    uno::Reference<beans::XPropertySet> xRun(getRun(xPara, 1), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString("Carlito"), getProperty<OUString>(xRun, "CharFontName"));
+    CPPUNIT_ASSERT_EQUAL(double(11), getProperty<double>(xRun, "CharHeight"));
+}
+
+
 // tests should only be added to ooxmlIMPORT *if* they fail round-tripping in ooxmlEXPORT
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 2fe1705bde61..860633e3fb76 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -134,6 +134,24 @@ DomainMapper::DomainMapper( const uno::Reference< uno::XComponentContext >& xCon
         SAL_WARN("writerfilter", "DomainMapper::DomainMapper: failed to initialize RDF metadata: " << rException.Message);
     }
 
+    if (eDocumentType == SourceDocumentType::OOXML) {
+        // tdf#108350
+        // In OOXML (i.e. Word since 2007), the default document font is Calibri 11 pt.
+        // If a document doesn't contain font information, we should assume our
+        // metric-compatible equivalent Carlito to provide best layout match.
+        try
+        {
+            uno::Reference< beans::XPropertySet > xDefProps(GetTextFactory()->createInstance("com.sun.star.text.Defaults"),
+                uno::UNO_QUERY_THROW);
+            xDefProps->setPropertyValue(getPropertyName(PROP_CHAR_FONT_NAME), css::uno::Any(OUString("Carlito")));
+            xDefProps->setPropertyValue(getPropertyName(PROP_CHAR_HEIGHT), css::uno::Any(double(11)));
+        }
+        catch (const uno::Exception& rException)
+        {
+            SAL_WARN("writerfilter", "DomainMapper::DomainMapper: failed to initialize default font: " << rException.Message);
+        }
+    }
+
     //import document properties
     try
     {


More information about the Libreoffice-commits mailing list