Chivabwe character data format
Every public character of the Chivabwe script has a permanent page and machine-readable representations, generated from the live character database.
The uploaded SVG is the authoritative visual of a character. The .svg file and the svg field in JSON are that exact SVG, byte-for-byte as stored (only active content such as scripts is ever removed, never geometry, paths, proportions or colour; see svgModified). PNGs and the text preview are secondary, derived representations. If a glyph uses a feature the PNG renderer cannot reproduce exactly (for example a gradient, a filter, embedded text or a non-round stroke join), no PNG is generated for that form — the SVG remains the only image, and pngUrl/textPreview are null. A PNG is never an approximation of the glyph.
URLs
- Character page
- /characters/<slug>
- JSON
- /characters/<slug>.json
- SVG, initial form
- /characters/<slug>.svg
- SVG, non-initial form
- /characters/<slug>.non-initial.svg
- SVG, a variation
- /characters/<slug>.variation-<id>.svg
- PNG (512×512, white background)
- /characters/<slug>.png, .non-initial.png, .variation-<id>.png
- Directory
- /characters
- Whole catalogue + live statistics
- /characters.json
- Sitemap index
- /sitemap.xml
The slug is the character’s Latin transliteration key, lower-cased. Punctuation is spelled out (for example the key C' becomes c-apostrophe), and non-ASCII letters become u<hex>. The slug is the character’s permanent address; the page’s rel="canonical" link always states it.
JSON fields
- id, slug, url
- Database id, URL slug, canonical page URL
- name, latin, ipa
- Record name, Latin transliteration, IPA (null if not recorded)
- category, categoryLabel
- base, combined, variation, number or punctuation
- formKind
- heritage or triform
- orderPosition
- Position in the library ordering (1-based)
- libraryNote
- Free-text note stored with the record, if any
- forms
- initial / nonInitial: svgUrl, svg (the exact uploaded SVG markup — authoritative), svgModified (true only if unsafe content was stripped), pngUrl (secondary; null if that glyph can't be reproduced exactly in PNG), textPreview (a low-resolution text illustration; null under the same condition)
- variations
- Joining-context variations: id, name, description, examples, applicableTo, svgUrl, pngUrl, svg
- components
- For combined characters: ordered component characters and variation used
- related
- Related characters with relation type
- strokeCount, updatedAt
- Recorded strokes; last update time
Only public character data is exposed. Fields that the database does not define are null or empty; nothing is inferred.
Catalogue statistics (/characters.json)
A single request returns every public character plus statistics computed from the current data on every request: total character count, a count and percentage for each category (base, combined, variation, number, punctuation), a count and percentage for each written-form style (heritage / tri-form), how many characters have a non-initial form, how many have positional variations (and the total count of those), how many have component breakdowns, how many have relationships (and a count per relationship type), and how many have IPA recorded. Nothing here is hard-coded — add, edit or remove a character and these numbers update on the next request.