全形和半形

全形和半角是文字的兩種顯示形式，「全形」指文字字身長寬比為一比一的正方形，而「半角」為寬度為全形一半的文字。現在這兩個詞通常用來指代電腦中顯示的文字。

## 意義和用法

在傳統的字體排印學中，文字字身長寬比為1比1的正方形金屬鉛字原本稱作「全身」，而寬度只有一半的稱為「半身」。另外對於小於一個「全身」的各種鉛空稱為「分空」，通常稱為「二分空」（注意不是「半身」）、「三分空」、「四分空」、「六分空」等等。

「半角／全形」源於日文，其中「角」是「方塊」的意思，「全形／半角」在日文里即是原本「正方形／半個正方形大小文字」的本意，與西文字體排印學中Em和En單位含義相同。

而中文裡的「角」雖然有「角度」「角落」等含義，卻沒有「方塊」的意思，中文在字體排印時不說「全形／半角」而說「全身／半身」。中文裡說「半角／全形」是電腦文字編碼技術引入時直接借用了日文的做法。

而目前對於電腦上的文字稱作「全形字」和「半角字」的指代非常混亂。

「全形字」可能是指：

- 用兩個字節存儲的字符
- ASCII（所謂半角拉丁字母、符號及阿拉伯數字）以外所有的字符
- 顯示上字身寬度與字體高度相等（即字形外框為正方形）的字形

「半角字」時可能指：

- 用單字節存儲的字符（可能包括片假名）
- ASCII 字符即拉丁字母、數字和常見符號
- 顯示上字身寬度為字體高度一半的字形

為了避免混亂，在使用「字寬」的本意時，可以使用從英文倒翻譯回中文的「全寬／半寬」（fullwidth／halfwidth）。

## 歷史

在早期的電腦中，英語或拉丁字母語言使用的系統，每一個字母或符號，都是使用一字節的空間（一字節由8位元組成，共256個編碼空間）來儲存；而漢語、日語及韓語文字，由於數量大大超過256個，故慣常使用兩字節來儲存一個字符。所以這原本是編碼層面的「單字節」「雙字節」的問題。

當時使用等寬字體（如DOS、部分文字編輯器等）時，字體也就順應這種編碼形式，將中日韓文字的寬度繪製成拉丁字母和數字的兩倍，這樣字符的編碼存儲和顯示寬度可以一一對應起來，「單字節」文字顯示成「半寬」，「雙字節」文字顯示成「全寬」。因此當時的使用者就開始習慣稱中、日、韓等文字為「全形字符」，而稱拉丁字母或數字為「半形字符」。

但是，後來電腦的字符編碼技術已經發生很大變化，存儲一個字符可能用一個、兩個、三個或者四個字節（如UTF-8）。一個英文字符即使顯示為半寬，依照不同的編碼方式，並不一定是用一個字節存儲；而日文的片假名也不一定是雙字節，也可能用一個字節存儲（即「半角片假名」）。因此，現在字符編碼存儲和字符顯示寬度的已經沒有一一對應關係。但是由於字符編碼和字形寬度曾經的對應關係，很多用戶一直習慣性地使用「全形／半角」詞彙。

## Unicode裏的East_Asian_Width特性

Unicode 標準的附件11（UAX#11）中以資訊性附件（informative）的形式，定義了東亞文字的字寬East_Asian_Width特性。

縮寫｜名稱｜描述

W｜Wide（寬）｜自然的寬字符，如平假名。

Na｜Narrow（窄）｜自然的窄字符，如 ISO 基本拉丁字母。

F｜Fullwidth（全寬）｜與自然的窄字符具有Unicode等價性的寬式變體，比如全寬拉丁字母。

H｜Halfwidth（半寬）｜與自然的寬字符具有Unicode等價性的窄式變體，如半角假名，包括 U+20A9（韓元符號）。

