Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

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

Discussion in 'UGUI & TextMesh Pro' started by paulx115, Jan 11, 2021.

  1. paulx115

    paulx115

    Joined:
    Dec 22, 2020
    Posts:
    42
    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?
     
    Last edited: Jan 11, 2021
  2. paulx115

    paulx115

    Joined:
    Dec 22, 2020
    Posts:
    42
    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:

    {\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 }
     

    Attached Files:

  3. SuperDanOsbourne

    SuperDanOsbourne

    Joined:
    Oct 3, 2017
    Posts:
    46
    I'm curious about this as well. Did you find an answer?