Is there a way to convert docx to TextMeshPro's rich text?

Hi all,

I need to display my docx containing different size texts, different colors on Unity. When I read the docx as a text file, TextMeshPro shows it all in the same size and same color as expected. How can I read docx with all the formatting and display it on Unity with TextMeshPro’s rich text feature?

EDIT: I just want to show the text in the format I did on Unity. So it should look like this on Unity:

Anyway to get this look on Unity by reading docx or rtf file?

I can also convert docx to rtf file, but the formatting of rtf file looks different than TextMeshPro’s rich text.

I’ll leave example files in case anyone wants to try it (docx and rtf)

I cannot update rtf file somehow, so I’ll copy-paste it here:

.rtf file

{\rtf1\ansi\deff4\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Liberation Serif{*\falt Times New Roman};}{\f4\froman\fprq2\fcharset0 Arial;}{\f5\fswiss\fprq2\fcharset0 Liberation Sans{*\falt Arial};}{\f6\fnil\fprq2\fcharset0 Noto Sans SC Regular;}{\f7\fnil\fprq2\fcharset0 Arial;}{\f8\fnil\fprq2\fcharset0 Noto Sans Devanagari;}{\f9\fswiss\fprq0\fcharset128 Noto Sans Devanagari;}}
{\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;\red67\green67\blue67;\red102\green102\blue102;}
{\stylesheet{\s0\snext0\hich\af4\dbch\af7\langfe2052\dbch\af7\afs22\alang1081\sl276\slmult1\ql\widctlpar\sb0\sa0\ltrpar\sl276\slmult1\ql\widctlpar\hyphpar0\sb0\sa0\ltrpar\cf0\loch\f4\fs22\lang31\kerning0 Normal;}
{\s1\sbasedon29\snext29\afs40\sl240\slmult1\ql\keep\widctlpar\sb400\sa120\keepn\ltrpar\fs40 Heading 1;}
{\s2\sbasedon29\snext29\afs32\sl240\slmult1\ql\keep\widctlpar\sb360\sa120\keepn\ltrpar\fs32\b0 Heading 2;}
{\s3\sbasedon29\snext29\afs28\sl240\slmult1\ql\keep\widctlpar\sb320\sa80\keepn\ltrpar\cf17\fs28\b0 Heading 3;}
{\s4\sbasedon29\snext29\afs24\sl240\slmult1\ql\keep\widctlpar\sb280\sa80\keepn\ltrpar\cf18\fs24 Heading 4;}
{\s5\sbasedon29\snext29\afs22\sl240\slmult1\ql\keep\widctlpar\sb240\sa80\keepn\ltrpar\cf18\fs22 Heading 5;}
{\s6\sbasedon29\snext29\afs22\sl240\slmult1\ql\keep\widctlpar\sb240\sa80\keepn\ltrpar\cf18\fs22\i Heading 6;}
{*\cs15\snext15\ulnone\ulc0 ListLabel 1;}
{*\cs16\snext16\ulnone\ulc0 ListLabel 2;}
{*\cs17\snext17\ulnone\ulc0 ListLabel 3;}
{*\cs18\snext18\ulnone\ulc0 ListLabel 4;}
{*\cs19\snext19\ulnone\ulc0 ListLabel 5;}
{*\cs20\snext20\ulnone\ulc0 ListLabel 6;}
{*\cs21\snext21\ulnone\ulc0 ListLabel 7;}
{*\cs22\snext22\ulnone\ulc0 ListLabel 8;}
{*\cs23\snext23\ulnone\ulc0 ListLabel 9;}
{\s24\sbasedon0\snext25\dbch\af6\dbch\af8\afs28\sl276\slmult1\ql\widctlpar\sb240\sa120\keepn\ltrpar\loch\f5\fs28 Heading;}
{\s25\sbasedon0\snext25\sl276\slmult1\ql\widctlpar\sb0\sa140\ltrpar Text Body;}
{\s26\sbasedon25\snext26\dbch\af9\sl276\slmult1\ql\widctlpar\sb0\sa140\ltrpar List;}
{\s27\sbasedon0\snext27\dbch\af9\afs24\ai\sl276\slmult1\ql\widctlpar\sb120\sa120\noline\ltrpar\fs24\i Caption;}
{\s28\sbasedon0\snext28\dbch\af9\sl276\slmult1\ql\widctlpar\sb0\sa0\noline\ltrpar Index;}
{\s29\snext29\hich\af4\dbch\af7\langfe2052\dbch\af7\afs22\alang1081\sl276\slmult1\ql\widctlpar\sb0\sa0\ltrpar\hyphpar0\cf0\loch\f4\fs22\lang31\kerning0 LO-normal;}
{\s30\sbasedon29\snext29\afs52\sl240\slmult1\ql\keep\widctlpar\sb0\sa60\keepn\ltrpar\fs52 Title;}
{\s31\sbasedon29\snext29\dbch\af7\dbch\af7\afs30\sl240\slmult1\ql\keep\widctlpar\sb0\sa320\keepn\ltrpar\cf18\loch\f4\fs30\i0 Subtitle;}
}{*\listtable{\list\listtemplateid1
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext '01\u45 ?;}{\levelnumbers;}\f10\ulnone\ulc0\fi-360\li720}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext '01\u45 ?;}{\levelnumbers;}\f10\ulnone\ulc0\fi-360\li1440}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext '01\u45 ?;}{\levelnumbers;}\f10\ulnone\ulc0\fi-360\li2160}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext '01\u45 ?;}{\levelnumbers;}\f10\ulnone\ulc0\fi-360\li2880}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext '01\u45 ?;}{\levelnumbers;}\f10\ulnone\ulc0\fi-360\li3600}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext '01\u45 ?;}{\levelnumbers;}\f10\ulnone\ulc0\fi-360\li4320}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext '01\u45 ?;}{\levelnumbers;}\f10\ulnone\ulc0\fi-360\li5040}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext '01\u45 ?;}{\levelnumbers;}\f10\ulnone\ulc0\fi-360\li5760}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext '01\u45 ?;}{\levelnumbers;}\f10\ulnone\ulc0\fi-360\li6480}\listid1}
{\list\listtemplateid2
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext '00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext '00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext '00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext '00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext '00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext '00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext '00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext '00;}{\levelnumbers;}\fi0\li0}
{\listlevel\levelnfc255\leveljc0\levelstartat1\levelfollow2{\leveltext '00;}{\levelnumbers;}\fi0\li0}\listid2}
}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}{*\generator LibreOffice/7.0.3.1$Linux_X86_64 LibreOffice_project/d7547858d014d4cf69878db179d326fc3483e082}{\info{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}}{*\userprops}\deftab720\deftab720
\hyphauto1\viewscale100
{*\pgdsctbl
{\pgdsc0\pgdscuse451\pgwsxn11906\pghsxn16838\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\pgdscnxt0 Default Page Style;}}
\formshade{*\pgdscno0}\paperh16838\paperw11906\margl1440\margr1440\margt1440\margb1440\sectd\sbknone\pgndec\sftnnar\saftnnrlc\sectunlocked1\pgwsxn11906\pghsxn16838\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc\htmautsp
{*\ftnsep\chftnsep}\pgndec\pard\plain \s29\hich\af4\dbch\af7\langfe2052\dbch\af7\afs22\alang1081\sl276\slmult1\ql\widctlpar\sb0\sa0\ltrpar\hyphpar0\cf0\loch\f4\fs22\lang31\kerning0{\rtlch\afs30 \ltrch\fs30\b\loch
This is header}
\par \pard\plain \s29\hich\af4\dbch\af7\langfe2052\dbch\af7\afs22\alang1081\sl276\slmult1\ql\widctlpar\sb0\sa0\ltrpar\hyphpar0\cf0\loch\f4\fs22\lang31\kerning0\loch

