---
name: chinese-pangu-typography
source: https://app.decimal.ai/s/chinese-pangu-typography@1/SKILL.md
source_sha256: f3059346b152
---

# Chinese Pangu typography

## Contract

Enforces the typographic conventions of modern Chinese writing: a half-width space between
CJK characters and adjacent Latin/numeral runs (盘古之白 / Pangu spacing), full-width
punctuation inside Chinese clauses, and corner-bracket quotes. Apply whenever you produce
Chinese (CJK) text that mixes in Latin words, numbers, units, code, paths, URLs, or quotes.
These are exact rules, not stylistic preferences — emit them every time.

## Rules

### A. Pangu spacing (盘古之白) — when to ADD one space

1. **CJK ↔ Latin letter** — exactly one half-width space between a Chinese character and an
   adjacent Latin letter, on whichever side they touch: `使用 Python 编写`.
2. **CJK ↔ Arabic numeral** — one space between a Chinese character and a digit run:
   `共有 5 个选项`, `修复了 3 个问题`.
3. **Number ↔ unit** — one space between a number and its unit symbol: `10 MB`, `45 ms`,
   `3.5 GHz`. The unit is treated as a Latin run.
4. **Around inline code / paths / URLs** — surround them with spaces where they border CJK:
   `执行 ` + `` `npm install` `` + ` 命令`; `位于 /usr/local 目录`; `详见 https://example.com 页面`.
5. **Identifiers** — code identifiers embedded in prose are Latin runs: `把 maxRetries 改为 5`.
6. **Brand names keep canonical spacing** — `VS Code`, `GitHub`, `Node.js` keep their own
   internal spacing/casing; still space them against CJK: `推荐 VS Code 编辑器`. Never collapse
   to `VSCode` / `Github`.

### B. Pangu spacing — when NOT to add a space

7. **Number hugs `%`, `°`, currency** — no space between the number and these: `30%`, `45°`,
   `¥99`, `$20`. (The Pangu space still applies on the CJK side: `增长了 30%`.)
8. **Around full-width marks — never space** — full-width punctuation already carries its own
   visual padding: `你好，世界`, `（见附录）`, `加载中……`. Never `你好 ，世界` or `（ 见附录 ）`.
9. **Inside a number** — `1,000,000`, `3.10`, `2026-03-01` are single runs; do not split them.

### C. Punctuation — full-width inside Chinese clauses

10. Use full-width marks to punctuate Chinese: `，` `。` `：` `；` `！` `？` — never the
    half-width `, . : ; ! ?` to break or end a Chinese clause.
11. **Quotes & UI element names use corner brackets** `「」`; nest with `『』`:
    `点击「确定」按钮`, and for a quote-in-quote `他说「张工提到『那个方案』很好」`.
    Never curly `“确定”` or straight `"确定"` double quotes for Chinese.
12. **Ellipsis** is two full-width dots `……`; never `...` (ASCII) or `。。。` (stacked periods).
13. **Em-dash** is two full-width `——`; never `--` or a single hyphen.
14. **Never repeat a terminal mark** — one `。`, one `！`, one `？`. Never `！！！` / `？？？`.
15. **Book/work titles** use 《》 (or 〈〉 for nested): `见《用户手册》`.

### D. Numbers and dates

16. Use **Arabic numerals for data/quantities**: `共 128 条记录`, not `共一百二十八条记录`.
    Keep Chinese numerals only for idioms (`一目了然`, `三心二意`).
17. **Dates carry Pangu spaces** around each numeral: `2026 年 3 月 1 日`, not `2026年3月1日`.
18. **Numeric ranges** use a half-width hyphen, not a full-width tilde: `3-5 个工作日`,
    not `3～5 个工作日`.

## Worked examples (BEFORE = base default → AFTER = conforming)

- **Rule 1 (CJK↔Latin):** BEFORE `这个脚本用Python编写。` → AFTER `这个脚本用 Python 编写。`
- **Rule 2 (CJK↔numeral):** BEFORE `数据库里有128条记录。` → AFTER `数据库里有 128 条记录。`
- **Rule 3 (number↔unit):** BEFORE `文件大小为25MB。` → AFTER `文件大小为 25 MB。`
- **Rule 4 (path/code):** BEFORE `配置文件位于/usr/local/etc目录。` →
  AFTER `配置文件位于 /usr/local/etc 目录。`
