[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - 21 commits - cui/uiconfig dbaccess/source editeng/source fpicker/source icon-themes/breeze icon-themes/breeze_dark icon-themes/breeze_dark_svg icon-themes/breeze_svg icon-themes/colibre icon-themes/colibre_svg icon-themes/elementary icon-themes/elementary_svg icon-themes/karasa_jaga icon-themes/karasa_jaga_svg icon-themes/sifr icon-themes/sifr_dark icon-themes/sifr_dark_svg icon-themes/sifr_svg include/editeng include/sfx2 include/svx lo.xcent oox/source sal/osl sc/source sd/qa sfx2/Library_sfx.mk sfx2/source solenv/bin solenv/flatpak-manifest.in sw/inc sw/qa sw/source writerfilter/source

Rizal Muttaqin (via logerrit) logerrit at kemper.freedesktop.org
Wed May 6 20:28:07 UTC 2020


 cui/uiconfig/ui/smarttagoptionspage.ui                           |    4 
 dbaccess/source/core/dataaccess/ModelImpl.cxx                    |  156 +++++++++-
 dbaccess/source/core/dataaccess/databasedocument.cxx             |    7 
 dbaccess/source/core/inc/ModelImpl.hxx                           |    4 
 dev/null                                                         |binary
 editeng/source/items/numitem.cxx                                 |    8 
 fpicker/source/office/fileview.cxx                               |    7 
 fpicker/source/office/iodlg.cxx                                  |    2 
 icon-themes/breeze/cmd/32/verticaltext.png                       |binary
 icon-themes/breeze/cmd/32/verticaltextfittosizetool.png          |binary
 icon-themes/breeze/cmd/lc_verticaltext.png                       |binary
 icon-themes/breeze/cmd/lc_verticaltextfittosizetool.png          |binary
 icon-themes/breeze/cmd/sc_verticaltext.png                       |binary
 icon-themes/breeze/cmd/sc_verticaltextfittosizetool.png          |binary
 icon-themes/breeze_dark/cmd/32/verticaltext.png                  |binary
 icon-themes/breeze_dark/cmd/32/verticaltextfittosizetool.png     |binary
 icon-themes/breeze_dark/cmd/lc_verticaltext.png                  |binary
 icon-themes/breeze_dark/cmd/lc_verticaltextfittosizetool.png     |binary
 icon-themes/breeze_dark/cmd/sc_verticaltext.png                  |binary
 icon-themes/breeze_dark/cmd/sc_verticaltextfittosizetool.png     |binary
 icon-themes/breeze_dark_svg/cmd/32/ko/verticaltext.svg           |    1 
 icon-themes/breeze_dark_svg/cmd/32/verticaltext.svg              |    2 
 icon-themes/breeze_dark_svg/cmd/32/verticaltextfittosizetool.svg |    2 
 icon-themes/breeze_dark_svg/cmd/ko/lc_verticaltext.svg           |    1 
 icon-themes/breeze_dark_svg/cmd/ko/sc_verticaltext.svg           |    1 
 icon-themes/breeze_dark_svg/cmd/lc_verticaltext.svg              |    2 
 icon-themes/breeze_dark_svg/cmd/lc_verticaltextfittosizetool.svg |    2 
 icon-themes/breeze_dark_svg/cmd/sc_verticaltext.svg              |    2 
 icon-themes/breeze_dark_svg/cmd/sc_verticaltextfittosizetool.svg |    3 
 icon-themes/breeze_svg/cmd/32/ko/verticaltext.svg                |    1 
 icon-themes/breeze_svg/cmd/32/verticaltext.svg                   |    2 
 icon-themes/breeze_svg/cmd/32/verticaltextfittosizetool.svg      |    2 
 icon-themes/breeze_svg/cmd/ko/lc_verticaltext.svg                |    1 
 icon-themes/breeze_svg/cmd/ko/sc_verticaltext.svg                |    1 
 icon-themes/breeze_svg/cmd/lc_verticaltext.svg                   |    2 
 icon-themes/breeze_svg/cmd/lc_verticaltextfittosizetool.svg      |    2 
 icon-themes/breeze_svg/cmd/sc_verticaltext.svg                   |    2 
 icon-themes/breeze_svg/cmd/sc_verticaltextfittosizetool.svg      |    3 
 icon-themes/colibre/cmd/32/graphicfiltersmooth.png               |binary
 icon-themes/colibre/cmd/32/ko/verticaltext.png                   |binary
 icon-themes/colibre/cmd/32/verticaltext.png                      |binary
 icon-themes/colibre/cmd/32/verticaltextfittosizetool.png         |binary
 icon-themes/colibre/cmd/ko/lc_verticaltext.png                   |binary
 icon-themes/colibre/cmd/ko/sc_verticaltext.png                   |binary
 icon-themes/colibre/cmd/lc_graphicfiltersmooth.png               |binary
 icon-themes/colibre/cmd/lc_verticaltext.png                      |binary
 icon-themes/colibre/cmd/lc_verticaltextfittosizetool.png         |binary
 icon-themes/colibre/cmd/sc_graphicfiltersmooth.png               |binary
 icon-themes/colibre/cmd/sc_verticaltext.png                      |binary
 icon-themes/colibre/cmd/sc_verticaltextfittosizetool.png         |binary
 icon-themes/colibre_svg/cmd/32/graphicfiltersmooth.svg           |    2 
 icon-themes/colibre_svg/cmd/32/ko/verticaltext.png               |binary
 icon-themes/colibre_svg/cmd/32/ko/verticaltextfittosizetool.svg  |    1 
 icon-themes/colibre_svg/cmd/32/verticaltext.png                  |binary
 icon-themes/colibre_svg/cmd/32/verticaltextfittosizetool.png     |binary
 icon-themes/colibre_svg/cmd/ko/lc_verticaltext.png               |binary
 icon-themes/colibre_svg/cmd/ko/lc_verticaltextfittosizetool.svg  |    1 
 icon-themes/colibre_svg/cmd/ko/sc_verticaltext.png               |binary
 icon-themes/colibre_svg/cmd/ko/sc_verticaltextfittosizetool.svg  |    1 
 icon-themes/colibre_svg/cmd/lc_graphicfiltersmooth.svg           |    2 
 icon-themes/colibre_svg/cmd/lc_verticaltext.png                  |binary
 icon-themes/colibre_svg/cmd/lc_verticaltextfittosizetool.png     |binary
 icon-themes/colibre_svg/cmd/sc_graphicfiltersmooth.svg           |    2 
 icon-themes/colibre_svg/cmd/sc_verticaltext.png                  |binary
 icon-themes/colibre_svg/cmd/sc_verticaltextfittosizetool.png     |binary
 icon-themes/elementary_svg/cmd/32/ko/verticaltext.svg            |    1 
 icon-themes/elementary_svg/cmd/ko/lc_verticaltext.svg            |    1 
 icon-themes/elementary_svg/cmd/ko/sc_verticaltext.svg            |    1 
 icon-themes/karasa_jaga_svg/cmd/32/ko/verticaltext.svg           |    1 
 icon-themes/karasa_jaga_svg/cmd/ko/lc_verticaltext.svg           |    1 
 icon-themes/karasa_jaga_svg/cmd/ko/sc_verticaltext.svg           |    7 
 icon-themes/sifr_dark_svg/cmd/32/ko/verticaltext.svg             |    1 
 icon-themes/sifr_dark_svg/cmd/ko/lc_verticaltext.svg             |    1 
 icon-themes/sifr_dark_svg/cmd/ko/sc_verticaltext.svg             |    1 
 icon-themes/sifr_svg/cmd/32/ko/verticaltext.svg                  |    1 
 icon-themes/sifr_svg/cmd/ko/lc_verticaltext.svg                  |    1 
 icon-themes/sifr_svg/cmd/ko/sc_verticaltext.svg                  |    1 
 include/editeng/numitem.hxx                                      |    3 
 include/sfx2/objsh.hxx                                           |    2 
 include/sfx2/signaturestate.hxx                                  |   11 
 include/svx/svdhdl.hxx                                           |    2 
 lo.xcent                                                         |    2 
 oox/source/ppt/pptshape.cxx                                      |    4 
 sal/osl/unx/process_impl.cxx                                     |   12 
 sc/source/filter/excel/xestyle.cxx                               |    2 
 sd/qa/unit/data/pptx/tdf132282.pptx                              |binary
 sd/qa/unit/export-tests-ooxml2.cxx                               |   14 
 sfx2/Library_sfx.mk                                              |    1 
 sfx2/source/doc/objmisc.cxx                                      |    2 
 sfx2/source/doc/objserv.cxx                                      |   40 --
 sfx2/source/doc/objstor.cxx                                      |    2 
 sfx2/source/doc/signaturestate.cxx                               |   59 +++
 solenv/bin/modules/installer/worker.pm                           |    3 
 solenv/flatpak-manifest.in                                       |    6 
 sw/inc/unoprnms.hxx                                              |    1 
 sw/qa/extras/ooxmlexport/data/tdf108496.docx                     |binary
 sw/qa/extras/ooxmlexport/data/tdf116883.docx                     |binary
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx                         |   15 
 sw/qa/extras/ooxmlexport/ooxmlexport10.cxx                       |   22 -
 sw/qa/extras/ooxmlexport/ooxmlexport12.cxx                       |   44 ++
 sw/qa/extras/ooxmlexport/ooxmlexport13.cxx                       |   77 ++++
 sw/qa/extras/rtfexport/rtfexport.cxx                             |    8 
 sw/qa/extras/rtfimport/rtfimport.cxx                             |  156 +++-------
 sw/source/core/doc/DocumentContentOperationsManager.cxx          |   36 ++
 sw/source/core/doc/number.cxx                                    |  116 ++++---
 sw/source/core/unocore/unosett.cxx                               |   15 
 sw/source/filter/ww8/attributeoutputbase.hxx                     |    3 
 sw/source/filter/ww8/docxattributeoutput.cxx                     |   53 +++
 sw/source/filter/ww8/docxattributeoutput.hxx                     |    5 
 sw/source/filter/ww8/wrtw8num.cxx                                |   36 --
 sw/source/filter/ww8/wrtww8.hxx                                  |   10 
 sw/source/filter/ww8/ww8atr.cxx                                  |   24 -
 writerfilter/source/dmapper/DomainMapper_Impl.cxx                |   10 
 writerfilter/source/dmapper/NumberingManager.cxx                 |   81 +----
 writerfilter/source/dmapper/NumberingManager.hxx                 |    9 
 writerfilter/source/dmapper/PropertyIds.cxx                      |    1 
 writerfilter/source/dmapper/PropertyIds.hxx                      |    1 
 117 files changed, 756 insertions(+), 379 deletions(-)

New commits:
commit ccd6c27e2e12bede93472767d24191c61aff52a8
Author:     Rizal Muttaqin <riz_17_oke at yahoo.co.id>
AuthorDate: Wed May 6 01:22:44 2020 +0700
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed May 6 22:27:24 2020 +0200

    Colibre: Fix for tdf#132735 wrong Smooth Image Filter icons
    
    Change-Id: Idfbb526c570eb9438cda9f798cd24ea28e491a5a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93513
    Tested-by: Jenkins
    Reviewed-by: Rizal Muttaqin <riz_17_oke at yahoo.co.id>
    (cherry picked from commit d8a52f21ce23a37f7d11375017596eee576f25be)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93385

diff --git a/icon-themes/colibre/cmd/32/graphicfiltersmooth.png b/icon-themes/colibre/cmd/32/graphicfiltersmooth.png
index c61f8b29cf7f..77503f8d2f5e 100644
Binary files a/icon-themes/colibre/cmd/32/graphicfiltersmooth.png and b/icon-themes/colibre/cmd/32/graphicfiltersmooth.png differ
diff --git a/icon-themes/colibre/cmd/lc_graphicfiltersmooth.png b/icon-themes/colibre/cmd/lc_graphicfiltersmooth.png
index e8d440297830..b1d300cff17c 100644
Binary files a/icon-themes/colibre/cmd/lc_graphicfiltersmooth.png and b/icon-themes/colibre/cmd/lc_graphicfiltersmooth.png differ
diff --git a/icon-themes/colibre/cmd/sc_graphicfiltersmooth.png b/icon-themes/colibre/cmd/sc_graphicfiltersmooth.png
index d95fbbd34c35..13ad7e76aa9d 100644
Binary files a/icon-themes/colibre/cmd/sc_graphicfiltersmooth.png and b/icon-themes/colibre/cmd/sc_graphicfiltersmooth.png differ
diff --git a/icon-themes/colibre_svg/cmd/32/graphicfiltersmooth.svg b/icon-themes/colibre_svg/cmd/32/graphicfiltersmooth.svg
index b68a399fb00d..2e99057c28e1 100644
--- a/icon-themes/colibre_svg/cmd/32/graphicfiltersmooth.svg
+++ b/icon-themes/colibre_svg/cmd/32/graphicfiltersmooth.svg
@@ -1 +1 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m16.100847 4c-6.511858 0-12.100847 5.5382681-12.100847 12 0 6.461732 5.588989 12 12.100847 12 1.231991 0 2.515061-.34598 3.989106-.782422.826771-.404562 1.215512-.957021 1.287056-2.033789.05298-.797354-.242786-1.740401-.583398-2.833593-.340611-1.093192-.711495-2.3373-.639689-3.750196.05225-1.027932.75379-1.759862 1.896041-2.035173 1.142251-.27531 2.934713-.07863 4.797303.937623.636907.366047.993273.515541 1.125854-1.167969.03554-1.183637.07119-2.586502-.28914-3.810457-1.491839-4.76436-6.291059-8.524024-11.583133-8.524024z" fill="#fff"/><path d="m16.100847 3c-7.2353979 0-13.1008469 5.8202976-13.1008469 13 0 7.179701 5.865449 13 13.1008469 13 1.537525 0 3.307034-.02374 4.569944-.616992 1.178498-.576672 1.919096-1.688306 2.013744-3.112891.07656-1.15242-.304213-2.226606-.639691-3.30332-.335477-1.076713-.641696-2.153586-.583396-3.300782.02895-.56964.249408-.917666.898124-1.074023.648715-.156356 1.839743-.0065 3.536205.9
 19141.420529.229445.829195.355641 1.240998.335156.411803-.02049.796938-.214327 1.056768-.482422.519661-.536188.674382-1.261043.759952-2.016016.145803-1.355871.046505-2.894974-.299369-4.075198-1.614917-5.3629615-6.623534-9.272653-12.553279-9.272653zm0 1c5.292074 0 10.091294 3.759664 11.583133 8.524024.360324 1.223955.324639 2.62682.289095 3.810457-.0711.627325-.264203 1.11748-.401724 1.259375-.06877.07094-.08948.08199-.176555.08633 0 0-.258935-.04542-.547575-.177733-1.625301-.745066-3.655052-1.212934-4.797303-.937624-1.142251.275312-1.843801 1.007241-1.896041 2.035173-.07181 1.412896.299078 2.657004.63969 3.750196.340611 1.093192.636372 2.036239.583397 2.833593-.07154 1.076768-.301738 1.682077-1.128509 2.086638-1.222031.597449-2.915617.729571-4.147608.729571-6.511858 0-12.100847-5.538268-12.100847-12 0-6.4617319 5.588989-12 12.100847-12z" fill="#808080"/><circle cx="11" cy="10" fill="#e68497" r="2"/><circle cx="18" cy="9" fill="#76a797" r="2"/><circle cx="23" cy="13" fill="#eac282" r
 ="2"/><circle cx="9" cy="17" fill="#4d82b8" r="2"/><path d="m16 21a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0 -2-2zm0 1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1z" fill="#808080"/></svg>
\ No newline at end of file
+<svg height="32" viewBox="0 0 8.4666664 8.4666669" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m6.3435422 5.43042c-.0000021 1.16542-.9447742 2.1102-2.1102089 2.1102-1.1654348 0-2.1102069-.94478-2.110209-2.1102.016781-.41899.093464-1.21395.4949555-1.8329l1.6152535-2.53919 1.5548397 2.5422c.3857546.63072.555372 1.39856.5553692 1.82989z" fill="#fff" stroke="#808080" stroke-width=".264583"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/cmd/lc_graphicfiltersmooth.svg b/icon-themes/colibre_svg/cmd/lc_graphicfiltersmooth.svg
index c20ffb71d500..cda6503cab28 100644
--- a/icon-themes/colibre_svg/cmd/lc_graphicfiltersmooth.svg
+++ b/icon-themes/colibre_svg/cmd/lc_graphicfiltersmooth.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12 3c-4.9705627 0-9 4.0294373-9 9 0 4.970563 4.0294373 9 9 9 .94039 0 1.91977-.03537 3.044922-.371094.631082-.311201.927812-.73617.982422-1.564453.04044-.613349-.185321-1.33877-.445313-2.179687s-.543091-1.797923-.488281-2.884766c.03988-.790717.575375-1.536269 1.447266-1.748047.871891-.211777 1.994283.021 3.416015.802735.486157.281574.758175.39657.859375-.898438.02713-.91049.05434-1.888574-.220703-2.8300781-1.138735-3.6648919-4.556213-6.3261719-8.595703-6.3261719zm0 13c1.104569 0 2 .895431 2 2s-.895431 2-2 2-2-.895431-2-2 .895431-2 2-2z" fill="#fff"/><path d="m12 16a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0 -2-2zm0 1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1z" fill="#808080"/><path d="m12 2c-5.5228475 0-10 4.4771525-10 10 0 5.522847 4.4771525 10 10 10 1.173607 0 2.52429-.01826 3.488281-.474609.899559-.443594 1.464864-1.298697 1.53711-2.394532.05844-.886477-.232209-1.712774-.488282-2.54101
 5s-.489813-1.656605-.445312-2.539063c.0221-.438185.190376-.705897.685547-.826172.49517-.120274 1.404293-.005 2.699218.707032.320994.176496.632933.27357.947266.257812.314333-.01576.60831-.164867.806641-.371094.396662-.412452.514762-.970033.580078-1.550781.111293-1.042978-.059685-2.162225-.228511-3.1347681-1.232681-4.1253554-5.055806-7.1328099-9.582036-7.1328099zm0 1c4.03949 0 7.456968 2.66128 8.595703 6.3261719.275039.9415041.2478 1.9195881.220669 2.8300781-.05427.482558-.201669.8596-.30664.96875-.05249.05457-.0683.06307-.134766.06641-.06646.0033-.20521-.01973-.417969-.136718-1.421732-.781732-2.544124-1.014512-3.416015-.802735-.871891.211778-1.407391.95733-1.447266 1.748047-.05481 1.086843.228289 2.043849.488281 2.884766s.485749 1.566338.445313 2.179687c-.05461.828283-.35134 1.253252-.982422 1.564453-1.125152.335719-2.104498.37109-3.044888.37109-4.9705627 0-9-4.029437-9-9 0-4.9705627 4.0294373-9 9-9z" fill="#808080"/><circle cx="8.5" cy="7.5" fill="#e68497" r="1.5"/><circle cx="13.5"
  cy="6.5" fill="#76a797" r="1.5"/><circle cx="17.5" cy="9.5" fill="#eac282" r="1.5"/><circle cx="6.5" cy="12.5" fill="#4d82b8" r="1.5"/></svg>
\ No newline at end of file
+<svg height="24" viewBox="0 0 6.3499998 6.3500002" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m4.970446 4.15769c-.0000018.99159-.8038498 1.79544-1.795446 1.79544-.9915963 0-1.7954443-.80385-1.7954461-1.79544.014278-.35649.079523-.98779.4211269-1.51442l1.371287-2.1141 1.3259489 2.11666c.3339425.53309.4725317 1.14487.4725293 1.51186z" fill="#fff" stroke="#808080" stroke-width=".264583"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/cmd/sc_graphicfiltersmooth.svg b/icon-themes/colibre_svg/cmd/sc_graphicfiltersmooth.svg
index e481dfa07f56..3c3a48f1ecee 100644
--- a/icon-themes/colibre_svg/cmd/sc_graphicfiltersmooth.svg
+++ b/icon-themes/colibre_svg/cmd/sc_graphicfiltersmooth.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m7 1.017578c-3.938925.2631805-6.99953002 3.5347145-7 7.4824219.00076746 1.4245859.4072475 2.8194901 1.171875 4.0214841l5.828125-4.2753903z" fill="#4d82b8"/><path d="m8 1.025388v7.2207032l5.822266 4.2714848c.765978-1.200249 1.174474-2.5937401 1.177734-4.0175761-.004579-3.9446969-3.064076-7.2116321-7-7.4746119z" fill="#e68497"/><path d="m7.5 9.1210937-5.7324219 4.2031253c1.4227522 1.69359 3.5205309 2.672792 5.7324219 2.675781 2.2139874.000285 4.31498-.977652 5.740234-2.671875z" fill="#76a797"/></svg>
\ No newline at end of file
+<svg height="16" viewBox="0 0 4.2333332 4.2333335" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m3.2979788 2.64583c-.0000012.65242-.5288923 1.18131-1.1813122 1.18131s-1.18131103-.52889-1.18131225-1.18131c.009394-.23455.0543168-.64378.27907525-.99028l.9022371-1.39097.9845253 1.39097c.2391145.33782.1967884.74882.1967868.99028z" fill="#fff" stroke="#808080" stroke-width=".264583"/></svg>
\ No newline at end of file
commit 3c8924f006ad5fad27d8241c5e7ec5cf798b8a74
Author:     Rizal Muttaqin <riz_17_oke at yahoo.co.id>
AuthorDate: Tue May 5 18:34:02 2020 +0700
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed May 6 22:27:17 2020 +0200

    Icons: fix for tdf#128689 wrong Korean vertical text icons
    
    Change-Id: I21b4f1c11f65554b5bc7fc15c71770be49e33882
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93476
    Tested-by: Jenkins
    Reviewed-by: Rizal Muttaqin <riz_17_oke at yahoo.co.id>
    (cherry picked from commit fdaf4761bc106d7443ff95491d759baf4d1804c8)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93383

diff --git a/icon-themes/breeze/cmd/32/ko/verticaltext.png b/icon-themes/breeze/cmd/32/ko/verticaltext.png
deleted file mode 100644
index d0af91df9841..000000000000
Binary files a/icon-themes/breeze/cmd/32/ko/verticaltext.png and /dev/null differ
diff --git a/icon-themes/breeze/cmd/32/verticaltext.png b/icon-themes/breeze/cmd/32/verticaltext.png
index 9981d8c53d8d..89c182c8348a 100644
Binary files a/icon-themes/breeze/cmd/32/verticaltext.png and b/icon-themes/breeze/cmd/32/verticaltext.png differ
diff --git a/icon-themes/breeze/cmd/32/verticaltextfittosizetool.png b/icon-themes/breeze/cmd/32/verticaltextfittosizetool.png
index 7b13426cf596..84a5ea7c8785 100644
Binary files a/icon-themes/breeze/cmd/32/verticaltextfittosizetool.png and b/icon-themes/breeze/cmd/32/verticaltextfittosizetool.png differ
diff --git a/icon-themes/breeze/cmd/ko/lc_verticaltext.png b/icon-themes/breeze/cmd/ko/lc_verticaltext.png
deleted file mode 100644
index f24f41f1d639..000000000000
Binary files a/icon-themes/breeze/cmd/ko/lc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/breeze/cmd/ko/sc_verticaltext.png b/icon-themes/breeze/cmd/ko/sc_verticaltext.png
deleted file mode 100644
index d4887141ef71..000000000000
Binary files a/icon-themes/breeze/cmd/ko/sc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/breeze/cmd/lc_verticaltext.png b/icon-themes/breeze/cmd/lc_verticaltext.png
index 011afdae6d5b..eaebaeb03974 100644
Binary files a/icon-themes/breeze/cmd/lc_verticaltext.png and b/icon-themes/breeze/cmd/lc_verticaltext.png differ
diff --git a/icon-themes/breeze/cmd/lc_verticaltextfittosizetool.png b/icon-themes/breeze/cmd/lc_verticaltextfittosizetool.png
index 6f96d5f30746..f3584682cf74 100644
Binary files a/icon-themes/breeze/cmd/lc_verticaltextfittosizetool.png and b/icon-themes/breeze/cmd/lc_verticaltextfittosizetool.png differ
diff --git a/icon-themes/breeze/cmd/sc_verticaltext.png b/icon-themes/breeze/cmd/sc_verticaltext.png
index 5629c3b6ac48..5f6cfa88a226 100644
Binary files a/icon-themes/breeze/cmd/sc_verticaltext.png and b/icon-themes/breeze/cmd/sc_verticaltext.png differ
diff --git a/icon-themes/breeze/cmd/sc_verticaltextfittosizetool.png b/icon-themes/breeze/cmd/sc_verticaltextfittosizetool.png
index b7853b7d2bbe..763d1e59b433 100644
Binary files a/icon-themes/breeze/cmd/sc_verticaltextfittosizetool.png and b/icon-themes/breeze/cmd/sc_verticaltextfittosizetool.png differ
diff --git a/icon-themes/breeze_dark/cmd/32/ko/verticaltext.png b/icon-themes/breeze_dark/cmd/32/ko/verticaltext.png
deleted file mode 100644
index 5d20165d1e67..000000000000
Binary files a/icon-themes/breeze_dark/cmd/32/ko/verticaltext.png and /dev/null differ
diff --git a/icon-themes/breeze_dark/cmd/32/verticaltext.png b/icon-themes/breeze_dark/cmd/32/verticaltext.png
index 143877c71d73..b61d758bde49 100644
Binary files a/icon-themes/breeze_dark/cmd/32/verticaltext.png and b/icon-themes/breeze_dark/cmd/32/verticaltext.png differ
diff --git a/icon-themes/breeze_dark/cmd/32/verticaltextfittosizetool.png b/icon-themes/breeze_dark/cmd/32/verticaltextfittosizetool.png
index 494f6d6ef10d..8fa19e0cd918 100644
Binary files a/icon-themes/breeze_dark/cmd/32/verticaltextfittosizetool.png and b/icon-themes/breeze_dark/cmd/32/verticaltextfittosizetool.png differ
diff --git a/icon-themes/breeze_dark/cmd/ko/lc_verticaltext.png b/icon-themes/breeze_dark/cmd/ko/lc_verticaltext.png
deleted file mode 100644
index 41306ab908e7..000000000000
Binary files a/icon-themes/breeze_dark/cmd/ko/lc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/breeze_dark/cmd/ko/sc_verticaltext.png b/icon-themes/breeze_dark/cmd/ko/sc_verticaltext.png
deleted file mode 100644
index e8a516b07714..000000000000
Binary files a/icon-themes/breeze_dark/cmd/ko/sc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/breeze_dark/cmd/lc_verticaltext.png b/icon-themes/breeze_dark/cmd/lc_verticaltext.png
index d2070c1f2ebd..41f40cab7dff 100644
Binary files a/icon-themes/breeze_dark/cmd/lc_verticaltext.png and b/icon-themes/breeze_dark/cmd/lc_verticaltext.png differ
diff --git a/icon-themes/breeze_dark/cmd/lc_verticaltextfittosizetool.png b/icon-themes/breeze_dark/cmd/lc_verticaltextfittosizetool.png
index 83e5f0071814..66b96cfe250e 100644
Binary files a/icon-themes/breeze_dark/cmd/lc_verticaltextfittosizetool.png and b/icon-themes/breeze_dark/cmd/lc_verticaltextfittosizetool.png differ
diff --git a/icon-themes/breeze_dark/cmd/sc_verticaltext.png b/icon-themes/breeze_dark/cmd/sc_verticaltext.png
index 78a3ffe2de43..992a073c9368 100644
Binary files a/icon-themes/breeze_dark/cmd/sc_verticaltext.png and b/icon-themes/breeze_dark/cmd/sc_verticaltext.png differ
diff --git a/icon-themes/breeze_dark/cmd/sc_verticaltextfittosizetool.png b/icon-themes/breeze_dark/cmd/sc_verticaltextfittosizetool.png
index 0153c6cae051..cdbb694c9237 100644
Binary files a/icon-themes/breeze_dark/cmd/sc_verticaltextfittosizetool.png and b/icon-themes/breeze_dark/cmd/sc_verticaltextfittosizetool.png differ
diff --git a/icon-themes/breeze_dark_svg/cmd/32/ko/verticaltext.svg b/icon-themes/breeze_dark_svg/cmd/32/ko/verticaltext.svg
deleted file mode 100644
index 33d6d0504936..000000000000
--- a/icon-themes/breeze_dark_svg/cmd/32/ko/verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v2h-2v1h2v18h-2v1h2v2h1v-2h11v-1h-11v-18h18v11h1v-11h2v-1h-2v-2h-1v2h-18v-2z" fill="#eff0f1"/><path d="m23 19v4h-4v1h4v4h1v-4h4v-1h-4v-4z" fill="#3daee9"/><path d="m9.5644531 7.8964844-1.8554687 1.3046875c2.7910156 6.7988281 5.8989896 8.7988281 13.2910156 8.7988281v-9h-1-2v2h1s1 .447715 1 1v3.652344c-6.145527-.550778-9.5-2.152344-10.4355469-7.7558596zm-1.5644531 11.1035156v2h8c.552285 0 1 .447715 1 1v2h1v-5z" fill="#eff0f1"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/cmd/32/verticaltext.svg b/icon-themes/breeze_dark_svg/cmd/32/verticaltext.svg
index 79a8559c3909..611b660de650 100644
--- a/icon-themes/breeze_dark_svg/cmd/32/verticaltext.svg
+++ b/icon-themes/breeze_dark_svg/cmd/32/verticaltext.svg
@@ -1 +1 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m23 19v4h-4v1h4v4h1v-4h4v-1h-4v-4z" fill="#3daee9"/><path d="m16 5v1h3v6h-14v-2h-1v5h1v-2h14v6h-3v1h4v-15h-1z" fill="#eff0f1"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v2h-2v1h2v18h-2v1h2v2h1v-2h11v-1h-11v-18h18v11h1v-11h2v-1h-2v-2h-1v2h-18v-2zm15 5v6h-12v2h12v1h2v-1-2-6z" fill="#eff0f1"/><path d="m23 19v4h-4v1h4v4h1v-4h4v-1h-4v-4z" fill="#3daee9"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/cmd/32/verticaltextfittosizetool.svg b/icon-themes/breeze_dark_svg/cmd/32/verticaltextfittosizetool.svg
index 0138abf680aa..a7f84d8f6518 100644
--- a/icon-themes/breeze_dark_svg/cmd/32/verticaltextfittosizetool.svg
+++ b/icon-themes/breeze_dark_svg/cmd/32/verticaltextfittosizetool.svg
@@ -1 +1 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m25 4-3 6h6zm-21 4v16h2.0996094v-7h14.9003906v-2h-14.9003906v-7zm21 6a2.0000117 1.9999653 0 0 0 -2 2 2.0000117 1.9999653 0 0 0 2 2 2.0000117 1.9999653 0 0 0 2-2 2.0000117 1.9999653 0 0 0 -2-2zm-3 8 3 6 3-6z" fill="#eff0f1"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m7 4 3 6h-6zm21 4v16h-2.099609v-7h-14.900391v-2h14.900391v-7zm-21 6a2.0000117 1.9999653 0 0 1 2 2 2.0000117 1.9999653 0 0 1 -2 2 2.0000117 1.9999653 0 0 1 -2-2 2.0000117 1.9999653 0 0 1 2-2zm3 8-3 6-3-6z" fill="#eff0f1"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/cmd/ko/lc_verticaltext.svg b/icon-themes/breeze_dark_svg/cmd/ko/lc_verticaltext.svg
deleted file mode 100644
index b04b41b91104..000000000000
--- a/icon-themes/breeze_dark_svg/cmd/ko/lc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4 3v1h-1v1h1v14h-1v1h1v1h1v-1h10v-1h-10v-14h14v10h1v-10h1v-1h-1v-1h-1v1h-14v-1z" fill="#eff0f1"/><path d="m18 16v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/><path d="m15 14h-9v2h4c.552285 0 .963586.448917 1 1v1.53125h1v-1.53125c0-.552285.447715-1 1-1h2zm1-8h-1.212891-.787109v1c.459438.0000001.710173.4244443.787109.8808594v3.6738286c-3.780682-.338837-5.736268-1.470838-7.787109-5.554688l-.888672.5605469c2.5 6.5000001 5.341154 6.4394531 9.888672 6.4394531z" fill="#eff0f1"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/cmd/ko/sc_verticaltext.svg b/icon-themes/breeze_dark_svg/cmd/ko/sc_verticaltext.svg
deleted file mode 100644
index a40c056f0a8f..000000000000
--- a/icon-themes/breeze_dark_svg/cmd/ko/sc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1 1v14h7v-1h-6v-12h12v6h1v-7z" fill="#eff0f1"/><path d="m12 10v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/><path d="m10 10-7.0234375.02344v1h3c.5522847 0 1 .447715 1 1v1h1v-1c0-.552285.4477153-1 1-1l1.0234375-.02344zm1.976563-6.9765625h-1-1.0000005v1c.4045485.09934.8133845.1845944 1.0000005 1v2.9160156c-2.8361208-.2541806-5.0474765-1.8993456-6.5859385-4.9628906l-.855468.6015625c2.4414707 4.9448159 5.0300349 5.4453125 8.4414065 5.4453125z" fill="#eff0f1"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/cmd/lc_verticaltext.svg b/icon-themes/breeze_dark_svg/cmd/lc_verticaltext.svg
index a4679771ed10..3bb835922cfb 100644
--- a/icon-themes/breeze_dark_svg/cmd/lc_verticaltext.svg
+++ b/icon-themes/breeze_dark_svg/cmd/lc_verticaltext.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4 3v1h-1v1h1v14h-1v1h1v1h1v-1h10v-1h-10v-14h14v10h1v-10h1v-1h-1v-1h-1v1h-14v-1zm11 4v4h-8v2h8v4h2v-10z" fill="#eff0f1"/><path d="m18 16v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4 3v1h-1v1h1v14h-1v1h1v1h1v-1h10v-1h-10v-14h14v10h1v-10h1v-1h-1v-1h-1v1h-14v-1zm11 4v4h-8v2h8v2h2v-8z" fill="#eff0f1"/><path d="m18 16v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/cmd/lc_verticaltextfittosizetool.svg b/icon-themes/breeze_dark_svg/cmd/lc_verticaltextfittosizetool.svg
index f2766035ca68..3c253485ca3e 100644
--- a/icon-themes/breeze_dark_svg/cmd/lc_verticaltextfittosizetool.svg
+++ b/icon-themes/breeze_dark_svg/cmd/lc_verticaltextfittosizetool.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m18 4-2 4h4zm-14 3v10h2v-4h10v-2h-10v-4zm14 4a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0 -1-1zm-2 5 2 4 2-4z" fill="#eff0f1"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m6 4 2 4h-4zm14 3v10h-2v-4h-10v-2h10v-4zm-14 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1zm2 5-2 4-2-4z" fill="#eff0f1"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/cmd/sc_verticaltext.svg b/icon-themes/breeze_dark_svg/cmd/sc_verticaltext.svg
index 81e2cecbefd9..d15c27cc7d52 100644
--- a/icon-themes/breeze_dark_svg/cmd/sc_verticaltext.svg
+++ b/icon-themes/breeze_dark_svg/cmd/sc_verticaltext.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">/><path d="m10 2v1h2v4h-9v-1h-1v3h1v-1h9v4h-2v1h3v-10-1h-1z" fill="#eff0f1"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1 1v14h7v-1h-6v-12h12v6h1v-7zm11 2v4h-9v1h9 1v-1-4z" fill="#eff0f1"/><path d="m12 10v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/cmd/sc_verticaltextfittosizetool.svg b/icon-themes/breeze_dark_svg/cmd/sc_verticaltextfittosizetool.svg
index 0cdd018902b6..47045f568880 100644
--- a/icon-themes/breeze_dark_svg/cmd/sc_verticaltextfittosizetool.svg
+++ b/icon-themes/breeze_dark_svg/cmd/sc_verticaltextfittosizetool.svg
@@ -1 +1,2 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">/><path d="m12.5 2-1.5 4h3zm-10.5 1.5v3 2 4h1v-4h7v-1h-7v-4zm10.5 4a.5.5 0 0 0 -.5.5.5.5 0 0 0 .5.5.5.5 0 0 0 .5-.5.5.5 0 0 0 -.5-.5zm-1.5 2.5 1.5 4 1.5-4z" fill="#eff0f1"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+/&gt;<path d="m3.5 1 1.5 4h-3zm10.5 1v4 2 5h-1v-5h-7v-1h7v-5zm-10.5 5c.2761424 0 .5.2238576.5.5s-.2238576.5-.5.5-.5-.2238576-.5-.5.2238576-.5.5-.5zm1.5 3-1.5 4-1.5-4z" fill="#eff0f1"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_svg/cmd/32/ko/verticaltext.svg b/icon-themes/breeze_svg/cmd/32/ko/verticaltext.svg
deleted file mode 100644
index 881eb0466967..000000000000
--- a/icon-themes/breeze_svg/cmd/32/ko/verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v2h-2v1h2v18h-2v1h2v2h1v-2h11v-1h-11v-18h18v11h1v-11h2v-1h-2v-2h-1v2h-18v-2z" fill="#232629"/><path d="m23 19v4h-4v1h4v4h1v-4h4v-1h-4v-4z" fill="#3daee9"/><path d="m9.5644531 7.8964844-1.8554687 1.3046875c2.7910156 6.7988281 5.8989896 8.7988281 13.2910156 8.7988281v-9h-1-2v2h1s1 .447715 1 1v3.652344c-6.145527-.550778-9.5-2.152344-10.4355469-7.7558596zm-1.5644531 11.1035156v2h8c.552285 0 1 .447715 1 1v2h1v-5z" fill="#232629"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_svg/cmd/32/verticaltext.svg b/icon-themes/breeze_svg/cmd/32/verticaltext.svg
index 75486e1dac82..2aed5d7c8161 100644
--- a/icon-themes/breeze_svg/cmd/32/verticaltext.svg
+++ b/icon-themes/breeze_svg/cmd/32/verticaltext.svg
@@ -1 +1 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m23 19v4h-4v1h4v4h1v-4h4v-1h-4v-4z" fill="#3daee9"/><path d="m16 5v1h3v6h-14v-2h-1v5h1v-2h14v6h-3v1h4v-15h-1z" fill="#232629"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v2h-2v1h2v18h-2v1h2v2h1v-2h11v-1h-11v-18h18v11h1v-11h2v-1h-2v-2h-1v2h-18v-2zm15 5v6h-12v2h12v1h2v-1-2-6z" fill="#232629"/><path d="m23 19v4h-4v1h4v4h1v-4h4v-1h-4v-4z" fill="#3daee9"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_svg/cmd/32/verticaltextfittosizetool.svg b/icon-themes/breeze_svg/cmd/32/verticaltextfittosizetool.svg
index 86f601ea574c..5abc2d8e53d5 100644
--- a/icon-themes/breeze_svg/cmd/32/verticaltextfittosizetool.svg
+++ b/icon-themes/breeze_svg/cmd/32/verticaltextfittosizetool.svg
@@ -1 +1 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m25 4-3 6h6zm-21 4v16h2.0996094v-7h14.9003906v-2h-14.9003906v-7zm21 6a2.0000117 1.9999653 0 0 0 -2 2 2.0000117 1.9999653 0 0 0 2 2 2.0000117 1.9999653 0 0 0 2-2 2.0000117 1.9999653 0 0 0 -2-2zm-3 8 3 6 3-6z" fill="#232629"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m7 4 3 6h-6zm21 4v16h-2.099609v-7h-14.900391v-2h14.900391v-7zm-21 6a2.0000117 1.9999653 0 0 1 2 2 2.0000117 1.9999653 0 0 1 -2 2 2.0000117 1.9999653 0 0 1 -2-2 2.0000117 1.9999653 0 0 1 2-2zm3 8-3 6-3-6z" fill="#232629"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_svg/cmd/ko/lc_verticaltext.svg b/icon-themes/breeze_svg/cmd/ko/lc_verticaltext.svg
deleted file mode 100644
index c58a16d4c1c2..000000000000
--- a/icon-themes/breeze_svg/cmd/ko/lc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4 3v1h-1v1h1v14h-1v1h1v1h1v-1h10v-1h-10v-14h14v10h1v-10h1v-1h-1v-1h-1v1h-14v-1z" fill="#232629"/><path d="m18 16v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/><path d="m15 14h-9v2h4c.552285 0 .963586.448917 1 1v1.53125h1v-1.53125c0-.552285.447715-1 1-1h2zm1-8h-1.212891-.787109v1c.459438.0000001.710173.4244443.787109.8808594v3.6738286c-3.780682-.338837-5.736268-1.470838-7.787109-5.554688l-.888672.5605469c2.5 6.5000001 5.341154 6.4394531 9.888672 6.4394531z" fill="#232629"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_svg/cmd/ko/sc_verticaltext.svg b/icon-themes/breeze_svg/cmd/ko/sc_verticaltext.svg
deleted file mode 100644
index 6f6d49054147..000000000000
--- a/icon-themes/breeze_svg/cmd/ko/sc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1 1v14h7v-1h-6v-12h12v6h1v-7z" fill="#232629"/><path d="m12 10v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/><path d="m10 10-7.0234375.02344v1h3c.5522847 0 1 .447715 1 1v1h1v-1c0-.552285.4477153-1 1-1l1.0234375-.02344zm1.976563-6.9765625h-1-1.0000005v1c.4045485.09934.8133845.1845944 1.0000005 1v2.9160156c-2.8361208-.2541806-5.0474765-1.8993456-6.5859385-4.9628906l-.855468.6015625c2.4414707 4.9448159 5.0300349 5.4453125 8.4414065 5.4453125z" fill="#232629"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_svg/cmd/lc_verticaltext.svg b/icon-themes/breeze_svg/cmd/lc_verticaltext.svg
index 3a8f772ba12a..76bfee2c5ba0 100644
--- a/icon-themes/breeze_svg/cmd/lc_verticaltext.svg
+++ b/icon-themes/breeze_svg/cmd/lc_verticaltext.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4 3v1h-1v1h1v14h-1v1h1v1h1v-1h10v-1h-10v-14h14v10h1v-10h1v-1h-1v-1h-1v1h-14v-1zm11 4v4h-8v2h8v4h2v-10z" fill="#232629"/><path d="m18 16v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4 3v1h-1v1h1v14h-1v1h1v1h1v-1h10v-1h-10v-14h14v10h1v-10h1v-1h-1v-1h-1v1h-14v-1zm11 4v4h-8v2h8v2h2v-8z" fill="#232629"/><path d="m18 16v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_svg/cmd/lc_verticaltextfittosizetool.svg b/icon-themes/breeze_svg/cmd/lc_verticaltextfittosizetool.svg
index 1b2829022e34..4b080e82c634 100644
--- a/icon-themes/breeze_svg/cmd/lc_verticaltextfittosizetool.svg
+++ b/icon-themes/breeze_svg/cmd/lc_verticaltextfittosizetool.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m18 4-2 4h4zm-14 3v10h2v-4h10v-2h-10v-4zm14 4a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0 -1-1zm-2 5 2 4 2-4z" fill="#232629"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m6 4 2 4h-4zm14 3v10h-2v-4h-10v-2h10v-4zm-14 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1zm2 5-2 4-2-4z" fill="#232629"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_svg/cmd/sc_verticaltext.svg b/icon-themes/breeze_svg/cmd/sc_verticaltext.svg
index 7b23eb42538b..814d2e9d2466 100644
--- a/icon-themes/breeze_svg/cmd/sc_verticaltext.svg
+++ b/icon-themes/breeze_svg/cmd/sc_verticaltext.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">/><path d="m10 2v1h2v4h-9v-1h-1v3h1v-1h9v4h-2v1h3v-10-1h-1z" fill="#232629"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1 1v14h7v-1h-6v-12h12v6h1v-7zm11 2v4h-9v1h9 1v-1-4z" fill="#232629"/><path d="m12 10v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#3daee9"/></svg>
\ No newline at end of file
diff --git a/icon-themes/breeze_svg/cmd/sc_verticaltextfittosizetool.svg b/icon-themes/breeze_svg/cmd/sc_verticaltextfittosizetool.svg
index 6d207c655d3b..0ba48791fccc 100644
--- a/icon-themes/breeze_svg/cmd/sc_verticaltextfittosizetool.svg
+++ b/icon-themes/breeze_svg/cmd/sc_verticaltextfittosizetool.svg
@@ -1 +1,2 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">/><path d="m12.5 2-1.5 4h3zm-10.5 1.5v3 2 4h1v-4h7v-1h-7v-4zm10.5 4a.5.5 0 0 0 -.5.5.5.5 0 0 0 .5.5.5.5 0 0 0 .5-.5.5.5 0 0 0 -.5-.5zm-1.5 2.5 1.5 4 1.5-4z" fill="#232629"/></svg>
\ No newline at end of file
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+/&gt;<path d="m3.5 1 1.5 4h-3zm10.5 1v4 2 5h-1v-5h-7v-1h7v-5zm-10.5 5c.2761424 0 .5.2238576.5.5s-.2238576.5-.5.5-.5-.2238576-.5-.5.2238576-.5.5-.5zm1.5 3-1.5 4-1.5-4z" fill="#232629"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre/cmd/32/ko/verticaltext.png b/icon-themes/colibre/cmd/32/ko/verticaltext.png
index 3b8b34cdc2c4..8d950341bdee 100644
Binary files a/icon-themes/colibre/cmd/32/ko/verticaltext.png and b/icon-themes/colibre/cmd/32/ko/verticaltext.png differ
diff --git a/icon-themes/colibre/cmd/32/ko/verticaltextfittosizetool.png b/icon-themes/colibre/cmd/32/ko/verticaltextfittosizetool.png
deleted file mode 100644
index 523b70d72763..000000000000
Binary files a/icon-themes/colibre/cmd/32/ko/verticaltextfittosizetool.png and /dev/null differ
diff --git a/icon-themes/colibre/cmd/32/verticaltext.png b/icon-themes/colibre/cmd/32/verticaltext.png
index fef164b504a9..337d0834229f 100644
Binary files a/icon-themes/colibre/cmd/32/verticaltext.png and b/icon-themes/colibre/cmd/32/verticaltext.png differ
diff --git a/icon-themes/colibre/cmd/32/verticaltextfittosizetool.png b/icon-themes/colibre/cmd/32/verticaltextfittosizetool.png
index 702e70999802..c2a464f86c71 100644
Binary files a/icon-themes/colibre/cmd/32/verticaltextfittosizetool.png and b/icon-themes/colibre/cmd/32/verticaltextfittosizetool.png differ
diff --git a/icon-themes/colibre/cmd/ko/lc_verticaltext.png b/icon-themes/colibre/cmd/ko/lc_verticaltext.png
index 38bf1fdfb003..7dda8a6e48a2 100644
Binary files a/icon-themes/colibre/cmd/ko/lc_verticaltext.png and b/icon-themes/colibre/cmd/ko/lc_verticaltext.png differ
diff --git a/icon-themes/colibre/cmd/ko/lc_verticaltextfittosizetool.png b/icon-themes/colibre/cmd/ko/lc_verticaltextfittosizetool.png
deleted file mode 100644
index 510f092691f3..000000000000
Binary files a/icon-themes/colibre/cmd/ko/lc_verticaltextfittosizetool.png and /dev/null differ
diff --git a/icon-themes/colibre/cmd/ko/sc_verticaltext.png b/icon-themes/colibre/cmd/ko/sc_verticaltext.png
index 137827a1aff5..2642daf4d1b9 100644
Binary files a/icon-themes/colibre/cmd/ko/sc_verticaltext.png and b/icon-themes/colibre/cmd/ko/sc_verticaltext.png differ
diff --git a/icon-themes/colibre/cmd/ko/sc_verticaltextfittosizetool.png b/icon-themes/colibre/cmd/ko/sc_verticaltextfittosizetool.png
deleted file mode 100644
index 3af1e8f1ef28..000000000000
Binary files a/icon-themes/colibre/cmd/ko/sc_verticaltextfittosizetool.png and /dev/null differ
diff --git a/icon-themes/colibre/cmd/lc_verticaltext.png b/icon-themes/colibre/cmd/lc_verticaltext.png
index ba23eed3b7e1..464ee52cdbb5 100644
Binary files a/icon-themes/colibre/cmd/lc_verticaltext.png and b/icon-themes/colibre/cmd/lc_verticaltext.png differ
diff --git a/icon-themes/colibre/cmd/lc_verticaltextfittosizetool.png b/icon-themes/colibre/cmd/lc_verticaltextfittosizetool.png
index f34206b18d75..95a3c3108b3a 100644
Binary files a/icon-themes/colibre/cmd/lc_verticaltextfittosizetool.png and b/icon-themes/colibre/cmd/lc_verticaltextfittosizetool.png differ
diff --git a/icon-themes/colibre/cmd/sc_verticaltext.png b/icon-themes/colibre/cmd/sc_verticaltext.png
index 55743da2710a..04e50b8168c0 100644
Binary files a/icon-themes/colibre/cmd/sc_verticaltext.png and b/icon-themes/colibre/cmd/sc_verticaltext.png differ
diff --git a/icon-themes/colibre/cmd/sc_verticaltextfittosizetool.png b/icon-themes/colibre/cmd/sc_verticaltextfittosizetool.png
index de5376c655ba..30a6f15bdd2c 100644
Binary files a/icon-themes/colibre/cmd/sc_verticaltextfittosizetool.png and b/icon-themes/colibre/cmd/sc_verticaltextfittosizetool.png differ
diff --git a/icon-themes/colibre_svg/cmd/32/ko/verticaltext.png b/icon-themes/colibre_svg/cmd/32/ko/verticaltext.png
new file mode 100644
index 000000000000..8d950341bdee
Binary files /dev/null and b/icon-themes/colibre_svg/cmd/32/ko/verticaltext.png differ
diff --git a/icon-themes/colibre_svg/cmd/32/ko/verticaltextfittosizetool.svg b/icon-themes/colibre_svg/cmd/32/ko/verticaltextfittosizetool.svg
deleted file mode 100644
index c1ff5273ef9a..000000000000
--- a/icon-themes/colibre_svg/cmd/32/ko/verticaltextfittosizetool.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="m4.5 28.5v-25h23v25z" fill="#fff" stroke="#808080" stroke-linecap="round" stroke-linejoin="round"/><path d="m7 12h18v-2h-6v-3h-2v3h-10zm2 13h2v-8c4.456932.247361 8.97045 4.461785 9 8h2c-.06001-6.400071-7.789744-10.124987-11.542969-10h-1.457031z" fill="#4d82b8"/></g></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/cmd/32/verticaltext.png b/icon-themes/colibre_svg/cmd/32/verticaltext.png
new file mode 100644
index 000000000000..337d0834229f
Binary files /dev/null and b/icon-themes/colibre_svg/cmd/32/verticaltext.png differ
diff --git a/icon-themes/colibre_svg/cmd/32/verticaltextfittosizetool.png b/icon-themes/colibre_svg/cmd/32/verticaltextfittosizetool.png
new file mode 100644
index 000000000000..c2a464f86c71
Binary files /dev/null and b/icon-themes/colibre_svg/cmd/32/verticaltextfittosizetool.png differ
diff --git a/icon-themes/colibre_svg/cmd/ko/lc_verticaltext.png b/icon-themes/colibre_svg/cmd/ko/lc_verticaltext.png
new file mode 100644
index 000000000000..7dda8a6e48a2
Binary files /dev/null and b/icon-themes/colibre_svg/cmd/ko/lc_verticaltext.png differ
diff --git a/icon-themes/colibre_svg/cmd/ko/lc_verticaltextfittosizetool.svg b/icon-themes/colibre_svg/cmd/ko/lc_verticaltextfittosizetool.svg
deleted file mode 100644
index f2c309a00870..000000000000
--- a/icon-themes/colibre_svg/cmd/ko/lc_verticaltextfittosizetool.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m2.5 22.5v-21h19v21z" fill="#fff" stroke="#808080" stroke-linecap="round" stroke-linejoin="round"/><path d="m5 9h14v-2h-5v-3h-2v3h-7zm2 11h2v-6c4.456932.247361 6.97045 2.461785 7 6h2c-.06001-6.400071-5.789744-8.124987-9.542969-8h-1.457031z" fill="#4d82b8" fill-rule="evenodd"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/cmd/ko/sc_verticaltext.png b/icon-themes/colibre_svg/cmd/ko/sc_verticaltext.png
new file mode 100644
index 000000000000..2642daf4d1b9
Binary files /dev/null and b/icon-themes/colibre_svg/cmd/ko/sc_verticaltext.png differ
diff --git a/icon-themes/colibre_svg/cmd/ko/sc_verticaltextfittosizetool.svg b/icon-themes/colibre_svg/cmd/ko/sc_verticaltextfittosizetool.svg
deleted file mode 100644
index a2e8dac86625..000000000000
--- a/icon-themes/colibre_svg/cmd/ko/sc_verticaltextfittosizetool.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">/&gt;<path d="m.5 15.5v-15h15v15z" fill="#fff" stroke="#808080" stroke-linecap="round" stroke-linejoin="round"/><g fill="#4d82b8" fill-rule="evenodd" transform="matrix(0 -1 1 0 2 17)"><path d="m12 0v12h1v-4.0000004h2v-1h-2v-6.9999996z"/><path d="m4 1v1l5 .0001095c.08196 3.4125268-1.9797977 5.9230149-5 5.9998909v.9999996c3.4874101.02091 6.107864-3.1556954 6-7.125781v-.874219z"/></g></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/cmd/lc_verticaltext.png b/icon-themes/colibre_svg/cmd/lc_verticaltext.png
new file mode 100644
index 000000000000..464ee52cdbb5
Binary files /dev/null and b/icon-themes/colibre_svg/cmd/lc_verticaltext.png differ
diff --git a/icon-themes/colibre_svg/cmd/lc_verticaltextfittosizetool.png b/icon-themes/colibre_svg/cmd/lc_verticaltextfittosizetool.png
new file mode 100644
index 000000000000..95a3c3108b3a
Binary files /dev/null and b/icon-themes/colibre_svg/cmd/lc_verticaltextfittosizetool.png differ
diff --git a/icon-themes/colibre_svg/cmd/sc_verticaltext.png b/icon-themes/colibre_svg/cmd/sc_verticaltext.png
new file mode 100644
index 000000000000..04e50b8168c0
Binary files /dev/null and b/icon-themes/colibre_svg/cmd/sc_verticaltext.png differ
diff --git a/icon-themes/colibre_svg/cmd/sc_verticaltextfittosizetool.png b/icon-themes/colibre_svg/cmd/sc_verticaltextfittosizetool.png
new file mode 100644
index 000000000000..30a6f15bdd2c
Binary files /dev/null and b/icon-themes/colibre_svg/cmd/sc_verticaltextfittosizetool.png differ
diff --git a/icon-themes/elementary/cmd/32/ko/verticaltext.png b/icon-themes/elementary/cmd/32/ko/verticaltext.png
deleted file mode 100644
index 0298ad15f524..000000000000
Binary files a/icon-themes/elementary/cmd/32/ko/verticaltext.png and /dev/null differ
diff --git a/icon-themes/elementary/cmd/ko/lc_verticaltext.png b/icon-themes/elementary/cmd/ko/lc_verticaltext.png
deleted file mode 100644
index 44451210b1ef..000000000000
Binary files a/icon-themes/elementary/cmd/ko/lc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/elementary/cmd/ko/sc_verticaltext.png b/icon-themes/elementary/cmd/ko/sc_verticaltext.png
deleted file mode 100644
index da88d281c854..000000000000
Binary files a/icon-themes/elementary/cmd/ko/sc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/elementary_svg/cmd/32/ko/verticaltext.svg b/icon-themes/elementary_svg/cmd/32/ko/verticaltext.svg
deleted file mode 100644
index de7780c2c018..000000000000
--- a/icon-themes/elementary_svg/cmd/32/ko/verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="32" viewBox="0 0 8.4666665 8.4666669" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="15.619671" cy="11.257184" fx="15.619671" fy="11.257184" gradientTransform="matrix(.01160069 1.7110252 -3.5339442 -.00000005 43.601061 -11.725651)" gradientUnits="userSpaceOnUse" r="6.225339" xlink:href="#c"/><radialGradient id="b" cx="10.903473" cy="14.502974" gradientTransform="matrix(-1.2063324 .07952741 -.10938469 -2.3364203 24.195885 45.251108)" gradientUnits="userSpaceOnUse" r="6.225339" xlink:href="#c"/><radialGradient id="c" cx="10.903473" cy="14.502974" gradientTransform="matrix(-1.2063324 .07952741 -.10938469 -2.3364203 24.195885 45.251108)" gradientUnits="userSpaceOnUse" r="6.225339"><stop offset="0" stop-color="#555"/><stop offset="1" stop-color="#666"/></radialGradient><linearGradient id="d" gradientUnits="userSpaceOnUse" x1="2" x2="30" y1="16" y2="16"><stop offset="0" stop-color="#1f1f1f"/><stop offset="1"
  stop-color="#5c5c5c"/></linearGradient><g transform="translate(0 -288.533)"><path d="m5 2c-1.662 0-3 1.338-3 3h1c0-1.108.892-2 2-2zm1 0v1h3v-1zm4 0v1h3v-1zm4 0v1h3v-1zm4 0v1h3v-1zm4 0v1h3v-1zm4 0v1h1c1.108 0 2 .892 2 2h1c0-1.662-1.338-3-3-3zm-24 4v3h1v-3zm27 0v3h1v-3zm-27 4v3h1v-3zm27 0v3h1v-3zm-27 4v3h1v-3zm27 0v3h1v-3zm-27 4v3h1v-3zm27 0v3h1v-3zm-27 4v3h1v-3zm27 0v3h1v-3zm-27 4v1c0 1.662 1.338 3 3 3v-1c-1.108 0-2-.892-2-2v-1zm27 0v1c0 1.108-.892 2-2 2h-1v1h1c1.662 0 3-1.338 3-3v-1zm-23 3v1h3v-1zm4 0v1h3v-1zm4 0v1h3v-1zm4 0v1h3v-1zm4 0v1h3v-1z" fill="url(#d)" opacity=".867" transform="matrix(.26458 0 0 .26458 0 288.533)"/><path id="e" d="m7.0114584 288.66529 1.3225416.00071.000375 1.32221h-1.3229166z" fill="#ffc27d" stroke="#a62100" stroke-opacity=".43" stroke-width=".265"/><use id="f" height="100%" transform="translate(0 6.89)" width="100%" xlink:href="#e"/><use id="g" height="100%" transform="translate(-6.878958 -.011043)" width="100%" xlink:href="#f"/><use height="100%" transfo
 rm="translate(0 -6.878676)" width="100%" xlink:href="#g"/></g><g fill="url(#b)" stroke="#000" stroke-opacity=".6" stroke-width=".750002" transform="matrix(0 .37464341 -.33218665 0 11.469942 -.485949)"><path d="m22.5 5.5v21h2v-10h3v-2h-3v-9zm-16 2v2l9.527344.029297c-.537711 5.973691-3.201391 10.618518-10.824219 13.84375l1.3925781 1.878906c9.4257369-4.094643 11.9316409-10.458871 11.9316409-17.7226561z" fill="url(#a)" stroke="#000" stroke-opacity=".6" stroke-width="1" transform="matrix(.70622711 0 0 .79648997 1.297097 8.244437)"/><path d="m9.6269531 5.203125-1.8789062 1.3925781c.1125547.2590975.2336532.4934557.3496093.7421875l1.5292969-1.1347656c3.2252319 7.622828 7.8700529 10.286508 13.8437499 10.824219l.029297-9.527344h1.998047l.001953-1h-2l-.029297 9.527344c-5.973691-.537711-10.618518-3.201391-13.8437499-10.824219zm-3.1269531 17.296875v1h21v-1z" fill="#fff" opacity=".2" stroke="none" transform="matrix(0 -.79648997 .70622711 0 1.297097 34.528606)"/></g></svg>
\ No newline at end of file
diff --git a/icon-themes/elementary_svg/cmd/ko/lc_verticaltext.svg b/icon-themes/elementary_svg/cmd/ko/lc_verticaltext.svg
deleted file mode 100644
index ab406d1934d8..000000000000
--- a/icon-themes/elementary_svg/cmd/ko/lc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="24" width="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="12.748346" cy="1.214885" gradientTransform="matrix(-1.5520608 .00000002 -.00000002 -2.1590673 31.786209 6.623017)" gradientUnits="userSpaceOnUse" r="5.094793"><stop offset="0" stop-color="#555"/><stop offset="1" stop-color="#666"/></radialGradient><radialGradient id="b" cx="12" cy="-14.267" gradientTransform="matrix(1.9091 .00000009 -.00000012 2.7273 -10.909 62.909)" gradientUnits="userSpaceOnUse" r="11"><stop offset="0" stop-color="#1f1f1f"/><stop offset="1" stop-color="#5c5c5c"/></radialGradient><path d="m2.9316-.50977-.048828-.48828-.29102.029297-.048828.005859-.048828.013672-.23047.072266.29492.95508.17773-.054688.22656-.023438h2.0371v-1h-2.0684zm3.0684.50977h2v-1h-2zm3 0h2v-1h-2zm3 0h2v-1h-2zm3 0h2v-1h-2zm2.9998 0h2.0004v-1h-2.0004zm3.0002 0h.0127l.25098.023438.16406.050781.16211.087891.13672.11133.11133.13672.08789.16211.041017.42773h.95508l-.056
 64-.77344-.01367-.046875-.02344-.044922-.13281-.24219-.02344-.042969-.0293-.037109-.17578-.21289-.0293-.037109-.03711-.029297-.21289-.17578-.03711-.029297-.04297-.023438-.24219-.13281-.04492-.023438-.04687-.013672-.26758-.083984-.04883-.013672-.04883-.005859-.31543-.029297-.023432-.0019533h-.06934zm-19.828.13477-.023438.044922-.013672.046875-.083984.26758-.013672.048828-.0058594.048828-.029297.29102-.0019531.023438v1.0938h1v-1.0371l.023438-.22656.050781-.16602.044922-.083984-.87891-.47461zm20.828 3.8652h1v-2h-1zm-21 1h1v-2h-1zm21 2h1v-2h-1zm-21 1h1v-2h-1zm21 2h1v-2h-1zm-21 1h1v-2h-1zm21 2h1v-2h-1zm-21 1h1v-2h-1zm21 2h1v-2h-1zm-21 1h1v-2h-1zm21 1.549h1v-1.549h-1zm-21 .51936v.02539l.00195.02344.029297.29102.00586.04883.013672.04883.083984.26758.013672.04687.023438.04492.13281.24219.023438.04297.029297.03711.17578.21289.029297.03711.037109.0293.021484.01758.40234-.49023.28125-.23047-.14258-.17384-.087891-.16211-.050781-.16406-.023438-.22656v-.81836h-1zm20.945.32422-.0078-.002-.01172.03
 711-.08789.16211-.11133.13672-.13672.11133-.16211.08789-.16406.05078-.22657.023485h-.20312v1h.25977l.02344-.002.29102-.0293.04883-.0059.04883-.01367.26758-.08398.04687-.01367.04492-.02344.24219-.13281.04297-.02344.03711-.0293.21289-.17578.03711-.0293.0293-.03711.17578-.21289.0293-.03711.02344-.04297.13281-.24219.02344-.04492.01367-.04687.02734-.08789-.92383-.28516-.02148-.01172zm-19.16 1.5957.097656.0098.023438.002h2.0938v-1h-2.0371l-.078125-.0078zm3.2148.011719h2v-1h-2zm3 0h2v-1h-2zm3 0h2v-1h-2zm3 0h2v-1h-2zm3 0h2v-1h-2z" fill="url(#b)" opacity=".867" transform="translate(0 2)"/><path id="c" d="m20.501.5h2.9986v3.0003h-2.9986z" fill="#ffc27d" stroke="#a62100" stroke-opacity=".43015" stroke-width=".99292"/><use id="d" height="100%" transform="translate(.003537 20.003)" width="100%" xlink:href="#c"/><use height="100%" transform="translate(-20.009 -20.007)" width="100%" xlink:href="#d"/><use height="100%" transform="translate(-20.005 20.003)" width="100%" xlink:href="#c"/><path d="m19
 .5 15.5h-15v2h7v3h2v-3h6zm-1-11.0000001h-1.572266l-.01563 5.0371094c-5.07413-.404978-6.06122.1454542-8.800776-5.5957032l-1.595703 1.0488282c3.4780459 7.0990237 5.798792 6.5253907 11.96875 6.5253907z" fill="url(#a)" stroke="#000" stroke-opacity=".6"/><path d="m8.1113281 3.9414062-1.5957031 1.0488282c.1306703.2667105.2570969.502559.3847656.7480468l1.2109375-.796875c2.7395559 5.7411578 3.7266509 5.1907248 8.8007809 5.5957028l.015625-5.037109h1.570313l.001953-1h-1.572266l-.015625 5.0371094c-5.07413-.404978-6.061225.1454543-8.8007809-5.5957032zm-3.6113281 11.5585938v1h15v-1z" fill="#faeef6" opacity=".2"/></svg>
\ No newline at end of file
diff --git a/icon-themes/elementary_svg/cmd/ko/sc_verticaltext.svg b/icon-themes/elementary_svg/cmd/ko/sc_verticaltext.svg
deleted file mode 100644
index 3ab0e19b4205..000000000000
--- a/icon-themes/elementary_svg/cmd/ko/sc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="16" width="16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="6.704851" cy="3.297072" gradientTransform="matrix(-1.8921147 .00000009 -.00000011 -2.3310865 20.686347 11.685758)" gradientUnits="userSpaceOnUse" r="3.431876"><stop offset="0" stop-color="#737373"/><stop offset=".262" stop-color="#636363"/><stop offset=".705" stop-color="#4b4b4b"/><stop offset="1" stop-color="#3f3f3f"/></radialGradient><path d="m2 8h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1zm-13 1h1v-1h-1zm13 1h1v-1h-1zm-13 1h1v-1h-1zm13 1h1v-1h-1zm-13 1h1v-1h-1zm13 1h1v-1h-1zm-13 1h1v-1h-1zm13 1h1v-1h-1zm-13 1h1v-1h-1zm13 1h1v-1h-1zm-13 1h1v-1h-1zm13 1h1v-1h-1zm-13 1h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1zm2 0h1v-1h-1z" fill="#565656" transform="translate(0 -6)"/><g fill="#ffc27d" stroke="#a62100" stroke-opacity=".43015"><path d="m12.5.5h3v3l-3.002.00366z"/><path d="m.5.5133
 6 3-.01336v3l-3 .00366z"/><path d="m.5 12.5h3v3l-3 .0003z"/><path d="m12.5 12.5h3l-.0004 3.0003-2.9996-.0003z"/></g><path d="m12.5 9.5h-9v1h4v1.796875c0 .112874.0902514.203125.203125.203125h.59375c.1128736 0 .203125-.090251.203125-.203125v-1.796875h4zm-2-6h-1v2.7711864c-3.3010205-.2952492-3-1.2711864-4-2.7711864l-1.039062.7636719c1.7780458 2.7358256 2.0251456 3.2363281 6.039062 3.2363281z" fill="url(#a)" stroke="#000" stroke-linejoin="round" stroke-opacity=".6"/></svg>
\ No newline at end of file
diff --git a/icon-themes/karasa_jaga/cmd/32/ko/verticaltext.png b/icon-themes/karasa_jaga/cmd/32/ko/verticaltext.png
deleted file mode 100644
index 5aa00885011e..000000000000
Binary files a/icon-themes/karasa_jaga/cmd/32/ko/verticaltext.png and /dev/null differ
diff --git a/icon-themes/karasa_jaga/cmd/ko/lc_verticaltext.png b/icon-themes/karasa_jaga/cmd/ko/lc_verticaltext.png
deleted file mode 100644
index 77059ce4e04f..000000000000
Binary files a/icon-themes/karasa_jaga/cmd/ko/lc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/karasa_jaga/cmd/ko/sc_verticaltext.png b/icon-themes/karasa_jaga/cmd/ko/sc_verticaltext.png
deleted file mode 100644
index 22fe4469075d..000000000000
Binary files a/icon-themes/karasa_jaga/cmd/ko/sc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/karasa_jaga_svg/cmd/32/ko/verticaltext.svg b/icon-themes/karasa_jaga_svg/cmd/32/ko/verticaltext.svg
deleted file mode 100644
index 723016376e51..000000000000
--- a/icon-themes/karasa_jaga_svg/cmd/32/ko/verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="32" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="71.096013" x2="71.096013" y1="90.279735" y2="-15.645497"><stop offset="0" stop-color="#1c1c1c"/><stop offset=".5" stop-color="#888"/><stop offset="1"/></linearGradient><g transform="matrix(0 .25 -.25 0 31.060824 -.939177)"><path d="m83.756707.243296v96l12-.00037v-35.99963h12.000003v-12.334488h-12.000003v-47.665512zm-64 8v12h42.898983c-.223332 9.566211-1.455689 24.878779-5.663278 34.680152-5.292193 12.327874-18.326147 24.82783-37.235705 24.818154v9.533103c23.989428.01512 38.748298-14.015849 45.524311-29.800252 6.776024-15.784404 7.225519-33.280215 6.907782-44.286124v-6.945033z" fill="url(#a)" fill-rule="evenodd"/><path d="m54.892799 3.2812959v-2.79470843z" fill="#fff" fill-opacity=".756881"/><g fill="#a4c0e4"><path d="m29.438 94.030998h69.125v1h-69.125z" transform="matrix(1.7359855 0 0 -4.0000011 -47.103939 488.1241)"/><g 
 transform="matrix(4.0000046 0 0 1.6516129 -131.52422 -44.051613)"><path d="m35.881001 31.515625h1.000012v67.8125h-1.000012z"/><path d="m60.881001 31.515625h.999983v67.8125h-.999983z"/></g></g></g></svg>
\ No newline at end of file
diff --git a/icon-themes/karasa_jaga_svg/cmd/ko/lc_verticaltext.svg b/icon-themes/karasa_jaga_svg/cmd/ko/lc_verticaltext.svg
deleted file mode 100644
index eb5ea48967dc..000000000000
--- a/icon-themes/karasa_jaga_svg/cmd/ko/lc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="24" width="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="66.78281" x2="66.78281" y1="101.332733" y2="-5.332433"><stop offset="0" stop-color="#1c1c1c"/><stop offset=".5" stop-color="#888"/><stop offset="1"/></linearGradient><g transform="matrix(0 .1875 -.1875 0 23.999999 .999996)"><path d="m54.892799 3.2812959v-2.79470843z" fill="#fff" fill-opacity=".756881"/><g fill="#a4c0e4"><path d="m29.134871 93.864357h70.035614v.916678h-70.035614z" transform="matrix(1.5991885 0 0 -5.8180975 -41.258811 663.44531)"/><path d="m10.66668 5.33318h5.333339v117.33348h-5.333339z"/><path d="m106.6668 5.33318h5.33334v117.33348h-5.33334z"/></g><path d="m80.94925 10.668985v95.996995l10.66652-.002v-38.39862h14.39955v-9.5997h-14.39955v-47.998485zm-64.29775 9.598875v9.59969h43.19865c-.2249 9.633-1.46586 27.5367-5.70283 37.40652-5.32917 12.41399-18.45417 25.00127-37.49582 24.99153v9.59971c24.157.0128 39.018
 97-14.11381 45.84232-30.00845 6.82336-15.89463 7.27599-33.51267 6.95603-44.59548v-6.99352z" fill="url(#a)" fill-rule="evenodd" stroke-width=".916667"/></g></svg>
\ No newline at end of file
diff --git a/icon-themes/karasa_jaga_svg/cmd/ko/sc_verticaltext.svg b/icon-themes/karasa_jaga_svg/cmd/ko/sc_verticaltext.svg
deleted file mode 100644
index ced1f60ed9ae..000000000000
--- a/icon-themes/karasa_jaga_svg/cmd/ko/sc_verticaltext.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 .79999983 -.79999983 0 123.19999 12.800009)" gradientUnits="userSpaceOnUse" x1="64" x2="68" y1="120" y2="-8"><stop offset="0" stop-color="#1c1c1c"/><stop offset=".5" stop-color="#888"/><stop offset="1"/></linearGradient>
-
-
-
-
-
-/&amp;amp;gt;<g transform="scale(.125)"><path d="m119.99999 87.999993h-95.999981v12.000005h41.999989v11.999992h11.999999v-11.999992h41.999993zm-6-71.999984h-11.99999v47.99999c-36.000002 0-59.999998-23.999996-59.999998-47.99999h-11.999993c0 35.999992 29.999992 59.999989 75.257801 59.999989h8.74218z" fill="url(#a)" fill-rule="evenodd"/><g fill="#a4c0e4"><path d="m29.438 93.030998h69.125v1h-69.125z" transform="matrix(0 1.8517179 -7.9999983 0 760.24782 -54.510871)"/><path d="m112-128h8v127.94262h-8z" transform="rotate(90)"/><path d="m35.881001 24.25h1v77.5h-1z" transform="matrix(0 8.0000031 -1.6516129 0 168.05161 -279.04812)"/></g></g></svg>
\ No newline at end of file
diff --git a/icon-themes/sifr/cmd/32/ko/verticaltext.png b/icon-themes/sifr/cmd/32/ko/verticaltext.png
deleted file mode 100644
index 872292bd8793..000000000000
Binary files a/icon-themes/sifr/cmd/32/ko/verticaltext.png and /dev/null differ
diff --git a/icon-themes/sifr/cmd/ko/lc_verticaltext.png b/icon-themes/sifr/cmd/ko/lc_verticaltext.png
deleted file mode 100644
index 5e98c0e634d0..000000000000
Binary files a/icon-themes/sifr/cmd/ko/lc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/sifr/cmd/ko/sc_verticaltext.png b/icon-themes/sifr/cmd/ko/sc_verticaltext.png
deleted file mode 100644
index 1a556dfc25f2..000000000000
Binary files a/icon-themes/sifr/cmd/ko/sc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/sifr_dark/cmd/32/ko/verticaltext.png b/icon-themes/sifr_dark/cmd/32/ko/verticaltext.png
deleted file mode 100644
index 4b888d76f30e..000000000000
Binary files a/icon-themes/sifr_dark/cmd/32/ko/verticaltext.png and /dev/null differ
diff --git a/icon-themes/sifr_dark/cmd/ko/lc_verticaltext.png b/icon-themes/sifr_dark/cmd/ko/lc_verticaltext.png
deleted file mode 100644
index 59b36e7b2b66..000000000000
Binary files a/icon-themes/sifr_dark/cmd/ko/lc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/sifr_dark/cmd/ko/sc_verticaltext.png b/icon-themes/sifr_dark/cmd/ko/sc_verticaltext.png
deleted file mode 100644
index 62141e4b0ea6..000000000000
Binary files a/icon-themes/sifr_dark/cmd/ko/sc_verticaltext.png and /dev/null differ
diff --git a/icon-themes/sifr_dark_svg/cmd/32/ko/verticaltext.svg b/icon-themes/sifr_dark_svg/cmd/32/ko/verticaltext.svg
deleted file mode 100644
index 80fd31249610..000000000000
--- a/icon-themes/sifr_dark_svg/cmd/32/ko/verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m30 23h-26v4h12v3h2v-3h12zm-6-18h-.05859c-.132616-.5715186-.580943-1-1.275394-1h-3.666016v2h2v8h-1-1.5c-5.215941-.0047-9.637679-3.837555-10.382812-9h-4.03711c.768261 7.386677 6.993401 12.998831 14.419922 13h1.5 1 3v-12-.6660156z" fill="#aaa8ac"/></svg>
\ No newline at end of file
diff --git a/icon-themes/sifr_dark_svg/cmd/ko/lc_verticaltext.svg b/icon-themes/sifr_dark_svg/cmd/ko/lc_verticaltext.svg
deleted file mode 100644
index 3f790c36b833..000000000000
--- a/icon-themes/sifr_dark_svg/cmd/ko/lc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m22 17h-20v3h9v3h2v-3h9zm-3-14c0-.554-.379449-1-1-1h-3v2h2v7h-1-1c-3.865993 0-8-3.1340068-8-7h-3c0 5.5228475 5.477153 10 11 10h1 3v-3-7z" fill="#aaa8ac"/></svg>
\ No newline at end of file
diff --git a/icon-themes/sifr_dark_svg/cmd/ko/sc_verticaltext.svg b/icon-themes/sifr_dark_svg/cmd/ko/sc_verticaltext.svg
deleted file mode 100644
index fd37de88a0ca..000000000000
--- a/icon-themes/sifr_dark_svg/cmd/ko/sc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m14 11h-12v2h5v2h2v-2h5zm-2-8.5c0-.277-.223-.5-.5-.5h-1.5-1v2h1v3c-2.3742884-.00211-5.419674-1.6736809-5.894531-4h-2.025391c.496648 3.4408974 4.443369 5.9958868 7.919922 6h2v-.2949219-2.1289062-3.5761719z" fill="#aaa8ac"/></svg>
\ No newline at end of file
diff --git a/icon-themes/sifr_svg/cmd/32/ko/verticaltext.svg b/icon-themes/sifr_svg/cmd/32/ko/verticaltext.svg
deleted file mode 100644
index 0d30fcc99810..000000000000
--- a/icon-themes/sifr_svg/cmd/32/ko/verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m30 23h-26v4h12v3h2v-3h12zm-6-18h-.05859c-.132616-.5715186-.580943-1-1.275394-1h-3.666016v2h2v8h-1-1.5c-5.215941-.0047-9.637679-3.837555-10.382812-9h-4.03711c.768261 7.386677 6.993401 12.998831 14.419922 13h1.5 1 3v-12-.6660156z" fill="#555753"/></svg>
\ No newline at end of file
diff --git a/icon-themes/sifr_svg/cmd/ko/lc_verticaltext.svg b/icon-themes/sifr_svg/cmd/ko/lc_verticaltext.svg
deleted file mode 100644
index a8fd9f80aadb..000000000000
--- a/icon-themes/sifr_svg/cmd/ko/lc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m22 17h-20v3h9v3h2v-3h9zm-3-14c0-.554-.379449-1-1-1h-3v2h2v7h-1-1c-3.865993 0-8-3.1340068-8-7h-3c0 5.5228475 5.477153 10 11 10h1 3v-3-7z" fill="#555753"/></svg>
\ No newline at end of file
diff --git a/icon-themes/sifr_svg/cmd/ko/sc_verticaltext.svg b/icon-themes/sifr_svg/cmd/ko/sc_verticaltext.svg
deleted file mode 100644
index 0f2a321f3c88..000000000000
--- a/icon-themes/sifr_svg/cmd/ko/sc_verticaltext.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m14 11h-12v2h5v2h2v-2h5zm-2-8.5c0-.277-.223-.5-.5-.5h-1.5-1v2h1v3c-2.3742884-.00211-5.419674-1.6736809-5.894531-4h-2.025391c.496648 3.4408974 4.443369 5.9958868 7.919922 6h2v-.2949219-2.1289062-3.5761719z" fill="#555753"/></svg>
\ No newline at end of file
commit ce7bfd633b4628e11c176bfdedffa8a226eb9b29
Author:     Vasily Melenchuk <vasily.melenchuk at cib.de>
AuthorDate: Mon Apr 13 11:06:29 2020 +0300
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed May 6 22:27:09 2020 +0200

    tdf#116883: sw: support for lists level format string
    
    Multilevel lists are more flexible in case of DOCX. There is
    supported custom format for any level in DOCX unlike in LO
    and ODT where we are limited only with prefix and suffix
    for hardcoded list levels separated by dot. At the same time
    DOCX can have lists not only "1.2.3.4", but "1/2/3/4" or even
    "1!2>3)4" and such format can vary on each list level.
    
    Here is basic implementation for list format as a core feature
    for all documents and old way (prefix-suffix + ".") is left
    as fallback.
    
    Practically its usage is currently implemented only in DOCX
    import/export.
    
    Some RTF/OOXML unittests were redesigned: since we are not creating
    prefix/suffix for these formats conditions should be checked in
    a different way.
    
    Change-Id: I1ec58bcc5874d4fa19aee6a1f42bf1671d853b14
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92106
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93125
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Change-Id: Ia8f066913a2565559d81f3caabeba24b29c09052
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93456

diff --git a/editeng/source/items/numitem.cxx b/editeng/source/items/numitem.cxx
index 67cf0373cc37..6182ec5189b1 100644
--- a/editeng/source/items/numitem.cxx
+++ b/editeng/source/items/numitem.cxx
@@ -344,9 +344,10 @@ SvxNumberFormat& SvxNumberFormat::operator=( const SvxNumberFormat& rFormat )
     mnListtabPos = rFormat.mnListtabPos;
     mnFirstLineIndent = rFormat.mnFirstLineIndent;
     mnIndentAt = rFormat.mnIndentAt;
-    eVertOrient         = rFormat.eVertOrient ;
-    sPrefix             = rFormat.sPrefix     ;
-    sSuffix             = rFormat.sSuffix     ;
+    eVertOrient         = rFormat.eVertOrient;
+    sPrefix             = rFormat.sPrefix;
+    sSuffix             = rFormat.sSuffix;
+    sListFormat         = rFormat.sListFormat;
     aGraphicSize        = rFormat.aGraphicSize  ;
     nBulletColor        = rFormat.nBulletColor   ;
     nBulletRelSize      = rFormat.nBulletRelSize;
@@ -381,6 +382,7 @@ bool  SvxNumberFormat::operator==( const SvxNumberFormat& rFormat) const
         eVertOrient         != rFormat.eVertOrient ||
         sPrefix             != rFormat.sPrefix     ||
         sSuffix             != rFormat.sSuffix     ||
+        sListFormat         != rFormat.sListFormat ||
         aGraphicSize        != rFormat.aGraphicSize  ||
         nBulletColor        != rFormat.nBulletColor   ||
         nBulletRelSize      != rFormat.nBulletRelSize ||
diff --git a/include/editeng/numitem.hxx b/include/editeng/numitem.hxx
index 699f82928069..52cb14858c1f 100644
--- a/include/editeng/numitem.hxx
+++ b/include/editeng/numitem.hxx
@@ -102,6 +102,7 @@ public:
 private:
     OUString            sPrefix;
     OUString            sSuffix;
+    OUString            sListFormat;        // Format string ">%1.%2<" can be used instead of prefix/suffix
 
     SvxAdjust           eNumAdjust;
 
@@ -166,6 +167,8 @@ public:
     const OUString& GetPrefix() const { return sPrefix;}
     void            SetSuffix(const OUString& rSet) { sSuffix = rSet;}
     const OUString& GetSuffix() const { return sSuffix;}
+    void            SetListFormat(const OUString& rSet) { sListFormat = rSet; }
+    const OUString& GetListFormat() const { return sListFormat; }
 
     void                    SetCharFormatName(const OUString& rSet){ sCharStyleName = rSet; }
     virtual OUString        GetCharFormatName()const;
diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx
index d324be62bf0a..91780b6530bd 100644
--- a/sw/inc/unoprnms.hxx
+++ b/sw/inc/unoprnms.hxx
@@ -77,6 +77,7 @@
 #define UNO_NAME_ANCHOR_CHAR_STYLE_NAME "AnchorCharStyleName"
 #define UNO_NAME_SUFFIX "Suffix"
 #define UNO_NAME_PREFIX "Prefix"
+#define UNO_NAME_LIST_FORMAT "ListFormat"
 #define UNO_NAME_PARENT_NUMBERING "ParentNumbering"
 #define UNO_NAME_CHAR_FONT_NAME "CharFontName"
 #define UNO_NAME_CHAR_FONT_STYLE_NAME "CharFontStyleName"
diff --git a/sw/qa/extras/ooxmlexport/data/tdf116883.docx b/sw/qa/extras/ooxmlexport/data/tdf116883.docx
new file mode 100644
index 000000000000..52a9c42218fa
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf116883.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index e144e6178129..d4a453a27580 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -780,7 +780,10 @@ DECLARE_OOXMLEXPORT_TEST(testNumOverrideLvltext, "num-override-lvltext.docx")
 {
     uno::Reference<container::XIndexAccess> xRules = getProperty< uno::Reference<container::XIndexAccess> >(getStyles("NumberingStyles")->getByName("WWNum1"), "NumberingRules");
     // This was 1, i.e. the numbering on the second level was "1", not "1.1".
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(2), comphelper::SequenceAsHashMap(xRules->getByIndex(1))["ParentNumbering"].get<sal_Int16>());
+    // Check the praragraph properties, not the list ones, since they can differ due to overrides
+    uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(1), getProperty<sal_Int16>(xPara, "NumberingLevel"));
+    CPPUNIT_ASSERT_EQUAL(OUString("1.1"), getProperty<OUString>(xPara, "ListLabelString"));
 
     // The paragraph marker's red font color was inherited by the number portion, this was ff0000.
     CPPUNIT_ASSERT_EQUAL(OUString("ffffffff"), parseDump("//Special[@nType='PortionType::Number']/SwFont", "color"));
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
index 835947da9dfb..92d7d63aa80d 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
@@ -853,25 +853,11 @@ DECLARE_OOXMLEXPORT_TEST(testTdf65955_2, "tdf65955_2.odt")
 
 DECLARE_OOXMLEXPORT_TEST(testChtOutlineNumberingOoxml, "chtoutline.docx")
 {
-    const sal_Unicode aExpectedPrefix[2] = { 0x7b2c, 0x0020 };
-    const sal_Unicode aExpectedSuffix[2] = { 0x0020, 0x7ae0 };
-    uno::Reference< text::XChapterNumberingSupplier > xChapterNumberingSupplier(mxComponent, uno::UNO_QUERY);
-    uno::Reference< container::XIndexAccess> xLevels(xChapterNumberingSupplier->getChapterNumberingRules());
-    uno::Sequence<beans::PropertyValue> aProps;
-    xLevels->getByIndex(0) >>= aProps; // 1st level
-
-    OUString aSuffix,aPrefix;
-    for (int i = 0; i < aProps.getLength(); ++i)
-    {
-        const beans::PropertyValue& rProp = aProps[i];
+    const sal_Unicode aExpectedNumbering[] = { 0x7b2c, ' ', '1', ' ', 0x7ae0 };
 
-        if (rProp.Name == "Suffix")
-            aSuffix = rProp.Value.get<OUString>();
-        if (rProp.Name == "Prefix")
-            aPrefix = rProp.Value.get<OUString>();
-    }
-    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedPrefix,SAL_N_ELEMENTS(aExpectedPrefix)), aPrefix);
-    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedSuffix,SAL_N_ELEMENTS(aExpectedSuffix)), aSuffix);
+    uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedNumbering,SAL_N_ELEMENTS(aExpectedNumbering)),
+        getProperty<OUString>(xPara, "ListLabelString"));
 }
 
 DECLARE_OOXMLEXPORT_TEST(mathtype, "mathtype.docx")
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx
index 908faf14e22a..f51804eebd1c 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport12.cxx
@@ -995,6 +995,50 @@ DECLARE_OOXMLEXPORT_TEST(testTdf122594, "tdf122594.docx")
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), nCheck);
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf116883, "tdf116883.docx")
+{
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>1>"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(2), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>2>"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(3), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>2>1>1>"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(4), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>2>2>"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(5), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>2>3>"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(6), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>1)"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(7), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>2)"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(8), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>2>1<1)"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(9), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>2.2)"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(10), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("1>2.3)"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index cf2cb780bb12..535374da8863 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -659,16 +659,16 @@ DECLARE_RTFEXPORT_TEST(testFdo66682, "fdo66682.rtf")
     uno::Sequence<beans::PropertyValue> aProps;
     xLevels->getByIndex(0) >>= aProps; // 1st level
 