A｜Ambiguous（模糊）｜在東亞雙位元組字元集和歐洲單字節字元集中都有的編碼的字符，如希臘字母，因此字寬行為會有所不同。

N｜Neutral（中性）｜沒有出現在東亞雙位元組字元集編碼中的字符，如天城文字母。

## 半形字符與全形字符的比較

### ASCII字符

ASCII｜全形字符｜Unicode｜半形字符｜Unicode

`0x20`｜" "｜`U+3000`｜" "｜`U+0020`

`0x21`｜！｜`U+FF01`｜`U+0021`

`0x22`｜＂｜`U+FF02`｜"｜`U+0022`

`0x23`｜＃｜`U+FF03`｜#｜`U+0023`

`0x24`｜＄｜`U+FF04`｜$｜`U+0024`

`0x25`｜％｜`U+FF05`｜%｜`U+0025`

`0x26`｜＆｜`U+FF06`｜&｜`U+0026`

`0x27`｜＇｜`U+FF07`｜'｜`U+0027`

`0x28`｜（｜`U+FF08`｜(｜`U+0028`

`0x29`｜）｜`U+FF09`｜)｜`U+0029`

`0x2A`｜＊｜`U+FF0A`｜、｜`U+002A`

`0x2B`｜＋｜`U+FF0B`｜+｜`U+002B`

`0x2C`｜，｜`U+FF0C`｜,｜`U+002C`

`0x2D`｜－｜`U+FF0D`｜`U+002D`

`0x2E`｜．｜`U+FF0E`｜.｜`U+002E`

`0x2F`｜／｜`U+FF0F`｜/｜`U+002F`

`0x30`｜０｜`U+FF10`｜0｜`U+0030`

`0x31`｜１｜`U+FF11`｜1｜`U+0031`

`0x32`｜２｜`U+FF12`｜2｜`U+0032`

`0x33`｜３｜`U+FF13`｜3｜`U+0033`

`0x34`｜４｜`U+FF14`｜4｜`U+0034`

`0x35`｜５｜`U+FF15`｜5｜`U+0035`

`0x36`｜６｜`U+FF16`｜6｜`U+0036`

`0x37`｜７｜`U+FF17`｜7｜`U+0037`

`0x38`｜８｜`U+FF18`｜8｜`U+0038`

`0x39`｜９｜`U+FF19`｜9｜`U+0039`

`0x3A`｜：｜`U+FF1A`｜:｜`U+003A`

`0x3B`｜；｜`U+FF1B`｜;｜`U+003B`

`0x3C`｜＜｜`U+FF1C`｜<｜`U+003C`

`0x3D`｜＝｜`U+FF1D`｜=｜`U+003D`

`0x3E`｜＞｜`U+FF1E`｜>｜`U+003E`

`0x3F`｜？｜`U+FF1F`｜?｜`U+003F`

`0x40`｜＠｜`U+FF20`｜@｜`U+0040`

`0x41`｜Ａ｜`U+FF21`｜A｜`U+0041`

`0x42`｜Ｂ｜`U+FF22`｜B｜`U+0042`

`0x43`｜Ｃ｜`U+FF23`｜C｜`U+0043`

`0x44`｜Ｄ｜`U+FF24`｜D｜`U+0044`

`0x45`｜Ｅ｜`U+FF25`｜E｜`U+0045`

`0x46`｜Ｆ｜`U+FF26`｜F｜`U+0046`

`0x47`｜Ｇ｜`U+FF27`｜G｜`U+0047`

`0x48`｜Ｈ｜`U+FF28`｜H｜`U+0048`

`0x49`｜Ｉ｜`U+FF29`｜I｜`U+0049`

`0x4A`｜Ｊ｜`U+FF2A`｜J｜`U+004A`

`0x4B`｜Ｋ｜`U+FF2B`｜K｜`U+004B`

`0x4C`｜Ｌ｜`U+FF2C`｜L｜`U+004C`

`0x4D`｜Ｍ｜`U+FF2D`｜M｜`U+004D`

