mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-13 02:14:37 +02:00
32 lines
938 B
C
32 lines
938 B
C
#include "common/wcwidth.h"
|
|
#include "3rdparty/widecharwidth/widechar_width_c.h"
|
|
|
|
int mk_wcwidth(uint32_t wc) {
|
|
// // We render U+1F6E1 (🛡) with a width of 2,
|
|
// // but widechar_width says it has a width of 1 because Unicode classifies it as "neutral".
|
|
// //
|
|
// // So we simply decide the width ourselves
|
|
// if (wc == 0x1F6E1) return 2;
|
|
//
|
|
// Well terminals do show it as width 1 after all
|
|
|
|
int width = widechar_wcwidth(wc);
|
|
|
|
switch (width) {
|
|
case widechar_ambiguous:
|
|
case widechar_private_use:
|
|
return 1;
|
|
case widechar_widened_in_9:
|
|
// Our renderer supports Unicode 9
|
|
return 2;
|
|
case widechar_nonprint:
|
|
case widechar_combining:
|
|
case widechar_unassigned:
|
|
case widechar_non_character:
|
|
return 0;
|
|
default:
|
|
// Use the width widechar_width gave us.
|
|
return width;
|
|
}
|
|
}
|