Skip to main content
Module

std/console/mod.ts>unicodeWidth

The Deno Standard Library
Latest
function unicodeWidth
Deprecated
Deprecated

Use unicodeWidth from std/cli instead. This will be removed once the Standard Library migrates to JSR.

import { unicodeWidth } from "https://deno.land/std@0.222.1/console/mod.ts";

Calculate the physical width of a string in a TTY-like environment. This is useful for cases such as calculating where a line-wrap will occur and underlining strings.

The physical width is given by the number of columns required to display the string. The number of columns a given unicode character occupies can vary depending on the character itself.

Examples

Calculating the unicode width of a string

import { unicodeWidth } from "https://deno.land/std@0.222.1/console/unicode_width.ts";

unicodeWidth("hello world"); // 11
unicodeWidth("天地玄黃宇宙洪荒"); // 16
unicodeWidth("fullwidth"); // 18

Calculating the unicode width of a color-encoded string

import { unicodeWidth } from "https://deno.land/std@0.222.1/console/unicode_width.ts";
import { stripAnsiCode } from "https://deno.land/std@0.222.1/fmt/colors.ts";

unicodeWidth(stripAnsiCode("\x1b[36mголубой\x1b[39m")); // 7
unicodeWidth(stripAnsiCode("\x1b[31m紅色\x1b[39m")); // 4
unicodeWidth(stripAnsiCode("\x1B]8;;https://deno.land\x07🦕\x1B]8;;\x07")); // 2

Use stripAnsiCode to remove ANSI escape codes from a string before passing it to unicodeWidth.

Parameters

str: string

The string to measure.

Returns

number

The unicode width of the string.