# Cangjie common-character data sources

`cangjie-common.json` contains 450 curated everyday Traditional Chinese characters, each with arrays of codes transcribed directly from the two maintained source tables listed below. The character inventory is a compact hand-curated starter set, not a statistically ranked corpus. Rows are included only when both source tables contain that exact character. Alternate codes in a source are preserved.

## Inputs and licenses

- Cangjie 3: [Arthurmcarthur/Cangjie3-Plus](https://github.com/Arthurmcarthur/Cangjie3-Plus), file [`cj3-30000.txt`](https://github.com/Arthurmcarthur/Cangjie3-Plus/blob/master/cj3-30000.txt). This project describes the file as the basic CJK through Extension A table and says it is reviewed against historical manuals and related official references. Licensed MIT; the source license is copied to [`LICENSE-Cangjie3-MIT.txt`](LICENSE-Cangjie3-MIT.txt). Local source snapshot: [`source-cj3-30000.txt`](source-cj3-30000.txt).
- Cangjie 5: [Jackchows/Cangjie5](https://github.com/Jackchows/Cangjie5), file [`Cangjie5_TC.txt`](https://github.com/Jackchows/Cangjie5/blob/master/Cangjie5_TC.txt). This is its Traditional Chinese table; the project says it is based on official manuals and related references and notes that codes can differ from other common IMEs. Licensed MIT; the source license is copied to [`LICENSE-Cangjie5-MIT.txt`](LICENSE-Cangjie5-MIT.txt). Local source snapshot: [`source-cj5-traditional.txt`](source-cj5-traditional.txt).

The MIT notices name Chu Bong-Foo, ChineseCangjie Malaysia, and the respective completion project. Both license texts are retained alongside the derived data. The derived file itself carries these source attributions and must retain the applicable notices when redistributed.

## Generation and limits

Run `python scripts/build-data.py` from the project root to regenerate the JSON from the checked-in source snapshots. The script takes no code from memory or from the web-page rendering. `codes3` and `codes5` contain lowercase Latin key sequences. These are generation-specific and must not be interchanged.

Cangjie 3 and 5 are not identical: for example, 面 is `mwyl` in the cited Cangjie 3 source and `mwsl` in the cited Cangjie 5 table. Unicode's 2025 discussion likewise identifies mixed-generation encodings and reports 面 as MWYL/MWSL, while warning that Unicode's existing `kCangjie` field can mix generations. This dataset therefore uses the explicit generation tables above, not the Unicode property. Some other characters differ too; source projects acknowledge historical, regional glyph, and editorial variation. Treat this as a well-attributed learning set, not a universal adjudication of every IME's behavior.

## Verification

The build script checks that 300–500 rows are produced and only includes a character when both source files contain one or more valid codes. The checked-in dataset has 450 rows; 11 have different code arrays between generations.
