Creating a new script is only half the challenge. The real question is: how do you make it work on computers, phones, and the internet? Every character on every device has a number. That number — a codepoint — is what tells software which shape to draw. Without a codepoint, a character cannot be typed, stored, searched, or shared.

For Yapiri, solving that problem has been a two-stage journey: first using the Unicode Private Use Area to get the script working immediately, then migrating to a registered UCSUR block for long-term stability. This post tells the full story.


What Unicode Is and Why It Matters

Unicode is the universal standard that assigns a unique number to every character that computers need to represent — from English letters and Bengali digits to ancient cuneiform, modern emojis, and mathematical symbols. The standard currently covers over 149,000 characters across hundreds of scripts and symbol sets.

When you type a letter and it appears on screen, what is actually being stored is that letter's codepoint: a number. The font then reads that number and draws the corresponding shape. If the number has no official Unicode assignment — because the script is newly created and has not yet been submitted for encoding — a font cannot know which shape to draw by any agreed convention.

This is exactly the situation Yapiri found itself in at launch: a complete, 45-character writing system with no official Unicode block. The solution the standard itself provides for exactly this situation is the Private Use Area.


The Private Use Area

The Unicode Standard deliberately reserves a range of codepoints and declines to assign any official meaning to them. This range — called the Private Use Area, or PUA — runs from U+E000 to U+F8FF in the Basic Multilingual Plane (6,400 codepoints). There are two additional PUA blocks in the supplementary planes, giving a total of 137,468 private-use slots.

The standard's promise is simple: these codepoints will never be given an official meaning by Unicode itself. They are blank by design, available for private agreements between font developers, applications, and communities. Think of them as reserved plots on a map — the city has built roads to them but committed never to build anything there, so others can use the land as they see fit.

Key Point A PUA codepoint is not the same as an unassigned codepoint. Unassigned codepoints may eventually receive official characters. PUA codepoints are permanently reserved for private use and will never be officially assigned.

Yapiri v1.0 — Starting in the BMP PUA

When Yapiri launched in May 2026, all characters were encoded in the BMP Private Use Area starting at U+E000. This was the right call for immediate usability — it allowed the font, keyboard, and web tools to be released without waiting for a formal registration process. PUA encoding is not a workaround or a shortcut; it is the standard's intended mechanism for exactly this use case.

Many well-known private scripts — including Klingon, Tolkien's scripts, and numerous indigenous writing systems — have lived entirely in the BMP PUA for decades, serving their communities reliably. It is a legitimate, well-understood home.

"A script that cannot be typed today cannot preserve a language tomorrow."

— Design philosophy of Yapiri

Yapiri v2.0 — Migration to UCSUR Plane 15

The BMP PUA carries one structural risk: conflict. There is no central registry for BMP PUA assignments, meaning two different scripts or applications can accidentally claim the same codepoints. In Yapiri's case, this became a real concern when it was found that an overlapping range was being used by another Kokborok script project.

The solution was to migrate to a registered block in Supplementary Private Use Area-A (Plane 15) — and to register that block through the Under-ConScript Unicode Registry (UCSUR), the recognised registry for scripts that are in active community use but not yet part of the official Unicode Standard.

In June 2026, UCSUR registrar Rebecca Bettencourt confirmed the reservation of block U+F1CA0–U+F1CFF (96 codepoints, 45 used) for Yapiri Script exclusively. This is a meaningful milestone: the codepoints are now publicly documented, conflict-free, and backed by an authoritative reference that other developers can consult.

Yapiri v2.0 — UCSUR Plane 15 layout (45 characters)
U+F1CA0 – U+F1CA5󱲠 󱲡 󱲢 󱲣 󱲤 󱲥The six vowels: a, e, i, u, o, ə (schwa)
U+F1CA7 – U+F1CAF󱲧 󱲨 󱲩 󱲪 󱲫 󱲬 󱲭 󱲮 󱲯Stops: p, t, k, b, d, g, ph, th, kh
U+F1CB0 – U+F1CB5󱲰 󱲱 󱲲 󱲳 󱲴 󱲵Affricates and nasals: ch, j, m, n, n′, ng
U+F1CB6 – U+F1CBD󱲶 󱲷 󱲸 󱲹 󱲺 󱲻 󱲼 󱲽Fricatives and approximants: s, r, l, h, y, w, v, z
U+F1CC0 – U+F1CC9󱳀 󱳁 󱳂 󱳃 󱳄 󱳅 󱳆 󱳇 󱳈 󱳉Numerals 0 through 9
U+F1CCB – U+F1CCF󱳋 󱳌 󱳍 󱳎 󱳏Punctuation: comma, full stop, exclamation, quotation, question
U+F1CD1󱳑High tone mark — Yapiri's only combining diacritic

This gives Yapiri a clean, stable 45-character footprint in a registered, conflict-free block. The deliberate gaps (U+F1CA6, U+F1CBE–F1CBF, U+F1CCA, U+F1CD0) are reserved for potential future additions without disrupting the existing sequence.


The Limitation: Font Lock

PUA encoding — whether BMP or Plane 15 — comes with one real constraint: the text is font-locked. A PUA codepoint has no universal meaning; only the Yapiri font knows that U+F1CA9 should be drawn as the consonant /k/. Any other font will either draw nothing, display a placeholder box, or draw a completely different character if that font also uses the same slot.

This means Yapiri text can only be read on a device where the Yapiri font is installed or loaded. It works perfectly on yapiriscript.com (where the font is loaded from the web), and on any device where the user has installed Yapiri.ttf. Outside those contexts, the text becomes unreadable to the eye, even though the underlying codepoints are still there and correctly stored.

Practical If you paste Yapiri text into a platform that does not have the font, you will see boxes or blank spaces. The characters are not lost — they are just invisible without the font. Install the font on the destination device, or share the text via yapiriscript.com where it will render correctly.

The Road Ahead: From UCSUR to Official Unicode

UCSUR registration is a significant milestone, but it is not the final destination. The long-term goal is to submit Yapiri for official encoding in the Unicode Standard itself, which would assign it a permanent, universally recognised block — the way Chakma (another script used in the region) received its own block at U+11100. Official encoding means any application can display Yapiri text without needing the font installed.

That process runs through the Script Encoding Initiative at UC Berkeley and requires detailed documentation: glyph charts, phonological analysis, evidence of community use, and a formal proposal. It is not a short road, but the UCSUR registration means the codepoint foundation is now solid and documented — a strong starting point for that submission.

󱲩󱲤󱲩󱲪󱲤󱲷󱲤󱲩 kokborok — U+F1CA9 · U+F1CA4 · U+F1CA9 · U+F1CAA · U+F1CA4 · U+F1CB7 · U+F1CA4 · U+F1CA9 Eight glyphs. Eight UCSUR-registered codepoints. One word. Wherever the font goes, the text follows.

The Heart of the Matter

Yapiri's encoding journey — from BMP PUA to a registered UCSUR Plane 15 block — reflects a commitment to doing things properly. Not just quickly, but durably. The UCSUR registration means the codepoints are publicly documented, conflict-free, and respected by other developers working in the same space.

Every time you type in Yapiri, the codepoints that carry your words sit in a registered block that belongs to this script and this community. The glyphs may not yet be in the official Unicode Standard, but they have a stable, documented home — and Kokborok, written beautifully and proudly by its people, is what fills that home.

If you are a developer interested in the technical details, the full character database with codepoints, IPA values, and keyboard mappings is in the Script Specification. The UCSUR registration and block details are at the UCSUR page. Questions are welcome on the Community page.