-    OUString aSuffix;
+    OUString aListFormat;
     for (int i = 0; i < aProps.getLength(); ++i)
     {
         const beans::PropertyValue& rProp = aProps[i];
 
-        if (rProp.Name == "Suffix")
-            aSuffix = rProp.Value.get<OUString>();
+        if (rProp.Name == "ListFormat")
+            aListFormat = rProp.Value.get<OUString>();
     }
     // Suffix was '\0' instead of ' '.
-    CPPUNIT_ASSERT_EQUAL(OUString(" "), aSuffix);
+    CPPUNIT_ASSERT_EQUAL(OUString(" %1 "), aListFormat);
 }
 
 DECLARE_RTFEXPORT_TEST(testParaShadow, "para-shadow.rtf")
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index a652b354dbe7..3fe90033be59 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -141,21 +141,52 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf108943)
 CPPUNIT_TEST_FIXTURE(Test, testFdo46662)
 {
     load(mpTestDocumentPath, "fdo46662.rtf");
-    uno::Reference<beans::XPropertySet> xPropertySet(
-        getStyles("NumberingStyles")->getByName("WWNum3"), uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> xLevels(
-        xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY);
-    uno::Sequence<beans::PropertyValue> aProps;
-    xLevels->getByIndex(1) >>= aProps; // 2nd level
 
-    for (int i = 0; i < aProps.getLength(); ++i)
+    OUString listStyle;
+
     {
-        const beans::PropertyValue& rProp = aProps[i];
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(0),
+                             getProperty<sal_Int16>(xPara, "NumberingLevel"));
+        CPPUNIT_ASSERT(xPara->getPropertyValue("NumberingStyleName") >>= listStyle);
+        CPPUNIT_ASSERT(listStyle.startsWith("WWNum"));
+        CPPUNIT_ASSERT_EQUAL(OUString("1"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(2), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(1),
+                             getProperty<sal_Int16>(xPara, "NumberingLevel"));
+        CPPUNIT_ASSERT(xPara->getPropertyValue("NumberingStyleName") >>= listStyle);
+        CPPUNIT_ASSERT(listStyle.startsWith("WWNum"));
+        CPPUNIT_ASSERT_EQUAL(OUString("1.1"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(3), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(2),
+                             getProperty<sal_Int16>(xPara, "NumberingLevel"));
+        CPPUNIT_ASSERT(xPara->getPropertyValue("NumberingStyleName") >>= listStyle);
+        CPPUNIT_ASSERT(listStyle.startsWith("WWNum"));
+        CPPUNIT_ASSERT_EQUAL(OUString("1.1.1"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(4), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(3),
+                             getProperty<sal_Int16>(xPara, "NumberingLevel"));
+        CPPUNIT_ASSERT(xPara->getPropertyValue("NumberingStyleName") >>= listStyle);
+        CPPUNIT_ASSERT(listStyle.startsWith("WWNum"));
+        CPPUNIT_ASSERT_EQUAL(OUString("1.1.1.1"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
 
-        if (rProp.Name == "ParentNumbering")
-            CPPUNIT_ASSERT_EQUAL(sal_Int16(2), rProp.Value.get<sal_Int16>());
-        else if (rProp.Name == "Suffix")
-            CPPUNIT_ASSERT_EQUAL(sal_Int32(0), rProp.Value.get<OUString>().getLength());
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(5), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(0),
+                             getProperty<sal_Int16>(xPara, "NumberingLevel"));
+        CPPUNIT_ASSERT(xPara->getPropertyValue("NumberingStyleName") >>= listStyle);
+        CPPUNIT_ASSERT(listStyle.startsWith("WWNum"));
+        CPPUNIT_ASSERT_EQUAL(OUString("2"), getProperty<OUString>(xPara, "ListLabelString"));
     }
 }
 
@@ -1037,25 +1068,12 @@ CPPUNIT_TEST_FIXTURE(Test, testCp950listleveltext1)
 {
     load(mpTestDocumentPath, "cp950listleveltext1.rtf");
     // suffix with Chinese only ( most common case generated by MSO2010 TC)
-    const sal_Unicode aExpectedSuffix[1]
-        = { 0x3001 }; // This is a dot that is generally used as suffix of Chinese list number
-    uno::Reference<beans::XPropertySet> xPropertySet(
-        getStyles("NumberingStyles")->getByName("WWNum3"), uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> xLevels(
-        xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY);
-    uno::Sequence<beans::PropertyValue> aProps;
-    xLevels->getByIndex(0) >>= aProps; // 1st level
-
-    OUString aSuffix;
-    for (int i = 0; i < aProps.getLength(); ++i)
-    {
-        const beans::PropertyValue& rProp = aProps[i];
+    // This is a dot that is generally used as suffix of Chinese list number
+    const sal_Unicode aExpectedNumbering[] = { 0x4e00, 0x3001 };
 
-        if (rProp.Name == "Suffix")
-            aSuffix = rProp.Value.get<OUString>();
-    }
-    // Suffix was '\0' instead of ' '.
-    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedSuffix, SAL_N_ELEMENTS(aExpectedSuffix)), aSuffix);
+    uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedNumbering, SAL_N_ELEMENTS(aExpectedNumbering)),
+                         getProperty<OUString>(xPara, "ListLabelString"));
 }
 
 // This testcase illustrate leveltext with multibyte strings coded in cp950 ( BIG5 ).
@@ -1063,85 +1081,35 @@ CPPUNIT_TEST_FIXTURE(Test, testCp950listleveltext2)
 {
     load(mpTestDocumentPath, "cp950listleveltext2.rtf");
     // Prefix and suffix with Chinese only ( tweaked from default in MSO2010 TC)
-    const sal_Unicode aExpectedPrefix[2] = { 0x524d, 0x7f6e };
-    const sal_Unicode aExpectedSuffix[3] = { 0x3001, 0x5f8c, 0x7f6e };
+    const sal_Unicode aExpectedNumbering[] = { 0x524d, 0x7f6e, 0x7532, 0x3001, 0x5f8c, 0x7f6e };
 
-    uno::Reference<beans::XPropertySet> xPropertySet(
-        getStyles("NumberingStyles")->getByName("WWNum1"), uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> xLevels(
-        xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY);
-    uno::Sequence<beans::PropertyValue> aProps;
-    xLevels->getByIndex(0) >>= aProps; // 1st level
-
-    OUString aSuffix, aPrefix;
-    for (int i = 0; i < aProps.getLength(); ++i)
-    {
-        const beans::PropertyValue& rProp = aProps[i];
-
-        if (rProp.Name == "Suffix")
-            aSuffix = rProp.Value.get<OUString>();
-        if (rProp.Name == "Prefix")
-            aPrefix = rProp.Value.get<OUString>();
-    }
-    // Suffix was '\0' instead of ' '.
-    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedPrefix, SAL_N_ELEMENTS(aExpectedPrefix)), aPrefix);
-    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedSuffix, SAL_N_ELEMENTS(aExpectedSuffix)), aSuffix);
+    uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedNumbering, SAL_N_ELEMENTS(aExpectedNumbering)),
+                         getProperty<OUString>(xPara, "ListLabelString"));
 }
 
 // This testcase illustrate leveltext with multibyte strings coded in cp950 ( BIG5 )
 CPPUNIT_TEST_FIXTURE(Test, testCp950listleveltext3)
 {
     load(mpTestDocumentPath, "cp950listleveltext3.rtf");
-    // Prefix and suffix that mix Chinese and English ( tweaked from default in MSO2010 TC)
-    const sal_Unicode aExpectedPrefix[4] = { 0x524d, 0x0061, 0x7f6e, 0x0062 };
-    const sal_Unicode aExpectedSuffix[6] = { 0x3001, 0x0063, 0x5f8c, 0x0064, 0x7f6e, 0x0065 };
+    // Numbering is a mix Chinese and English ( tweaked from default in MSO2010 TC)
+    const sal_Unicode aExpectedNumbering[] = { 0x524d, 0x0061, 0x7f6e, 0x0062, 0x7532, 0x3001,
+                                               0x0063, 0x5f8c, 0x0064, 0x7f6e, 0x0065 };
 
-    uno::Reference<beans::XPropertySet> xPropertySet(
-        getStyles("NumberingStyles")->getByName("WWNum1"), uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> xLevels(
-        xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY);
-    uno::Sequence<beans::PropertyValue> aProps;
-    xLevels->getByIndex(0) >>= aProps; // 1st level
-
-    OUString aSuffix, aPrefix;
-    for (int i = 0; i < aProps.getLength(); ++i)
-    {
-        const beans::PropertyValue& rProp = aProps[i];
-
-        if (rProp.Name == "Suffix")
-            aSuffix = rProp.Value.get<OUString>();
-        if (rProp.Name == "Prefix")
-            aPrefix = rProp.Value.get<OUString>();
-    }
-    // Suffix was '\0' instead of ' '.
-    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedPrefix, SAL_N_ELEMENTS(aExpectedPrefix)), aPrefix);
-    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedSuffix, SAL_N_ELEMENTS(aExpectedSuffix)), aSuffix);
+    uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedNumbering, SAL_N_ELEMENTS(aExpectedNumbering)),
+                         getProperty<OUString>(xPara, "ListLabelString"));
 }
 
 CPPUNIT_TEST_FIXTURE(Test, testChtOutlineNumberingRtf)
 {
     load(mpTestDocumentPath, "chtoutline.rtf");
-    const sal_Unicode aExpectedPrefix[2] = { 0x7b2c, 0x0020 };
-    const sal_Unicode aExpectedSuffix[2] = { 0x0020, 0x7ae0 };
-    uno::Reference<text::XChapterNumberingSupplier> xChapterNumberingSupplier(mxComponent,
-                                                                              uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> xLevels(
-        xChapterNumberingSupplier->getChapterNumberingRules());
-    uno::Sequence<beans::PropertyValue> aProps;
-    xLevels->getByIndex(0) >>= aProps; // 1st level
 
-    OUString aSuffix, aPrefix;
-    for (int i = 0; i < aProps.getLength(); ++i)
-    {
-        const beans::PropertyValue& rProp = aProps[i];
+    const sal_Unicode aExpectedNumbering[] = { 0x7b2c, ' ', '1', ' ', 0x7ae0 };
 
-        if (rProp.Name == "Suffix")
-            aSuffix = rProp.Value.get<OUString>();
-        if (rProp.Name == "Prefix")
-            aPrefix = rProp.Value.get<OUString>();
-    }
-    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedPrefix, SAL_N_ELEMENTS(aExpectedPrefix)), aPrefix);
-    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedSuffix, SAL_N_ELEMENTS(aExpectedSuffix)), aSuffix);
+    uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(OUString(aExpectedNumbering, SAL_N_ELEMENTS(aExpectedNumbering)),
+                         getProperty<OUString>(xPara, "ListLabelString"));
 }
 
 CPPUNIT_TEST_FIXTURE(Test, testTdf90046)
diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx
index f57933440278..df3dcf76bfff 100644
--- a/sw/source/core/doc/number.cxx
+++ b/sw/source/core/doc/number.cxx
@@ -639,64 +639,94 @@ OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVecto
         const SwNumFormat& rMyNFormat = Get( static_cast<sal_uInt16>(nLevel) );
 
         {
-            SwNumberTree::tNumberVector::size_type i = nLevel;
+            css::lang::Locale aLocale( LanguageTag::convertToLocale(nLang));
 
-            if( !IsContinusNum() &&
-                // - do not include upper levels, if level isn't numbered.
-                rMyNFormat.GetNumberingType() != SVX_NUM_NUMBER_NONE &&
-                rMyNFormat.GetIncludeUpperLevels() )  // Just the own level?
+            OUString sLevelFormat = rMyNFormat.GetListFormat();
+            if (!sLevelFormat.isEmpty())
             {
-                sal_uInt8 n = rMyNFormat.GetIncludeUpperLevels();
-                if( 1 < n )
+                // In this case we are ignoring GetIncludeUpperLevels: we put all
+                // level nubers requested by level format
+                for (SwNumberTree::tNumberVector::size_type i=0; i <= nLevel; ++i)
                 {
-                    if( i+1 >= n )
-                        i -= n - 1;
+                    OUString sReplacement;
+                    if (rNumVector[i])
+                    {
+                        if (bOnlyArabic)
+                            sReplacement = OUString::number(rNumVector[i]);
+                        else
+                            sReplacement = Get(i).GetNumStr(rNumVector[i], aLocale);
+                    }
                     else
-                        i = 0;
+                        sReplacement = "0";        // all 0 level are a 0
+
+                    OUString sFind("%" + OUString::number(i + 1));
+                    sal_Int32 nPosition = sLevelFormat.indexOf(sFind);
+                    if (nPosition >= 0)
+                        sLevelFormat = sLevelFormat.replaceAt(nPosition, sFind.getLength(), sReplacement);
                 }
+                aStr = sLevelFormat;
             }
-
-            css::lang::Locale aLocale( LanguageTag::convertToLocale(nLang));
-
-            for( ; i <= nLevel; ++i )
+            else
             {
-                const SwNumFormat& rNFormat = Get( i );
-                if( SVX_NUM_NUMBER_NONE == rNFormat.GetNumberingType() )
+                // Fallback case: level format is not defined
+                // So use old way with levels joining by dot "."
+                SwNumberTree::tNumberVector::size_type i = nLevel;
+
+                if (!IsContinusNum() &&
+                    // - do not include upper levels, if level isn't numbered.
+                    rMyNFormat.GetNumberingType() != SVX_NUM_NUMBER_NONE &&
+                    rMyNFormat.GetIncludeUpperLevels())  // Just the own level?
                 {
-                    // Should 1.1.1 --> 2. NoNum --> 1..1 or 1.1 ??
-                    //                 if( i != rNum.nMyLevel )
-                    //                    aStr += ".";
-                    continue;
+                    sal_uInt8 n = rMyNFormat.GetIncludeUpperLevels();
+                    if (1 < n)
+                    {
+                        if (i + 1 >= n)
+                            i -= n - 1;
+                        else
+                            i = 0;
+                    }
                 }
 
-                if( rNumVector[ i ] )
+                for (; i <= nLevel; ++i)
                 {
-                    if( bOnlyArabic )
-                        aStr.append(OUString::number( rNumVector[ i ] ));
+                    const SwNumFormat& rNFormat = Get(i);
+                    if (SVX_NUM_NUMBER_NONE == rNFormat.GetNumberingType())
+                    {
+                        // Should 1.1.1 --> 2. NoNum --> 1..1 or 1.1 ??
+                        //                 if( i != rNum.nMyLevel )
+                        //                    aStr += ".";
+                        continue;
+                    }
+
+                    if (rNumVector[i])
+                    {
+                        if (bOnlyArabic)
+                            aStr.append(OUString::number(rNumVector[i]));
+                        else
+                            aStr.append(rNFormat.GetNumStr(rNumVector[i], aLocale));
+                    }
                     else
-                        aStr.append(rNFormat.GetNumStr( rNumVector[ i ], aLocale ));
+                        aStr.append("0");        // all 0 level are a 0
+                    if (i != nLevel && !aStr.isEmpty())
+                        aStr.append(".");
                 }
-                else
-                    aStr.append("0");        // all 0 level are a 0
-                if( i != nLevel && !aStr.isEmpty() )
-                    aStr.append(".");
-            }
 
-            // The type doesn't have any number, so don't append
-            // the post-/prefix string
-            if( bInclStrings && !bOnlyArabic &&
-                SVX_NUM_CHAR_SPECIAL != rMyNFormat.GetNumberingType() &&
-                SVX_NUM_BITMAP != rMyNFormat.GetNumberingType() )
-            {
-                const OUString& sPrefix = rMyNFormat.GetPrefix();
-                const OUString& sSuffix = rMyNFormat.GetSuffix();
-
-                aStr.insert(0, sPrefix);
-                aStr.append(sSuffix);
-                if ( pExtremities )
+                // The type doesn't have any number, so don't append
+                // the post-/prefix string
+                if (bInclStrings && !bOnlyArabic &&
+                    SVX_NUM_CHAR_SPECIAL != rMyNFormat.GetNumberingType() &&
+                    SVX_NUM_BITMAP != rMyNFormat.GetNumberingType())
                 {
-                    pExtremities->nPrefixChars = sPrefix.getLength();
-                    pExtremities->nSuffixChars = sSuffix.getLength();
+                    const OUString& sPrefix = rMyNFormat.GetPrefix();
+                    const OUString& sSuffix = rMyNFormat.GetSuffix();
+
+                    aStr.insert(0, sPrefix);
+                    aStr.append(sSuffix);
+                    if (pExtremities)
+                    {
+                        pExtremities->nPrefixChars = sPrefix.getLength();
+                        pExtremities->nSuffixChars = sSuffix.getLength();
+                    }
                 }
             }
         }
diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx
index c41d13dea3a8..2b3b08e59b9e 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -1342,6 +1342,10 @@ uno::Sequence<beans::PropertyValue> SwXNumberingRules::GetPropertiesForNumFormat
     aUString = rFormat.GetSuffix();
     aPropertyValues.push_back(comphelper::makePropertyValue("Suffix", aUString));
 
+    //listformat
+    aUString = rFormat.GetListFormat();
+    aPropertyValues.push_back(comphelper::makePropertyValue("ListFormat", aUString));
+
     //char style name
 
     aUString.clear();
@@ -1581,7 +1585,9 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
         // these two are accepted but ignored for some reason
         UNO_NAME_BULLET_REL_SIZE,               // 25
         UNO_NAME_BULLET_COLOR,                  // 26
-        UNO_NAME_GRAPHIC_URL                    // 27
+        UNO_NAME_GRAPHIC_URL,                   // 27
+
+        UNO_NAME_LIST_FORMAT                    // 28
     };
 
     enum {
@@ -2035,6 +2041,13 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
                         bWrongArg = true;
                 }
                 break;
+                case 28: //"ListFormat",
+                {
+                    OUString uTmp;
+                    pProp->Value >>= uTmp;
+                    aFormat.SetListFormat(uTmp);
+                }
+                break;
             }
         }
         if(!bWrongArg && (pSetBrush || pSetSize || pSetVOrient))
