Skip to content

Provides fast access to unicode character properties

License

Notifications You must be signed in to change notification settings

PerBothner/unicode-properties

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

unicode-properties

Provides efficient lookup of a subset of Unicode properties, with a focus on properties useful for terminals, such as the DomTerm terminal emulator. Specifically, the following are encoded in a compact table:

  • Properties needed for determining extended grapheme clusters.

  • Determination of double-width characters (EastAsianWidth).

  • Determination of special characters that should be forced to single-width even though they may not be available in standard monospace fonts. Specifically, this applies to Braille characters, which are sometimes used for graphics.

You can support more properties (as long as they can be encoded in a 32-bit integer). Just add them to properties.mjs and enhance generate_data.mjs as needed.

The file properties.mjs defines the API. A client (browser or node) needs out/uc-properties.js (generated), along with the library files out/unicode-trie/index.mjs, out/unicode-trie/swap.mjs, and out/tiny-inflate/index.mjs. These are all EcmaScript modules.

The file uc-properties.js is generated ahead-of-time using node; see the Makefile for the needed commands.

You can also get TypeScript versions: Use out-ts/uc-properties.ts, along with out-ts/unicode-trie.ts and out-ts/tiny-inflate.ts.

To change Unicode version, edit UNICODE_VERSION in Makefile, and remove all of data/*.txt.

Uses Devon Govett's unicode-trie to compress the properties for all code points, and tiny-inflate to uncompress. Also partly based on grapheme-breaker-mjs and unicode-properties.

About

Provides fast access to unicode character properties

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 45.5%
  • TypeScript 38.9%
  • Makefile 15.6%