- **Rule 6 (brand):** BEFORE `推荐使用VSCode。` → AFTER `推荐使用 VS Code。`
- **Rule 7 (percent):** BEFORE `本季度营收增长了30 %。` → AFTER `本季度营收增长了 30%。`
- **Rule 8 (full-width no-space):** BEFORE `你好 ， 世界 。` → AFTER `你好，世界。`
- **Rule 10 (full-width marks):** BEFORE `无法连接到服务器, 请检查网络.` →
  AFTER `无法连接到服务器，请检查网络。`
- **Rule 11 (corner quotes):** BEFORE `点击"确定"按钮保存。` → AFTER `点击「确定」按钮保存。`
- **Rule 11 (nested):** BEFORE `他提到"张工说过'这个方案'很好"。` →
  AFTER `他提到「张工说过『这个方案』很好」。`
- **Rule 12 (ellipsis):** BEFORE `正在加载...` → AFTER `正在加载……`
- **Rule 14 (no repeats):** BEFORE `保存成功！！！` → AFTER `保存成功。`
- **Rule 16 (Arabic numerals):** BEFORE `共有一百二十八条记录。` → AFTER `共有 128 条记录。`
- **Rule 17 (dates):** BEFORE `系统将于2026年3月1日维护。` → AFTER `系统将于 2026 年 3 月 1 日维护。`

## Edge cases & exceptions

- **`%` / `°` / currency are the spacing exception, not the rule.** The number hugs the symbol
  (`30%`, `45°`, `¥99`) but the CJK-side Pangu space still holds: `增长了 30%`, `旋转 45°`.
- **Punctuation that is part of a Latin token stays half-width** even inside Chinese prose:
  the dot in `Node.js`, `3.10`, `Mr. Smith`, and the colon in a `http://` URL are not converted
  to full-width and take no Pangu space inside the token.
- **No space directly adjacent to a full-width mark even when Latin is involved:**
  `使用了 React，性能提升` — space before `React`, but `React，` hugs the full-width comma.
- **Numeric ranges vs. dashes:** the range connector is a half-width hyphen `3-5`; the em-dash
  `——` (interruption/aside) is a different mark and is full-width.
- **Idiomatic Chinese numerals keep Chinese digits:** `三心二意` stays Chinese; only data
  quantities switch to Arabic.
- **Currency symbol precedes the number with no gap:** `¥99`, `$20` — the symbol hugs the digits.

## Do / Don't

- **Do** put one space on each CJK boundary of a Latin/numeral run. **Don't** glue them:
  never `用Python`, never `共128条`.
- **Do** use `「」` for quotes and UI names. **Don't** use `""`, `“”`, or `''` for Chinese.
- **Do** end Chinese clauses with full-width `。，：；！？`. **Don't** use half-width
  `. , : ; ! ?` to punctuate Chinese.
- **Do** write `……` and `——`. **Don't** write `...`, `。。。`, or `--`.
- **Do** keep the number flush to `%`/`°`/`¥`. **Don't** write `30 %` or `45 °`.
- **Do** keep brand casing (`VS Code`, `Node.js`). **Don't** invent `VSCode` / `Nodejs`.
- **Do** use one terminal mark. **Don't** stack `！！！` or `？？？`.

## Common mistakes (the base's wrong defaults)

- Gluing Latin/numbers to CJK with no space: `用Python编写`, `25MB`, `共128条`.
- Using half-width ASCII punctuation `, . : ?` to punctuate a Chinese sentence.
- Using curly/straight double quotes `“”` / `""` instead of corner brackets `「」`.
- Writing `...` instead of `……`, or stacking `。。。`.
- Adding a stray space before a full-width mark: `你好 ，世界`.
- Putting a space inside `30%` → `30 %`, or inside a date → `2026年3月1日` with no spaces.
- Spelling out quantities as Chinese numerals (`一百二十八`) where Arabic is expected.

## Quick checklist

- [ ] Space between every CJK↔Latin and CJK↔numeral boundary
- [ ] Space between number and unit (`10 MB`), but number hugs `%`/`°`/`¥`
- [ ] Spaces around inline code, paths, URLs, identifiers
- [ ] Full-width `，。：；！？` inside Chinese clauses
- [ ] Corner brackets `「」`/`『』` for quotes and UI names
- [ ] `……` and `——`, never `...`/`。。。`/`--`
- [ ] No space hugging any full-width mark
- [ ] No repeated terminal marks
- [ ] Arabic numerals for data; dates spaced as `2026 年 3 月 1 日`
