Hunminjeongeom · 1446, King Sejong
Every language,
written in Hangul.
Hangul wasn't born, it was designed — sketched straight from the shape of the human mouth and throat, like a science project 500 years ahead of schedule. Now we're teaching it to carry sounds beyond Korean.
The Stroke-Adding Rule
Letters shaped like the sounds they make
Hangul's five basic consonants are literal sketches of your mouth and throat mid-sound. Add one stroke for a stronger sound — that's the whole rulebook. Nothing to memorize, everything to derive.
Heaven, Earth, Human
Three strokes, infinite vowels
Every vowel starts from just three shapes: the roundness of the sky, the flatness of the earth, a person standing tall. Combine them and you get every vowel below.
Sejong's Full Design
Modern Korean uses 24 letters. Sejong designed 28 — and more.
The 1446 Hunminjeongeum Haerye lists 28 letters: 17 consonants and 11 vowels. Four fell out of everyday Korean — three consonants (ㅿ ㆆ ㆁ) and one vowel (ㆍ). Korean didn't need them, so they faded. But the system was never limited to Korean: it also defines ways to combine letters into sounds no single letter covers. This section shows that toolbox, and how Hangulpia proposes to use it for Japanese, Mandarin and English.
雖風聲鶴唳 雞鳴狗吠 皆可得而書矣"Even the sound of wind, the cry of a crane, a rooster’s crow, a dog’s bark — all can be written." — Jeong In-ji, preface to the HaeryeSource: Hunminjeongeum Haerye (1446)
Bansiot · 반치음
A voiced cousin of ㅅ. Faded out around the 1570s–80s.
Yeorinhieut · 여린히읗
The "catch" in the throat before a vowel (like the pause in "uh-oh"). Gone by the late 1400s.
Yetieung · 옛이응
Used both at the start and end of a syllable. Merged into plain ㅇ by the 1600s.
Araea · 아래아 (vowel)
The "Sky" dot from the vowel diagram above. Faded out 16th–18th c.; still alive on Jeju.
Note: ㅿ ㆆ ㆁ ㆍ are four letters but only three of them are consonants — the fourth, ㆍ, is a vowel.
Combination Rules
Letters are building blocks
The Haerye does not stop at 28 shapes. It gives rules for stacking, doubling and clustering them — which is how a small alphabet reaches a very large sound space.
1 · Light sounds (연서 連書)
Write ㅇ under a lip letter and the lips only barely touch: a fricative like [β] (ㅸ) instead of a full stop. Written under ㄹ it gives the "light tongue" sound, a quick tap.
Haerye: "ㅇ連書脣音之下,則為脣輕音". ㅸ is usually read as [β] (one scholar argues for /w/); the exact values of ㆄ ㅱ ㅹ and the tap value of ᄛ are scholarly interpretations.
2 · Doubling & clusters (병서 並書)
Two of the same letter make a tense/voiced-type sound. Different letters can also be written together at the start of a syllable — two or three at once — so clusters like "str-" fit in one block with no filler vowel.
Haerye: "初聲二字三字合用並書".
3 · Any initial can be a final (종성부용초성)
The Haerye says final consonants simply reuse the initial letters. So every new letter above can also close a syllable — which matters for Japanese small っ and for English endings like -v and -z.
4 · Pitch dots (방점 傍點)
Writing in the 1400s marked pitch with dots on the left of a syllable: none = level, one dot = high, two dots = rising. This is already a tone-marking system built into the script itself — useful for tonal languages like Mandarin.
Why it works
A phonetic alphabet, 442 years before the IPA
Most alphabets grew out of pictures: Latin letters descend from Egyptian hieroglyphs, and their shapes say nothing about how a sound is made. Hangul was designed the other way round. Each consonant is drawn from the place in the mouth where it is produced, and the Haerye explains the whole logic. The International Phonetic Alphabet, the linguists’ standard, was first published in 1888 (its association was founded in Paris in 1886). Hunminjeongeum was promulgated in 1446. Linguist Geoffrey Sampson called Hangul a “featural” alphabet for this reason: its letter shapes encode sound features.
The Haerye also pairs each place of articulation with one of the five elements, tying the sounds of speech into the cosmology of its day.
- 1443
Sejong creates 28 letters
The Annals record that the king created 28 letters that could write both Chinese-character words and native speech.
- 1446
Hunminjeongeum promulgated
The Haerye explains how the letters were designed, including the combination rules above.
- 1447–48
Dongguk Jeongun
A dictionary that fixes the standard reading of Chinese characters in Hangul. Only two of its six volumes survive. Later critics found it artificial, and its system was dropped by the end of the 1400s.
- 1455
Hongmu Jeongun Yeokhun
Standard Chinese pronunciation written in Hangul — direct evidence that Hangul was used to transcribe a foreign language.
- 1888
The IPA is first published
Europe’s linguists agree on a shared phonetic alphabet, built from Latin letters.
- 1933
24 letters fixed
The Hangul Spelling Unification Plan settles on the modern 24 letters. The lost letters were not needed for Korean, so they were dropped.
Beyond Korean
What the 24-letter version cannot write
Today, Japanese, Mandarin and English all get squeezed through the 24 modern letters: ざ and さ collapse, r and l merge, f and p merge. Sejong’s lost letters and combination rules fit many of these gaps surprisingly well. Below is our proposed notation for each language, with every row marked as historical or as our own extension.
Honest status: this is a research proposal. The letters and combination rules are Sejong’s; the sound-to-letter assignments for Japanese, Mandarin and English are our design, to be tested with linguists and native speakers. The downloadable app and the converter below do not use these letters yet — they still output ordinary hiragana from the 24 modern letters.
日本語 Japanese
Japanese has several sounds that modern Hangul can only guess at. Most of them match a lost letter or a light-sound combination very closely.
| Sound | Today | Sejong-style | Why |
|---|---|---|---|
| ざ行 z | 사 / 자 | ㅏ | Haerye letter/rule ㅿ is the voiced partner of ㅅ — exactly what ざ is to さ. Could replace the ^ marker. |
| っ | 갓코우 (ㅅ, ㄱ, ㅂ …) | ㅇㅏ | Our extension ㆆ as a final: the throat shuts for one beat. One fixed letter instead of guessing a different final each time. |
| ら行 r [ɾ] | 라 (l과 구분 불가) | ㄹㅏ | Haerye letter/rule The Japanese r is a quick tongue tap — the "light tongue" sound. |
| ふ [ɸu] | 후 (h) | ㅍㅜ | Our extension Lips close only lightly, as in ㅍ + ㅇ. Value of ㆄ is an interpretation. |
| が(鼻濁音) [ŋ] | 가 (g와 구분 불가) | ㅏ | Haerye letter/rule Tokyo-style nasal が mid-word. ㆁ is literally [ŋ]. |
| ヴ [vu] | 부 | ㅂㅜ | Haerye letter/rule ㅸ ([β]) is the nearest historical letter to v. |
ざ = ㅿ, っ = ㆆ — two decisions that today are a coin flip.
Mid-word が as nasal [ŋ] (Tokyo speech), kept apart from hard g.
The r of ラ is a tap (ᄛ), not an l. (The long vowel ー still uses the ~ marker.)
中文 Mandarin
Sejong’s era cared a lot about Chinese: the Haerye’s sister works were about standardizing Chinese-character readings, and tone dots were built in. That history makes Mandarin the most "on-purpose" fit.
| Sound | Today | Sejong-style | Why |
|---|---|---|---|
| r (日 rì) [ʐ] | 르 / 리 | Haerye letter/rule Voiced fricative; the lost ㅿ is the voiced ㅅ-type letter. Value of ㅿ itself is debated. | |
| ü [y] | 위 / 유 | ㅟ | Haerye letter/rule Standard Korean already counts ㅟ as the single vowel [y]; no new letter needed. |
| z c s / zh ch sh | 즈 츠 스 / 즈 츠 스 (같아짐) | — | Haerye letter/rule The Haerye tradition separates "dental" and "palatal" sibilant series for Chinese. Showing them needs the original letter shapes, which we are still collecting. |
| 4 tones | (표기 없음) | ·가 :가 | Our extension Reuse the pitch dots (방점). Mandarin has four tones against the old three marks, so the exact mapping is an open research task. |
The Hanja-sound bridge
Korean and Mandarin both inherited Chinese-character sounds, so Korean readers already know more Mandarin than they think. These are rules of thumb with many exceptions, and they do not predict tones.
| Pattern | Korean reading | Mandarin |
|---|---|---|
| Same characters, similar sounds | 民主 민주 · 信用 신용 · 觀光 관광 | mínzhǔ · xìnyòng · guānguāng |
| Final ㅁ becomes n | 心 심 · 三 삼 · 海南 해남 | xīn · sān · Hǎinán |
| Finals ㄱ ㅂ ㄹ disappear | 國 국 · 八 팔 · 日 일 · 出發 출발 | guó · bā · rì · chūfā |
| ㅐ → ai, ㅗ → ao (tendency) | 海 해 · 來 래 · 高 고 · 道 도 | hǎi · lái · gāo · dào |
| 경 · 명 → -ing | 北京 북경 · 明天 명천 | Běijīng · míngtiān |
Why finals vanish: older Chinese had -p, -t, -k and -m endings, and Mandarin lost them. Korean kept them, so the Hangul spelling still shows where they were.
English
English is the hardest test: it has sounds Hangul never needed (f, v, z, th) and loves consonant clusters. The toolbox covers more than you might expect.
| Sound | Today | Sejong-style | Why |
|---|---|---|---|
| f | 프 (p와 같아짐) | ㅍ | Haerye letter/rule Light labial from ㅍ. |
| v | 브 (b와 같아짐) | ㅂ | Haerye letter/rule Light labial from ㅂ, [β]. |
| z | 즈 (j와 같아짐) | Haerye letter/rule Voiced ㅅ. | |
| r / l | ㄹ 하나 | ㄹ / ㄹ | Our extension English r is not a tap, but ᄛ is closer to r than ㄹ is. A pragmatic split. |
| ʌ (cup, love) | 어 / 아 | Haerye letter/rule ㆍ is commonly given as [ʌ]. | |
| θ / ð (th) | 쓰 / 드 | ㅅㄷ / ㅿㄷ | Haerye letter/rule Tongue-tip ㄷ plus tooth ㅅ in one initial slot — the tongue between the teeth. The Haerye allows such clusters, but the old ㅼ meant s+t, so this is a new use. |
| str- spr- skr- | 스트- (음절 +1) | ㅅㅌㄹ | Haerye letter/rule 2–3 letters in one initial cluster. No filler 으. |
| ʒ (vision) | 지 | ? | Open problem: no good candidate yet. |
v and r each get their own letter, so very ≠ bery ≠ vely.
f is no longer p.
One syllable: ㆍ for [ʌ], ㅸ as the final v. Today: 러브, two syllables with a filler 으.
Three consonants in one initial cluster — two syllables instead of five.
Can you type it today?
The letters exist. The keyboard does not.
Good news: Unicode already encodes almost every letter above, so nothing new has to be standardized for most of them. Bad news: a standard Korean keyboard has no key for any of them, and the Hangulpia app cannot produce them yet.
| Letter | Unicode | Standard keyboard | Windows "MS Old Hangul" keyboard* | Hangulpia app | Note |
|---|---|---|---|---|---|
| U+317F | ✗ | Shift + ㅅ | ✗ | On a plain keyboard Shift+ㅅ is ㅆ — a clash if we reuse it. | |
| U+3186 | ✗ | Shift + ㅎ | ✗ | ||
| U+3181 | ✗ | Shift + ㅇ | ✗ | ||
| U+318D | ✗ | Shift + ㅏ | ✗ | Typed as the conjoining 아래아, not always the same code as the standalone ㆍ. | |
| ㅂ ㅍ ㅁ ㅃ | U+3178 · 3184 · 3171 · 3179 | ✗ | ㅂ/ㅍ/ㅁ/ㅃ → ㅇ | ✗ | Typed as a key sequence, then composed. |
| ㄹ | U+111B | ✗ | ㄹ → ㅇ | ✗ | Exists only as a conjoining jamo. |
| ㅅㄷ · ㅿㄷ | U+317C (ㅼ) | ✗ | ? | ✗ | θ = ㅅ+ㄷ uses an existing code; ð = ㅿ+ㄷ is our own cluster. Not verified on Windows. |
| ·가 :가 | U+302E · 302F | ✗ | copy & paste | ✗ | Pitch dots are combining marks; no key. |
* From a community guide; not tested by us. It also reports that the keyboard only worked reliably in Firefox.
Current limits
- No default keys. Standard Dubeolsik has no key for ㅿ ㆆ ㆁ ㆍ or the light-sound letters. We could not confirm any built-in way to type them on macOS.
- No precomposed syllables. Unicode precomposes only the 11,172 modern syllables. A syllable like "ㅿ+ㅏ" must be built from conjoining jamo, which needs a font and renderer that support it. Community reports mention broken display in some browsers.
- Two kinds of jamo. Compatibility jamo (ㅿ U+317F, …) are standalone and do not combine into syllables; conjoining jamo combine but look different when alone.
- Our engine is modern-Hangul only. The decoder and its training table are built on the 24 modern letters, so extended letters are simply not part of what it handles today.
- New clusters have no key or code. ð (ㅿ+ㄷ) is our own cluster. ㅅㄷ exists in Unicode, but as the old s+t cluster, not as θ.
- Typing cost. The Windows layout leans on Shift for rare letters, and its own guide warns of frequent typos.
Where we want to take it
Try it in the browser first
Add an on-screen extended-jamo keypad to the homepage practice box (ㅿ ㆆ ㆁ ㆍ ㅸ ㆄ ᄛ). It needs no OS support, works on any device, and our SVG glyphs sidestep missing fonts.
Make the engine read them
Add deterministic rules ahead of the statistical map: ㅿ→ざ-row, final ㆆ→っ, ㆁ→nasal が, ᄛ→ら-row, ㆄ→ふ. This directly attacks today's weakest spots (voicing, small っ) and could replace the ~ and ^ markers.
A typing layer in the macOS app
Reuse the familiar Windows Shift layout where it does not clash, and put the clashing ones (like Shift+ㅅ=ㅆ) on an Option layer. Output stays kana, so no font is needed for the result.
Teach the model extended notation
Extend the kana→Hangul table that generates training pairs so it can also emit the extended letters, then retrain the PhoneticMap. Ambiguity should fall because ざ/さ and ら/ラ stop sharing one Hangul spelling.
Validate & standardize
Test the assignments with linguists and native speakers. For ð and other new clusters, decide how they are typed and encoded.
Sources & further reading: Hunminjeongeum text (Wikisource) · Obsolete Hangul jamo · Hunminjeongeum · Hangul Compatibility Jamo · Hangul Jamo (Unicode) · Old Hangul typing guide (Wikisource user page) · Lecture “Why is Hangul considered a world-class script?” (Design House) — basis of the Hanja-sound bridge table. Reconstructed sound values of obsolete letters are scholarly estimates, not settled facts. Typing instructions come from a community guide and have not been tested by us.
Live Now
First up: Japanese
Type on your regular Dubeolsik keyboard, get real-time Hiragana. A statistical engine trained on a 4,153-word vocabulary, plus explicit grammar rules for particles and verb endings, fills in what a plain rulebook alone would miss.
- Real-time conversion — Dubeolsik in, Hiragana out, no retraining needed
- Statistically trained — a 4,153-word vocabulary plus explicit particle/conjugation grammar rules catch what character-level statistics alone miss
- Manual override markers —
~for long vowels,^for dakuten, for the cases statistics alone gets wrong - Built for macOS — native InputMethodKit app, ready today. Windows is next.
Heads up: this is a research prototype, not a finished product. It works best on common everyday words (about 4,000 in its vocabulary) and can get particles, small っ, long vowels and voiced sounds wrong. Please don't rely on it for important writing yet — feedback is very welcome.
Setup
Up and running in 3 minutes
No App Store, so macOS needs a few extra steps to trust it. Do these once, in order.
Unzip
Double-click the downloaded file in your Downloads folder.
Run the installer
Open Terminal, drag the unzipped folder onto the window to jump there, then run:
bash install.shLog out, log back in
This is how macOS notices the new keyboard exists. A restart also works.
Add the input source
System Settings → Keyboard → Input Sources → Edit → +, find Japanese, add HangulJapaneseIME.
Switch and type
Click the input source icon in the menu bar, pick it, and type Dubeolsik like always.
Want it gone? Same folder, run bash uninstall.sh.
Fine control
When the engine guesses wrong, correct it
The engine is statistical, not a fixed rulebook — so it occasionally misses a long vowel or picks the unvoiced version of a consonant. Two markers let you override it, syllable by syllable, without retraining anything.
Long vowel (장음)
Attach right after a syllable to stretch its vowel sound.
Dakuten (탁음)
Attach right after a syllable to force its voiced consonant (か→が, さ→ざ, た→だ, は→ば).
Stack both on the same syllable: 카^~ → があ. Everything else in the sentence still goes through the trained engine as usual — markers only touch the syllable they're attached to.
One Script, Every Language