Technical Specification
Yapiri Script
A complete formal description of the Yapiri writing system for Kokborok — covering glyph inventory, phonological mapping, PUA encoding, OpenType layout, and design rationale.
§ 1
Introduction
Yapiri () is an original writing system created for the Kokborok language, the mother tongue of the Tiprasa people of Tripura, Northeast India. The name yapiri means "footprints" in Kokborok, reflecting the essential nature of all writing: traces of a living voice, preserved across time.
Kokborok is a Tibeto-Burman language spoken by approximately one million people. It has historically been written in the Bengali script, and more recently in the Roman script — neither of which maps cleanly to Kokborok phonology. Several dedicated scripts have been proposed over the decades (including Aima and Kókmari), but none has achieved broad adoption. Yapiri represents a new effort: a script designed from first principles, shaped entirely by the phonological requirements of the language.
This document constitutes the authoritative technical specification for the Yapiri script, version 2.0. It is intended for linguists, font engineers, software developers, keyboard layout designers, educators, and community members who wish to understand, implement, or extend the system.
§ 2
Design Principles
Phonological primacy. Every character in the Yapiri inventory corresponds to a phoneme (or phoneme cluster) that is functional in Kokborok. The characters v and z are included as secondary characters to support loanword and scientific transcription where phonetic fidelity matters.
Systematic visual grammar. Related phonemes share visual elements. Aspirated consonants are derived from their plain counterparts through a consistent modification. Voiced pairs of voiceless stops share structural DNA. This makes the script learnable as a system rather than a set of arbitrary symbols.
Phonemic alphabet structure. Yapiri is a phonemic alphabet: every character — whether consonant or vowel — is a full, independent letter representing exactly one phoneme. There are no inherent vowels, no combining diacritics for vowels, and no hidden sounds. Every sound heard in a word must be written explicitly.
Visual elegance. Glyphs were drawn by hand in Inkscape using Bézier curves with rounded linecaps and linejoin, producing an aesthetic that is organic without being decorative. The script is designed to look natural at both display and text sizes.
Digital-first design. Yapiri was built for the digital age from the start. The font is distributed as TTF/WOFF2 with full OpenType GPOS/GSUB support. PUA encoding ensures compatibility across all Unicode-compliant software. Keyboard input tools are provided alongside the font.
§ 2a
Uniform Glyph Design
A defining feature of the Yapiri script is the uniform visual grammar shared across all glyphs. Every character in the inventory — consonants, vowels, numerals, and punctuation — was drawn within the same design system: identical stroke weight, consistent cap height and baseline, shared proportional grid, and rounded stroke terminals throughout. This is a deliberate structural choice, not an aesthetic accident.
Design Consistency Rules
All glyphs are drawn with a uniform stroke width. No character uses a heavier or lighter line than any other. This gives the script a cohesive visual texture in running text — the page feels even, without any single character appearing heavier or more dominant than its neighbours.
All characters share the same cap height, baseline, and x-height. Descenders and ascenders follow a consistent vertical rhythm. As a result, any line of Yapiri text sits evenly on the baseline without visual bouncing between characters — a critical property for readability in a new script unfamiliar to most readers.
Every stroke in the Yapiri glyph set terminates with a rounded linecap. There are no sharp cut terminals or flat endings. This is consistent across all 45 characters, giving the script its distinctive organic but modern appearance at both display sizes and body text sizes.
Related phonemes are visually related glyphs. Aspirated consonants are derived from their plain counterparts through a consistent, repeatable visual modification — a learner who knows /p/ can recognise /ph/ by pattern, not by memorisation. Voiced stops share structural DNA with their voiceless counterparts. This encodes phonological relationships directly into the visual system of the script.
Advantages of Uniform Design
The decision to impose strict design uniformity across the entire glyph inventory carries concrete benefits — particularly important for a script being introduced to a community for the first time.
| Advantage | Description |
|---|---|
| Learnability | Systematic visual relationships between related phonemes reduce the number of arbitrary symbols a learner must memorise. Recognising the pattern is enough. |
| Legibility | Uniform stroke weight and consistent proportions help the eye distinguish glyphs quickly in running text. Characters that share structural DNA are still visually distinct at small sizes. |
| Scalability | Because all glyphs share the same metrics, the script renders predictably at any font size — from a 10pt body paragraph to a 120pt display headline — without individual characters appearing disproportionate. |
| Extensibility | New characters — such as future loanword additions or variant forms — can be designed to match the existing grammar precisely. The design system functions as a specification in itself. |
| Digital Typography | Consistent advance widths and vertical metrics simplify OpenType GPOS anchor placement, reduce layout irregularities in typesetting applications, and make web font rendering stable across operating systems. |
| Unicode Readiness | A clearly defined and internally consistent design grammar strengthens a Unicode proposal by demonstrating that the script was engineered — not improvised. The UTC considers design coherence when evaluating new script submissions. |
All Yapiri glyphs were drawn by hand in Inkscape using Bézier curves with rounded linecaps and linejoin settings, then imported into FontForge for metric calibration and OpenType feature compilation. The source drawings treat every glyph as part of one coherent family — not as individually designed symbols.
§ 3
Script Type
Yapiri is classified as a phonemic alphabet. Every sound in the Kokborok language — both consonants and vowels — is represented by its own independent, full-sized character. Consonant glyphs represent only the consonant sound. Vowel glyphs represent only the vowel sound. Letters are written sequentially in a linear string, where each glyph carries equal weight.
For example, the consonant glyph for /p/ represents only /p/ — never /pa/. To write the syllable /pa/, the consonant /p/ must be followed by the vowel /a/. This strict one-to-one mapping between sound and symbol is the defining feature of Yapiri.
Sounds that are traditionally written as digraphs in the Latin-based Kokborok script (such as ph, th, kh, ch, ng) are represented by single, unique glyphs in Yapiri. These are called atomic phonemes — they carry the same structural weight as any other independent character and are not decomposed in writing.
Yapiri is written left-to-right, in the same direction as the Latin and Bengali scripts used alongside it. There is no distinction between uppercase and lowercase. Words are separated by a space character.
§ 4
Phonological Scope
Kokborok has a rich consonantal inventory including plain stops, aspirated stops, voiced stops, nasals, liquids, glides, and fricatives. Yapiri covers this full inventory natively. The following phonological categories are represented:
| Category | Phonemes | Notes |
|---|---|---|
| Velar stops | k, kh, g, ng | Plain, aspirated, voiced, nasal |
| Palatal stops / affricates | ch, j | Plain affricate, voiced affricate |
| Dental / alveolar stops | t, th, d | Plain, aspirated, voiced |
| Bilabial stops | p, ph, b | Plain, aspirated, voiced |
| Nasals | m, n, n′ | Bilabial, alveolar, palatal |
| Liquids | r, l | Rhotic and lateral |
| Glides | w, y | Labio-velar, palatal |
| Fricatives (native) | s, h | Alveolar fricative, glottal fricative |
| Fricatives (extended / loanword) | v, z | v, z — secondary loanword characters for scientific and loanword transcription |
| Vowels | a, i, u, e, o, ə | Six vowel phonemes; ə = high central/mid central unrounded |
The vowel ə (U+F1CA5) is a distinctive phoneme in Kokborok and receives an independent glyph form in Yapiri.
§ 5
Consonant Inventory
The Yapiri consonant inventory comprises 23 characters at codepoints U+F1CA7–U+F1CBD. They are organized into phonological groups below.
Note on secondary characters. Two consonants in the Yapiri inventory carry a special classification distinct from the core native phoneme set:
v (U+F1CBC) and z (U+F1CBD) are classified as secondary characters for loanword and scientific transcription. Neither has a native Kokborok phonemic equivalent close enough for substitution — /v/ cannot be adequately rendered by /b/, and /z/ is phonetically too distant from /j/ to serve in scientific names such as Zea mays, zinc, or enzyme without causing confusion. These characters are actively justified.
| Codepoint | Romanization | IPA | Category | Notes |
|---|---|---|---|---|
| Velars | ||||
| U+F1CA9 | k | /k/ | Stop, voiceless | Velar, unaspirated |
| U+F1CAF | kh | /kʰ/ | Stop, aspirated | Velar, aspirated |
| U+F1CAC | g | /g/ | Stop, voiced | Velar |
| U+F1CB5 | ng | /ŋ/ | Nasal | Velar nasal |
| Palatals / Affricates | ||||
| U+F1CB0 | ch | /tɕ/ | Affricate, voiceless | |
| U+F1CB1 | j | /dʑ/ | Affricate, voiced | |
| Dentals / Alveolars | ||||
| U+F1CA8 | t | /t/ | Stop, voiceless | |
| U+F1CAE | th | /tʰ/ | Stop, aspirated | |
| U+F1CAB | d | /d/ | Stop, voiced | |
| Bilabials | ||||
| U+F1CA7 | p | /p/ | Stop, voiceless | |
| U+F1CAD | ph | /pʰ/ | Stop, aspirated | |
| U+F1CAA | b | /b/ | Stop, voiced | |
| Nasals, Liquids, Glides | ||||
| U+F1CB2 | m | /m/ | Nasal | Bilabial |
| U+F1CB3 | n | /n/ | Nasal | Alveolar |
| U+F1CB7 | r | /r/ | Liquid | Rhotic |
| U+F1CB8 | l | /l/ | Liquid | Lateral |
| U+F1CBB | w | /w/ | Glide | Labio-velar; word-initial only |
| U+F1CBA | y | /j/ | Glide | Palatal |
| Fricatives | ||||
| U+F1CB6 | s | /s/ | Fricative | Native |
| U+F1CB9 | h | /h/ | Fricative | Native, glottal |
| U+F1CBC | v | /v/ | Fricative | Secondary — loanword; no native phonemic equivalent |
| U+F1CBD | z | /z/ | Fricative | Secondary — loanword; phonetically distinct from /j/; needed for scientific nomenclature |
Examples —
in′ — "yes" · i · n′
in′he — "no" · i · n′ · h · e
§ 6
Vowel System
Yapiri has six independent vowel letters, each representing a distinct vowel phoneme of Kokborok. As a phonemic alphabet, every vowel is written explicitly as a full, standalone character — there are no inherent vowels, no diacritics for vowels, and no hidden sounds.
Vowels are placed after consonants horizontally in a linear sequence to form syllables. For example, the syllable /pa/ is written as the consonant /p/ (U+F1CA7) followed by the vowel /a/ (U+F1CA0). All six vowels carry equal character weight to consonants in the script.
| Codepoint | Letter | Phoneme | IPA | Notes |
|---|---|---|---|---|
| Vowel Letters — All Independent Full Characters | ||||
| U+F1CA0 | a | /a/ | [a] | Open central unrounded |
| U+F1CA1 | e | /e/ | [e] | Close-mid front unrounded |
| U+F1CA2 | i | /i/ | [i] | Close front unrounded |
| U+F1CA3 | u | /u/ | [u] | Close back rounded |
| U+F1CA4 | o | /o/ | [o] | Close-mid back rounded |
| U+F1CA5 | ə | /ə/ | [ə] | Mid central unrounded; mid-word only, never word-initial |
| Combining Diacritic — High Tone Only | ||||
| U+F1CD1 | ◌́ | — | — | High tone mark; placed above the vowel of the syllable |
Example — bohrok (they): b · ó · r · o · k — high tone mark over the first vowel o
§ 7
Numeral System
Yapiri includes a complete set of 10 digit glyphs (0–9) at codepoints U+F1CC0–U+F1CC9. The Yapiri numeral system uses a staff-and-crossbar design grammar: each digit is built from a vertical staff with a distinctive crossbar pattern, giving the set a systematic, learnable visual family.
Numerals combine with standard decimal positional notation. The digit 0 at U+F1CC0 is visually distinct from the alphabetic characters and functions as a true zero. Larger numbers are formed by stringing digits left-to-right in the normal positional manner.
§ 8
Unicode & PUA Mapping
Yapiri is currently encoded in the Unicode Supplementary Private Use Area-A (Plane 15), occupying a block of 96 codepoints from U+F1CA0 to U+F1CFF, of which 45 are currently assigned. The PUA is a permanent part of the Unicode standard reserved for scripts and characters that have not yet received official Unicode allocations.
The block is organized in sequential order: vowels first (U+F1CA0–U+F1CA5), consonants (U+F1CA7–U+F1CBD), numerals (U+F1CC0–U+F1CC9), punctuation (U+F1CCB–U+F1CCF), and the high tone mark (U+F1CD1). Reserved gaps are left between blocks to accommodate future additions without disturbing existing assignments.
| Range | Count | Category |
|---|---|---|
| U+F1CA0–U+F1CA5 | 6 | Vowel Letters (independent) |
| U+F1CA7–U+F1CBD | 23 | Consonants |
| U+F1CC0–U+F1CC9 | 10 | Numerals (0–9) |
| U+F1CCB–U+F1CCF | 5 | Punctuation |
| U+F1CD1 | 1 | High Tone Mark (combining) |
| Total | 45 | — |
To render Yapiri text, the Yapiri TTF font must be installed. Without it, PUA codepoints render as boxes or missing glyph indicators in all applications. This is normal behavior for PUA-encoded scripts and is not a font error.
§ 9
OpenType Features
| Feature Tag | Table | Description |
|---|---|---|
| mark | GPOS | Mark-to-base positioning for the high tone mark on vowel and consonant bases |
| kern | GPOS | Kerning pairs covering most common Kokborok phoneme sequences |
GPOS mark-to-base anchors are defined on all vowel and consonant glyphs as base characters, and on the high tone mark (U+F1CD1) as a combining mark. Each base glyph carries a named anchor point and the mark carries a corresponding attachment point, allowing the OpenType shaping engine to position the diacritic correctly regardless of the base glyph's advance width.
Note on application compatibility. Full GPOS support requires an OpenType-aware application (InDesign, modern Word, LibreOffice, web browsers). Some older applications may not apply GPOS kerning or mark positioning correctly. This is an application limitation, not a font defect.
§ 10
Encoding Rules
| # | Rule | Example |
|---|---|---|
| R1 | Every sound must be written — consonants and vowels are both full independent letters | U+F1CA7 = /p/ only; to write /pa/ use U+F1CA7 + U+F1CA0 |
| R2 | Consonant + vowel = consonant codepoint followed immediately by vowel codepoint | U+F1CA7 + U+F1CA2 = /pi/ |
| R3 | A word or syllable beginning with a vowel = vowel codepoint with no preceding consonant | U+F1CA0 alone = /a/ |
| R4 | Consonant clusters are written by placing consonant codepoints sequentially with no vowel between | U+F1CA7 + U+F1CB7 = /pr/ |
| R5 | High tone is marked by U+F1CD1 placed after the vowel codepoint of the syllable | U+F1CA0 + U+F1CD1 = /á/ |
| R6 | Schwa (U+F1CA5) appears only mid-word, never word-initial. Consonant w (U+F1CBB) appears only word-initially, never mid-word. The 'w' in Kokborok romanization that appears mid-word is always written as schwa ə in Yapiri. | wak (pig) — W at word start · kwtwi (sweet) — ə mid-word |
| R7 | Spaces separate words; no special word-joiner is required. Reduplicated words are written out in full. | U+0020 space as normal |
§ 11
Input Methods
1. Web keyboard tool. The Yapiri website includes an interactive on-screen keyboard that outputs PUA codepoints directly. No installation required. Accessible at yapiriscript.com/try.html.
2. Keyman keyboard layout. A Keyman keyboard layout is provided for native system-level input on Windows, macOS, iOS, and Android. Keyman is an open-source input method platform maintained by SIL International. The Yapiri layout uses a phoneme-based QWERTY mapping.
3. Direct Unicode input. Any application that supports Unicode PUA entry (via Alt+code on Windows, or the Unicode hex input method on macOS) can be used to enter Yapiri codepoints directly.
§ 12
Romanization System
The Yapiri romanization is a practical orthographic transcription system used alongside the script — for learner materials, technical documentation, and transliteration. It is not intended as a replacement for the script.
| Romanization | Phoneme | IPA | Notes |
|---|---|---|---|
| k, g, t, d, p, b | /k/, /g/, /t/, /d/, /p/, /b/ | as IPA | Plain stops |
| kh, th, ph | /kʰ/, /tʰ/, /pʰ/ | as IPA | Aspirated stops |
| ng | /ŋ/ | [ŋ] | Velar nasal |
| ch, j | /tɕ/, /dʑ/ | [tɕ], [dʑ] | Palatal affricates |
| m, n, r, l, w, y | /m/, /n/, /r/, /l/, /w/, /j/ | as IPA | Sonorants and glides |
| s, h, v, z | /s/, /h/, /v/, /z/ | as IPA | v, z = secondary loanword characters |
| a, i, u, e, o | /a/, /i/, /u/, /e/, /o/ | as IPA | Core vowels |
| ə | /ə/ | [ə] | Mid-central unrounded; mid-word only |
§ 13
Unicode Submission Roadmap
The long-term goal for Yapiri is formal inclusion in the Unicode Standard, which would give the script permanent, globally recognized codepoints outside the PUA. This is a multi-phase process governed by the Unicode Technical Committee (UTC) and coordinated by the Script Encoding Initiative (SEI) at the University of California, Berkeley.
If you are a linguist, Unicode specialist, or institutional representative interested in supporting the Yapiri Unicode submission, please reach out via the community page.