Home Reference Source Test Repository

meaw

Utilities for Unicode East Asian Width (EAW).

Installation

npm i -S meaw # not meow!

Usage

More detailed documentation is available here.

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("A") === "F");
// Halfwidth
assert(getEAW("ア") === "H");
// Ambiguous
assert(getEAW("∀") === "A");
assert(getEAW("→") === "A");
assert(getEAW("Ω") === "A");
assert(getEAW("Я") === "A");
// Neutral
assert(getEAW("ℵ") === "N");

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

computeWidth()

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

import { computeWidth } from "meaw";

assert(computeWidth("Aあ🍣Ω") === 6);
// custom widths can be specified by an object
assert(computeWidth("Aあ🍣Ω", { "A": 2 }) === 7);

Development

Setup

git clone https://github.com/susisu/meaw.git
cd meaw
npm install
npm run generate # generate source script

Scripts

Name Description
generate generate source script from the EAW definition file
lint run lint tool
test run tests
cover compute test coverage
build build script
doc build documentation
clean remove built script and documentation
prepare prepare for publishing (executed automatically before publishing)

License

MIT License

Author

Susisu (GitHub, Twitter)