index.d.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. export type Options = {
  2. /**
  3. 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).
  4. @default true
  5. > 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.__
  6. > - http://www.unicode.org/reports/tr11/
  7. */
  8. readonly ambiguousIsNarrow?: boolean;
  9. /**
  10. Whether [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) should be counted.
  11. @default false
  12. */
  13. readonly countAnsiEscapeCodes?: boolean;
  14. };
  15. /**
  16. Get the visual width of a string - the number of columns required to display it.
  17. 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.
  18. @example
  19. ```
  20. import stringWidth from 'string-width';
  21. stringWidth('a');
  22. //=> 1
  23. stringWidth('古');
  24. //=> 2
  25. stringWidth('\u001B[1m古\u001B[22m');
  26. //=> 2
  27. ```
  28. */
  29. export default function stringWidth(string: string, options?: Options): number;