Halfwidth and fullwidth forms (Unicode block)

In CJK (Chinese, Japanese and Korean) computing, graphic characters are traditionally classed into fullwidth (in Taiwan and Hong Kong: 全形; in CJK: 全角) and halfwidth (in Taiwan and Hong Kong: 半形; in CJK: 半角) characters. With fixed-width fonts, a halfwidth character occupies half the width of a fullwidth character, hence the name.
Halfwidth and Fullwidth Forms is also the name of a Unicode block U+FF00–FFEF, provided so that older encodings containing both halfwidth and fullwidth characters can have lossless translation to/from Unicode.
Rationale
In the days of text mode computing, Western characters were normally laid out in a grid on the screen, often 80 columns by 24 or 25 lines. Each character was displayed as a small dot matrix, often about 8 pixels wide, and a SBCS (single byte character set) was generally used to encode characters of western languages.
For a number of practical and aesthetic reasons Han characters need to be square, approximately twice as wide as these fixed-width SBCS characters. As these were typically encoded in a DBCS (double byte character set) this also meant that their length on screen in a duospaced font was proportional to their byte length. Some terminals and editing programs could not deal with double-byte characters starting at odd columns, only even ones (some could not even put double-byte and single-byte characters in the same line). So the DBCS sets generally included Roman characters and digits also, for use alongside the CJK characters in the same line.
On the other hand, early Japanese computing used a single-byte code page called JIS X 0201 for katakana. These would be rendered at the same width as the other single-byte characters, making them half-width kana characters rather than normally proportioned kana. Although the JIS X 0201 standard itself did not specify half-width display for katakana, this became the visually distinguishing feature in Shift JIS between the single-byte JIS X 0201 and double-byte JIS X 0208 katakana. Some IBM code pages used a similar treatment for Korean jamo, based on the N-byte Hangul code and its EBCDIC translation.
In Unicode
In Unicode, if a certain grapheme can be represented as either a fullwidth character or a halfwidth character, it is said to have both a fullwidth form and a halfwidth form.
Halfwidth and Fullwidth Forms is the name of Unicode block U+FF00–FFEF, the last of the Basic Multilingual Plane excepting the short Specials block at U+FFF0–FFFF.
Range U+FF01–FF5E reproduces the characters of ASCII 21 to 7E as fullwidth forms. U+FF00 does not correspond to a fullwidth ASCII 20 (space character), since that role is already fulfilled by U+3000 "ideographic space".
Range U+FF65–FF9F encodes halfwidth forms of katakana in a transposition of their JIS X 0201 layout – see half-width kana.
The range U+FFA0–FFDC encodes halfwidth forms of compatibility jamo characters for Hangul, in a transposition of their 1974 standard layout. It is used in the mapping of some IBM encodings for Korean.[4]
Range U+FFE0–FFEE includes fullwidth and halfwidth symbols.
Block
Halfwidth and Fullwidth Forms[1][2] Official Unicode Consortium code chart (PDF) | ||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
U+FF0x | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | |
U+FF1x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
U+FF2x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
U+FF3x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
U+FF4x | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
U+FF5x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | ⦅ |
U+FF6x | ⦆ | 。 | 「 | 」 | 、 | ・ | ヲ | ァ | ィ | ゥ | ェ | ォ | ャ | ュ | ョ | ッ |
U+FF7x | ー | ア | イ | ウ | エ | オ | カ | キ | ク | ケ | コ | サ | シ | ス | セ | ソ |
U+FF8x | タ | チ | ツ | テ | ト | ナ | ニ | ヌ | ネ | ノ | ハ | ヒ | フ | ヘ | ホ | マ |
U+FF9x | ミ | ム | メ | モ | ヤ | ユ | ヨ | ラ | リ | ル | レ | ロ | ワ | ン | ゙ | ゚ |
U+FFAx | HW HF |
ᄀ | ᄁ | ᆪ | ᄂ | ᆬ | ᆭ | ᄃ | ᄄ | ᄅ | ᆰ | ᆱ | ᆲ | ᆳ | ᆴ | ᆵ |
U+FFBx | ᄚ | ᄆ | ᄇ | ᄈ | ᄡ | ᄉ | ᄊ | ᄋ | ᄌ | ᄍ | ᄎ | ᄏ | ᄐ | ᄑ | ᄒ | |
U+FFCx | ᅡ | ᅢ | ᅣ | ᅤ | ᅥ | ᅦ | ᅧ | ᅨ | ᅩ | ᅪ | ᅫ | ᅬ | ||||
U+FFDx | ᅭ | ᅮ | ᅯ | ᅰ | ᅱ | ᅲ | ᅳ | ᅴ | ᅵ | |||||||
U+FFEx | ¢ | £ | ¬ |  ̄ | ¦ | ¥ | ₩ | │ | ← | ↑ | → | ↓ | ■ | ○ | ||
Notes |
The block has variation sequences defined for East Asian punctuation positional variants.[5][6] They use U+FE00 VARIATION SELECTOR-1 (VS01) and U+FE01 VARIATION SELECTOR-2 (VS02):
U+ | FF01 | FF0C | FF0E | FF1A | FF1B | FF1F | Description |
base code point | ! | , | . | : | ; | ? | |
base + VS01 | !︀ | ,︀ | .︀ | :︀ | ;︀ | ?︀ | corner-justified form |
base + VS02 | !︁ | ,︁ | .︁ | :︁ | ;︁ | ?︁ | centered form |
An additional variant is defined for a fullwidth zero with a short diagonal stroke: U+FF10 FULLWIDTH DIGIT ZERO, U+FE00 VS1 (0︀).[7][6]
History
The following Unicode-related documents record the purpose and process of defining specific characters in the Halfwidth and Fullwidth Forms block:
Version | Final code points[a] | Count | L2 ID | WG2 ID | Document |
---|---|---|---|---|---|
1.0.0 | U+FF01..FF5E, FF61..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6 | 216 | (to be determined) | ||
N4403 (pdf, doc) | Umamaheswaran, V. S. (2014-01-28), "Resolution M61.01", Unconfirmed minutes of WG 2 meeting 61, Holiday Inn, Vilnius, Lithuania; 2013-06-10/14 | ||||
L2/15-268 | Beeton, Barbara; Freytag, Asmus; Iancu, Laurențiu; Sargent, Murray (2015-10-30), Proposal to Represent the Slashed Zero Variant of Empty Set | ||||
L2/17-056 | Lunde, Ken (2017-02-13), Proposal to add standardized variation sequences | ||||
L2/17-436 | Lunde, Ken (2018-01-21), Proposal to add standardized variation sequences for fullwidth East Asian punctuation | ||||
L2/18-039 | Anderson, Deborah; Whistler, Ken; Pournader, Roozbeh; Moore, Lisa; Liang, Hai; Cook, Richard (2018-01-19), "24. Fullwidth East Asian Punctuation", Recommendations to UTC #154 January 2018 on Script Proposals | ||||
L2/17-362 | Moore, Lisa (2018-02-02), "B.4.1 New Proposal to add standardized variation sequence for U+FF10 FULL WIDTH DIGIT ZERO", UTC #153 Minutes | ||||
1.0.1 | U+FFE8..FFEE | 7 | (to be determined) | ||
3.2 | U+FF5F..FF60 | 2 | L2/99-052 | Freytag, Asmus (1999-02-05), The math pieces from the symbol font | |
L2/01-033 | Karlsson, Kent; Freytag, Asmus (2001-01-16), Disunify braces/brackets for math, computing science, and Z notation from similar-looking CJK braces/brackets | ||||
L2/01-159 | N2344 | Ad-hoc report on Mathematical Symbols, 2001-04-03 | |||
L2/01-157 | N2345R | Karlsson, Kent (2001-04-04), Proposal to disunify certain fencing CJK punctuation marks from similar-looking Math fences | |||
L2/01-168 | Whistler, Ken (2001-04-10), Bracket Disunification & Normalization Hell | ||||
L2/01-012R | Moore, Lisa (2001-05-21), "Disunifying Braces and Brackets", Minutes UTC #86 in Mountain View, Jan 2001 | ||||
L2/01-223 | Suignard, Michel (2001-05-23), Discussion of Issues Regarding Bracket Disunification | ||||
L2/01-184R | Moore, Lisa (2001-06-18), "Motion 87-M21", Minutes from the UTC/L2 meeting, Reverse the decision made in motion 86-M6 not to disunify brackets. | ||||
L2/01-317 | Suignard, Michel (2001-08-14), Bracket Disunification & Normalization | ||||
L2/01-295R | Moore, Lisa (2001-11-06), "Bracket Disunification and Normalization", Minutes from the UTC/L2 meeting #88 | ||||
L2/02-154 | N2403 | Umamaheswaran, V. S. (2002-04-22), "Resolution M41.1", Draft minutes of WG 2 meeting 41, Hotel Phoenix, Singapore, 2001-10-15/19 | |||
|
In OpenType
OpenType has the fwid, halt, hwid and vhal "feature tags" to be used for providing fullwidth or halfwidth form of a character.
See also
- CJK
- Han unification
- Monospaced font
- Duospaced font
- East Asian punctuation
- Em size - full width forms
- Hangul Jamo (Unicode block)
- Katakana (Unicode block)
- Latin script in Unicode
- Enclosed Alphanumerics - bullet point sequences, some appear as full width (e.g. ⒈,⓵,⑴,⒜,ⓐ)
References
- ^ "Unicode 1.0.1 Addendum" (PDF). The Unicode Standard. 1992-11-03. Archived (PDF) from the original on 2016-07-02. Retrieved 2016-07-09.
- ^ "Unicode character database". The Unicode Standard. Archived from the original on 2016-07-10. Retrieved 2016-07-09.
- ^ "Enumerated Versions of The Unicode Standard". The Unicode Standard. Archived from the original on 2016-06-29. Retrieved 2016-07-09.
- ^ "ICU Demonstration - Converter Explorer". demo.icu-project.org. Retrieved 7 May 2018.
- ^ Lunde, Ken (2018-01-21). "L2/17-436: Proposal to add standardized variation sequences for fullwidth East Asian punctuation" (PDF).
- ^ a b "Unicode Character Database: Standardized Variation Sequences". The Unicode Consortium.
- ^ Beeton, Barbara; Freytag, Asmus; Iancu, Laurențiu; Sargent, Murray (2015-10-30). "L2/15-268: Proposal to Represent the Slashed Zero Variant of Empty Set" (PDF).
External links
- East Asian Width Unicode Standard Annex #11