I’ve been coding exclusively in Neovim for about 4 years now.

While it’s been awesome, one of the minor pain points is it’s inability to render some complex scripts properly. I’m from Burma and Burmese script is part of Indic script family, which also includes Indian language scripts like, Tamil and Devanagari. Now, rendering of these scripts seem to be quite complicated compared to roman scripts or even to CJK scripts.

Searching around the web with my limited knowledge shows there’s this term “complex text layout” (CTL) for these kind of scripts. Full GUI editors like emacs seem to have no problem with this since most of them just use this library called harfbuzz that implements CTL.

Now, I’ve tried a lot of Neovim GUI front-ends to see if they support CTL. Most of them doesn’t work. The exceptions are the VSCode plugin (fully works) and Onivim2 (works but have some spacing issue). I’d rather avoid VSCode and Onivim2 seems to be moving toward some kind of freemium/paid model.

There are a few github issues like this that kind of explain the problem with Neovim and complex scripts. It seems mono-spaced sizing is ingrained into the vim protocol itself. May be it works on VSCode and Onivim2 because they’re ignoring Neovim’s UI protocol and somehow hooking up text rendering to their own existing UI?

Did anyone ever manage to get complex scripts working in Neovim?

  • raguay@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    11 months ago

    VimR (https://github.com/qvacua/vimr) handles Thai okay. Not sure about Burmese. It has to the lastest version also that attaches to the latest neovim build as well. The lastest version also works fine with LazyVim framework (the older version didn’t since it was base on a vim library and not neovim.

  • tun
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    I mostly use neovim in terminal.

    When I need to edit the Burmese characters I have the best result with the Kate. Kate has a modal editing feature like vim.

    I tried VSCode and Sublime text.