# CJK Typography & Mixed-Script Guide Rules for Chinese, Japanese, and Korean text in DOCX documents. ## Table of Contents 1. [Font Selection](#font-selection) 2. [Font Size Names (CJK)](#font-size-names) 3. [RunFonts Mapping](#runfonts-mapping) 4. [Punctuation & Line Breaking](#punctuation--line-breaking) 5. [Paragraph Indentation](#paragraph-indentation) 6. [Line Spacing for CJK](#line-spacing) 7. [Chinese Government Standard (GB/T 9704)](#gbt-9704) 8. [Mixed CJK + Latin Best Practices](#mixed-script) 9. [OpenXML Quick Reference](#openxml-quick-reference) --- ## Font Selection ### Recommended CJK Fonts | Language | Serif (正文) | Sans (标题) | Notes | |----------|-------------|-------------|-------| | **Simplified Chinese** | 宋体 (SimSun) | 微软雅黑 (Microsoft YaHei) | YaHei for screen, SimSun for print | | **Simplified Chinese** | 仿宋 (FangSong) | 黑体 (SimHei) | Government documents | | **Traditional Chinese** | 新細明體 (PMingLiU) | 微軟正黑體 (Microsoft JhengHei) | Taiwan standard | | **Japanese** | MS 明朝 (MS Mincho) | MS ゴシック (MS Gothic) | Classic pairing | | **Japanese** | 游明朝 (Yu Mincho) | 游ゴシック (Yu Gothic) | Modern, Windows 10+ | | **Korean** | 바탕 (Batang) | 맑은 고딕 (Malgun Gothic) | Standard pairing | ### Government Document Fonts (公文) | Element | Font | Size | |---------|------|------| | 标题 (title) | 小标宋 (FZXiaoBiaoSong-B05S) | 二号 (22pt) | | 一级标题 | 黑体 (SimHei) | 三号 (16pt) | | 二级标题 | 楷体_GB2312 (KaiTi_GB2312) | 三号 (16pt) | | 三级标题 | 仿宋_GB2312 加粗 | 三号 (16pt) | | 正文 (body) | 仿宋_GB2312 (FangSong_GB2312) | 三号 (16pt) | | 附注/页码 | 宋体 (SimSun) | 四号 (14pt) | --- ## Font Size Names CJK uses named sizes. Map to points and `w:sz` half-point values: | 字号 | Points | `w:sz` | Common Use | |------|--------|--------|------------| | 初号 | 42pt | 84 | Display title | | 小初 | 36pt | 72 | Large title | | 一号 | 26pt | 52 | Chapter heading | | 小一 | 24pt | 48 | Major heading | | 二号 | 22pt | 44 | Document title (公文) | | 小二 | 18pt | 36 | Western H1 equivalent | | 三号 | 16pt | 32 | CJK heading / 公文 body | | 小三 | 15pt | 30 | Sub-heading | | 四号 | 14pt | 28 | CJK subheading | | 小四 | 12pt | 24 | Standard body (CJK) | | 五号 | 10.5pt | 21 | Compact CJK body | | 小五 | 9pt | 18 | Footnotes | | 六号 | 7.5pt | 15 | Fine print | --- ## RunFonts Mapping OpenXML uses four font slots to handle multilingual text: ```xml w:hAnsi="Calibri" w:eastAsia="SimSun" w:cs="Arial" /> ``` **Word's character classification logic:** 1. Character is in CJK range → uses `w:eastAsia` font 2. Character is in complex script range → uses `w:cs` font 3. Character is basic Latin (ASCII) → uses `w:ascii` font 4. Everything else → uses `w:hAnsi` font **Key**: `w:eastAsia` is the **only** way to set CJK fonts. Setting just `w:ascii` will NOT affect CJK characters. Mixed text within a single run auto-switches fonts at the character level — no need for separate runs. ### Document Defaults ```xml ``` `w:lang w:eastAsia` helps Word resolve ambiguous characters (e.g., punctuation shared between CJK and Latin). --- ## Punctuation & Line Breaking ### Full-Width vs Half-Width CJK text uses full-width punctuation: | Type | CJK | Latin | |------|-----|-------| | Period | 。(U+3002) | . | | Comma | ,(U+FF0C) 、(U+3001) | , | | Colon | :(U+FF1A) | : | | Semicolon | ;(U+FF1B) | ; | | Quotes | 「」『』 or ""'' | "" '' | | Parentheses | ()(U+FF08/09) | () | In mixed text, use the punctuation style of the **surrounding language context**. ### OpenXML Controls ```xml ``` ### Kinsoku Rules (禁則処理) Prevents certain characters from appearing at the start or end of a line: - **Cannot start a line**: `)」』】〉》。、,!?;:` and closing brackets - **Cannot end a line**: `(「『【〈《` and opening brackets Word applies these automatically when `w:kinsoku` is enabled. ### Line Breaking - CJK characters can break between **any two characters** (no word boundaries needed) - Latin words within CJK text still follow word-boundary breaking - `w:wordWrap w:val="false"` enables CJK-style breaking (break anywhere) --- ## Paragraph Indentation ### Chinese Standard: 2-Character Indent Chinese body text conventionally uses a 2-character first-line indent: ```xml ``` Preferred over `w:firstLine` with fixed DXA because `firstLineChars` scales with font size. | Indent | Value | |--------|-------| | 1 character | `w:firstLineChars="100"` | | 2 characters | `w:firstLineChars="200"` | | 3 characters | `w:firstLineChars="300"` | --- ## Line Spacing - CJK characters are taller than Latin characters at the same point size - Default `1.0` line spacing may feel cramped with CJK text - Recommended: `1.15–1.5` for mixed CJK+Latin, `1.0` with fixed 28pt for 公文 ### Auto Spacing ```xml ``` Adds ~¼ em spacing between CJK and non-CJK characters automatically. **Recommended: always enable.** --- ## GB/T 9704 Chinese government document standard (党政机关公文格式). These are **strict requirements**, not suggestions. ### Page Setup | Parameter | Value | OpenXML | |-----------|-------|---------| | Page size | A4 (210×297mm) | Width=11906, Height=16838 | | Top margin | 37mm | 2098 DXA | | Bottom margin | 35mm | 1984 DXA | | Left margin | 28mm | 1588 DXA | | Right margin | 26mm | 1474 DXA | | Characters/line | 28 | | | Lines/page | 22 | | | Line spacing | Fixed 28pt | `line="560"` lineRule="exact" | ### Document Structure ``` ┌─────────────────────────────────┐ │ 发文机关标志 (红头) │ ← 小标宋 or 红色大字 │ ══════════════════ (红线) │ ← Red #FF0000, 2pt ├─────────────────────────────────┤ │ 发文字号: X机发〔2025〕X号 │ ← 仿宋 三号, centered │ │ │ 标题 (Title) │ ← 小标宋 二号, centered │ │ 可分多行,回行居中 │ 主送机关: │ ← 仿宋 三号 │ │ │ 正文 (Body)... │ ← 仿宋_GB2312 三号 │ 一、一级标题 │ ← 黑体 三号 │ (一)二级标题 │ ← 楷体 三号 │ 1. 三级标题 │ ← 仿宋 三号 加粗 │ (1) 四级标题 │ ← 仿宋 三号 │ │ │ 附件: 1. xxx │ ← 仿宋 三号 │ │ │ 发文机关署名 │ ← 仿宋 三号 │ 成文日期 │ ← 仿宋 三号, 小写中文数字 ├─────────────────────────────────┤ │ ══════════════════ (版记线) │ │ 抄送: xxx │ ← 仿宋 四号 │ 印发机关及日期 │ ← 仿宋 四号 └─────────────────────────────────┘ ``` ### Numbering System ``` 一、 ← 黑体 (SimHei), no indentation (一) ← 楷体 (KaiTi), indented 2 chars 1. ← 仿宋加粗 (FangSong Bold), indented 2 chars (1) ← 仿宋 (FangSong), indented 2 chars ``` ### Colors | Element | Color | Requirement | |---------|-------|-------------| | All body text | Black #000000 | Mandatory | | 红头 (agency name) | Red #FF0000 | Mandatory | | 红线 (separator) | Red #FF0000 | Mandatory | | 公章 (official seal) | Red | Mandatory | ### Page Numbers - Position: bottom center - Format: `-X-` (dash-number-dash) - Font: 宋体 四号 (SimSun 14pt, `sz="28"`) - No page number on cover page if present --- ## Mixed Script ### Font Size Harmony CJK characters appear larger than Latin characters at the same point size. Compensation: - If body is Calibri 11pt, pair with CJK at 11pt (same size — CJK looks slightly larger but acceptable) - If precise visual match needed, CJK can be set 0.5–1pt smaller - In practice, same point size is standard — don't over-optimize ### Bold and Italic - **Chinese/Japanese have no true italic.** Word synthesizes a slant which looks poor - Use **bold** for emphasis in CJK text - Use 着重号 (emphasis dots) for traditional emphasis: `` on RunProperties --- ## OpenXML Quick Reference ### Set EastAsia Font (C#) ```csharp new Run( new RunProperties( new RunFonts { EastAsia = "SimSun", Ascii = "Calibri", HighAnsi = "Calibri" }, new FontSize { Val = "32" } // 三号 = 16pt = sz 32 ), new Text("这是正文内容") ); ``` ### Document Defaults (C#) ```csharp new DocDefaults(new RunPropertiesDefault(new RunPropertiesBaseStyle( new RunFonts { Ascii = "Calibri", HighAnsi = "Calibri", EastAsia = "Microsoft YaHei" }, new Languages { Val = "en-US", EastAsia = "zh-CN" } ))); ``` ### 公文 Style Definitions (C#) ```csharp // Title style — 小标宋 二号 centered new Style( new StyleName { Val = "GongWen Title" }, new BasedOn { Val = "Normal" }, new StyleRunProperties( new RunFonts { EastAsia = "FZXiaoBiaoSong-B05S" }, new FontSize { Val = "44" }, // 二号 = 22pt new Bold() ), new StyleParagraphProperties( new Justification { Val = JustificationValues.Center }, new SpacingBetweenLines { Line = "560", LineRule = LineSpacingRuleValues.Exact } ) ) { Type = StyleValues.Paragraph, StyleId = "GongWenTitle" }; // Body style — 仿宋_GB2312 三号 new Style( new StyleName { Val = "GongWen Body" }, new StyleRunProperties( new RunFonts { EastAsia = "FangSong_GB2312", Ascii = "FangSong_GB2312" }, new FontSize { Val = "32" } // 三号 = 16pt ), new StyleParagraphProperties( new SpacingBetweenLines { Line = "560", LineRule = LineSpacingRuleValues.Exact } ) ) { Type = StyleValues.Paragraph, StyleId = "GongWenBody" }; ``` ### Emphasis Dots (着重号) ```csharp new RunProperties(new Emphasis { Val = EmphasisMarkValues.Dot }); ``` ### East Asian Text Layout ```xml ```