diff --git a/sw/source/filter/ww8/wrtw8num.cxx b/sw/source/filter/ww8/wrtw8num.cxx
index e665a253ca3e..afe0204a48cd 100644
--- a/sw/source/filter/ww8/wrtw8num.cxx
+++ b/sw/source/filter/ww8/wrtw8num.cxx
@@ -489,7 +489,13 @@ void MSWordExportBase::NumberingLevel(
     const vcl::Font* pBulletFont=nullptr;
     rtl_TextEncoding eChrSet=0;
     FontFamily eFamily=FAMILY_DECORATIVE;
-    if (SVX_NUM_CHAR_SPECIAL == rFormat.GetNumberingType() ||
+
+    if (!rRule.Get(nLvl).GetListFormat().isEmpty())
+    {
+        // We have stored list format, use it
+        sNumStr = rRule.Get(nLvl).GetListFormat();
+    }
+    else if (SVX_NUM_CHAR_SPECIAL == rFormat.GetNumberingType() ||
         SVX_NUM_BITMAP == rFormat.GetNumberingType())
     {
         sNumStr = OUString(rFormat.GetBulletChar());
diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx
index 32dead60a100..eab1ac81ecc7 100644
--- a/writerfilter/source/dmapper/NumberingManager.cxx
+++ b/writerfilter/source/dmapper/NumberingManager.cxx
@@ -42,6 +42,7 @@
 #include <tools/diagnose_ex.h>
 #include <comphelper/sequence.hxx>
 #include <comphelper/propertyvalue.hxx>
+#include <comphelper/string.hxx>
 
 using namespace com::sun::star;
 
@@ -149,55 +150,6 @@ void ListLevel::SetParaStyle( const tools::SvRef< StyleSheetEntry >& pStyle )
         && styleId[ RTL_CONSTASCII_LENGTH( "Heading " ) ] <= '9' );
 }
 
-sal_Int16 ListLevel::GetParentNumbering( const OUString& sText, sal_Int16 nLevel,
-        OUString& rPrefix, OUString& rSuffix )
-{
-    sal_Int16 nParentNumbering = 1;
-
-    //now parse the text to find %n from %1 to %nLevel+1
-    //everything before the first % and the last %x is prefix and suffix
-    OUString sLevelText( sText );
-    sal_Int32 nCurrentIndex = 0;
-    sal_Int32 nFound = sLevelText.indexOf( '%', nCurrentIndex );
-    if( nFound > 0 )
-    {
-        rPrefix = sLevelText.copy( 0, nFound );
-        sLevelText = sLevelText.copy( nFound );
-    }
-    sal_Int32 nMinLevel = nLevel;
-    //now the text should either be empty or start with %
-    nFound = sLevelText.getLength( ) > 1 ? 0 : -1;
-    while( nFound >= 0 )
-    {
-        if( sLevelText.getLength() > 1 )
-        {
-            sal_Unicode cLevel = sLevelText[1];
-            if( cLevel >= '1' && cLevel <= '9' )
-            {
-                if( cLevel - '1' < nMinLevel )
-                    nMinLevel = cLevel - '1';
-                //remove first char - next char is removed later
-                sLevelText = sLevelText.copy( 1 );
-            }
-        }
-        //remove old '%' or number
-        sLevelText = sLevelText.copy( 1 );
-        nCurrentIndex = 0;
-        nFound = sLevelText.indexOf( '%', nCurrentIndex );
-        //remove the text before the next %
-        if(nFound > 0)
-            sLevelText = sLevelText.copy( nFound -1 );
-    }
-    if( nMinLevel < nLevel )
-    {
-        nParentNumbering = sal_Int16( nLevel - nMinLevel + 1);
-    }
-
-    rSuffix = sLevelText;
-
-    return nParentNumbering;
-}
-
 uno::Sequence<beans::PropertyValue> ListLevel::GetProperties(bool bDefaults)
 {
     uno::Sequence<beans::PropertyValue> aLevelProps = GetLevelProperties(bDefaults);
@@ -588,19 +540,11 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper,
                 if (pLevel.get() && !pLevel->GetBulletChar().isEmpty())
                     sText = pLevel->GetBulletChar( );
 
-                OUString sPrefix;
-                OUString sSuffix;
-                OUString& rPrefix = sPrefix;
-                OUString& rSuffix = sSuffix;
-                sal_Int16 nParentNum = ListLevel::GetParentNumbering(
-                       sText, nLevel, rPrefix, rSuffix );
-
-                aLvlProps.push_back(comphelper::makePropertyValue(getPropertyName(PROP_PREFIX), rPrefix));
-
                 if (sText.isEmpty())
                 {
                     // Empty <w:lvlText>? Then put a Unicode "zero width space" as a suffix, so LabelFollowedBy is still shown, as in Word.
                     // With empty suffix, Writer does not show LabelFollowedBy, either.
+                    OUString sSuffix;
                     auto it = std::find_if(aLvlProps.begin(), aLvlProps.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "NumberingType"; });
                     if (it != aLvlProps.end())
                     {
@@ -617,12 +561,19 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper,
                         }
 
                         if (bLabelFollowedBy && nNumberFormat == style::NumberingType::NUMBER_NONE)
-                            rSuffix = OUString(u'\x200B');
+                            sSuffix = OUString(u'\x200B');
                     }
+                    aLvlProps.push_back(comphelper::makePropertyValue(getPropertyName(PROP_SUFFIX), sSuffix));
                 }
