A node.js port of uwcwidth, a fast function for determining a string's display width
That code is a port of POSIX wcswidth, a standard function for counting the number of columns occupied by a string, and is derived from musl libc
import { wcswidth } from "display-width";
// wcswidth("👩❤️👨") == 2
console.log(wcswidth("\u{1F469}\u{200D}\u{2764}\u{FE0F}\u{200D}\u{1F468}"));
>> wcswidth("café") == 4
>> "café".length == 5
>> wcswidth("⚠︎ warning") == 9
>> "⚠︎ warning".length == 10
>> wcswidth("👨👨👧👧") == 2
>> "👨👨👧👧".length == 11
>> wcswidth("👩❤️👨") == 2
>> "👩❤️👨".length == 8
yes! Compared to string-width, it's about 33x faster
┌─────────┬─────────────────┬───────────┬────────────────────┬───────────┬─────────┐
│ (index) │ Task Name │ ops/sec │ Average Time (ns) │ Margin │ Samples │
├─────────┼─────────────────┼───────────┼────────────────────┼───────────┼─────────┤
│ 0 │ 'display-width' │ '188,426' │ 5307.115321339439 │ '±1.55%' │ 18843 │
│ 1 │ 'string-width' │ '5,586' │ 179008.73345259373 │ '±11.73%' │ 559 │
└─────────┴─────────────────┴───────────┴────────────────────┴───────────┴─────────┘
see the bench directory for details
no!
no!
no! I ported the code and all the tests from uwcwidth though, so I have good vibes about it