Hacker News
points by chrismorgan 13 hours ago | 0 comments
Most in-browser terminal emulators just use plain old boring DOM, and ignore the issue of perfect columns. Some detect it and wrap offending characters in fixed-width spans. But the entire concept of columns is unsound, doesn’t work at all for a lot of scripts.
[–] hnlmorg 9 hours ago
It might seem unsound but it’s the concept we’ve built our terminals around.

And there are already definitions and APIs to decide the terminal cell width of different Unicode characters.

I’m not saying it’s easy, because you end up with 3 different string widths:

1. memory length in bytes

2. Number of Unicode characters (which is annoyingly also different to the number of Unicode code points since some codes can be combined)

3. terminal cell width

But as annoying as it is, there are a few relatively mature libraries you can use to solve this problem.

Hacker News