Korean game localization: what Hangul asks of your engine
Korean text looks, at a glance, like it could be handled the same way as any other alphabetic language — it has a defined set of letters, after all. It cannot be. Hangul's letters are not laid out left to right like Latin script; they are composed into syllable blocks, and that single structural fact changes how you should think about character counting, line breaking, and font support.
Syllable blocks built from jamo
Hangul's basic units are jamo — individual consonant and vowel letters. Jamo are not written in a row the way Latin letters are; they are grouped into square syllable blocks, each block representing one syllable, arranged in a fixed spatial pattern (a leading consonant, a vowel, and an optional trailing consonant, stacked or side-by-side depending on the vowel shape). What renders as a single 'character' on screen is therefore itself a small composition of two or three underlying letters, algorithmically assembled — modern Hangul text is usually stored and transmitted as precomposed syllable blocks (a fixed set of possible block combinations), not as separate jamo, which is what lets ordinary text rendering treat each block as one character.
Character counting and line breaking behave differently
Because each rendered syllable block already packs a leading consonant, vowel, and often a trailing consonant, a Korean 'character' typically carries more phonetic information than a single Latin letter, but less than a Japanese kanji, which can represent an entire word or morpheme. This puts Korean between Latin script and Japanese in a rough sense for how much a given character count tells you about actual content — a raw character count is not directly comparable to either, so length budgets and truncation limits calibrated on English or on Japanese will both be wrong for Korean and need their own baseline.
For line breaking, Korean syllable blocks behave more like a Japanese-style CJK-square glyph in terms of shape (roughly monospaced, full-width-ish cells) but Korean is a spaced language (see below), so the correct line-break points are usually at spaces, similar to English — an important difference from Japanese, which has neither spaces nor Latin-style word boundaries to break on.
Spacing rules between words
Unlike Japanese and Chinese, Korean is normally written with spaces between words (eojeol, roughly word-like units), which is why line-wrapping at whitespace generally works for Korean where it does not for Japanese. Standard orthography (regulated by South Korea's Hangul spacing rules) specifies where spaces are required — between most independent words — and where they are not, such as before certain particles or suffixes that attach directly to the preceding word. Getting this wrong in generated or templated text (e.g., concatenating a noun and a particle without following the attachment rule) reads as an obvious grammatical error to a native reader, not a stylistic quirk.
Honorific levels
Korean, like Japanese, grammatically encodes speech levels — from plain/casual forms to several degrees of politeness and formality, marked through verb endings and vocabulary choice, signaling the relative age, social status, and familiarity between speaker and listener. Unlike English, this is not optional stylistic coloring; a Korean sentence is not grammatically complete without choosing a speech level, so every line of dialogue requires the translator to make an explicit, consistent decision per character relationship, not just per line.
Mixed-script handling
Korean game text routinely mixes Hangul with Latin letters (brand names, some loanwords, technical terms) and Arabic numerals, similar in principle to Japanese but without the additional kanji/kana layering. Spacing and punctuation conventions around these mixed elements — whether a half-width Latin term needs a space before and after it when embedded in Hangul text — are a real style decision that should be made once and applied consistently, not left to each translator's preference.
Font coverage
Modern Hangul theoretically allows a very large number of possible syllable-block combinations, though the overwhelming majority of everyday text uses a much smaller common subset. Font files vary widely in how much of that range they cover: a font built for a small, common-syllable subset can look complete in casual testing and then produce missing-glyph boxes on names, loanword transliterations, or less common vocabulary that happen to use rarer syllable blocks. Test font coverage against your actual game text — character names and item names are the most common place this surfaces — not just a short sample sentence.
- Do not assume rendered character count maps to string length the way it does in Latin script
- Rely on space-based line wrapping, but verify eojeol spacing rules in generated or concatenated strings
- Decide speech-level/politeness register per character relationship, and keep it consistent scene to scene
- Fix a house style for spacing around embedded Latin terms and numerals
- Test font glyph coverage against your actual name and item lists, not a generic sample