Release Unicode Tools 0.2.0
Verify / verify (push) Canceled after 0s

This commit is contained in:
2026-09-02 07:50:37 +02:00
parent dca0cb0e79
commit 424605e61f
35 changed files with 1686 additions and 127 deletions
+15 -2
View File
@@ -17,8 +17,21 @@ persistent search history.
archives and text files into deterministic checked-in source data. It derives
names, aliases, general categories, scripts, blocks, ages, bidi and case
properties, emoji, named sequences, selected Unihan fields, and UTS #39
confusable mappings. Private-use and surrogate ranges are not expanded into
synthetic catalog records.
confusable mappings. The code chart virtualizes complete Unicode block or
custom-range traversal into fixed row windows, requesting at most 512 entries
from the worker. Assigned records come from the pinned catalog; missing entries
are classified explicitly as unassigned, private-use, surrogate, or
noncharacter instead of being omitted. Private-use and surrogate ranges are not
expanded into the checked-in catalog itself.
The generated catalog also includes lazy worker shards for the checksum-pinned
UTS #39 `IdentifierStatus.txt` and `IdentifierType.txt` ranges. Worker analysis
loads them with the confusable table only when requested, applies those exact
ranges per scalar, creates NFD skeletons, and emits structured diagnostics plus
an intentionally conservative restriction-level estimate. `unicode/graphemes.ts` layers bounded structural
inspection and small sequence-editing operations on the shared
`Intl.Segmenter` wrapper; those operations construct code-point sequences but
do not alter or validate the pinned RGI emoji catalog.
Rendering, normalization and grapheme segmentation use the current browser and
operating-system Unicode implementation, which can differ from the pinned
+16 -6
View File
@@ -6,16 +6,26 @@ versioned static catalog files and never sends search terms or inspected text.
Input is rendered as React text, not executable HTML.
Text inspection is limited to 1,000,000 UTF-16 code units, scalar decoding to
10,000 values, catalog results to 180, emoji results to 240, and displayed
confusable mappings to 500. Large static datasets are held in a worker so the
UI can remain responsive. Unihan data loads only on demand.
10,000 values, catalog results to 180, emoji results to 240, displayed
confusable mappings to 500, and each virtual code-chart worker request to 512
entries. Large static datasets are held in a worker and chart rows are
virtualized so the UI can remain responsive. Unihan data loads only on demand.
UTS #39 skeleton equivalence and mixed-script detection are review signals.
They are not proof of spoofing, maliciousness, safety, or identifier validity;
applications still need a context-specific identifier profile and policy.
UTS #39 skeleton equivalence, pinned identifier status/type, mixed-script
detection, bidi/default-ignorable controls, repeated combining marks and the
displayed restriction-level estimate are review signals. They are not proof of
spoofing, maliciousness, safety, or identifier validity; applications still
need a context-specific identifier profile and policy. The comparison field
tests skeleton equivalence only and does not perform account or domain lookup.
Character glyphs come from the user's fonts, so a missing or surprising glyph
does not alter the underlying code point.
Emoji editing removes or inserts specific variation selectors and skin-tone
modifiers or joins 28 grapheme parts with ZWJ. It intentionally refuses
ambiguous selector editing inside an existing ZWJ sequence, and it does not
promise that constructed output is RGI, semantically appropriate, supported by
the current font, or rendered as a single glyph.
Developers can regenerate the catalog, but every upstream byte sequence must
match a hard-coded SHA-256 before parsing. The public release performs no such
download. Data source identities are inspectable and exportable from the app.