Skip to content

Scripts and typography

A character, a code point, a grapheme cluster, and a glyph are different things. Name the unit you mean when writing about a font, selection, counting, or text processing.

Describe the right unit

A code point is a numbered position in Unicode. A visible character can be represented by more than one code point. A grapheme cluster groups code points that are treated as one unit for operations such as cursor movement. A glyph is a shape used to display text; shaping can combine or substitute glyphs without changing the source text.

Do not infer character support from one screenshot. State the tested script, language, sample, application, and font version when those facts matter. A missing mark or broken join can involve the font, shaping, layout, or text data. Describe the symptom before assigning a cause.

Check the actual font's available weights and styles, script coverage and legibility at the displayed size. Do not assume that every font for a script lacks a particular weight, or substitute a different font during translation without a product requirement. Preserve font specimens and the user's selected font; their identity may be the subject of the lesson.

Preserve text identity

Canonically equivalent strings can have different code-point sequences. Explain which comparison or normalization a procedure uses rather than promising that visually identical text is byte-identical. Do not normalize code, identifiers, test data, or user names as a prose cleanup.

Do not apply Latin case rules to scripts without case. Language-sensitive casing and sorting belong to the application’s locale-aware text processing, not a hand-written search-and-replace rule in a translation.

Let the writing system determine wrapping

Spaces do not divide words in every language. Thai, Lao, Khmer, and Myanmar text need appropriate segmentation; Japanese and Chinese have their own punctuation and line-breaking rules. Do not add spaces or hard line breaks merely to make an English-designed layout fit.

Preserve combining marks, joining behavior, and script-specific punctuation. Avoid arbitrary letter spacing in connected scripts. Check line starts and ends, marks above and below letters, and the interaction between Latin words and local punctuation.

Writing situation Review focus
Arabic-derived scripts Joining, marks, mixed-direction names and numbers, and justification
Indic scripts Conjuncts, vowel signs, cluster boundaries, and line breaks
Chinese and Japanese Punctuation placement, mixed-script spacing, vertical text where used, and ruby
Korean Hangul composition and the target’s word/character wrapping convention
Thai, Lao, Khmer, Myanmar Segmentation and marks; do not infer word boundaries from spaces
Traditional Mongolian Vertical layout and shaping; a Cyrillic Mongolian guide does not cover this writing system

Explain rather than flatten

A ruby annotation supplies a reading or other annotation alongside base text; it is not a substitute for a translation or for accessible structure. Use the platform’s semantic ruby support when needed. Check its relationship to the base text, line breaking, and reading order.

Keep technical samples copyable and identify special characters by Unicode name or code point when appearance alone is ambiguous. If the lesson depends on exact glyph shape, show an image as well as the underlying text and explain what the reader should notice.