\par \pard\plain \s29\hich\af4\dbch\af7\langfe2052\dbch\af7\afs22\alang1081\sl276\slmult1\ql\widctlpar\sb0\sa0\ltrpar\hyphpar0\cf0\loch\f4\fs22\lang31\kerning0{\loch
This is text}
\par \pard\plain \s29\hich\af4\dbch\af7\langfe2052\dbch\af7\afs22\alang1081\sl276\slmult1\ql\widctlpar\sb0\sa0\ltrpar\hyphpar0\cf0\loch\f4\fs22\lang31\kerning0\loch

\par \pard\plain \s29\hich\af4\dbch\af7\langfe2052\dbch\af7\afs22\alang1081\sl276\slmult1\ql\widctlpar\sb0\sa0\ltrpar\hyphpar0\cf0\loch\f4\fs22\lang31\kerning0{\loch
This is element:}
\par \pard\plain \s29\hich\af4\dbch\af7\langfe2052\dbch\af7\afs22\alang1081\sl276\slmult1\ql\widctlpar\sb0\sa0\ltrpar\hyphpar0\cf0\loch\f4\fs22\lang31\kerning0{\listtext\pard\plain \ulnone\ulc0 -\tab}\ilvl0\ls1 \li1440\ri0\lin1440\rin0\fi-360\li720\ri0\lin720\rin0\fi-360{\loch
hey}
\par \pard\plain \s29\hich\af4\dbch\af7\langfe2052\dbch\af7\afs22\alang1081\sl276\slmult1\ql\widctlpar\sb0\sa0\ltrpar\hyphpar0\cf0\loch\f4\fs22\lang31\kerning0{\listtext\pard\plain \ulnone\ulc0 -\tab}\ilvl0\ls1 \li1440\ri0\lin1440\rin0\fi-360\li720\ri0\lin720\rin0\fi-360{\loch
hey2}
\par }

6711508–771436–docum.docx (6.29 KB)

I’m curious about this as well. Did you find an answer?