My day job involves a fair bit of coding and I do most of the stuff in the terminal. But there is one sore spot that still bugs me to this day. All terminal emulators I’ve used don’t have complex text layout support.
CTL is something required by Arabic and Brahmic scripts. I’m from Myanmar and Myanmar script is one of the Brahmic family of scripts. I’ve seen Indians also having this problem with their Devanagari script as well. I mean I don’t need it too often but when I do, I have to open up a GUI text editor to edit.
I just want to know if there’s something inherently fundamental in terminal emulators that makes it hard to support CTL? Is there even a terminal emulator with CTL support?
Konsole from the KDE suite has CTL support: https://docs.kde.org/trunk5/en/konsole/konsole/complex-text-rendering.html
I think mlterm has too. And likely others.
I mean, it’s a terminal emulator, not a text processor…
But there are TE made for arabic/indic writing, like alFaseeh, elokab. Others like Gnome terminal support it, just googe it. I think a minimal requirement is UTF-8?
Leave ‘em behind.
What should be and why it is, two diff questions…
A terminal renders a single glyph in a grid. That’s it. This stems from the days from before when there was graphics instruction to render anything different, and link speeds could be, on bad days, slower than typing speeds.
Rendering evolved to include ANSI instruction to manipulate the rendering-color, grid position, etc.
However, at its core, is this limitation…a glyph in a grid…and this limitation is due to how slow terminals are.
Terminals originally operated at a serial baud rate where one could nearly type faster than the transmission speed.
X windows…was designed…to not have these limits.
Terminal emulation is handy, but … they it is limited. By definition retro. If a terminal doesn’t work…move on…and make something that does :)
Emacs has CTL support using libharfbuz as the text shaping engine.
But more importantly, Emacs has a “shell” app that lets you interact with a shell using the same textual interface that you would use when writing prose or code. To be sure, this is not a terminal emulator (although Emacs also has a terminal emulator app as well, called “term”), rather “shell” is a way of launching a POSIX process and interacting with it through the STDIN and STDOUT/STDERR channels. It is extremely useful, but does not always render the ANSI terminal escape codes cleanly, so colors and box drawing can sometimes end up garbled.
Still, I find this much more useful than an ordinary terminal emulator, especially when dealing with Chinese/Japanese script, or in your case with CTL.
Yeah, I’ve tried Emacs actually. Since it’s like a full GUI app, there’s support. I just got too invested in Vim and don’t wanna switch.
If you want CTL text layout support but want to use Vim, you can use a version of Emacs with Vim emulation extensions pre-installed. The easiest way to do this is to install Doom Emacs or Spacemacs which do all the tricky configuration things necessary to make it work and feel more consistently like Vim, and it just works out of the box.
I tried it a few years back but gave up because I couldn’t get it to work the way my vim setup used to. May be I should give it a try again sometime.