Support symbol "themes" to allow varying levels of icon/symbol rendering
Spinning this feature idea out from #178, which this could end up resolving and is a relevant read.
The idea is to add a feature to support terminals with various levels of unicode support, so that the UI can look reasonable on basic terminals, "typical" ones and potentially up to ones with recent emoji support - though rendering of emoji themselves in place of our current text rendering is likely a different (if related) issue.
Currently we have aimed for a middle path of symbols that appear to render fairly consistently across common platforms but make the UI interesting enough. However, there are two extremes around this:
- some platforms/systems/fonts might support as little as basic letters (ascii and/or localized text + limited symbols)
- some platforms/systems/fonts might support way more unicode, and would benefit from using more advanced symbols
Some aspects to consider:
- likely a command-line option, later a config option
- Can we somehow detect if symbols render properly, or the font supports them, and downgrade/upgrade? (override by the above)
This was touched on in #zulip-terminal > Web public marker #T1135/#T712/#T1177, where an emoji was proposed for this role. However, that emoji was double-width and did not align with the existing stream markers. In an emoji-capable terminal we could have sets of characters which align well for streams, including eg. 'lock' markers for private streams, while keeping simple characters/letters which also align well together in other terminal 'symbol themes'.
For reference, on Debian(-like) systems one can install fonts-noto-color-emoji and get emoji displayed quite well, with other fonts falling back to use this set even if the main font is something else - at least on gnome-terminal.
However, this does not suffice for allowing eg. running on a basic linux terminal, at least based on prior experience with lots of other characters not displaying as expected.