UnicodeWidth
Constants
VERSION = {{ (read_file("/tmp/tmp.MMKJCj/src/src/unicode_width/../../VERSION")).chomp }}
WIDE_RANGES = [{4352_u32, 4447_u32}, {8986_u32, 8987_u32}, {9001_u32, 9002_u32}, {9193_u32, 9196_u32}, {9200_u32, 9200_u32}, {9203_u32, 9203_u32}, {9725_u32, 9726_u32}, {9748_u32, 9749_u32}, {9776_u32, 9783_u32}, {9800_u32, 9811_u32}, {9855_u32, 9855_u32}, {9866_u32, 9871_u32}, {9875_u32, 9875_u32}, {9889_u32, 9889_u32}, {9898_u32, 9899_u32}, {9917_u32, 9918_u32}, {9924_u32, 9925_u32}, {9934_u32, 9934_u32}, {9940_u32, 9940_u32}, {9962_u32, 9962_u32}, {9970_u32, 9971_u32}, {9973_u32, 9973_u32}, {9978_u32, 9978_u32}, {9981_u32, 9981_u32}, {9989_u32, 9989_u32}, {9994_u32, 9995_u32}, {10024_u32, 10024_u32}, {10060_u32, 10060_u32}, {10062_u32, 10062_u32}, {10067_u32, 10069_u32}, {10071_u32, 10071_u32}, {10133_u32, 10135_u32}, {10160_u32, 10160_u32}, {10175_u32, 10175_u32}, {11035_u32, 11036_u32}, {11088_u32, 11088_u32}, {11093_u32, 11093_u32}, {11904_u32, 11929_u32}, {11931_u32, 12019_u32}, {12032_u32, 12245_u32}, {12272_u32, 12350_u32}, {12353_u32, 12438_u32}, {12441_u32, 12543_u32}, {12549_u32, 12591_u32}, {12593_u32, 12686_u32}, {12688_u32, 12773_u32}, {12783_u32, 12830_u32}, {12832_u32, 12871_u32}, {12880_u32, 42124_u32}, {42128_u32, 42182_u32}, {43360_u32, 43388_u32}, {44032_u32, 55203_u32}, {63744_u32, 64255_u32}, {65040_u32, 65049_u32}, {65072_u32, 65106_u32}, {65108_u32, 65126_u32}, {65128_u32, 65131_u32}, {65281_u32, 65376_u32}, {65504_u32, 65510_u32}, {94176_u32, 94180_u32}, {94192_u32, 94198_u32}, {94208_u32, 101589_u32}, {101631_u32, 101662_u32}, {101760_u32, 101874_u32}, {110576_u32, 110579_u32}, {110581_u32, 110587_u32}, {110589_u32, 110590_u32}, {110592_u32, 110882_u32}, {110898_u32, 110898_u32}, {110928_u32, 110930_u32}, {110933_u32, 110933_u32}, {110948_u32, 110951_u32}, {110960_u32, 111355_u32}, {119552_u32, 119638_u32}, {119648_u32, 119670_u32}, {126980_u32, 126980_u32}, {127183_u32, 127183_u32}, {127374_u32, 127374_u32}, {127377_u32, 127386_u32}, {127488_u32, 127490_u32}, {127504_u32, 127547_u32}, {127552_u32, 127560_u32}, {127568_u32, 127569_u32}, {127584_u32, 127589_u32}, {127744_u32, 127776_u32}, {127789_u32, 127797_u32}, {127799_u32, 127868_u32}, {127870_u32, 127891_u32}, {127904_u32, 127946_u32}, {127951_u32, 127955_u32}, {127968_u32, 127984_u32}, {127988_u32, 127988_u32}, {127992_u32, 128062_u32}, {128064_u32, 128064_u32}, {128066_u32, 128252_u32}, {128255_u32, 128317_u32}, {128331_u32, 128334_u32}, {128336_u32, 128359_u32}, {128378_u32, 128378_u32}, {128405_u32, 128406_u32}, {128420_u32, 128420_u32}, {128507_u32, 128591_u32}, {128640_u32, 128709_u32}, {128716_u32, 128716_u32}, {128720_u32, 128722_u32}, {128725_u32, 128728_u32}, {128732_u32, 128735_u32}, {128747_u32, 128748_u32}, {128756_u32, 128764_u32}, {128992_u32, 129003_u32}, {129008_u32, 129008_u32}, {129292_u32, 129338_u32}, {129340_u32, 129349_u32}, {129351_u32, 129535_u32}, {129648_u32, 129660_u32}, {129664_u32, 129674_u32}, {129678_u32, 129734_u32}, {129736_u32, 129736_u32}, {129741_u32, 129756_u32}, {129759_u32, 129770_u32}, {129775_u32, 129784_u32}, {131072_u32, 196605_u32}, {196608_u32, 262141_u32}]
East Asian Wide (W) and Fullwidth (F) character ranges — display width 2
ZERO_WIDTH_RANGES = [{173_u32, 173_u32}, {768_u32, 879_u32}, {1155_u32, 1161_u32}, {1425_u32, 1469_u32}, {1471_u32, 1471_u32}, {1473_u32, 1474_u32}, {1476_u32, 1477_u32}, {1479_u32, 1479_u32}, {1536_u32, 1541_u32}, {1552_u32, 1562_u32}, {1564_u32, 1564_u32}, {1611_u32, 1631_u32}, {1648_u32, 1648_u32}, {1750_u32, 1757_u32}, {1759_u32, 1764_u32}, {1767_u32, 1768_u32}, {1770_u32, 1773_u32}, {1807_u32, 1807_u32}, {1809_u32, 1809_u32}, {1840_u32, 1866_u32}, {1958_u32, 1968_u32}, {2027_u32, 2035_u32}, {2045_u32, 2045_u32}, {2070_u32, 2073_u32}, {2075_u32, 2083_u32}, {2085_u32, 2087_u32}, {2089_u32, 2093_u32}, {2137_u32, 2139_u32}, {2192_u32, 2193_u32}, {2200_u32, 2207_u32}, {2250_u32, 2273_u32}, {2275_u32, 2306_u32}, {2362_u32, 2362_u32}, {2364_u32, 2364_u32}, {2369_u32, 2376_u32}, {2381_u32, 2381_u32}, {2385_u32, 2391_u32}, {2402_u32, 2403_u32}, {2433_u32, 2433_u32}, {2492_u32, 2492_u32}, {2497_u32, 2500_u32}, {2509_u32, 2509_u32}, {2530_u32, 2531_u32}, {2558_u32, 2558_u32}, {2561_u32, 2562_u32}, {2620_u32, 2620_u32}, {2625_u32, 2626_u32}, {2631_u32, 2632_u32}, {2635_u32, 2637_u32}, {2641_u32, 2641_u32}, {2672_u32, 2673_u32}, {2677_u32, 2677_u32}, {2689_u32, 2690_u32}, {2748_u32, 2748_u32}, {2753_u32, 2757_u32}, {2759_u32, 2760_u32}, {2765_u32, 2765_u32}, {2786_u32, 2787_u32}, {2810_u32, 2815_u32}, {2817_u32, 2817_u32}, {2876_u32, 2876_u32}, {2879_u32, 2879_u32}, {2881_u32, 2884_u32}, {2893_u32, 2893_u32}, {2901_u32, 2902_u32}, {2914_u32, 2915_u32}, {2946_u32, 2946_u32}, {3008_u32, 3008_u32}, {3021_u32, 3021_u32}, {3072_u32, 3072_u32}, {3076_u32, 3076_u32}, {3132_u32, 3132_u32}, {3134_u32, 3136_u32}, {3142_u32, 3144_u32}, {3146_u32, 3149_u32}, {3157_u32, 3158_u32}, {3170_u32, 3171_u32}, {3201_u32, 3201_u32}, {3260_u32, 3260_u32}, {3263_u32, 3263_u32}, {3270_u32, 3270_u32}, {3276_u32, 3277_u32}, {3298_u32, 3299_u32}, {3328_u32, 3329_u32}, {3387_u32, 3388_u32}, {3393_u32, 3396_u32}, {3405_u32, 3405_u32}, {3426_u32, 3427_u32}, {3457_u32, 3457_u32}, {3530_u32, 3530_u32}, {3538_u32, 3540_u32}, {3542_u32, 3542_u32}, {3633_u32, 3633_u32}, {3636_u32, 3642_u32}, {3655_u32, 3662_u32}, {3761_u32, 3761_u32}, {3764_u32, 3772_u32}, {3784_u32, 3790_u32}, {3864_u32, 3865_u32}, {3893_u32, 3893_u32}, {3895_u32, 3895_u32}, {3897_u32, 3897_u32}, {3953_u32, 3966_u32}, {3968_u32, 3972_u32}, {3974_u32, 3975_u32}, {3981_u32, 3991_u32}, {3993_u32, 4028_u32}, {4038_u32, 4038_u32}, {4448_u32, 4607_u32}, {4957_u32, 4959_u32}, {5906_u32, 5908_u32}, {5938_u32, 5940_u32}, {5970_u32, 5971_u32}, {6002_u32, 6003_u32}, {6068_u32, 6069_u32}, {6071_u32, 6077_u32}, {6086_u32, 6086_u32}, {6089_u32, 6099_u32}, {6109_u32, 6109_u32}, {6155_u32, 6158_u32}, {6277_u32, 6278_u32}, {6313_u32, 6313_u32}, {6432_u32, 6434_u32}, {6439_u32, 6440_u32}, {6450_u32, 6450_u32}, {6457_u32, 6459_u32}, {6679_u32, 6680_u32}, {6683_u32, 6683_u32}, {6742_u32, 6742_u32}, {6744_u32, 6750_u32}, {6752_u32, 6752_u32}, {6754_u32, 6754_u32}, {6757_u32, 6764_u32}, {6771_u32, 6780_u32}, {6783_u32, 6783_u32}, {6832_u32, 6862_u32}, {6912_u32, 6915_u32}, {6964_u32, 6964_u32}, {6966_u32, 6970_u32}, {6972_u32, 6972_u32}, {6978_u32, 6978_u32}, {7019_u32, 7027_u32}, {7040_u32, 7041_u32}, {7074_u32, 7077_u32}, {7080_u32, 7081_u32}, {7083_u32, 7085_u32}, {7142_u32, 7142_u32}, {7144_u32, 7145_u32}, {7149_u32, 7149_u32}, {7151_u32, 7153_u32}, {7212_u32, 7219_u32}, {7222_u32, 7223_u32}, {7376_u32, 7378_u32}, {7380_u32, 7392_u32}, {7394_u32, 7400_u32}, {7405_u32, 7405_u32}, {7412_u32, 7412_u32}, {7416_u32, 7417_u32}, {7616_u32, 7679_u32}, {8203_u32, 8207_u32}, {8232_u32, 8238_u32}, {8288_u32, 8292_u32}, {8294_u32, 8303_u32}, {8400_u32, 8432_u32}, {65024_u32, 65039_u32}, {65056_u32, 65071_u32}, {65279_u32, 65279_u32}, {65529_u32, 65531_u32}, {119143_u32, 119145_u32}, {119155_u32, 119170_u32}, {119173_u32, 119179_u32}, {119210_u32, 119213_u32}, {119362_u32, 119364_u32}, {917505_u32, 917505_u32}, {917536_u32, 917631_u32}, {917760_u32, 917999_u32}]
Zero-width character ranges (combining marks, control characters, etc.)
Class methods
Pads a string with spaces to reach target_width display columns.
Truncates a string to fit within max_width display columns. Returns the truncated string.
Returns the display width of a single character. Wide (East Asian W/F) characters return 2. Zero-width characters (combining marks, control chars, etc.) return 0. All others return 1.