Skip to content

Wide character support in meter text#1648

Draft
Explorer09 wants to merge 4 commits intohtop-dev:mainfrom
Explorer09:screen-tab-2
Draft

Wide character support in meter text#1648
Explorer09 wants to merge 4 commits intohtop-dev:mainfrom
Explorer09:screen-tab-2

Conversation

@Explorer09
Copy link
Copy Markdown
Contributor

htop-screenshot-meter-bar-unicode

This PR will be a set of experimental changes I would like to do for meters. The meter draw routines were not capable of calculating the terminal widths when the meter text or caption contains wide (wide) or combining characters (e.g. Zalgo text). And this PR will make it possible.

Currently I've done with the bar meter mode. The LED meter mode will be the next.

This PR uses the routines from #1642 to make calculating the terminal widths of multibyte strings easy.

@Explorer09 Explorer09 force-pushed the screen-tab-2 branch 3 times, most recently from e8e8af2 to 21c4c84 Compare March 26, 2025 22:20
@Explorer09 Explorer09 force-pushed the screen-tab-2 branch 5 times, most recently from 801948a to 811f998 Compare June 28, 2025 08:58
Explorer09 referenced this pull request Jul 11, 2025
The new logic reads the source buffer exactly once and
moves the accumulated buffer in the dedicated buffer.

This implementation avoids VLAs and instead uses
a dedicated buffer allocated with xCalloc. The buffer is
guaranteed to be at least 40 characters wide, meaning on narrow
displays horizontal scrolling will be necessary. Doing so ensures
a half-decent chance for arguments to fit fully in one line.
@Explorer09 Explorer09 force-pushed the screen-tab-2 branch 2 times, most recently from 17f09b4 to 877a31b Compare January 9, 2026 08:23
@Explorer09 Explorer09 force-pushed the screen-tab-2 branch 2 times, most recently from 58d44cd to d56d186 Compare February 23, 2026 22:39
* String_makePrintable()
* EncodePrintableString()
* String_lineBreakWidth()
* String_mbswidth()

Signed-off-by: Kang-Che Sung <explorer09@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant