64 lines
3.0 KiB
Markdown
64 lines
3.0 KiB
Markdown
# Unicode Tools
|
||
|
||
Explore Unicode characters, scripts, emoji and text locally.
|
||
|
||
Unicode Tools is a standalone local-first application in the [add·ideas Toolbox](https://git.add-ideas.de/lotobo/toolbox-portal). Inputs are processed in the browser and are not uploaded.
|
||
|
||
## Version 0.2.0 scope
|
||
|
||
- Search 159,866 assigned Unicode scalar records by official name, alias,
|
||
literal character, or code point, with script, block and category filters.
|
||
- Traverse any block or hexadecimal range in a 16-column virtualized code
|
||
chart with roving keyboard navigation and property cards. Only visible rows
|
||
are materialized, including when the entire U+0000–U+10FFFF space is open.
|
||
- Browse and copy 3,952 fully-qualified emoji and components, inspect named
|
||
sequences, open practical symbol collections, and construct bounded
|
||
presentation-selector, skin-tone and ZWJ variants without claiming RGI
|
||
validity or font support.
|
||
- Inspect text as Unicode scalar values, UTF-16 positions, UTF-8 bytes,
|
||
JavaScript and HTML escapes, and browser-segmented grapheme clusters with
|
||
emoji/ZWJ/variation/modifier/flag/keycap/tag evidence.
|
||
- Decode lists of hexadecimal scalar values and compare NFC, NFD, NFKC and
|
||
NFKD normalization without losing sight of the original value.
|
||
- Compute UTS #39 confusable skeletons, compare skeleton collisions, display
|
||
pinned Identifier_Status/Identifier_Type evidence, and flag mixed scripts,
|
||
controls, default ignorables, combining repetition and non-NFC text as
|
||
review signals rather than security verdicts.
|
||
- Inspect character properties and optionally load selected Unihan readings,
|
||
definitions and radical/stroke fields for Han ideographs.
|
||
- Download an auditable source-identity report for every pinned data input.
|
||
|
||
The catalog is generated from checksum-pinned Unicode Consortium 17.0 data. It
|
||
does not scrape or redistribute descriptions, artwork, or annotations from
|
||
Symbl or another symbol website. Unassigned scalars, private-use scalars,
|
||
permanently reserved noncharacters and UTF-16 surrogate code units are labelled
|
||
as distinct chart states; none is presented as an assigned character. Lone
|
||
surrogate copy is disabled because a surrogate is not a Unicode scalar value.
|
||
|
||
The application treats every input as untrusted, applies explicit resource
|
||
limits, and never interprets text as active content. The checked-in catalog can
|
||
be regenerated only after each upstream file matches its recorded SHA-256.
|
||
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) and
|
||
[docs/PRIVACY-SECURITY.md](docs/PRIVACY-SECURITY.md).
|
||
|
||
## Development
|
||
|
||
Requires Node.js 22 and npm 11.
|
||
|
||
```sh
|
||
npm ci
|
||
npm run data:generate # optional, requires the pinned upstream files or network
|
||
npm run check
|
||
npm run test:browser
|
||
```
|
||
|
||
## Release
|
||
|
||
`npm run release:artifact` creates a deterministic `release/unicode-tools-0.2.0.zip` and checksum sidecar.
|
||
|
||
## Licence
|
||
|
||
Application code is GPL-3.0-or-later. Unicode data and documentation are used
|
||
under Unicode-3.0; runtime dependencies retain their own licences. See
|
||
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) and `LICENSES/`.
|