Bug 389802 - Old (Krita3) ODG text is saved into new .kra files (SVG) incorrectly
Summary: Old (Krita3) ODG text is saved into new .kra files (SVG) incorrectly
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Tool/Text (show other bugs)
Version: git master (please specify the git hash!)
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Dmitry Kazakov
URL:
Keywords: release_blocker, triaged
Depends on:
Blocks:
 
Reported: 2018-02-02 16:08 UTC by Dmitry Kazakov
Modified: 2018-03-17 08:56 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
(Screenshot) (194.50 KB, image/png)
2018-02-26 14:48 UTC, mvowada
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Dmitry Kazakov 2018-02-02 16:08:34 UTC
1) Open this file https://bugs.kde.org/attachment.cgi?id=110279
2) Select a shape, Ctrl+C, Ctrl+V
3) The new shape (it is a new-type text shape!) will have wrong font size!


The problem is somewhere is a way how we handle the resolution of the font
height. It is both saved and loaded as 12pt, but looks different.
Comment 1 Raghavendra kamath 2018-02-03 18:40:20 UTC
I tried to reproduce with Krita 3.3 from the arch linux repo and I couldn't reproduce this. When I copy and paste the text shape gets pasted and size is same.

However when I tried this with the Krita version built from the source mere doing Ctrl + c on the text shape would crash Krita every time.

here is the back trace of that crash

Application: Krita (krita), signal: Segmentation fault
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f2d087cddc0 (LWP 10370))]

Thread 7 (Thread 0x7f2cbe0bc700 (LWP 10389)):
#0  0x00007f2cfbc303bd in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f2cfdaae00c in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007f2cfee38b86 in ?? () from /usr/lib/libQt5Widgets.so.5
#3  0x00007f2cfdaacb2d in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007f2cfbc2a08c in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007f2cfce51e7f in clone () from /usr/lib/libc.so.6

Thread 6 (Thread 0x7f2cbe8bd700 (LWP 10388)):
#0  0x00007f2cf88e8b79 in g_mutex_lock () from /usr/lib/libglib-2.0.so.0
#1  0x00007f2cf88a1a06 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#2  0x00007f2cf88a1f96 in ?? () from /usr/lib/libglib-2.0.so.0
#3  0x00007f2cf88a210e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#4  0x00007f2cfdcf5b94 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007f2cfdc97d0b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#6  0x00007f2cfdaa778e in QThread::exec() () from /usr/lib/libQt5Core.so.5
#7  0x00007f2ceaab1bcb in ?? () from /usr/lib/libQt5Quick.so.5
#8  0x00007f2cfdaacb2d in ?? () from /usr/lib/libQt5Core.so.5
#9  0x00007f2cfbc2a08c in start_thread () from /usr/lib/libpthread.so.0
#10 0x00007f2cfce51e7f in clone () from /usr/lib/libc.so.6

Thread 5 (Thread 0x7f2ccf7c7700 (LWP 10387)):
#0  0x00007f2cfce4797b in poll () from /usr/lib/libc.so.6
#1  0x00007f2cf88a1ff3 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f2cf88a210e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f2cfdcf5b94 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#4  0x00007f2cfdc97d0b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007f2cfdaa778e in QThread::exec() () from /usr/lib/libQt5Core.so.5
#6  0x00007f2cea663a19 in ?? () from /usr/lib/libQt5Qml.so.5
#7  0x00007f2cfdaacb2d in ?? () from /usr/lib/libQt5Core.so.5
#8  0x00007f2cfbc2a08c in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007f2cfce51e7f in clone () from /usr/lib/libc.so.6

