Egui::Terminal::CharWidth
Terminal-relevant wcwidth: 0 for combining marks, 2 for East Asian wide/emoji ranges, 1 otherwise. A compact range table — not the full Unicode wcwidth, but it covers what shells, editors and monitors actually emit.
Constants
RANGES = [Range.new(768, 879, 0), Range.new(1155, 1161, 0), Range.new(1425, 1469, 0), Range.new(1471, 1471, 0), Range.new(1552, 1562, 0), Range.new(1611, 1631, 0), Range.new(1648, 1648, 0), Range.new(1750, 1756, 0), Range.new(1840, 1866, 0), Range.new(1958, 1968, 0), Range.new(2304, 2307, 0), Range.new(2362, 2383, 0), Range.new(2385, 2391, 0), Range.new(3633, 3633, 0), Range.new(3636, 3642, 0), Range.new(3655, 3662, 0), Range.new(8203, 8207, 0), Range.new(8234, 8238, 0), Range.new(8288, 8292, 0), Range.new(8400, 8432, 0), Range.new(65024, 65039, 0), Range.new(65056, 65071, 0), Range.new(4352, 4447, 2), Range.new(8986, 8987, 2), Range.new(9001, 9002, 2), Range.new(9193, 9196, 2), Range.new(9200, 9200, 2), Range.new(9203, 9203, 2), Range.new(9725, 9726, 2), Range.new(9748, 9749, 2), Range.new(9800, 9811, 2), Range.new(9855, 9855, 2), Range.new(9875, 9875, 2), Range.new(9889, 9889, 2), Range.new(9898, 9899, 2), Range.new(9917, 9918, 2), Range.new(9924, 9925, 2), Range.new(9934, 9934, 2), Range.new(9940, 9940, 2), Range.new(9962, 9962, 2), Range.new(9970, 9971, 2), Range.new(9973, 9973, 2), Range.new(9978, 9978, 2), Range.new(9981, 9981, 2), Range.new(9989, 9989, 2), Range.new(9994, 9995, 2), Range.new(10024, 10024, 2), Range.new(10060, 10060, 2), Range.new(10062, 10062, 2), Range.new(10067, 10069, 2), Range.new(10071, 10071, 2), Range.new(10133, 10135, 2), Range.new(10160, 10160, 2), Range.new(10175, 10175, 2), Range.new(11035, 11036, 2), Range.new(11088, 11088, 2), Range.new(11093, 11093, 2), Range.new(11904, 12350, 2), Range.new(12353, 13311, 2), Range.new(13312, 19903, 2), Range.new(19968, 40959, 2), Range.new(40960, 42191, 2), Range.new(43360, 43391, 2), Range.new(44032, 55203, 2), Range.new(63744, 64255, 2), Range.new(65040, 65049, 2), Range.new(65072, 65135, 2), Range.new(65280, 65376, 2), Range.new(65504, 65510, 2), Range.new(94176, 94180, 2), Range.new(94208, 101119, 2), Range.new(110592, 111359, 2), Range.new(126980, 126980, 2), Range.new(127183, 127183, 2), Range.new(127374, 127374, 2), Range.new(127377, 127386, 2), Range.new(127488, 127776, 2), Range.new(127789, 127797, 2), Range.new(127799, 127868, 2), Range.new(127870, 127891, 2), Range.new(127904, 127946, 2), Range.new(127951, 127955, 2), Range.new(127968, 127984, 2), Range.new(127988, 127988, 2), Range.new(127992, 128062, 2), Range.new(128064, 128064, 2), Range.new(128066, 128252, 2), Range.new(128255, 128317, 2), Range.new(128331, 128334, 2), Range.new(128336, 128359, 2), Range.new(128378, 128378, 2), Range.new(128405, 128406, 2), Range.new(128420, 128420, 2), Range.new(128507, 128591, 2), Range.new(128640, 128709, 2), Range.new(128716, 128716, 2), Range.new(128720, 128722, 2), Range.new(128747, 128748, 2), Range.new(128756, 128764, 2), Range.new(128992, 129003, 2), Range.new(129292, 129535, 2), Range.new(129648, 129791, 2), Range.new(131072, 196605, 2), Range.new(196608, 262141, 2)]