[Libreoffice-commits] core.git: Branch 'libreoffice-6-3' - sw/qa sw/source writerfilter/source
Serge Krot (via logerrit)
logerrit at kemper.freedesktop.org
Tue Jun 18 09:39:39 UTC 2019
sw/qa/extras/rtfexport/data/tdf125719_case_1.rtf | 108 ++++++++++++
sw/qa/extras/rtfexport/data/tdf125719_case_2.rtf | 139 ++++++++++++++++
sw/qa/extras/rtfexport/rtfexport3.cxx | 19 ++
sw/source/filter/ww8/rtfattributeoutput.cxx | 194 +++++++++++++----------
sw/source/filter/ww8/rtfattributeoutput.hxx | 9 -
sw/source/filter/ww8/rtfsdrexport.cxx | 6
writerfilter/source/rtftok/rtfdispatchflag.cxx | 17 +-
writerfilter/source/rtftok/rtfdispatchvalue.cxx | 77 +++++----
writerfilter/source/rtftok/rtfdocumentimpl.cxx | 49 ++++-
writerfilter/source/rtftok/rtfdocumentimpl.hxx | 11 -
10 files changed, 495 insertions(+), 134 deletions(-)
New commits:
commit 3c1f6fc029ab8ff9129f2316a3d7c81bc7b69125
Author: Serge Krot <Serge.Krot at cib.de>
AuthorDate: Thu May 30 15:33:29 2019 +0200
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Tue Jun 18 11:38:53 2019 +0200
tdf#125719 sw: rtf: refactor associated character properties
1. \rtlch, \ltrch should be placed before their properties.
2. Do not mix associated and normal character properties in output.
3. Do not output empty "\rtlch \ltrch", "\ltrch \rtlch" pairs.
4. Handle associated character properties runs instead of
handling separately their parts without order of them.
Change-Id: Ibbf7365d04708682a5f1eb664a579c60a47465d2
Reviewed-on: https://gerrit.libreoffice.org/72578
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
(cherry picked from commit fd95fb975b754d71d3750e85431a4e596a40e659)
Reviewed-on: https://gerrit.libreoffice.org/73868
Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
diff --git a/sw/qa/extras/rtfexport/data/tdf125719_case_1.rtf b/sw/qa/extras/rtfexport/data/tdf125719_case_1.rtf
new file mode 100644
index 000000000000..96b66450aa71
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/tdf125719_case_1.rtf
@@ -0,0 +1,108 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch37\stshfhich37\stshfbi37\deflang1033\deflangfe1033\themelang1031\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Geneva};}
+{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt Arial};}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}
+{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings{\*\falt Courier New};}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
+{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri{\*\falt Calibri};}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}
+{\f39\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}FONT_Type V2 Bold{\*\falt Times New Roman};}{\f40\fbidi \fnil\fcharset0\fprq0{\*\panose 00000000000000000000}FONT_TypeGlobalPro-Bold{\*\falt Times New Roman};}
+{\f41\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}FONT_Type V2 Light{\*\falt Times New Roman};}{\f42\fbidi \fnil\fcharset0\fprq0{\*\panose 00000000000000000000}FONT_TypeGlobalPro-Regular{\*\falt Times New Roman};}
+{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Geneva};}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Geneva};}
+{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Geneva};}
+{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Geneva};}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Geneva};}
+{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri{\*\falt Calibri};}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Geneva};}
+{\f320\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Geneva};}{\f321\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Geneva};}{\f323\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Geneva};}
+{\f324\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Geneva};}{\f325\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Geneva};}{\f326\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Geneva};}
+{\f327\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Geneva};}{\f328\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Geneva};}{\f330\fbidi \fswiss\fcharset238\fprq2 Arial CE{\*\falt Arial};}
+{\f331\fbidi \fswiss\fcharset204\fprq2 Arial Cyr{\*\falt Arial};}{\f333\fbidi \fswiss\fcharset161\fprq2 Arial Greek{\*\falt Arial};}{\f334\fbidi \fswiss\fcharset162\fprq2 Arial Tur{\*\falt Arial};}
+{\f335\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew){\*\falt Arial};}{\f336\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic){\*\falt Arial};}{\f337\fbidi \fswiss\fcharset186\fprq2 Arial Baltic{\*\falt Arial};}
+{\f338\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese){\*\falt Arial};}{\f340\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f341\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f343\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}
+{\f344\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f345\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f346\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f347\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}
+{\f348\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f660\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f661\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f663\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}
+{\f664\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f667\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f668\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f690\fbidi \fswiss\fcharset238\fprq2 Calibri CE{\*\falt Calibri};}
+{\f691\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr{\*\falt Calibri};}{\f693\fbidi \fswiss\fcharset161\fprq2 Calibri Greek{\*\falt Calibri};}{\f694\fbidi \fswiss\fcharset162\fprq2 Calibri Tur{\*\falt Calibri};}
+{\f697\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic{\*\falt Calibri};}{\f698\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese){\*\falt Calibri};}{\f700\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f701\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}
+{\f703\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f704\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f705\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f706\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}
+{\f707\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f708\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f709\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f710\fbidi \fnil\fcharset238\fprq2 FONT_Type V2 Bold CE{\*\falt Times New Roman};}
+{\f711\fbidi \fnil\fcharset204\fprq2 FONT_Type V2 Bold Cyr{\*\falt Times New Roman};}{\f713\fbidi \fnil\fcharset161\fprq2 FONT_Type V2 Bold Greek{\*\falt Times New Roman};}{\f714\fbidi \fnil\fcharset162\fprq2 FONT_Type V2 Bold Tur{\*\falt Times New Roman};}
+{\f717\fbidi \fnil\fcharset186\fprq2 FONT_Type V2 Bold Baltic{\*\falt Times New Roman};}{\f730\fbidi \fnil\fcharset238\fprq2 FONT_Type V2 Light CE{\*\falt Times New Roman};}{\f731\fbidi \fnil\fcharset204\fprq2 FONT_Type V2 Light Cyr{\*\falt Times New Roman};}
+{\f733\fbidi \fnil\fcharset161\fprq2 FONT_Type V2 Light Greek{\*\falt Times New Roman};}{\f734\fbidi \fnil\fcharset162\fprq2 FONT_Type V2 Light Tur{\*\falt Times New Roman};}
+{\f737\fbidi \fnil\fcharset186\fprq2 FONT_Type V2 Light Baltic{\*\falt Times New Roman};}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Geneva};}
+{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Geneva};}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Geneva};}
+{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Geneva};}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Geneva};}
+{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Geneva};}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Geneva};}
+{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Geneva};}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Geneva};}
+{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Geneva};}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Geneva};}
+{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Geneva};}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Geneva};}
+{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Geneva};}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Geneva};}
+{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Geneva};}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
+{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
+{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Geneva};}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Geneva};}
+{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Geneva};}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Geneva};}
+{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Geneva};}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Geneva};}
+{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Geneva};}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Geneva};}
+{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Geneva};}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Geneva};}
+{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Geneva};}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Geneva};}
+{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Geneva};}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Geneva};}
+{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Geneva};}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Geneva};}
+{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Geneva};}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Geneva};}
+{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Geneva};}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Geneva};}
+{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Geneva};}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Geneva};}
+{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Geneva};}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Geneva};}
+{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE{\*\falt Calibri};}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr{\*\falt Calibri};}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek{\*\falt Calibri};}
+{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur{\*\falt Calibri};}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic{\*\falt Calibri};}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese){\*\falt Calibri};}
+{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Geneva};}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Geneva};}
+{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Geneva};}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Geneva};}
+{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Geneva};}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Geneva};}
+{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Geneva};}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Geneva};}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
+\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
+\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red38\green38\blue38;}{\*\defchp \f37 }{\*\defpap \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{
+\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033
+\snext0 \sqformat \spriority0 \styrsid6161719 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs20\alang1025 \ltrch\fcs0 \f37\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{
+\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 \f38\fs16\lang1031\langfe1033\cgrid\langnp1031\langfenp1033
+\sbasedon0 \snext15 \slink16 \ssemihidden \sunhideused \styrsid16475130 Balloon Text;}{\*\cs16 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \f38\fs16 \sbasedon10 \slink15 \slocked \ssemihidden \styrsid16475130 Balloon Text Char;}{\*\cs17 \additive \rtlch\fcs1
+\af0 \ltrch\fcs0 \fs16 \sbasedon10 \ssemihidden \sunhideused \styrsid16659984 annotation reference;}{\s18\ql \li0\ri0\sa200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\f37\fs20\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext18 \slink19 \ssemihidden \sunhideused \styrsid16659984 annotation text;}{\*\cs19 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \fs20
+\sbasedon10 \slink18 \slocked \ssemihidden \styrsid16659984 Comment Text Char;}{\s20\ql \li0\ri0\sa200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025 \ltrch\fcs0
+\b\f37\fs20\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \sbasedon18 \snext18 \slink21 \ssemihidden \sunhideused \styrsid16659984 annotation subject;}{\*\cs21 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \b\fs20
+\sbasedon19 \slink20 \slocked \ssemihidden \styrsid16659984 Comment Subject Char;}{\s22\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
+\f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext22 \shidden \ssemihidden \styrsid13713626 Revision;}{\s23\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext23 \slink24 \sunhideused \styrsid3476192 header;}{\*\cs24 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \slink23 \slocked \styrsid3476192
+Header Char;}{\s25\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033
+\sbasedon0 \snext25 \slink26 \sunhideused \styrsid3476192 footer;}{\*\cs26 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \slink25 \slocked \styrsid3476192 Footer Char;}{
+\s27\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f37\fs20\lang1031\langfe1033\cgrid\langnp1031\langfenp1033
+\sbasedon0 \snext27 \slink28 \ssemihidden \sunhideused \styrsid11876383 footnote text;}{\*\cs28 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \fs20 \sbasedon10 \slink27 \slocked \ssemihidden \styrsid11876383 Footnote Text Char;}{\*\cs29 \additive \rtlch\fcs1
+\af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden \sunhideused \styrsid11876383 footnote reference;}{\s30\ql \li720\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1
+\af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext30 \sqformat \spriority34 \styrsid10436873 List Paragraph;}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0
+\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}
+{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0
+\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\creatim\yr2017\mo2\dy28\hr12\min3}
+{\revtim\yr2017\mo5\dy11\hr10\min9}{\version1}{\edmins0}{\nofpages1}{\nofwords460}{\nofchars2625}{\nofcharsws3079}{\vern49167}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
+\paperw11906\paperh16838\margl1418\margr1133\margt1135\margb1134\gutter0\ltrsect
+\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting0\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0
+\showxmlerrors1\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphauto1\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1418\dgvorigin1135\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale120\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\rempersonalinfo\allowfieldendsel
+\wrppunct\asianbrkrule\rsidroot6582233\newtblstyruls\nogrowautofit\remdttm\utinl \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3476192 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1520434
+\chftnsep
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3476192 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1520434 \chftnsepc
+\par }}{\*\ftncn \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid1520434
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3476192 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1520434 \chftnsep
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3476192 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1520434 \chftnsepc
+\par }}{\*\aftncn \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid1520434
+\par }}\ltrpar \sectd \ltrsect\linex0\headery709\footery709\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid4596230\sftnbj
+
+\pard\plain \ltrpar\qj \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4344489 \rtlch\fcs1
+\af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \ab\af39\afs36 \ltrch\fcs0 \f39\fs36\cf17\lang1033\langfe1033\langnp1033\insrsid7415925 First }{\rtlch\fcs1 \ab\af39\afs36 \ltrch\fcs0 \f39\fs36\cf1\lang1033\langfe1033\langnp1033\insrsid5915805\charrsid5915805 paragraph
+\par }
+
+{\rtlch\fcs1 \ab\af39\afs14 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid12331134\charrsid5915805
+\par }{\rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid1340692\charrsid1340692 Third }{\rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid13904761\charrsid13904761
+paragraph}{\rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0
+\f39\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid1340692
+\par }
+}
\ No newline at end of file
diff --git a/sw/qa/extras/rtfexport/data/tdf125719_case_2.rtf b/sw/qa/extras/rtfexport/data/tdf125719_case_2.rtf
new file mode 100644
index 000000000000..c7de0cedd60e
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/tdf125719_case_2.rtf
@@ -0,0 +1,139 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch37\stshfhich37\stshfbi37\deflang1033\deflangfe1033\themelang1031\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}
+{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}
+{\f39\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}FONT_Type V2 Bold;}{\f40\fbidi \fnil\fcharset0\fprq0{\*\panose 00000000000000000000}FONT_TypeGlobalPro-Bold{\*\falt Times New Roman};}
+{\f41\fbidi \fnil\fcharset0\fprq2{\*\panose 00000000000000000000}FONT_Type V2 Light;}{\f42\fbidi \fnil\fcharset0\fprq0{\*\panose 00000000000000000000}FONT_TypeGlobalPro-Regular{\*\falt Times New Roman};}
+{\f43\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0504030000020003}MNTypeRegular;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
+{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f320\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f321\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f323\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f324\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f325\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f326\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f327\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f328\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f330\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f331\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
+{\f333\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f334\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f335\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f336\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
+{\f337\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f338\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f340\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f341\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}
+{\f343\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f344\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f345\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f346\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}
+{\f347\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f348\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f660\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f661\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
+{\f663\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f664\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f667\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f668\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
+{\f690\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f691\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f693\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f694\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
+{\f697\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f698\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\f700\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f701\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}
+{\f703\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f704\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f705\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f706\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}
+{\f707\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f708\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f709\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f710\fbidi \fnil\fcharset238\fprq2 FONT_Type V2 Bold CE;}
+{\f711\fbidi \fnil\fcharset204\fprq2 FONT_Type V2 Bold Cyr;}{\f713\fbidi \fnil\fcharset161\fprq2 FONT_Type V2 Bold Greek;}{\f714\fbidi \fnil\fcharset162\fprq2 FONT_Type V2 Bold Tur;}{\f717\fbidi \fnil\fcharset186\fprq2 FONT_Type V2 Bold Baltic;}
+{\f730\fbidi \fnil\fcharset238\fprq2 FONT_Type V2 Light CE;}{\f731\fbidi \fnil\fcharset204\fprq2 FONT_Type V2 Light Cyr;}{\f733\fbidi \fnil\fcharset161\fprq2 FONT_Type V2 Light Greek;}{\f734\fbidi \fnil\fcharset162\fprq2 FONT_Type V2 Light Tur;}
+{\f737\fbidi \fnil\fcharset186\fprq2 FONT_Type V2 Light Baltic;}{\f750\fbidi \fswiss\fcharset238\fprq2 MNTypeRegular CE;}{\f754\fbidi \fswiss\fcharset162\fprq2 MNTypeRegular Tur;}{\f757\fbidi \fswiss\fcharset186\fprq2 MNTypeRegular Baltic;}
+{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
+{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
+{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red38\green38\blue38;}{\*\defchp \f37 }{\*\defpap \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }
+\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033
+\snext0 \sqformat \spriority0 \styrsid6161719 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs20\alang1025 \ltrch\fcs0 \f37\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{
+\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 \f38\fs16\lang1031\langfe1033\cgrid\langnp1031\langfenp1033
+\sbasedon0 \snext15 \slink16 \ssemihidden \sunhideused \styrsid16475130 Balloon Text;}{\*\cs16 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \f38\fs16 \sbasedon10 \slink15 \slocked \ssemihidden \styrsid16475130 Balloon Text Char;}{\*\cs17 \additive \rtlch\fcs1
+\af0 \ltrch\fcs0 \fs16 \sbasedon10 \ssemihidden \sunhideused \styrsid16659984 annotation reference;}{\s18\ql \li0\ri0\sa200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\f37\fs20\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext18 \slink19 \ssemihidden \sunhideused \styrsid16659984 annotation text;}{\*\cs19 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \fs20
+\sbasedon10 \slink18 \slocked \ssemihidden \styrsid16659984 Comment Text Char;}{\s20\ql \li0\ri0\sa200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025 \ltrch\fcs0
+\b\f37\fs20\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \sbasedon18 \snext18 \slink21 \ssemihidden \sunhideused \styrsid16659984 annotation subject;}{\*\cs21 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \b\fs20
+\sbasedon19 \slink20 \slocked \ssemihidden \styrsid16659984 Comment Subject Char;}{\s22\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
+\f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext22 \shidden \ssemihidden \styrsid13713626 Revision;}{\s23\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext23 \slink24 \sunhideused \styrsid3476192 header;}{\*\cs24 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \slink23 \slocked \styrsid3476192
+Header Char;}{\s25\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033
+\sbasedon0 \snext25 \slink26 \sunhideused \styrsid3476192 footer;}{\*\cs26 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \slink25 \slocked \styrsid3476192 Footer Char;}{
+\s27\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f37\fs20\lang1031\langfe1033\cgrid\langnp1031\langfenp1033
+\sbasedon0 \snext27 \slink28 \ssemihidden \sunhideused \styrsid11876383 footnote text;}{\*\cs28 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \fs20 \sbasedon10 \slink27 \slocked \ssemihidden \styrsid11876383 Footnote Text Char;}{\*\cs29 \additive \rtlch\fcs1
+\af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden \sunhideused \styrsid11876383 footnote reference;}{\s30\ql \li720\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1
+\af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext30 \sqformat \spriority34 \styrsid10436873 List Paragraph;}}{\*\listtable{\list\listtemplateid-1991316730{\listlevel\levelnfc0\levelnfcn0
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'031.\'00;}{\levelnumbers\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0
+\ltrch\fcs0 \fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li3600\lin3600 }
+{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers
+\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-180\li6480\lin6480 }{\listname ;}\listid127171408{\*\liststylename Formatvorlage2;}\spriority0 }{\list\listtemplateid1588209532{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b\i0\f1\fs24\cf1\fbias0 \fi-567\li567\lin567 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\i0\f1\fs24\fbias0 \fi-567\li567\lin567 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\i0\f1\fs24\fbias0 \fi-567\li567\lin567 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0
+\ltrch\fcs0 \fbias0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-180\li4320\lin4320 }
+{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-180\li6480\lin6480 }{\listname ;}\listid206382875{\*\liststylename Formatvorlage1;}\spriority0 }{\list\listtemplateid-1885017660\listhybrid{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid354566070\'01\u-4051 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li861\lin861 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1581\lin1581 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
+\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2301\lin2301 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3021\lin3021 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
+\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3741\lin3741 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0 \fi-360\li4461\lin4461 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0
+\fi-360\li5181\lin5181 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5901\lin5901 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6621\lin6621 }{\listname ;}\listid1240601128}
+{\list\listtemplateid-185571930\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67567631\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
+\fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567641\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567643\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567631\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567641\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567643\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567631\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567641\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67567643\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-180\li6480\lin6480 }{\listname ;}\listid1592548227}}{\*\listoverridetable{\listoverride\listid206382875\listoverridecount0\ls1}{\listoverride\listid127171408\listoverridecount0\ls2}{\listoverride\listid1592548227\listoverridecount0\ls3}
+{\listoverride\listid1240601128\listoverridecount0\ls4}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0
+\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}
+{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0
+\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\creatim\yr2017\mo2\dy28\hr12\min10}{\revtim\yr2017\mo5\dy11\hr10\min24}{\version1}{\edmins0}{\nofpages1}
+{\nofwords465}{\nofchars2652}{\nofcharsws3111}{\vern49167}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw11906\paperh16838\margl1418\margr1133\margt1135\margb1134\gutter0\ltrsect
+\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting0\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0
+\showxmlerrors1\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphauto1\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1418\dgvorigin1135\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\rempersonalinfo\allowfieldendsel
+\wrppunct\asianbrkrule\rsidroot6582233\newtblstyruls\nogrowautofit\remdttm\utinl \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3476192 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13328536
+\chftnsep
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3476192 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13328536 \chftnsepc
+\par }}{\*\ftncn \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid13328536
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3476192 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13328536 \chftnsep
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid3476192 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13328536 \chftnsepc
+\par }}{\*\aftncn \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid13328536
+\par }}\ltrpar \sectd \ltrsect\linex0\headery709\footery709\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid4596230\sftnbj \pard\plain \ltrpar\qj \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid5441429 \rtlch\fcs1
+\af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033
+
+
+{\rtlch\fcs1 \ab\af39\afs36 \ltrch\fcs0 \b\f43\fs36\cf17\lang1033\langfe1033\langnp1033\insrsid7415925\charrsid10836779 First }
+{\rtlch\fcs1 \ab\af39\afs36 \ltrch\fcs0 \b\f43\fs36\cf17\lang1033\langfe1033\langnp1033\insrsid934403\charrsid10836779 paragraph}
+{\rtlch\fcs1 \ab\af39\afs36 \ltrch\fcs0 \b\f43\fs36\cf1\lang1033\langfe1033\langnp1033\insrsid5915805\charrsid10836779
+\par }{\rtlch\fcs1 \ab\af39\afs14 \ltrch\fcs0 \b\f43\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid12331134\charrsid10836779
+\par }{\rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\f43\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid1340692\charrsid10836779 Third }{\rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\f43\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid13904761\charrsid10836779
+paragraph }{\rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0
+\b\f43\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid1340692\charrsid10836779
+\par }{\rtlch\fcs1 \ab\af40\afs20 \ltrch\fcs0 \b\f43\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid16475130\charrsid10836779
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f43\fs20\cf1\insrsid7279242\charrsid10836779 \hich\af43\dbch\af0\loch\f43 1.\tab}}\pard \ltrpar\qj \fi-567\li567\ri0\widctlpar\wrapdefault\faauto\ls3\rin0\lin567\itap0\pararsid5441429 {
+\rtlch\fcs1 \af41\afs20 \ltrch\fcs0 \f43\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid7279242\charrsid10836779 5th}{\rtlch\fcs1 \af41\afs20 \ltrch\fcs0 \f43\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid7415925\charrsid10836779 }{\rtlch\fcs1
+\af41\afs20 \ltrch\fcs0 \f43\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid2952472\charrsid10836779 paragraph}{\rtlch\fcs1 \af41\afs20 \ltrch\fcs0
+\f43\fs20\cf1\lang1033\langfe1033\langnp1033\insrsid7279242\charrsid10836779 .
+\par }{\rtlch\fcs1 \af42\afs16 \ltrch\fcs0 \f43\fs16\lang1033\langfe1033\langnp1033\insrsid934403\charrsid10836779
+\par }
+}
\ No newline at end of file
diff --git a/sw/qa/extras/rtfexport/rtfexport3.cxx b/sw/qa/extras/rtfexport/rtfexport3.cxx
index 5b7e66f28867..dabe25ed2441 100644
--- a/sw/qa/extras/rtfexport/rtfexport3.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport3.cxx
@@ -12,6 +12,7 @@
#include <com/sun/star/text/XFootnote.hpp>
#include <com/sun/star/text/XFootnotesSupplier.hpp>
#include <com/sun/star/text/TextContentAnchorType.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
class Test : public SwModelTestBase
{
@@ -228,6 +229,24 @@ DECLARE_RTFEXPORT_TEST(testTdf122455, "tdf122455.rtf")
CPPUNIT_ASSERT_EQUAL(16.0, getProperty<double>(getRun(getParagraph(1), 1), "CharHeight"));
}
+DECLARE_RTFEXPORT_TEST(testTdf125719_case_1, "tdf125719_case_1.rtf")
+{
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::NORMAL,
+ getProperty<float>(getRun(getParagraph(1), 1), "CharWeight"));
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::NORMAL,
+ getProperty<float>(getRun(getParagraph(3), 1), "CharWeight"));
+}
+
+DECLARE_RTFEXPORT_TEST(testTdf125719_case_2, "tdf125719_case_2.rtf")
+{
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD,
+ getProperty<float>(getRun(getParagraph(1), 1), "CharWeight"));
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD,
+ getProperty<float>(getRun(getParagraph(3), 1), "CharWeight"));
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::NORMAL,
+ getProperty<float>(getRun(getParagraph(5), 1), "CharWeight"));
+}
+
DECLARE_RTFEXPORT_TEST(testTabs, "tabs.rtf")
{
// Test tab alignment in decimal mode.
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index aa26ec93a772..427b110a5e02 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -202,43 +202,9 @@ static OString OutBorderLine(RtfExport const& rExport, const editeng::SvxBorderL
void RtfAttributeOutput::RTLAndCJKState(bool bIsRTL, sal_uInt16 nScript)
{
- /*
- You would have thought that
- m_rExport.Strm() << (bIsRTL ? OOO_STRING_SVTOOLS_RTF_RTLCH : OOO_STRING_SVTOOLS_RTF_LTRCH); would be sufficient here ,
- but looks like word needs to see the other directional token to be
- satisfied that all is kosher, otherwise it seems in ver 2003 to go and
- semi-randomly stick strike through about the place. Perhaps
- strikethrough is some ms developers "something is wrong signal" debugging
- code that we're triggering ?
- */
- if (bIsRTL)
- {
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_LTRCH);
- m_aStylesEnd.append(' ');
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_RTLCH);
- }
- else
- {
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_RTLCH);
- m_aStylesEnd.append(' ');
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_LTRCH);
- }
-
- switch (nScript)
- {
- case i18n::ScriptType::LATIN:
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_LOCH);
- break;
- case i18n::ScriptType::ASIAN:
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_DBCH);
- break;
- case i18n::ScriptType::COMPLEX:
- /* noop */
- break;
- default:
- /* should not happen? */
- break;
- }
+ m_bIsRTL = bIsRTL;
+ m_nScript = nScript;
+ m_bControlLtrRtl = true;
}
void RtfAttributeOutput::StartParagraph(ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo)
@@ -412,8 +378,8 @@ void RtfAttributeOutput::EndParagraphProperties(
const SwRedlineData* /*pRedlineParagraphMarkerDeleted*/,
const SwRedlineData* /*pRedlineParagraphMarkerInserted*/)
{
- m_aStyles.append(m_aStylesEnd.makeStringAndClear());
- m_rExport.Strm().WriteCharPtr(m_aStyles.makeStringAndClear().getStr());
+ const OString aProperties = MoveCharacterProperties(true);
+ m_rExport.Strm().WriteCharPtr(aProperties.getStr());
}
void RtfAttributeOutput::StartRun(const SwRedlineData* pRedlineData, sal_Int32 /*nPos*/,
@@ -448,8 +414,78 @@ void RtfAttributeOutput::StartRunProperties()
void RtfAttributeOutput::EndRunProperties(const SwRedlineData* /*pRedlineData*/)
{
- m_aStyles.append(m_aStylesEnd.makeStringAndClear());
- m_aRun->append(m_aStyles.makeStringAndClear());
+ const OString aProperties = MoveCharacterProperties(true);
+ m_aRun->append(aProperties.getStr());
+}
+
+OString RtfAttributeOutput::MoveCharacterProperties(bool aAutoWriteRtlLtr)
+{
+ const OString aAssoc = m_aStylesAssoc.makeStringAndClear();
+ const OString aNormal = m_aStyles.makeStringAndClear();
+ OStringBuffer aBuf;
+
+ if (aAutoWriteRtlLtr && !m_bControlLtrRtl)
+ {
+ m_bControlLtrRtl = !aAssoc.isEmpty();
+ m_bIsRTL = false;
+ m_nScript = i18n::ScriptType::LATIN;
+ }
+
+ if (m_bControlLtrRtl)
+ {
+ m_bControlLtrRtl = false;
+
+ /*
+ You would have thought that
+ m_rExport.Strm() << (bIsRTL ? OOO_STRING_SVTOOLS_RTF_RTLCH : OOO_STRING_SVTOOLS_RTF_LTRCH); would be sufficient here ,
+ but looks like word needs to see the other directional token to be
+ satisfied that all is kosher, otherwise it seems in ver 2003 to go and
+ semi-randomly stick strike through about the place. Perhaps
+ strikethrough is some ms developers "something is wrong signal" debugging
+ code that we're triggering ?
+ */
+ if (!aAssoc.isEmpty() || !aNormal.isEmpty())
+ {
+ if (m_bIsRTL)
+ {
+ aBuf.append(OOO_STRING_SVTOOLS_RTF_LTRCH)
+ .append(aAssoc)
+ .append(' ')
+ .append(OOO_STRING_SVTOOLS_RTF_RTLCH)
+ .append(aNormal);
+ }
+ else
+ {
+ aBuf.append(OOO_STRING_SVTOOLS_RTF_RTLCH)
+ .append(aAssoc)
+ .append(' ')
+ .append(OOO_STRING_SVTOOLS_RTF_LTRCH)
+ .append(aNormal);
+ }
+ }
+
+ switch (m_nScript)
+ {
+ case i18n::ScriptType::LATIN:
+ aBuf.append(OOO_STRING_SVTOOLS_RTF_LOCH);
+ break;
+ case i18n::ScriptType::ASIAN:
+ aBuf.append(OOO_STRING_SVTOOLS_RTF_DBCH);
+ break;
+ case i18n::ScriptType::COMPLEX:
+ /* noop */
+ break;
+ default:
+ /* should not happen? */
+ break;
+ }
+ }
+ else
+ {
+ aBuf.append(aAssoc).append(aNormal);
+ }
+
+ return aBuf.makeStringAndClear();
}
void RtfAttributeOutput::RunText(const OUString& rText, rtl_TextEncoding /*eCharSet*/)
@@ -460,8 +496,6 @@ void RtfAttributeOutput::RunText(const OUString& rText, rtl_TextEncoding /*eChar
OStringBuffer& RtfAttributeOutput::RunText() { return m_aRunText.getLastBuffer(); }
-OStringBuffer& RtfAttributeOutput::StylesEnd() { return m_aStylesEnd; }
-
void RtfAttributeOutput::RawText(const OUString& rText, rtl_TextEncoding eCharSet)
{
m_aRunText->append(msfilter::rtfutil::OutString(rText, eCharSet));
@@ -1138,8 +1172,7 @@ void RtfAttributeOutput::StartStyle(const OUString& rName, StyleType eType, sal_
void RtfAttributeOutput::EndStyle()
{
- m_aStyles.append(m_aStylesEnd.makeStringAndClear());
- OString aStyles = m_aStyles.makeStringAndClear();
+ OString aStyles = MoveCharacterProperties();
m_rExport.InsStyle(m_nStyleId, aStyles);
m_aStylesheet.append(aStyles);
m_aStylesheet.append(' ');
@@ -1539,8 +1572,8 @@ void RtfAttributeOutput::NumberingLevel(sal_uInt8 nLevel, sal_uInt16 nStart,
}
m_rExport.OutputItemSet(*pOutSet, false, true, i18n::ScriptType::LATIN,
m_rExport.m_bExportModeRTF);
- m_aStyles.append(m_aStylesEnd.makeStringAndClear());
- m_rExport.Strm().WriteCharPtr(m_aStyles.makeStringAndClear().getStr());
+ const OString aProperties = MoveCharacterProperties(true);
+ m_rExport.Strm().WriteCharPtr(aProperties.getStr());
}
m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_FI);
@@ -2315,17 +2348,17 @@ void RtfAttributeOutput::CharEscapement(const SvxEscapementItem& rEscapement)
void RtfAttributeOutput::CharFont(const SvxFontItem& rFont)
{
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_LOCH);
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_F);
- m_aStylesEnd.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
+ m_aStyles.append(OOO_STRING_SVTOOLS_RTF_LOCH);
+ m_aStyles.append(OOO_STRING_SVTOOLS_RTF_F);
+ m_aStyles.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
if (!m_rExport.HasItem(RES_CHRATR_CJK_FONT) && !m_rExport.HasItem(RES_CHRATR_CTL_FONT))
{
// Be explicit about that the given font should be used everywhere, not
// just for the loch range.
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_HICH);
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_AF);
- m_aStylesEnd.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_HICH);
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_AF);
+ m_aStylesAssoc.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
}
// FIXME: this may be a tad expensive... but the charset needs to be
@@ -2343,16 +2376,16 @@ void RtfAttributeOutput::CharFontSize(const SvxFontHeightItem& rFontSize)
switch (rFontSize.Which())
{
case RES_CHRATR_FONTSIZE:
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_FS);
- m_aStylesEnd.append(static_cast<sal_Int32>(rFontSize.GetHeight() / 10));
- break;
- case RES_CHRATR_CJK_FONTSIZE:
m_aStyles.append(OOO_STRING_SVTOOLS_RTF_FS);
m_aStyles.append(static_cast<sal_Int32>(rFontSize.GetHeight() / 10));
break;
+ case RES_CHRATR_CJK_FONTSIZE:
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_FS);
+ m_aStylesAssoc.append(static_cast<sal_Int32>(rFontSize.GetHeight() / 10));
+ break;
case RES_CHRATR_CTL_FONTSIZE:
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_AFS);
- m_aStyles.append(static_cast<sal_Int32>(rFontSize.GetHeight() / 10));
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_AFS);
+ m_aStylesAssoc.append(static_cast<sal_Int32>(rFontSize.GetHeight() / 10));
break;
}
}
@@ -2371,18 +2404,18 @@ void RtfAttributeOutput::CharLanguage(const SvxLanguageItem& rLanguage)
switch (rLanguage.Which())
{
case RES_CHRATR_LANGUAGE:
- m_aStylesEnd.append(OOO_STRING_SVTOOLS_RTF_LANG);
- m_aStylesEnd.append(
+ m_aStyles.append(OOO_STRING_SVTOOLS_RTF_LANG);
+ m_aStyles.append(
static_cast<sal_Int32>(static_cast<sal_uInt16>(rLanguage.GetLanguage())));
break;
case RES_CHRATR_CJK_LANGUAGE:
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_LANGFE);
- m_aStyles.append(
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_LANGFE);
+ m_aStylesAssoc.append(
static_cast<sal_Int32>(static_cast<sal_uInt16>(rLanguage.GetLanguage())));
break;
case RES_CHRATR_CTL_LANGUAGE:
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_ALANG);
- m_aStyles.append(
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_ALANG);
+ m_aStylesAssoc.append(
static_cast<sal_Int32>(static_cast<sal_uInt16>(rLanguage.GetLanguage())));
break;
}
@@ -2506,9 +2539,9 @@ void RtfAttributeOutput::CharBackground(const SvxBrushItem& rBrush)
void RtfAttributeOutput::CharFontCJK(const SvxFontItem& rFont)
{
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_DBCH);
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_AF);
- m_aStyles.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_DBCH);
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_AF);
+ m_aStylesAssoc.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
}
void RtfAttributeOutput::CharFontSizeCJK(const SvxFontHeightItem& rFontSize)
@@ -2523,23 +2556,23 @@ void RtfAttributeOutput::CharLanguageCJK(const SvxLanguageItem& rLanguageItem)
void RtfAttributeOutput::CharPostureCJK(const SvxPostureItem& rPosture)
{
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_I);
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_I);
if (rPosture.GetPosture() == ITALIC_NONE)
- m_aStyles.append(sal_Int32(0));
+ m_aStylesAssoc.append(sal_Int32(0));
}
void RtfAttributeOutput::CharWeightCJK(const SvxWeightItem& rWeight)
{
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_B);
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_B);
if (rWeight.GetWeight() != WEIGHT_BOLD)
- m_aStyles.append(sal_Int32(0));
+ m_aStylesAssoc.append(sal_Int32(0));
}
void RtfAttributeOutput::CharFontCTL(const SvxFontItem& rFont)
{
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_DBCH);
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_AF);
- m_aStyles.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_DBCH);
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_AF);
+ m_aStylesAssoc.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
}
void RtfAttributeOutput::CharFontSizeCTL(const SvxFontHeightItem& rFontSize)
@@ -2554,16 +2587,16 @@ void RtfAttributeOutput::CharLanguageCTL(const SvxLanguageItem& rLanguageItem)
void RtfAttributeOutput::CharPostureCTL(const SvxPostureItem& rPosture)
{
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_AI);
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_AI);
if (rPosture.GetPosture() == ITALIC_NONE)
- m_aStyles.append(sal_Int32(0));
+ m_aStylesAssoc.append(sal_Int32(0));
}
void RtfAttributeOutput::CharWeightCTL(const SvxWeightItem& rWeight)
{
- m_aStyles.append(OOO_STRING_SVTOOLS_RTF_AB);
+ m_aStylesAssoc.append(OOO_STRING_SVTOOLS_RTF_AB);
if (rWeight.GetWeight() != WEIGHT_BOLD)
- m_aStyles.append(sal_Int32(0));
+ m_aStylesAssoc.append(sal_Int32(0));
}
void RtfAttributeOutput::CharBidiRTL(const SfxPoolItem& /*rItem*/) {}
@@ -3624,6 +3657,9 @@ RtfAttributeOutput::RtfAttributeOutput(RtfExport& rExport)
, m_pPrevPageDesc(nullptr)
, m_nStyleId(0)
, m_nListId(0)
+ , m_bIsRTL(false)
+ , m_nScript(i18n::ScriptType::LATIN)
+ , m_bControlLtrRtl(false)
, m_nNextAnnotationMarkId(0)
, m_nCurrentAnnotationMarkId(-1)
, m_bTableCellOpen(false)
diff --git a/sw/source/filter/ww8/rtfattributeoutput.hxx b/sw/source/filter/ww8/rtfattributeoutput.hxx
index d65e49d2773a..4a6b90607af5 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.hxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.hxx
@@ -84,7 +84,7 @@ public:
// Access to (anyway) private buffers, used by the sdr exporter
OStringBuffer& RunText();
OStringBuffer& Styles() { return m_aStyles; }
- OStringBuffer& StylesEnd();
+ OString MoveCharacterProperties(bool aAutoWriteRtlLtr = false);
/// Output text (without markup).
void RawText(const OUString& rText, rtl_TextEncoding eCharSet) override;
@@ -516,9 +516,12 @@ private:
*/
OStringBuffer m_aStyles;
/*
- * This is the same as m_aStyles but the contents of it is written last.
+ * This is the same as m_aStyles but the contents of it is Assoc.
*/
- OStringBuffer m_aStylesEnd;
+ OStringBuffer m_aStylesAssoc;
+ bool m_bIsRTL;
+ sal_uInt16 m_nScript;
+ bool m_bControlLtrRtl;
sal_Int32 m_nNextAnnotationMarkId;
sal_Int32 m_nCurrentAnnotationMarkId;
diff --git a/sw/source/filter/ww8/rtfsdrexport.cxx b/sw/source/filter/ww8/rtfsdrexport.cxx
index 418164485566..7eedcc45064d 100644
--- a/sw/source/filter/ww8/rtfsdrexport.cxx
+++ b/sw/source/filter/ww8/rtfsdrexport.cxx
@@ -706,8 +706,7 @@ void RtfSdrExport::WriteOutliner(const OutlinerParaObject& rParaObj, TextTypes e
const sal_Int32 nEnd = aStr.getLength();
aAttrIter.OutParaAttr(false);
- m_rAttrOutput.RunText().append(m_rAttrOutput.Styles().makeStringAndClear());
- m_rAttrOutput.RunText().append(m_rAttrOutput.StylesEnd().makeStringAndClear());
+ m_rAttrOutput.RunText().append(m_rAttrOutput.MoveCharacterProperties(true));
do
{
@@ -716,8 +715,7 @@ void RtfSdrExport::WriteOutliner(const OutlinerParaObject& rParaObj, TextTypes e
aAttrIter.OutAttr(nCurrentPos);
m_rAttrOutput.RunText().append('{');
- m_rAttrOutput.RunText().append(m_rAttrOutput.Styles().makeStringAndClear());
- m_rAttrOutput.RunText().append(m_rAttrOutput.StylesEnd().makeStringAndClear());
+ m_rAttrOutput.RunText().append(m_rAttrOutput.MoveCharacterProperties(true));
m_rAttrOutput.RunText().append(SAL_NEWLINE_STRING);
bool bTextAtr = aAttrIter.IsTextAttr(nCurrentPos);
if (!bTextAtr)
diff --git a/writerfilter/source/rtftok/rtfdispatchflag.cxx b/writerfilter/source/rtftok/rtfdispatchflag.cxx
index 46592a24105b..3ea7872d52a1 100644
--- a/writerfilter/source/rtftok/rtfdispatchflag.cxx
+++ b/writerfilter/source/rtftok/rtfdispatchflag.cxx
@@ -473,8 +473,7 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
m_aStates.top().setCurrentEncoding(getEncoding(getFontIndex(m_nDefaultFontIndex)));
m_aStates.top().getCharacterAttributes() = getDefaultState().getCharacterAttributes();
m_aStates.top().setCurrentCharacterStyleIndex(-1);
- m_aStates.top().setIsRightToLeft(false);
- m_aStates.top().setRunType(RTFParserState::RunType::LOCH);
+ m_aStates.top().setRunType(RTFParserState::RunType::NONE);
}
break;
case RTF_PARD:
@@ -565,6 +564,7 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
case RTF_RTLSECT:
{
auto pValue = new RTFValue(nKeyword == RTF_LTRSECT ? 0 : 1);
+ m_aStates.top().setRunType(RTFParserState::RunType::NONE);
m_aStates.top().getParagraphSprms().set(NS_ooxml::LN_EG_SectPrContents_textDirection,
pValue);
}
@@ -573,20 +573,29 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
case RTF_RTLPAR:
{
auto pValue = new RTFValue(nKeyword == RTF_LTRPAR ? 0 : 1);
+ m_aStates.top().setRunType(RTFParserState::RunType::NONE);
m_aStates.top().getParagraphSprms().set(NS_ooxml::LN_CT_PPrBase_bidi, pValue);
}
break;
case RTF_LTRROW:
case RTF_RTLROW:
+ m_aStates.top().setRunType(RTFParserState::RunType::NONE);
m_aStates.top().getTableRowSprms().set(NS_ooxml::LN_CT_TblPrBase_bidiVisual,
new RTFValue(int(nKeyword == RTF_RTLROW)));
break;
case RTF_LTRCH:
// dmapper does not support this.
- m_aStates.top().setIsRightToLeft(false);
+ if (m_aStates.top().getRunType() == RTFParserState::RunType::RTLCH_LTRCH_1)
+ m_aStates.top().setRunType(RTFParserState::RunType::RTLCH_LTRCH_2);
+ else
+ m_aStates.top().setRunType(RTFParserState::RunType::LTRCH_RTLCH_1);
break;
case RTF_RTLCH:
- m_aStates.top().setIsRightToLeft(true);
+ if (m_aStates.top().getRunType() == RTFParserState::RunType::LTRCH_RTLCH_1)
+ m_aStates.top().setRunType(RTFParserState::RunType::LTRCH_RTLCH_2);
+ else
+ m_aStates.top().setRunType(RTFParserState::RunType::RTLCH_LTRCH_1);
+
if (m_aDefaultState.getCurrentEncoding() == RTL_TEXTENCODING_MS_1255)
m_aStates.top().setCurrentEncoding(m_aDefaultState.getCurrentEncoding());
break;
diff --git a/writerfilter/source/rtftok/rtfdispatchvalue.cxx b/writerfilter/source/rtftok/rtfdispatchvalue.cxx
index e12a57f1d2a9..fa6bcc46f024 100644
--- a/writerfilter/source/rtftok/rtfdispatchvalue.cxx
+++ b/writerfilter/source/rtftok/rtfdispatchvalue.cxx
@@ -164,10 +164,22 @@ RTFError RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
{
case RTF_FS:
case RTF_AFS:
- nSprm = (m_aStates.top().getIsRightToLeft()
- || m_aStates.top().getRunType() == RTFParserState::RunType::HICH)
- ? NS_ooxml::LN_EG_RPrBase_szCs
- : NS_ooxml::LN_EG_RPrBase_sz;
+ switch (m_aStates.top().getRunType())
+ {
+ case RTFParserState::RunType::HICH:
+ case RTFParserState::RunType::RTLCH_LTRCH_1:
+ case RTFParserState::RunType::LTRCH_RTLCH_2:
+ case RTFParserState::RunType::DBCH:
+ nSprm = NS_ooxml::LN_EG_RPrBase_szCs;
+ break;
+ case RTFParserState::RunType::NONE:
+ case RTFParserState::RunType::LOCH:
+ case RTFParserState::RunType::LTRCH_RTLCH_1:
+ case RTFParserState::RunType::RTLCH_LTRCH_2:
+ default:
+ nSprm = NS_ooxml::LN_EG_RPrBase_sz;
+ break;
+ }
break;
case RTF_EXPNDTW:
nSprm = NS_ooxml::LN_EG_RPrBase_spacing;
@@ -191,19 +203,23 @@ RTFError RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
{
case RTF_LANG:
case RTF_ALANG:
- if (m_aStates.top().getIsRightToLeft()
- || m_aStates.top().getRunType() == RTFParserState::RunType::HICH)
- {
- nSprm = NS_ooxml::LN_CT_Language_bidi;
- }
- else if (m_aStates.top().getRunType() == RTFParserState::RunType::DBCH)
+ switch (m_aStates.top().getRunType())
{
- nSprm = NS_ooxml::LN_CT_Language_eastAsia;
- }
- else
- {
- assert(m_aStates.top().getRunType() == RTFParserState::RunType::LOCH);
- nSprm = NS_ooxml::LN_CT_Language_val;
+ case RTFParserState::RunType::HICH:
+ case RTFParserState::RunType::RTLCH_LTRCH_1:
+ case RTFParserState::RunType::LTRCH_RTLCH_2:
+ nSprm = NS_ooxml::LN_CT_Language_bidi;
+ break;
+ case RTFParserState::RunType::DBCH:
+ nSprm = NS_ooxml::LN_CT_Language_eastAsia;
+ break;
+ case RTFParserState::RunType::NONE:
+ case RTFParserState::RunType::LOCH:
+ case RTFParserState::RunType::LTRCH_RTLCH_1:
+ case RTFParserState::RunType::RTLCH_LTRCH_2:
+ default:
+ nSprm = NS_ooxml::LN_CT_Language_val;
+ break;
}
break;
case RTF_LANGFE: // this one is always CJK apparently
@@ -336,20 +352,25 @@ RTFError RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
{
case RTF_F:
case RTF_AF:
- if (m_aStates.top().getIsRightToLeft()
- || m_aStates.top().getRunType() == RTFParserState::RunType::HICH)
- {
- nSprm = NS_ooxml::LN_CT_Fonts_cs;
- }
- else if (m_aStates.top().getRunType() == RTFParserState::RunType::DBCH)
+ switch (m_aStates.top().getRunType())
{
- nSprm = NS_ooxml::LN_CT_Fonts_eastAsia;
- }
- else
- {
- assert(m_aStates.top().getRunType() == RTFParserState::RunType::LOCH);
- nSprm = NS_ooxml::LN_CT_Fonts_ascii;
+ case RTFParserState::RunType::HICH:
+ case RTFParserState::RunType::RTLCH_LTRCH_1:
+ case RTFParserState::RunType::LTRCH_RTLCH_2:
+ nSprm = NS_ooxml::LN_CT_Fonts_cs;
+ break;
+ case RTFParserState::RunType::DBCH:
+ nSprm = NS_ooxml::LN_CT_Fonts_eastAsia;
+ break;
+ case RTFParserState::RunType::NONE:
+ case RTFParserState::RunType::LOCH:
+ case RTFParserState::RunType::LTRCH_RTLCH_1:
+ case RTFParserState::RunType::RTLCH_LTRCH_2:
+ default:
+ nSprm = NS_ooxml::LN_CT_Fonts_ascii;
+ break;
}
+
if (m_aStates.top().getDestination() == Destination::FONTTABLE
|| m_aStates.top().getDestination() == Destination::FONTENTRY)
{
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index b6d8290283cc..43463dabc152 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -1850,17 +1850,41 @@ RTFError RTFDocumentImpl::dispatchToggle(RTFKeyword nKeyword, bool bParam, int n
{
case RTF_B:
case RTF_AB:
- nSprm = (m_aStates.top().getIsRightToLeft()
- || m_aStates.top().getRunType() == RTFParserState::RunType::HICH)
- ? NS_ooxml::LN_EG_RPrBase_bCs
- : NS_ooxml::LN_EG_RPrBase_b;
+ switch (m_aStates.top().getRunType())
+ {
+ case RTFParserState::RunType::HICH:
+ case RTFParserState::RunType::RTLCH_LTRCH_1:
+ case RTFParserState::RunType::LTRCH_RTLCH_2:
+ case RTFParserState::RunType::DBCH:
+ nSprm = NS_ooxml::LN_EG_RPrBase_bCs;
+ break;
+ case RTFParserState::RunType::NONE:
+ case RTFParserState::RunType::LOCH:
+ case RTFParserState::RunType::LTRCH_RTLCH_1:
+ case RTFParserState::RunType::RTLCH_LTRCH_2:
+ default:
+ nSprm = NS_ooxml::LN_EG_RPrBase_b;
+ break;
+ }
break;
case RTF_I:
case RTF_AI:
- nSprm = (m_aStates.top().getIsRightToLeft()
- || m_aStates.top().getRunType() == RTFParserState::RunType::HICH)
- ? NS_ooxml::LN_EG_RPrBase_iCs
- : NS_ooxml::LN_EG_RPrBase_i;
+ switch (m_aStates.top().getRunType())
+ {
+ case RTFParserState::RunType::HICH:
+ case RTFParserState::RunType::RTLCH_LTRCH_1:
+ case RTFParserState::RunType::LTRCH_RTLCH_2:
+ case RTFParserState::RunType::DBCH:
+ nSprm = NS_ooxml::LN_EG_RPrBase_iCs;
+ break;
+ case RTFParserState::RunType::NONE:
+ case RTFParserState::RunType::LOCH:
+ case RTFParserState::RunType::LTRCH_RTLCH_1:
+ case RTFParserState::RunType::RTLCH_LTRCH_2:
+ default:
+ nSprm = NS_ooxml::LN_EG_RPrBase_i;
+ break;
+ }
break;
case RTF_OUTL:
nSprm = NS_ooxml::LN_EG_RPrBase_outline;
@@ -1950,7 +1974,11 @@ RTFError RTFDocumentImpl::pushState()
else
{
// fdo#85812 group resets run type of _current_ and new state (but not RTL)
- m_aStates.top().setRunType(RTFParserState::RunType::LOCH);
+ if (m_aStates.top().getRunType() != RTFParserState::RunType::LTRCH_RTLCH_2
+ && m_aStates.top().getRunType() != RTFParserState::RunType::RTLCH_LTRCH_2)
+ {
+ m_aStates.top().setRunType(RTFParserState::RunType::NONE);
+ }
if (m_aStates.top().getDestination() == Destination::MR)
lcl_DestinationToMath(m_aStates.top().getCurrentDestinationText(), m_aMathBuffer,
@@ -3567,8 +3595,7 @@ RTFParserState::RTFParserState(RTFDocumentImpl* pDocumentImpl)
, m_nListLevelNum(0)
, m_bLevelNumbersValid(true)
, m_aFrame(this)
- , m_eRunType(RunType::LOCH)
- , m_bIsRightToLeft(false)
+ , m_eRunType(RunType::NONE)
, m_nYear(0)
, m_nMonth(0)
, m_nDay(0)
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
index 24739f682206..f7a263c2bc11 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
@@ -401,9 +401,14 @@ public:
/// Maps to OOXML's ascii, cs or eastAsia.
enum class RunType
{
+ NONE,
LOCH,
HICH,
- DBCH
+ DBCH,
+ LTRCH_RTLCH_1,
+ LTRCH_RTLCH_2,
+ RTLCH_LTRCH_1,
+ RTLCH_LTRCH_2
};
explicit RTFParserState(RTFDocumentImpl* pDocumentImpl);
@@ -475,8 +480,6 @@ public:
sal_uInt16 getMonth() const { return m_nMonth; }
void setYear(sal_uInt16 nYear) { m_nYear = nYear; }
sal_uInt16 getYear() const { return m_nYear; }
- void setIsRightToLeft(bool bIsRightToLeft) { m_bIsRightToLeft = bIsRightToLeft; }
- bool getIsRightToLeft() const { return m_bIsRightToLeft; }
void setRunType(RunType eRunType) { m_eRunType = eRunType; }
RunType getRunType() const { return m_eRunType; }
RTFFrame& getFrame() { return m_aFrame; }
@@ -578,8 +581,6 @@ private:
RTFFrame m_aFrame;
RunType m_eRunType;
- /// ltrch or rtlch
- bool m_bIsRightToLeft;
// Info group.
sal_Int16 m_nYear;
More information about the Libreoffice-commits
mailing list