Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/llimllib/display-width
A fast function for determining a string's display width
https://github.com/llimllib/display-width
Last synced: about 1 month ago
JSON representation
A fast function for determining a string's display width
- Host: GitHub
- URL: https://github.com/llimllib/display-width
- Owner: llimllib
- License: other
- Created: 2024-10-24T03:03:40.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-10-25T19:07:00.000Z (3 months ago)
- Last Synced: 2024-11-30T02:50:31.692Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 40 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# display-width
A node.js port of [uwcwidth](https://github.com/Z4JC/uwcwidth), a fast function for determining a string's display width
That code is a port of POSIX [wcswidth](https://pubs.opengroup.org/onlinepubs/9699919799.2016edition/functions/wcswidth.html), a standard function for counting the number of columns occupied by a string, and is derived from [musl libc](https://github.com/kraj/musl/blob/ffb23aef/src/ctype/wcwidth.c#L11-L29)
## How to use it
```js
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("cafeฬ") == 4
>> "cafeฬ".length == 5>> wcswidth("โ ๏ธ warning") == 9
>> "โ ๏ธ warning".length == 10>> wcswidth("๐จโ๐จโ๐งโ๐ง") == 2
>> "๐จโ๐จโ๐งโ๐ง".length == 11>> wcswidth("๐ฉโโค๏ธโ๐จ") == 2
>> "๐ฉโโค๏ธโ๐จ".length == 8
```## Is it fast?
yes! Compared to [string-width](https://www.npmjs.com/package/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](https://github.com/llimllib/display-width/tree/main/bench) 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](https://github.com/Z4JC/uwcwidth) though, so I have good vibes about
it