editeng/source/editeng/impedit3.cxx         |    7 +++++++
 svx/source/svdraw/svdotextdecomposition.cxx |    8 ++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

New commits:
commit ba09d436dfd1f0b07b95aad3d375e7cd7318440b
Author:     Justin Luth <justin_l...@sil.org>
AuthorDate: Fri Feb 21 14:21:08 2020 +0300
Commit:     Justin Luth <justin_l...@sil.org>
CommitDate: Wed Mar 11 20:28:09 2020 +0100

    tdf#89849 editeng: adjust escapement before resetting Propr
    
    THIS IS A LAYOUT REGRESSION FIX FOR SUBSCRIPTS/SUPERSCRIPTS.
    
    The position of subscripts and superscripts is a percentage
    based on the 100% fontsize. When LO 4.1 tricked the font
    into thinking it was 100%, it failed to adjust the escapement
    to be relative to the new fake size. In the default case,
    this meant that the superscript was only raised about half
    as much as it should have.
    
    THIS CHANGE WILL AFFECT EXISTING DOCUMENTS WHERE THE
    TEXTBOX IS SET TO "AUTOFIT THE TEXT". This will primarily
    be Impress documents, since many of the templates enable
    autofit text.
    
    As a result of this bug, users creating new documents since
    4.1 using autofit-text will have specified highly exaggerated
    subscript/superscript positioning in order to look nice.
    This fix will expose the exaggerated percentages and make the
    document look poor. I don't know how that can be avoided.
    
    Nor do I know how to create a unit test for a layout bug.
    I guess QA's PDF compare tests will suffice for this. A
    clearly exaggerated unit test is attached to the bug report.
    
    The new ability to have a larger-than-100% escapement in
    LO 6.3 comes in handy here, so that small superscripts can
    gain a fake escapment big enough to put them in the proper
    position.
    
    Change-Id: I0f8dcff8741eb05d8657235930a4eb684629b9d1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89214
    Tested-by: Jenkins
    Reviewed-by: Justin Luth <justin_l...@sil.org>
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>

diff --git a/editeng/source/editeng/impedit3.cxx 
b/editeng/source/editeng/impedit3.cxx
index 9e82076b1c99..6ec2a6152ee6 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -30,6 +30,7 @@
 #include "impedit.hxx"
 #include <editeng/editeng.hxx>
 #include <editeng/editview.hxx>
+#include <editeng/escapementitem.hxx>
 #include <editeng/txtrange.hxx>
 #include <editeng/colritem.hxx>
 #include <editeng/udlnitem.hxx>
@@ -2757,6 +2758,12 @@ void ImpEditEngine::SeekCursor( ContentNode* pNode, 
sal_Int32 nPos, SvxFont& rFo
         rFont.SetPhysFont( pDev );
         FontMetric aMetric( pDev->GetFontMetric() );
 
+        // before forcing nPropr to 100%, calculate a new escapement relative 
to this fake size.
+        sal_uInt8 nPropr = rFont.GetPropr();
+        sal_Int16 nEsc = rFont.GetEscapement();
+        if ( nPropr && nEsc && nPropr != 100 && abs(nEsc) != 
DFLT_ESC_AUTO_SUPER )
+            rFont.SetEscapement( 100.0/nPropr * nEsc );
+
         // Set the font as we want it to look like & reset the Propr attribute
         // so that it is not counted twice.
         Size aRealSz( aMetric.GetFontSize() );
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx 
b/svx/source/svdraw/svdotextdecomposition.cxx
index 9f56c2730eb3..36734264f185 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -197,13 +197,13 @@ namespace
                 nEsc = -20;
             }
 
-            if(nEsc > 100)
+            if(nEsc > MAX_ESC_POS)
             {
-                nEsc = 100;
+                nEsc = MAX_ESC_POS;
             }
-            else if(nEsc < -100)
+            else if(nEsc < -MAX_ESC_POS)
             {
-                nEsc = -100;
+                nEsc = -MAX_ESC_POS;
             }
 
             const double fEscapement(nEsc / -100.0);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to