`0x4E`｜Ｎ｜`U+FF2E`｜N｜`U+004E`

`0x4F`｜Ｏ｜`U+FF2F`｜O｜`U+004F`

`0x50`｜Ｐ｜`U+FF30`｜P｜`U+0050`

`0x51`｜Ｑ｜`U+FF31`｜Q｜`U+0051`

`0x52`｜Ｒ｜`U+FF32`｜R｜`U+0052`

`0x53`｜Ｓ｜`U+FF33`｜S｜`U+0053`

`0x54`｜Ｔ｜`U+FF34`｜T｜`U+0054`

`0x55`｜Ｕ｜`U+FF35`｜U｜`U+0055`

`0x56`｜Ｖ｜`U+FF36`｜V｜`U+0056`

`0x57`｜Ｗ｜`U+FF37`｜W｜`U+0057`

`0x58`｜Ｘ｜`U+FF38`｜X｜`U+0058`

`0x59`｜Ｙ｜`U+FF39`｜Y｜`U+0059`

`0x5A`｜Ｚ｜`U+FF3A`｜Z｜`U+005A`

`0x5B`｜［｜`U+FF3B`｜`U+005B`

`0x5C`｜＼｜`U+FF3C`｜\｜`U+005C`

`0x5D`｜］｜`U+FF3D`｜`U+005D`

`0x5E`｜＾｜`U+FF3E`｜^｜`U+005E`

`0x5F`｜＿｜`U+FF3F`｜_｜`U+005F`