Thread 4 (Thread 0x7f2ccefc6700 (LWP 10385)):
#0  0x00007f2cfbc303bd in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f2cfdaae00c in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007f2cfdaa62c9 in QSemaphore::tryAcquire(int, int) () from /usr/lib/libQt5Core.so.5
#3  0x00007f2d06b711c3 in KisTileDataSwapper::waitForWork (this=<optimized out>) at /run/media/raghu/Data/krita-build/src/krita/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:86
#4  0x00007f2d06b713ea in KisTileDataSwapper::run (this=0x7f2d07063e20 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder+64>) at /run/media/raghu/Data/krita-build/src/krita/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#5  0x00007f2cfdaacb2d in ?? () from /usr/lib/libQt5Core.so.5
#6  0x00007f2cfbc2a08c in start_thread () from /usr/lib/libpthread.so.0
#7  0x00007f2cfce51e7f in clone () from /usr/lib/libc.so.6

Thread 3 (Thread 0x7f2ce4c28700 (LWP 10374)):
#0  0x00007f2cf88e8b79 in g_mutex_lock () from /usr/lib/libglib-2.0.so.0
#1  0x00007f2cf88a1fd8 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f2cf88a210e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f2cfdcf5b94 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#4  0x00007f2cfdc97d0b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007f2cfdaa778e in QThread::exec() () from /usr/lib/libQt5Core.so.5
#6  0x00007f2d014dc416 in ?? () from /usr/lib/libQt5DBus.so.5
#7  0x00007f2cfdaacb2d in ?? () from /usr/lib/libQt5Core.so.5
#8  0x00007f2cfbc2a08c in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007f2cfce51e7f in clone () from /usr/lib/libc.so.6

Thread 2 (Thread 0x7f2cf1a9b700 (LWP 10371)):
#0  0x00007f2cfce4797b in poll () from /usr/lib/libc.so.6
#1  0x00007f2d0109a8e0 in ?? () from /usr/lib/libxcb.so.1
#2  0x00007f2d0109c679 in xcb_wait_for_event () from /usr/lib/libxcb.so.1
#3  0x00007f2cf3bd47aa in ?? () from /usr/lib/libQt5XcbQpa.so.5
#4  0x00007f2cfdaacb2d in ?? () from /usr/lib/libQt5Core.so.5
#5  0x00007f2cfbc2a08c in start_thread () from /usr/lib/libpthread.so.0
#6  0x00007f2cfce51e7f in clone () from /usr/lib/libc.so.6

