Guide Developer Tools 6 min read

Neither Chinese punctuation standard requires full-width marks

Mainland China's punctuation standard and Taiwan's handbook measure marks in character cells and never require full-width characters. What that means in Unicode, where the mainland's quotation marks have ambiguous width, in terminal text, and for the space between Chinese and Latin words.

Maya Lin
Digital Platforms Analyst
Published 3 Oct 2026, 7:58 AM (SGT)
Share:
A close-up of printed Chinese text running in horizontal lines A close-up of printed Chinese text running in horizontal lines Photo by jeremy888 on Pixabay
Advertisement

The word for full-width, 全角, appears in only one clause of the normative text of GB/T 15834-2011, mainland China's punctuation standard, and that clause does not require any mark to be full-width. Taiwan's punctuation handbook uses neither 全角 and 半角 nor the variant terms 全形 and 半形; both documents measure marks in character cells. By our count, 7 of the 29 code points behind the mainland standard's printed forms have no fixed width in Unicode, both pairs of quotation marks among them, while Taiwan's 「」 are wide by definition. Between Chinese and Latin text, the W3C's layout requirements for Chinese allow up to a quarter of a Han character, or an ordinary space.

GB/T 15834-2011 is a recommended (推荐性) national standard, in force since 1 June 2012; the Ministry of Education in mainland China posts a scan of the full text. A revision plan, 20240034-T-360, was issued on 25 March 2024, and on 2 October 2026 the national standards catalogue marked it 暂缓, paused. Taiwan's handbook is the Ministry of Education's December 2008 revision, which the W3C describes as used mainly for teaching materials.

Each mark claims a width counted in character cells

Section 5.1 of GB/T 15834 gives every mark a width in 字位置, character positions. The full stop, comma, colon and each half of a pair of quotation marks or brackets take one. The dash and the six-dot ellipsis take two. The interpunct, the short hyphen and the slash take half. Taiwan's Revised Handbook of Punctuation gives most of its marks one cell, and its dash and ellipsis 「占行中二格」, two cells in the line. A typesetter working from either document needs a cell size and these multiples, and no character class called full-width. Where each mark sits inside its cell is covered in our guide to converting a passage between Chinese punctuation styles.

Mainland quotation marks borrow English's own characters

The quotation marks GB/T prints, “ ” and ‘ ’, are U+201C, U+201D, U+2018 and U+2019, the same characters English text uses. Unicode Standard Annex #11 classes all four as East Asian Width A, ambiguous: wide or narrow according to context such as a language tag or the font. Where context cannot be established, the annex says they "should be treated as narrow characters by default". Taiwan's 「」 and 『』, U+300C to U+300F, are class W, wide everywhere. GB/T gives each half of a quotation mark a full cell, so its intent is plain; the encoding leaves the width open.

GB/T names no code points, so we read its printed forms as GB 18030 encodes them and checked the resulting 29 code points against the Unicode 18.0 width data. Seven are ambiguous: the four quotation marks, the dash U+2014, the ellipsis U+2026 and the interpunct U+00B7. Under the older GB 2312 mapping the count is six, because that mapping decodes the interpunct as U+30FB, a katakana middle dot classed W.

Advertisement

Curly quotes gained a full-width request in Unicode 16

Since Unicode 16.0 the standardized variants file pairs U+201C with variation selector U+FE01 as a "right-justified fullwidth form", U+201D with it as the left-justified one, and the single marks likewise; U+FE00 asks for the narrow form. The Unicode 15.1 file has none of them. UAX #11 treats such a selector as enough to settle an ambiguous width, provided the font has the form.

Software may not listen. On 2 October 2026 the C library's width function on macOS 26.6 and in Debian's glibc 2.41 counted “ plus U+FE01 as one column, the same as “ alone. The npm package string-width 4.2.3 counted two, but only because it gives the invisible selector a column of its own: the letter a plus U+FE01 also came to two. We did not test fonts or browsers.

Terminal text hands ambiguous-width marks a single column

POSIX defines wcwidth() as the number of column positions a character requires. On macOS under zh_CN, zh_TW and ja_JP UTF-8 locales and on glibc 2.41, our tests agreed. The curly quotes, U+2014, U+2026 and U+00B7 took one column each; 「」『』《》〈〉。、 and the full-width comma, colon, semicolon, question mark, exclamation mark and brackets took two.

Text aligned by those counts gives “你好” six columns and 「你好」 eight. GB/T's two-cell dash, typed as two U+2014, measures two columns, one Han character's width. What a terminal emulator then draws depends on its font and settings, which we did not test. UAX #11 warns that its width property is not meant for modern terminal emulators without case-by-case tailoring, and recommends mapping ambiguous characters to full-width ones in East Asian legacy encodings.

Decimal points received a Chinese full stop from our width converter

Until 2 October 2026, our Chinese punctuation converter swapped characters one for one, as if width belonged to every mark. Converting half-width to full-width, it turned 3.14 into 3。14, rewrote the colon, dots and question mark inside a URL, turned ... into 。。。 and changed both spaces in 使用 Python 编程 into U+3000. It could not produce a closing quotation mark: "OK" came out as “OK“.

The rewrite made on 2 October 2026 converts a mark only where its neighbours are Chinese, leaves decimals, digit groups, clock times, URLs and email addresses alone, pairs quotation marks as “ ” or 「」 by choice, turns ... into …… and never converts a space. One mapping stays editorial. Unicode's narrow counterpart of 。 is 。, U+FF61, and NFKC normalisation folds , into a comma and U+3000 into a space but leaves 。 untouched, so 。 to a full stop is the converter's own decision, and its rewritten page text says so.

Latin words earn up to a quarter em of space beside Chinese

The W3C's Requirements for Chinese Text Layout, a Group Draft Note dated 1 September 2026 rather than a standard, sets the gap between a Han character and a Latin letter or European numeral at 「不多于四分之一个汉字宽」, no more than a quarter of a Han character, except at the start or end of a line, and none beside a Chinese comma or full stop or inside a bracket. It also accepts a plain U+0020 space, whose width then depends on the font.

GB/T 15834's normative text says nothing about this gap; it covers only the Chinese part of mixed text. U+3000, the ideographic space, takes a whole Han character's width in a CJK font, four times the note's ceiling. The spacing habit has a nickname online, 盘古之白, from tools such as pangu.vim, but a nickname is not a rule. CSS work on adding the gap automatically comes up in our guide to vertical Chinese punctuation.

Line-end punctuation gives back half its cell

The clause of GB/T 15834 that uses 全角 is 5.1.10, and it asks for less width: 「标点符号排在一行末尾时,若为全角字符则应占半角字符的宽度(即半个字位置)」. A mark at the end of a line, if it is a full-width character, should take the width of a half-width one, half a cell. The standard's only other use of 半角, in 4.14.3.5, marks the interpunct in a date written in Arabic numerals as a half-width character. Neither clause asks for a mark to be made wider.

Advertisement
Maya Lin
Digital Platforms Analyst

Maya Lin covers SaaS platforms, workflow automation, creator tools, and productivity software for RECATOOLS.

View author profile → · Editorial policy

About this byline Maya Lin is a RECATOOLS editorial persona used for platform and productivity coverage. Articles are produced and reviewed under RECATOOLS editorial supervision.

Corrections policy

Advertisement