Rich text overview

Program's Rich Text

Because Unity Engine and WPF UI Framework are two different things, the Rich Text you see from tags is a approximate imitation of TextMeshPro with a limited set of tags, which WPF allows to create without having to write complex libraries with a bunch of complicated classes. However, all the basic and necessary tags for denoting Limbus Company status effects in text are present and (More likely (I hope (I guess))) work correctly.

Automatic formatting steps of input json text

1

(If Passives / Skills file) Restriction on square brackets

If the text contains opening and closing square brackets, and the content inside them is not a keyword ID from the BattleKeywords*.json files / skill tag from SkillTag.json, they will be converted to a green 'Unknown' text.

This may answer some of your questions regarding the spelling skill/passive names in the text without required square brackets they originally have
2

(If Passives / Skills / E.G.O Gifts file) Unevident keywords automatic conversion

You could already read about this in detail on the page Custom localization properties (Keywords Autodetection Regex Pattern property)

Summarizing info from page above into a simple definition: if any words in the text matches the name of a keyword from the Bufs*.json files (I don't know why not from BattleKeywords*.json), and also immediately after it there are no [ / < characters or any other language symbols, then it will be automatically converted to [KeywordID] link (Most likely in descending order of name length to avoid conversion of some keywords within each other).

Skills file used

(Since this step includes E.G.O Gifts files and comes after Restriction on square brackets, then yes, in E.G.O Gifts, non-ID content in square brackets does not turn into 'Unknown')

3

(If Passives / Skills / E.G.O Gifts file) All [KeywordID] deconversion

After the previous two steps, the text contains [KeywordID] keyword designations. Ultimately, they are transformed into a full set of rich text tags (Shown above with Burn).

[Combustion] -> <sprite name="Combustion"><color=#e30000><u><link="Combustion">Burn</color></link></u>

An actual look in the game

(In the 5th line, Burn keyword builded from tags and titled 'False Highlight' has twice as many tags, meaning that instead of just Burn word, a [KeywordID] link was placed inside the existing tags, which was then again converted into a full set of formatted text tags)

Keep in mind that [KeywordID] link by default contains <link> tag to KeywordID at final.


Presented rich text tags

Limbus Company text preview

  • Basic formatting tags: <b> (Bold), <u> (Underline), <i> (Italic), <s> (Strikethrough).

  • Subscript/Superscript: <sub> or <sup> tags (Doesn't work with <sprite> and text inside a <link> tag due to compatibility issues with <sprite> vertical alignment inside). Bottom/Top aligned text with font size reduced by 30%.

  • "highlight" / "upgradeHighlight" styles: <style="highlight"> (Skills/Passives only) adds override yellow color for text excluding fragments inside <link> tags (Because keywords in the Limbus Company itself still retain their original color and this can only be logically explained in this way). <style="upgradeHighlight"> does the same but for E.G.O Gifts localization files (These styles are used in the Identity/E.G.O Uptie and E.G.O Gifts upgrade windows to highlight changes).

  • Keyword description tooltip links: <link="KeywordID">Text fragment</link> adds a tooltip describing the status effect by ID from loaded BattleKeywords*.json files that pops up when hovering over a text fragment. Unlike Limbus, this doesn't works through left-clicking and has a pre-expanded height instead of scrollable text.

  • Color: <color=#aarrggbb> or <color=#rrggbb> with hex color value. Does not support color names like green/red/yellow.

  • Fonts: <font="Unity font asset name">, since Limbus Company itself has a limited set of fonts. Any other font name than the one specified in the tooltip will force the font to be squares.

  • Font weight: <font-weight="100/200/300/400/500/600/700/800/900">, may not reflect actual font weights from the limbus, just static correspondences between number and named font weights as described in the TextMeshPro font weights documentation page by default.

  • Text size percentage: <size=~%> multiplies current font size to given percentage (<size=59%> as example, it can have a floating point or comma).

  • Keyword sprites: <sprite name="KeywordID"> adds a keyword icon to the text, according to the given ID and its matching with loaded image from [⇲] Assets Directory\[⇲] Limbus Images\Keywords (It is also glued to the next word after it for a solid line break without leaving the icon on the previous line; in Unity TextMeshPro this works fine because sprites by default is an actual font Glyph (Based on docs) and such machinations are not required).

  • No break: <nobr> tag prevents line break inside of text fragment and fully move it to a new line instead (Line break will occur internally only if the width of the text fragment becomes smaller than the width of the entire text element). Can be suitable for cases where as example in text "Raise Stagger Treshold by 10", text fragment "by 10" is at end of the line and "10" being moved to a new line, which mean it is better to write it as "Raises Stagger Treshold <nobr>by 10</nobr>" and then "by 10" will be moved to a new line instead.

  • No parse: <noparse></noparse> it exists for existence (Or as [TabExplain] alternative explained at Custom localization properties page (Keywords Autodetection Regex Pattern property)), With it you can see the final look of the converted preview after the last 3rd step. Requires a closing tag to work.

    An actual look in the game

Additional tags enabled only for UI translation elements

  • Background: <background=#aarrggbb> or <background=#rrggbb> with hex color value.

  • External links: <hyperlink="Some URL"></hyperlink>. By default, it does not contain formatting, substitute <color=#569cd6><u> as desired (You can also refer to file by the "file:///..." protocol, "file:///C:/Users/User1/OneDrive/Documents/Limbus Colors.toml" as an example).

  • Font stretch: <font-stretch="~"> with values Condensed / Expanded / ExtraCondensed / ExtraExpanded / Medium / Normal / SemiCondensed / SemiExpanded / UltraCondensed / UltraExpanded.

  • Inline image: alternative for <sprite> tag that also can use loaded E.G.O Gift IDs as image source. Editor context menu and program title as example.

    [⇲] Assets Directory\@ Internal\Translation\English\Static UI Text.json file with the UI text translation

  • Inline images size: <images-size=~> adjusts subsequent <image id="~"> tags to their size, can be closed via </images-size> (It can have a floating point or comma).

  • Inline images offset: <images-xoffset=~> or <images-yoffset=~> moves image horizontally or vertically, can optionally have plus or minus like a <images-xoffset=+1> or <images-yoffset=-2>. Can be closed via </images-xoffset> and </images-yoffset>.

Last updated