`0x60`｜｀｜`U+FF40`｜`｜`U+0060`

`0x61`｜ａ｜`U+FF41`｜a｜`U+0061`

`0x62`｜ｂ｜`U+FF42`｜b｜`U+0062`

`0x63`｜ｃ｜`U+FF43`｜c｜`U+0063`

`0x64`｜ｄ｜`U+FF44`｜d｜`U+0064`

`0x65`｜ｅ｜`U+FF45`｜e｜`U+0065`

`0x66`｜ｆ｜`U+FF46`｜f｜`U+0066`

`0x67`｜ｇ｜`U+FF47`｜g｜`U+0067`

`0x68`｜ｈ｜`U+FF48`｜h｜`U+0068`

`0x69`｜ｉ｜`U+FF49`｜i｜`U+0069`

`0x6A`｜ｊ｜`U+FF4A`｜j｜`U+006A`

`0x6B`｜ｋ｜`U+FF4B`｜k｜`U+006B`

`0x6C`｜ｌ｜`U+FF4C`｜l｜`U+006C`

`0x6D`｜ｍ｜`U+FF4D`｜m｜`U+006D`

`0x6E`｜ｎ｜`U+FF4E`｜n｜`U+006E`

`0x6F`｜ｏ｜`U+FF4F`｜o｜`U+006F`

`0x70`｜ｐ｜`U+FF50`｜p｜`U+0070`

`0x71`｜ｑ｜`U+FF51`｜q｜`U+0071`

`0x72`｜ｒ｜`U+FF52`｜r｜`U+0072`

`0x73`｜ｓ｜`U+FF53`｜s｜`U+0073`

`0x74`｜ｔ｜`U+FF54`｜t｜`U+0074`

`0x75`｜ｕ｜`U+FF55`｜u｜`U+0075`

`0x76`｜ｖ｜`U+FF56`｜v｜`U+0076`

`0x77`｜ｗ｜`U+FF57`｜w｜`U+0077`

`0x78`｜ｘ｜`U+FF58`｜x｜`U+0078`

`0x79`｜ｙ｜`U+FF59`｜y｜`U+0079`

`0x7A`｜ｚ｜`U+FF5A`｜z｜`U+007A`

`0x7E`｜～｜`U+FF5E`｜~｜`U+007E`

### 日文字符

JIS X 0201｜半形字符｜Unicode｜全形字符｜Unicode

`0xA1`｜｡｜`U+FF61`｜。｜`U+3002`

`0xA2`｜｢｜`U+FF62`｜「｜`U+300C`

`0xA3`｜｣｜`U+FF63`｜」｜`U+300D`

`0xA4`｜､｜`U+FF64`｜、｜`U+3001`

`0xA5`｜･｜`U+FF65`｜・｜`U+30FB`

`0xA6`｜ｦ｜`U+FF66`｜ヲ｜`U+30F2`

`0xA7`｜ｧ｜`U+FF67`｜ァ｜`U+30A1`

`0xA8`｜ｨ｜`U+FF68`｜ィ｜`U+30A3`

`0xA9`｜ｩ｜`U+FF69`｜ゥ｜`U+30A5`

`0xAA`｜ｪ｜`U+FF6A`｜ェ｜`U+30A7`

`0xAB`｜ｫ｜`U+FF6B`｜ォ｜`U+30A9`

`0xAC`｜ｬ｜`U+FF6C`｜ャ｜`U+30E3`

`0xAD`｜ｭ｜`U+FF6D`｜ュ｜`U+30E5`

`0xAE`｜ｮ｜`U+FF6E`｜ョ｜`U+30E7`

`0xAF`｜ｯ｜`U+FF6F`｜ッ｜`U+30C3`

`0xB0`｜ｰ｜`U+FF70`｜ー｜`U+30FC`

`0xB1`｜ｱ｜`U+FF71`｜ア｜`U+30A2`

`0xB2`｜ｲ｜`U+FF72`｜イ｜`U+30A4`

`0xB3`｜ｳ｜`U+FF73`｜ウ｜`U+30A6`

`0xB4`｜ｴ｜`U+FF74`｜エ｜`U+30A8`

`0xB5`｜ｵ｜`U+FF75`｜オ｜`U+30AA`

`0xB6`｜ｶ｜`U+FF76`｜カ｜`U+30AB`

`0xB7`｜ｷ｜`U+FF77`｜キ｜`U+30AD`

`0xB8`｜ｸ｜`U+FF78`｜ク｜`U+30AF`

`0xB9`｜ｹ｜`U+FF79`｜ケ｜`U+30B1`

`0xBA`｜ｺ｜`U+FF7A`｜コ｜`U+30B3`

`0xBB`｜ｻ｜`U+FF7B`｜サ｜`U+30B5`

`0xBC`｜ｼ｜`U+FF7C`｜シ｜`U+30B7`

`0xBD`｜ｽ｜`U+FF7D`｜ス｜`U+30B9`

`0xBE`｜ｾ｜`U+FF7E`｜セ｜`U+30BB`

`0xBF`｜ｿ｜`U+FF7F`｜ソ｜`U+30BD`

`0xC0`｜ﾀ｜`U+FF80`｜タ｜`U+30BF`

`0xC1`｜ﾁ｜`U+FF81`｜チ｜`U+30C1`

`0xC2`｜ﾂ｜`U+FF82`｜ツ｜`U+30C4`

`0xC3`｜ﾃ｜`U+FF83`｜テ｜`U+30C6`

`0xC4`｜ﾄ｜`U+FF84`｜ト｜`U+30C8`

`0xC5`｜ﾅ｜`U+FF85`｜ナ｜`U+30CA`

`0xC6`｜ﾆ｜`U+FF86`｜ニ｜`U+30CB`

`0xC7`｜ﾇ｜`U+FF87`｜ヌ｜`U+30CC`

`0xC8`｜ﾈ｜`U+FF88`｜ネ｜`U+30CD`

`0xC9`｜ﾉ｜`U+FF89`｜ノ｜`U+30CE`

`0xCA`｜ﾊ｜`U+FF8A`｜ハ｜`U+30CF`

`0xCB`｜ﾋ｜`U+FF8B`｜ヒ｜`U+30D2`

`0xCC`｜ﾌ｜`U+FF8C`｜フ｜`U+30D5`

`0xCD`｜ﾍ｜`U+FF8D`｜ヘ｜`U+30D8`

`0xCE`｜ﾎ｜`U+FF8E`｜ホ｜`U+30DB`

`0xCF`｜ﾏ｜`U+FF8F`｜マ｜`U+30DE`

`0xD0`｜ﾐ｜`U+FF90`｜ミ｜`U+30DF`

`0xD1`｜ﾑ｜`U+FF91`｜ム｜`U+30E0`

`0xD2`｜ﾒ｜`U+FF92`｜メ｜`U+30E1`

`0xD3`｜ﾓ｜`U+FF93`｜モ｜`U+30E2`

`0xD4`｜ﾔ｜`U+FF94`｜ヤ｜`U+30E4`

`0xD5`｜ﾕ｜`U+FF95`｜ユ｜`U+30E6`

`0xD6`｜ﾖ｜`U+FF96`｜ヨ｜`U+30E8`

`0xD7`｜ﾗ｜`U+FF97`｜ラ｜`U+30E9`

`0xD8`｜ﾘ｜`U+FF98`｜リ｜`U+30EA`

`0xD9`｜ﾙ｜`U+FF99`｜ル｜`U+30EB`

`0xDA`｜ﾚ｜`U+FF9A`｜レ｜`U+30EC`

`0xDB`｜ﾛ｜`U+FF9B`｜ロ｜`U+30ED`

`0xDC`｜ﾜ｜`U+FF9C`｜ワ｜`U+30EF`

`0xDD`｜ﾝ｜`U+FF9D`｜ン｜`U+30F3`

`0xDE`｜ﾞ｜`U+FF9E`｜゛｜`U+309B`

`0xDF`｜ﾟ｜`U+FF9F`｜゜｜`U+309C`

### 韓文字符

半形字符｜Unicode｜全形字符｜Unicode

ﾠ｜`U+FFA0`｜ㅤ｜`U+3164`

ﾡ｜`U+FFA1`｜ㄱ｜`U+3131`

ﾢ｜`U+FFA2`｜ㄲ｜`U+3132`

ﾣ｜`U+FFA3`｜ㄳ｜`U+3133`

ﾤ｜`U+FFA4`｜ㄴ｜`U+3134`

ﾥ｜`U+FFA5`｜ㄵ｜`U+3135`

ﾦ｜`U+FFA6`｜ㄶ｜`U+3136`

ﾧ｜`U+FFA7`｜ㄷ｜`U+3137`

ﾨ｜`U+FFA8`｜ㄸ｜`U+3138`

ﾩ｜`U+FFA9`｜ㄹ｜`U+3139`

ﾪ｜`U+FFAA`｜ㄺ｜`U+313A`

ﾫ｜`U+FFAB`｜ㄻ｜`U+313B`

ﾬ｜`U+FFAC`｜ㄼ｜`U+313C`

ﾭ｜`U+FFAD`｜ㄽ｜`U+313D`

ﾮ｜`U+FFAE`｜ㄾ｜`U+313E`

ﾯ｜`U+FFAF`｜ㄿ｜`U+313F`

ﾰ｜`U+FFB0`｜ㅀ｜`U+3140`

ﾱ｜`U+FFB1`｜ㅁ｜`U+3141`

ﾲ｜`U+FFB2`｜ㅂ｜`U+3142`

ﾳ｜`U+FFB3`｜ㅃ｜`U+3143`

ﾴ｜`U+FFB4`｜ㅄ｜`U+3144`

ﾵ｜`U+FFB5`｜ㅅ｜`U+3145`

ﾶ｜`U+FFB6`｜ㅆ｜`U+3146`

ﾷ｜`U+FFB7`｜ㅇ｜`U+3147`

ﾸ｜`U+FFB8`｜ㅈ｜`U+3148`

ﾹ｜`U+FFB9`｜ㅉ｜`U+3149`

ﾺ｜`U+FFBA`｜ㅊ｜`U+314A`

ﾻ｜`U+FFBB`｜ㅋ｜`U+314B`

ﾼ｜`U+FFBC`｜ㅌ｜`U+314C`

ﾽ｜`U+FFBD`｜ㅍ｜`U+314D`

ﾾ｜`U+FFBE`｜ㅎ｜`U+314E`

ￂ｜`U+FFC2`｜ㅏ｜`U+314F`

ￃ｜`U+FFC3`｜ㅐ｜`U+3150`

ￄ｜`U+FFC4`｜ㅑ｜`U+3151`

ￅ｜`U+FFC5`｜ㅒ｜`U+3152`

ￆ｜`U+FFC6`｜ㅓ｜`U+3153`

ￇ｜`U+FFC7`｜ㅔ｜`U+3154`

ￊ｜`U+FFCA`｜ㅕ｜`U+3155`

ￋ｜`U+FFCB`｜ㅖ｜`U+3156`

ￌ｜`U+FFCC`｜ㅗ｜`U+3157`

ￍ｜`U+FFCD`｜ㅘ｜`U+3158`

ￎ｜`U+FFCE`｜ㅙ｜`U+3159`

ￏ｜`U+FFCF`｜ㅚ｜`U+315A`

ￒ｜`U+FFD2`｜ㅛ｜`U+315B`

ￓ｜`U+FFD3`｜ㅜ｜`U+315C`

ￔ｜`U+FFD4`｜ㅝ｜`U+315D`

ￕ｜`U+FFD5`｜ㅞ｜`U+315E`

ￖ｜`U+FFD6`｜ㅟ｜`U+315F`

ￗ｜`U+FFD7`｜ㅠ｜`U+3160`

ￚ｜`U+FFDA`｜ㅡ｜`U+3161`

ￛ｜`U+FFDB`｜ㅢ｜`U+3162`

ￜ｜`U+FFDC`｜ㅣ｜`U+3163`

### 其他字符

半形字符｜Unicode｜全形字符｜Unicode

⦅｜`U+2985`｜｟｜`U+FF5F`

⦆｜`U+2986`｜｠｜`U+FF60`

¢｜`U+00A2`｜￠｜`U+FFE0`

£｜`U+00A3`｜￡｜`U+FFE1`

¬｜`U+00AC`｜￢｜`U+FFE2`

¯｜`U+00AF`｜￣｜`U+FFE3`

¦｜`U+00A6`｜￤｜`U+FFE4`

¥｜`U+00A5`｜￥｜`U+FFE5`

₩｜`U+20A9`｜￦｜`U+FFE6`

￨｜`U+FFE8`｜│｜`U+2502`

￩｜`U+FFE9`｜←｜`U+2190`

￪｜`U+FFEA`｜↑｜`U+2191`

￫｜`U+FFEB`｜→｜`U+2192`

￬｜`U+FFEC`｜↓｜`U+2193`

￭｜`U+FFED`｜■｜`U+25A0`

￮｜`U+FFEE`｜○｜`U+25CB`

⟨｜`U+27E8`｜〈｜`U+3008`

⟩｜`U+27E9`｜〉｜`U+3009`

⟪｜`U+27EA`｜《｜`U+300A`

⟫｜`U+27EB`｜》｜`U+300B`

⟬｜`U+27EC`｜〘｜`U+3018`

⟭｜`U+27ED`｜〙｜`U+3019`

⟦｜`U+27E6`｜〚｜`U+301A`

⟧｜`U+27E7`｜〛｜`U+301B`

## OpenType

OpenType字體格式裏定義了`fwid`、`halt`、`hwid`和`vhal`等`GSUB`特性，可以為同樣一個編碼（碼位）的字符供替換成不同的字形（顯示形式）。

## 外部連結

- East Asian Width Unicode Standard Annex #11