+                else
+                {
+                    aLvlProps.push_back(comphelper::makePropertyValue(getPropertyName(PROP_LIST_FORMAT), sText));
 
-                aLvlProps.push_back(comphelper::makePropertyValue(getPropertyName(PROP_SUFFIX), rSuffix));
-                aLvlProps.push_back(comphelper::makePropertyValue(getPropertyName(PROP_PARENT_NUMBERING), nParentNum));
+                    // Total count of replacement holders is determining amount of required parent numbering to include
+                    // TODO: not sure how "%" symbol is escaped. This is not supported yet
+                    sal_Int16 nParentNum = comphelper::string::getTokenCount(sText, '%');
+                    aLvlProps.push_back(comphelper::makePropertyValue(getPropertyName(PROP_PARENT_NUMBERING), nParentNum));
+                }
 
                 aLvlProps.push_back(comphelper::makePropertyValue(getPropertyName(PROP_POSITION_AND_SPACE_MODE), sal_Int16(text::PositionAndSpaceMode::LABEL_ALIGNMENT)));
 
diff --git a/writerfilter/source/dmapper/NumberingManager.hxx b/writerfilter/source/dmapper/NumberingManager.hxx
index c0e68d9327a5..3949c3bf7dcd 100644
--- a/writerfilter/source/dmapper/NumberingManager.hxx
+++ b/writerfilter/source/dmapper/NumberingManager.hxx
@@ -86,11 +86,6 @@ public:
     bool HasValues() const;
 
     // UNO mapping functions
