40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
|
export type Options = {
|
||
|
/**
|
||
|
Count [ambiguous width characters](https://www.unicode.org/reports/tr11/#Ambiguous) as having narrow width (count of 1) instead of wide width (count of 2).
|
||
|
|
||
|
@default true
|
||
|
|
||
|
> Ambiguous characters behave like wide or narrow characters depending on the context (language tag, script identification, associated font, source of data, or explicit markup; all can provide the context). __If the context cannot be established reliably, they should be treated as narrow characters by default.__
|
||
|
> - http://www.unicode.org/reports/tr11/
|
||
|
*/
|
||
|
readonly ambiguousIsNarrow?: boolean;
|
||
|
|
||
|
/**
|
||
|
Whether [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) should be counted.
|
||
|
|
||
|
@default false
|
||
|
*/
|
||
|
readonly countAnsiEscapeCodes?: boolean;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
Get the visual width of a string - the number of columns required to display it.
|
||
|
|
||
|
Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
|
||
|
|
||
|
@example
|
||
|
```
|
||
|
import stringWidth from 'string-width';
|
||
|
|
||
|
stringWidth('a');
|
||
|
//=> 1
|
||
|
|
||
|
stringWidth('古');
|
||
|
//=> 2
|
||
|
|
||
|
stringWidth('\u001B[1m古\u001B[22m');
|
||
|
//=> 2
|
||
|
```
|
||
|
*/
|
||
|
export default function stringWidth(string: string, options?: Options): number;
|