43 lines
1011 B
Markdown
43 lines
1011 B
Markdown
# Fast String Width
|
|
|
|
A fast function for calculating the visual width of a string once printed to the terminal.
|
|
|
|
See [`fast-string-truncated-width`](https://github.com/fabiospampinato/fast-string-truncated-width) for a lower-level version of this.
|
|
|
|
## Install
|
|
|
|
```sh
|
|
npm install fast-string-width
|
|
```
|
|
|
|
## Usage
|
|
|
|
```ts
|
|
import fastStringWidth from 'fast-string-width';
|
|
|
|
// The width of various classes of characters is configurable
|
|
|
|
const options = {
|
|
controlWidth: 0,
|
|
tabWidth: 8,
|
|
emojiWidth: 2,
|
|
regularWidth: 1,
|
|
wideWidth: 2
|
|
};
|
|
|
|
// Calculating the visual width of some strings
|
|
|
|
fastStringWidth ( 'hello', options ); // => 5
|
|
fastStringWidth ( '\x1b[31mhello', options ); // => 5
|
|
fastStringWidth ( '👨👩👧👦', options ); // => 2
|
|
fastStringWidth ( 'hello👨👩👧👦', options ); // => 7
|
|
|
|
// Calculating the visual width while tweaking the width of emojis
|
|
|
|
fastStringWidth ( '👶👶🏽', { ...options, emojiWidth: 1.5 } ); // => 3
|
|
```
|
|
|
|
## License
|
|
|
|
MIT © Fabio Spampinato
|