meaw

Utilities for Unicode East Asian Width

Usage no npm install needed!

<script type="module">
  import meaw from 'https://cdn.skypack.dev/meaw';
</script>

README

meaw

CI

Utilities for Unicode East Asian Width (EAW).

Installation

npm i meaw
# or
yarn 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("A") === "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()

Computes the 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
yarn install

Scripts

Name Description
fetch fetch the latest version of the EAW definition file
generate generate source script from the EAW definition file
typecheck run typechecker
lint run lint tool
test run tests
build build script
clean remove built script

License

MIT License

Author

Susisu (GitHub, Twitter)