1 / 9
1 첫 잎 · The Naming Leaf
·

han · geul · jeom · di · beu     hangul.dev

A typographic specimen book of 한글 — King Sejong's 1443 invention, re-read through the eyes of a developer who has spent years thinking about ligatures, vertical metrics, OpenType features, and the geometry of consonant-vowel composition. Nine leaves follow.

1 i
2 둘째 잎 · The Anatomy Leaf
초성
chosŏng  ·  initial  
중성
jungsŏng  ·  medial  
종성
jongsŏng  ·  final  

A hangul syllable is a square: an initial consonant atop or beside a medial vowel, optionally closed by a final consonant below. The block is the unit of meaning; the jamo are the unit of letter. Every syllable obeys this geometry — there are no ligature surprises, only twenty-eight rules of arrangement.

2 ii
3 셋째 잎 · The Code Leaf
U+1112 U+1161 U+11AB
function decompose(syllable) {
  const code = syllable.charCodeAt(0) - 0xAC00;
  if (code < 0 || code > 11171) return [syllable];

  const initial = Math.floor(code / (21 * 28));
  const medial  = Math.floor((code % (21 * 28)) / 28);
  const final   = code % 28;

  return [
    INITIALS[initial],
    MEDIALS[medial],
    final ? FINALS[final] : null,
  ].filter(Boolean);
}

// decompose("한") → ["ㅎ", "ㅏ", "ㄴ"]

The Unicode block U+AC00 .. U+D7A3 contains every modern hangul syllable — eleven thousand one hundred seventy-two of them — and each codepoint encodes its three jamo by a deterministic arithmetic. Sejong's geometry, in three lines of integer math.

3 iii
4 넷째 잎 · The Specimen Wall

개발  ·  develop  ·  twenty-eight specimens, the same word in twenty-eight voices.

4 iv
5 다섯째 잎 · The Stroke-Order Leaf

The fourteen basic consonants, drawn one stroke at a time. Each is a brush movement before it is a letter — hover any glyph to retrace it.

5 v
6 여섯째 잎 · The Compose Leaf
안녕

try: hangul · gaebal · seojonghan

const INI = ['ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'];
const MED = ['ㅏ','ㅐ','ㅑ','ㅒ','ㅓ','ㅔ','ㅕ','ㅖ','ㅗ','ㅘ','ㅙ','ㅚ','ㅛ','ㅜ','ㅝ','ㅞ','ㅟ','ㅠ','ㅡ','ㅢ','ㅣ'];
const FIN = ['',  'ㄱ','ㄲ','ㄳ','ㄴ','ㄵ','ㄶ','ㄷ','ㄹ','ㄺ','ㄻ','ㄼ','ㄽ','ㄾ','ㄿ','ㅀ','ㅁ','ㅂ','ㅄ','ㅅ','ㅆ','ㅇ','ㅈ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'];

function compose(ini, med, fin = 0) {
  const code = 0xAC00
    + INI.indexOf(ini) * 21 * 28
    + MED.indexOf(med) * 28
    + fin;
  return String.fromCharCode(code);
}

// compose('ㅎ','ㅏ','ㄴ')  →  '한'
// 0xAC00 + 18·588 + 0·28 + 4 = 0xD55C
6 vi
7 일곱째 잎 · The Letter as Object

「The round one — empty, like the throat at rest, like a pebble dropped in still water — was made first because the mouth, before it speaks, is silent.」

— after Sejong, Hunminjeongeum Haerye, 1446
7 vii
8 여덟째 잎 · The Ligature Leaf
jamo, conjoining 한 U+1112 + U+1161 + U+11AB
syllable block U+D55C

Two paths to the same square. The first composes the syllable from conjoining jamo at typesetting time, governed by the OpenType liga and ccmp tables. The second arrives pre-composed, a single Hangul Syllable codepoint. Most fonts ship both — the renderer chooses, and the reader never knows.

A good hangul font hints the vertical metrics of 중성 and 종성 independently, so the syllable block stays optically square across , , . This is the quiet, mathematical beauty Sejong's geometry inherits.

8 viii
9 마지막 잎 · The Colophon

간기  colophon

Display
Gowun Batang  ·  contemporary myeongjo
Body
Noto Serif KR  ·  tuned to hangul x-height
Latin
EB Garamond  ·  oldstyle figures, italic epigraphs
Code
JetBrains Mono  ·  0.875rem, 1.6 leading
Built
2026 · 04 · 30  ·  단기 4359 · 윤2월 13일
Place
Seoul  ·  at a wide oak desk, late evening

The wise can learn this in a morning;
even the foolish in ten days.
— 訓民正音, 1446

han · geul · gae · bal