display-width
v2.0.1
Published
A node.js port of [uwcwidth](https://github.com/Z4JC/uwcwidth), a fast function for determining a string's display width
Downloads
454
Maintainers
Readme
display-width
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
How to use it
import { wcswidth } from "display-width";
// wcswidth("👩❤️👨") == 2
console.log(wcswidth("\u{1F469}\u{200D}\u{2764}\u{FE0F}\u{200D}\u{1F468}"));
Why to use it
>> wcswidth("café") == 4
>> "café".length == 5
>> wcswidth("⚠︎ warning") == 9
>> "⚠︎ warning".length == 10
>> wcswidth("👨👨👧👧") == 2
>> "👨👨👧👧".length == 11
>> wcswidth("👩❤️👨") == 2
>> "👩❤️👨".length == 8
Is it fast?
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
Is it large?
no!
Does it have any dependencies?
no!
Do you completely understand it?
no! I ported the code and all the tests from uwcwidth though, so I have good vibes about it