On Sat, 21 Jan 2023 at 13:17, Tom Lane <t...@sss.pgh.pa.us> wrote: > > Probably our long-term answer is to avoid depending on wcwidth > and use wcswidth instead. But it's hard to get excited about > doing the legwork for that until popular libc implementations > get it right.
Here's an interesting blog post about trying to do this in Rust: https://tomdebruijn.com/posts/rust-string-length-width-calculations/ TL;DR... Even counting the number of graphemes isn't enough because terminals typically (but not always) display emoji graphemes using two columns. At the end of the day Unicode kind of assumes a variable-width display where the rendering is handled by something that has access to the actual font metrics. So anything trying to line things up in columns in a way that works with any rendering system down the line using any font is going to be making a best guess. -- greg