Skip to main content
The Deno 2 Release Candidate is here
Learn more
Module

x/cliffy/table/unicode_width.ts>unicodeWidth

Command line framework for deno 🦕 Including Commandline-Interfaces, Prompts, CLI-Table, Arguments Parser and more...
Extremely Popular
Latest
function unicodeWidth
import { unicodeWidth } from "https://deno.land/x/cliffy@v1.0.0-rc.7/table/unicode_width.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 "@std/cli/unicode-width";
import { assertEquals } from "@std/assert";

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

Calculating the unicode width of a color-encoded string

import { unicodeWidth } from "@std/cli/unicode-width";
import { stripAnsiCode } from "@std/fmt/colors";
import { assertEquals } from "@std/assert";

assertEquals(unicodeWidth(stripAnsiCode("\x1b[36mголубой\x1b[39m")), 7);
assertEquals(unicodeWidth(stripAnsiCode("\x1b[31m紅色\x1b[39m")), 4);
assertEquals(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.