Thread 1 (Thread 0x7f2d087cddc0 (LWP 10370)):
[KCrash Handler]
#5  0x00007f2d05d9e8d9 in SvgWriter::saveGeneric (this=this@entry=0x7ffdbd1f29b0, shape=shape@entry=0x0, context=...) at /run/media/raghu/Data/krita-build/src/krita/libs/flake/svg/SvgWriter.cpp:241
#6  0x00007f2d05d9f07e in SvgWriter::saveShape (this=this@entry=0x7ffdbd1f29b0, shape=shape@entry=0x0, context=...) at /run/media/raghu/Data/krita-build/src/krita/libs/flake/svg/SvgWriter.cpp:222
#7  0x00007f2d05d9f816 in SvgWriter::saveShapes (this=this@entry=0x7ffdbd1f29b0, shapes=..., savingContext=...) at /run/media/raghu/Data/krita-build/src/krita/libs/flake/svg/SvgWriter.cpp:164
#8  0x00007f2d05d9fab2 in SvgWriter::save (this=this@entry=0x7ffdbd1f29b0, outputDevice=..., pageSize=...) at /run/media/raghu/Data/krita-build/src/krita/libs/flake/svg/SvgWriter.cpp:122
#9  0x00007f2d05d35160 in KoDrag::setSvg (this=this@entry=0x7ffdbd1f2a48, originalShapes=...) at /run/media/raghu/Data/krita-build/src/krita/libs/flake/KoDrag.cpp:82
#10 0x00007f2cdbdaf666 in DefaultTool::copy (this=<optimized out>) at /run/media/raghu/Data/krita-build/src/krita/plugins/tools/defaulttool/defaulttool/DefaultTool.cpp:885
#11 0x00007f2d0805a569 in KisCutCopyActionFactory::run (this=this@entry=0x7ffdbd1f2b80, willCut=willCut@entry=false, makeSharpClip=makeSharpClip@entry=false, view=0x55c4dfeeaf50) at /run/media/raghu/Data/krita-build/src/krita/libs/ui/actions/kis_selection_action_factories.cpp:272
#12 0x00007f2d07f01589 in KisSelectionManager::copy (this=0x55c4dfe44fe0) at /run/media/raghu/Data/krita-build/src/krita/libs/ui/kis_selection_manager.cc:351
#13 0x00007f2cfdcc9ee6 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#14 0x00007f2cfec12383 in QAction::triggered(bool) () from /usr/lib/libQt5Widgets.so.5
#15 0x00007f2cfec14c06 in QAction::activate(QAction::ActionEvent) () from /usr/lib/libQt5Widgets.so.5
#16 0x00007f2cfec155b6 in QAction::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#17 0x00007f2cfec18e3c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#18 0x00007f2cfec20816 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#19 0x00007f2d080abca7 in KisApplication::notify (this=<optimized out>, receiver=0x55c4dfe892d0, event=0x7ffdbd1f2ff0) at /run/media/raghu/Data/krita-build/src/krita/libs/ui/KisApplication.cpp:600
#20 0x00007f2cfdc996c0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#21 0x00007f2cfe239db9 in QShortcutMap::dispatchEvent(QKeyEvent*) () from /usr/lib/libQt5Gui.so.5
#22 0x00007f2cfe239e8e in QShortcutMap::tryShortcut(QKeyEvent*) () from /usr/lib/libQt5Gui.so.5
#23 0x00007f2cfe1e777d in QWindowSystemInterface::handleShortcutEvent(QWindow*, unsigned long, int, QFlags<Qt::KeyboardModifier>, unsigned int, unsigned int, unsigned int, QString const&, bool, unsigned short) () from /usr/lib/libQt5Gui.so.5
#24 0x00007f2cfe206f18 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () from /usr/lib/libQt5Gui.so.5
#25 0x00007f2cfe20c166 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
#26 0x00007f2cfe1e3bbc in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
#27 0x00007f2cf3c5c2fd in ?? () from /usr/lib/libQt5XcbQpa.so.5
#28 0x00007f2cfdc97d0b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#29 0x00007f2cfdca0ff8 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#30 0x000055c4d27d3151 in main (argc=<optimized out>, argv=<optimized out>) at /run/media/raghu/Data/krita-build/src/krita/krita/main.cc:312
Comment 2 Dmitry Kazakov 2018-02-26 11:45:55 UTC
Hi, Raghavendra!

The crash should not happen anymore (I've fixed it), but the rendering problem still persists.
Comment 3 mvowada 2018-02-26 14:48:47 UTC
Created attachment 111012 [details]
(Screenshot)

(In reply to Dmitry Kazakov from comment #2)
> the rendering
> problem still persists.

I can reproduce the rendering problem using "krita-4.0.0-beta1-67fba1f-x86_64.appimage" on Ubuntu 14.04 Unity.

The font size is larger then the original and there're some bundled letters.
Comment 4 Dmitry Kazakov 2018-03-09 14:53:16 UTC
Git commit f54a2d32fbc5bc065f67c4de2e2b4ab429bf4524 by Dmitry Kazakov.
Committed on 09/03/2018 at 14:44.
Pushed by dkazakov into branch 'master'.

Fix saving old ODF-based text objects in new files

M  +13   -0    libs/flake/svg/SvgWriter.cpp

https://commits.kde.org/krita/f54a2d32fbc5bc065f67c4de2e2b4ab429bf4524
Comment 5 Halla Rempt 2018-03-17 08:56:35 UTC
Git commit 9346ff09902e66805c95e408e59f93143be3eebb by Boudewijn Rempt, on behalf of Dmitry Kazakov.
Committed on 17/03/2018 at 08:54.
Pushed by rempt into branch 'krita/4.0'.

Fix saving old ODF-based text objects in new files
(cherry picked from commit f54a2d32fbc5bc065f67c4de2e2b4ab429bf4524)

M  +13   -0    libs/flake/svg/SvgWriter.cpp

https://commits.kde.org/krita/9346ff09902e66805c95e408e59f93143be3eebb