UnicodeHalfwidth and Fullwidth FormsBMPASCIIKatakana

Halfwidth and Fullwidth Forms in Unicode

Halfwidth and Fullwidth Forms in Unicode In the world of digital text, character width is not always uniform. The Halfwidth and Fullwidth Forms block is a specialized section of the Unico...

Halfwidth and Fullwidth Forms in Unicode

In the world of digital text, character width is not always uniform. The Halfwidth and Fullwidth Forms block is a specialized section of the Unicode Standard designed to ensure that text from older encoding systems can be migrated to Unicode without losing data. This process, known as lossless translation, allows modern systems to maintain the exact visual and structural formatting of legacy documents.

Located in the Basic Multilingual Plane (BMP)—the primary plane of Unicode—this block spans the range from U+FF00 to U+FFEF. It serves as the penultimate block of the BMP, positioned just before the Specials block.

ไม่มีภาพประกอบ

Key Facts

  • Range: U+FF00 to U+FFEF (240 total code points).
  • Assigned Characters: 225 code points are currently assigned, with 15 reserved.
  • Primary Purpose: To provide round-trip compatibility for legacy encodings.
  • Scripts Covered: Latin, Katakana, Hangul, and Common symbols.
  • Evolution: First introduced in Unicode 1.0.0 (1991) and finalized in version 3.2 (2002).

Detailed Block Breakdown

The Halfwidth and Fullwidth Forms block is divided into several functional ranges, each catering to different scripts and symbol sets.

Fullwidth Latin and ASCII

The range U+FF01 to U+FF5E reproduces the standard ASCII characters (from decimal 21 to 7E) in a fullwidth format. These are designed to align visually with East Asian characters. Notably, U+FF00 is not used for a fullwidth space, as that role is handled by the ideographic space (U+3000).

Halfwidth Katakana

The range U+FF61 to U+FF9F contains halfwidth forms of Katakana and associated punctuation. These characters are a transposition of the JIS X 0201 encoding, allowing for compact representation of Japanese text.

Halfwidth Hangul Jamo

The range U+FFA0 to U+FFDC encodes halfwidth compatibility jamo (individual components of the Korean alphabet) for Hangul. These were included to support IBM encodings, such as code page 933, which used Shift Out and Shift In characters to toggle between single-byte and double-byte character sets.

Symbols and Special Forms

The range U+FFE0 to U+FFEE consists of various fullwidth and halfwidth symbols. Additionally, the block supports variation sequences for East Asian punctuation. By using Variation Selector-1 (VS01) and Variation Selector-2 (VS02), characters like exclamation points and commas can be displayed in either corner-justified or centered forms.

A specific variant also exists for the fullwidth digit zero (U+FF10), which can be modified with VS1 to include a short diagonal stroke.

Technical Summary

Halfwidth and Fullwidth Forms Block Specifications
Attribute Details
Unicode Range U+FF00 – U+FFEF
Total Code Points 240
Assigned Points 225
Plane Basic Multilingual Plane (BMP)
Scripts Included Latin (52), Katakana (55), Hangul (52), Common (66)

Unicode Version History

The block has grown incrementally since the inception of the Unicode Standard:

  1. Version 1.0.0 (1991): 216 characters initially defined.
  2. Version 1.1 (1993): Increased to 223 characters (+7).
  3. Version 3.2 (2002): Reached the current total of 225 characters (+2).

Frequently Asked Questions

Why does this block exist if the characters are duplicates of other scripts?

The block exists for lossless translation. Many older legacy encodings used different widths for the same character; by providing these specific code points, Unicode ensures that text can be converted to and from these old systems without losing the original width formatting.

What is the difference between a halfwidth and fullwidth character?

Fullwidth characters are designed to occupy the same amount of horizontal space as a CJK (Chinese, Japanese, Korean) character, creating a square appearance. Halfwidth characters occupy roughly half that space, similar to standard Latin letters.

How are variation sequences used in this block?

Variation sequences use a base code point followed by a variation selector (VS01 or VS02). This tells the rendering system whether to display a punctuation mark in a centered position or justified to the corner of the character cell.

Is U+FF00 used as a space character?

No. While U+FF01 starts the fullwidth ASCII range, U+FF00 is not used for a space because the ideographic space (U+3000) already fulfills that requirement in the Unicode Standard.

References

  1. Proposed code points and characters names may differ from final code points and names
  2. "Unicode 1.0.1 Addendum" (PDF). The Unicode Standard. 1992-11-03. Retrieved 2016-07-09.
  3. "Unicode character database". The Unicode Standard. Retrieved 2023-07-26.
  4. "Enumerated Versions of The Unicode Standard". The Unicode Standard. Retrieved 2023-07-26.
  5. "3.8: Block-by-Block Charts" (PDF). The Unicode Standard. version 1.0. Unicode Consortium.