-
-    // rPrefix and rSuffix are out parameters
-    static sal_Int16 GetParentNumbering( const OUString& sText, sal_Int16 nLevel,
-        OUString& rPrefix, OUString& rSuffix );
-
     css::uno::Sequence<css::beans::PropertyValue> GetProperties(bool bDefaults);
 
     css::uno::Sequence<css::beans::PropertyValue> GetCharStyleProperties();
diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx
index 0d5740e9fa83..6fecf7fe2be4 100644
--- a/writerfilter/source/dmapper/PropertyIds.cxx
+++ b/writerfilter/source/dmapper/PropertyIds.cxx
@@ -207,6 +207,7 @@ OUString getPropertyName( PropertyIds eId )
         case PROP_LEVEL_FOLLOW           :    sName = "LabelFollowedBy"; break;
         case PROP_LEVEL_PARAGRAPH_STYLES :    sName = "LevelParagraphStyles"; break;
         case PROP_LEVEL_FORMAT           :    sName = "LevelFormat"; break;
+        case PROP_LIST_FORMAT            :    sName = "ListFormat"; break;
         case PROP_TOKEN_TYPE             :    sName = "TokenType"; break;
         case PROP_TOKEN_HYPERLINK_START  :    sName = "TokenHyperlinkStart"; break;
         case PROP_TOKEN_HYPERLINK_END    :    sName = "TokenHyperlinkEnd"; break;
diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx
index a1a0c8f851a1..d511fd737238 100644
--- a/writerfilter/source/dmapper/PropertyIds.hxx
+++ b/writerfilter/source/dmapper/PropertyIds.hxx
@@ -205,6 +205,7 @@ enum PropertyIds
         ,PROP_LEVEL_FORMAT
         ,PROP_LEVEL_PARAGRAPH_STYLES
         ,PROP_LISTTAB_STOP_POSITION
+        ,PROP_LIST_FORMAT
         ,PROP_MACRO_NAME
         ,PROP_NAME
         ,PROP_NUMBERING_LEVEL
commit c53e212accd8b95ede9a707f44cf88bfbf1ea922
Author:     Vasily Melenchuk <vasily.melenchuk at cib.de>
AuthorDate: Fri Apr 17 12:58:59 2020 +0300
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed May 6 22:26:59 2020 +0200

    tdf#108496: DOCX: redesign of override in lists
    
    List level overrides are not just about numbering,
    it is about numbering restart. Thus some changes to DOCX
    import/export were added.
    
    Improved support for several lists referring the same
    abstract list, especially in situation when one list
    have overrides.
    
    In addition some export cleanup is made: less unnecessary
    list duplications, less level overrides when no properties
    were changed.
    
    Change-Id: Ic7a69bc2e3080b39f5205cb90b46d14247abf305
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92412
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    
    Change-Id: I35937449bd563eacceb3753e62b9ff7245f12b89
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92739
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93455

diff --git a/sw/qa/extras/ooxmlexport/data/tdf108496.docx b/sw/qa/extras/ooxmlexport/data/tdf108496.docx
new file mode 100644
index 000000000000..123d9e0a6549
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf108496.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 10cb4292ef90..e144e6178129 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -789,8 +789,14 @@ DECLARE_OOXMLEXPORT_TEST(testNumOverrideLvltext, "num-override-lvltext.docx")
 DECLARE_OOXMLEXPORT_TEST(testNumOverrideStart, "num-override-start.docx")
 {
     uno::Reference<container::XIndexAccess> xRules = getProperty< uno::Reference<container::XIndexAccess> >(getStyles("NumberingStyles")->getByName("WWNum1"), "NumberingRules");
-    // This was 1, i.e. the numbering on the second level was "1.1", not "1.3".
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(3), comphelper::SequenceAsHashMap(xRules->getByIndex(1))["StartWith"].get<sal_Int16>());
+    // List starts with "1.1"
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), comphelper::SequenceAsHashMap(xRules->getByIndex(1))["StartWith"].get<sal_Int16>());
+    // But paragraph starts with "1.3"
+    uno::Reference<beans::XPropertySet> xPara(getParagraph(1), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(1), getProperty<sal_Int16>(xPara, "NumberingLevel"));
+    OUString listId;
+    CPPUNIT_ASSERT(xPara->getPropertyValue("ListId") >>= listId);
+    CPPUNIT_ASSERT_EQUAL(OUString("1.3"), getProperty<OUString>(xPara, "ListLabelString"));
 }
 
 DECLARE_OOXMLEXPORT_TEST(testTextboxRightEdge, "textbox-right-edge.docx")
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
index 47db568932bd..e586a666dff4 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
@@ -176,6 +176,83 @@ DECLARE_OOXMLEXPORT_TEST(testTdf95848_2, "tdf95848_2.docx")
     }
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf108496, "tdf108496.docx")
+{
+    OUString listId;
+    OUString listStyle;
+    // Lists with override
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(2), uno::UNO_QUERY);
+        CPPUNIT_ASSERT(xPara->getPropertyValue("NumberingStyleName") >>= listStyle);
+        CPPUNIT_ASSERT(listStyle.startsWith("WWNum"));
+        CPPUNIT_ASSERT(xPara->getPropertyValue("ListId") >>= listId);
+        CPPUNIT_ASSERT_EQUAL(OUString("1"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(3), uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(listStyle, getProperty<OUString>(xPara, "NumberingStyleName"));
+        CPPUNIT_ASSERT_EQUAL(listId, getProperty<OUString>(xPara, "ListId"));
+        CPPUNIT_ASSERT_EQUAL(OUString("2"), getProperty<OUString>(xPara, "ListLabelString"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(5), uno::UNO_QUERY);
+        // different numbering style
+        OUString listStyle2;
+        CPPUNIT_ASSERT(xPara->getPropertyValue("NumberingStyleName") >>= listStyle2);
+        CPPUNIT_ASSERT(listStyle2.startsWith("WWNum"));
+        CPPUNIT_ASSERT(listStyle2 != listStyle);
+        // restarted numeration due to override
+        CPPUNIT_ASSERT_EQUAL(OUString("1"), getProperty<OUString>(xPara, "ListLabelString"));
+        CPPUNIT_ASSERT_EQUAL(listId, getProperty<OUString>(xPara, "ListId"));
+    }
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(6), uno::UNO_QUERY);
+        // different numbering style
+        OUString listStyle2;
+        CPPUNIT_ASSERT(xPara->getPropertyValue("NumberingStyleName") >>= listStyle2);
+        CPPUNIT_ASSERT(listStyle2.startsWith("WWNum"));
+        // restarted numeration due to override
+        CPPUNIT_ASSERT_EQUAL(OUString("2"), getProperty<OUString>(xPara, "ListLabelString"));
+        CPPUNIT_ASSERT_EQUAL(listId, getProperty<OUString>(xPara, "ListId"));
+    }
+
+    // Lists without override
+    {
+        uno::Reference<beans::XPropertySet> xPara(getParagraph(8), uno::UNO_QUERY);
+        CPPUNIT_ASSERT(xPara->getPropertyValue("NumberingStyleName") >>= listStyle);

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list