Author: jghali
Date: Tue Oct 27 11:02:44 2020
New Revision: 24117

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=24117
Log:
#16284: Issue with Convert to Outlines for CTL Text

Modified:
    trunk/Scribus/scribus/scribusview.cpp

Modified: trunk/Scribus/scribus/scribusview.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24117&path=/trunk/Scribus/scribus/scribusview.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusview.cpp       (original)
+++ trunk/Scribus/scribus/scribusview.cpp       Tue Oct 27 11:02:44 2020
@@ -2970,8 +2970,15 @@
 
                void drawGlyph(const GlyphCluster& gc) override
                {
+                       double current_x = 0.0;
                        for (const GlyphLayout& gl : gc.glyphs())
                        {
+                               if (gl.glyph >= ScFace::CONTROL_GLYPHS)
+                               {
+                                       current_x += gl.xadvance * gl.scaleH;
+                                       continue;
+                               }
+
                                FPointArray outline = 
font().glyphOutline(gl.glyph);
                                if (outline.size() < 4)
                                        return;
@@ -2988,7 +2995,7 @@
                                        transform.translate(0, 
m_item->height());
                                        transform.scale(1, -1);
                                }
-                               transform.translate(x(), y());
+                               transform.translate(x() + gl.xoffset + 
current_x , y() + gl.yoffset);
                                transform.translate(0, -(fontSize() * 
gl.scaleV));
                                transform.scale(gl.scaleH * fontSize() / 10.0, 
gl.scaleV * fontSize() / 10.0);
                                outline.map(transform);
@@ -3014,13 +3021,22 @@
                                m_view->m_doc->setRedrawBounding(item);
                                m_view->undoManager->setUndoEnabled(true);
                                m_group.append(m_view->m_doc->Items->takeAt(z));
+
+                               current_x += gl.xadvance * gl.scaleH;
                        }
                }
 
                void drawGlyphOutline(const GlyphCluster& gc, bool fill) 
override
                {
+                       double current_x = 0.0;
                        for (const GlyphLayout& gl : gc.glyphs())
                        {
+                               if (gl.glyph >= ScFace::CONTROL_GLYPHS)
+                               {
+                                       current_x += gl.xadvance * gl.scaleH;
+                                       continue;
+                               }
+
                                FPointArray outline = 
font().glyphOutline(gl.glyph);
                                if (outline.size() < 4)
                                        return;
@@ -3037,7 +3053,7 @@
                                        transform.translate(0, 
m_item->height());
                                        transform.scale(1, -1);
                                }
-                               transform.translate(x(), y());
+                               transform.translate(x() + gl.xoffset + 
current_x , y() + gl.yoffset);
                                transform.translate(0, -(fontSize() * 
gl.scaleV));
                                transform.scale(gl.scaleH * fontSize() / 10.0, 
gl.scaleV * fontSize() / 10.0);
                                outline.map(transform);
@@ -3066,6 +3082,8 @@
                                m_view->m_doc->setRedrawBounding(item);
                                m_view->undoManager->setUndoEnabled(true);
                                m_group.append(m_view->m_doc->Items->takeAt(z));
+
+                               current_x += gl.xadvance * gl.scaleH;
                        }
                }
 


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to