feat(terminal): check ambiguous unicode width #44
+288
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Display width of unicode characters can differ based on terminal, font, and language settings.
East asian languages, in grids, and wide chars will display some single width chars as double width for proper alignment in those languages. However seems that Windows by default does this also for other languages.
This PR adds a way to detect if a character is an 'ambiguous width' character, an 'A' classification in https://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt. Though even that doesn't seem to be conclusive, since also the 'N' (neutral) category might be 1 or 2 width.
Seems like the only conclusive way is to print the character and record the change in cursor position. So this code is not a full fix, so leaving it as draft for now.