meaw

Utility for Unicode East Asian Width

OTHER License

Downloads
985
Stars
17
Committers
2

meaw

Utilities for Unicode East Asian Width (EAW).

Installation

# npm
npm i --save meaw
# yarn
yarn add meaw
# pnpm
pnpm add meaw

Usage

getEAW()

Gets the EAW property of a character.

import { getEAW } from "meaw";

// Narrow
assert(getEAW("A") === "Na");
// Wide
assert(getEAW("") === "W");
assert(getEAW("") === "W");
assert(getEAW("🍣") === "W");
// Fullwidth
assert(getEAW("") === "F");
// Halfwidth
assert(getEAW("") === "H");
// Ambiguous
assert(getEAW("") === "A");
assert(getEAW("") === "A");
assert(getEAW("Ω") === "A");
assert(getEAW("Я") === "A");
// Neutral
assert(getEAW("") === "N");

// character position (in code unit) can be specified
assert(getEAW("ℵAあAア∀", 2) === "W");

computeWidth()

Deprecated. To calculate the visual width of a string, it is recommended to split the string into graphemes (using Intl.Segmenter or libraries like graphemer) and then calculate the widths of them.

Computes an approximate width of a string based on the EAW properties of the characters. By default, characters with property Wide (W) or Fullwidth (F) are treated as wide (= 2) and others are as narrow (= 1).

import { computeWidth } from "meaw";

assert(computeWidth("Aあ🍣Ω") === 6);
// character width for each EAW property can be customized
assert(computeWidth("Aあ🍣Ω", { "A": 2 }) === 7);

Development

Setup

git clone https://github.com/susisu/meaw.git
cd meaw
pnpm i

Scripts

Name Description
fetch fetch the latest version of the EAW definition file
generate generate source script from the EAW definition file
format run Prettier
lint run ESLint
typecheck run tsc --noEmit
test execute tests
build build scripts

License

MIT License

Author

Susisu (GitHub, Twitter)