InCJK(Chinese, Japanese, and Korean) computing,graphic charactersare traditionally classed intofullwidth[a]andhalfwidth[b]characters. Unlikemonospaced fonts,a halfwidth character occupies half the width of a fullwidth character, hence the name.
Halfwidth and Fullwidth Formsis also the name of aUnicode blockU+FF00–FFEF, provided so that older encodings containing both halfwidth and fullwidth characters can have lossless translation to and from Unicode.
Rationale
editThis sectionneeds additional citations forverification.(April 2021) |
In the days oftext modecomputing, 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 smalldot matrix,often about 8pixelswide, and aSBCS(single-byte character set) was generally used to encode characters of Western languages.
For aesthetic reasons and readability, it is preferable forChinese charactersto be approximately square-shaped, therefore twice as wide as these fixed-width SBCS characters. As these were typically encoded in aDBCS(double-byte character set), this also meant that their width on screen in aduospaced fontwas 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 calledJIS X 0201forkatakana.These would be rendered at the same width as the other single-byte characters, making themhalf-width kanacharacters 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 inShift JISbetween the single-byte JIS X 0201 and double-byteJIS X 0208katakana. Some IBM code pages used a similar treatment forKorean jamo,[1]based on theN-byte Hangul codeand itsEBCDICtranslation.
In Unicode
editFor compatibility with existing character sets that contained both half- and fullwidth versions of the same character,Unicodeallocated a single block at U+FF00–FFEF containing the necessary "alternative width" characters. This includes a fullwidth version of all theASCIIcharacters and some non-ASCII punctuation such as the Yen sign, halfwidth versions of katakana andhangul,and halfwidth versions of some other symbols such as circles. Only characters needed for lossless round trip to existing character sets were allocated, rather than (for instance) making a fullwidth version of every Latin accented character.
Unicode assignseverycode point an "East Asian width"property.This may be:[2]
Abbreviation | Name | Description |
---|---|---|
W | Wide | Naturally wide character, e.g.Hiragana. |
Na | Narrow | Naturally narrow character, e.g.ISO Basic Latin alphabet. |
F | Fullwidth | Wide variant withcompatibility normalisationto naturally narrow character, e.g. fullwidth Latin script. |
H | Halfwidth | Narrow variant withcompatibility normalisationto naturally wide character, e.g.half-width kana.Includes U+20A9 (₩) as an exception. |
A | Ambiguous | Characters included in East Asian DBCS codes but also in European SBCS codes, e.g.Greek alphabet.Duospaced behaviour can consequently vary. |
N | Neutral | Characters which do not appear in East Asian DBCS codes, e.g.Devanagari. |
Terminal emulatorscan use this property to decide whether a character should consume one or two "columns" when figuring out tabs and cursor position.
In OpenType
editOpenTypehas thefwid
,halt
,hwid
,andvhal
feature tags to be used to reproduce fullwidth or halfwidth form of a character.CSSprovides control over these features usingfont-variant-east-asian
andfont-feature-settings
properties.[3]
See also
edit- East Asian punctuation
- Em size– full width forms
- Enclosed Alphanumerics– bullet point sequences; some appear as fullwidth (e.g. ⒈, ⓵, ⑴, ⒜, ⓐ)
- Han unification
- Hangul Jamo (Unicode block)
- Katakana (Unicode block)
- Latin script in Unicode
Notes
editReferences
edit- ^"ICU Demonstration - Converter Explorer".demo.icu-project.org.Retrieved7 May2018.
- ^Lunde, Ken(2019-01-25)."Unicode® Standard Annex #11: East Asian Width".Unicode Consortium.
- ^"Syntax for OpenType features in CSS".Adobe.Retrieved2023-09-20.
External links
edit- East Asian WidthUnicode Standard Annex #11