全形和半形

全角和半角是文字的两种显示形式,「全角」指文字字身长宽比为一比一的正方形,而「半角」为宽度为全角一半的文字。现在这两个词通常用来指代计算机中显示的文字。

「」的各地常用名稱
中国大陸
港澳臺全形
日韓全角
「」的各地常用名稱
中国大陸
港澳臺半形
日韓半角
Windows命令提示符中显示的全角和半角字符。

意义和用法

在传统的字体排印学中,文字字身长宽比为1比1的正方形金属铅字原本称作「全身」,而宽度只有一半的称为「半身」。另外对于小于一个「全身」的各种铅空称为「分空」,通常称为「二分空」(注意不是「半身」)「三分空」「四分空」「六分空」等等。

「半角/全角」源于日文,其中「角」是「方块」的意思,「全角/半角」在日文里即是原本「正方形/半个正方形大小文字」的本意,与西文字体排印学中Em和En单位含义相同。

而中文里的「角」虽然有「角度」「角落」等含义,却没有「方块」的意思,中文在字体排印时不说「全角/半角」而说「全身/半身」。中文里说「半角/全角」是计算机文字编码技术引入时直接借用了日文的做法[1]。

而目前对于计算机上的文字称作「全角字」「全形字」和「半角字」「半形字」的指代非常混乱。

「全角字」「全形字」可能是指:

  1. 用两个字节存储的字符
  2. ASCII(所谓半角拉丁字母、符号及阿拉伯数字)以外所有的字符
  3. 显示上字身宽度与字体高度相等(即字形外框为正方形)的字形

「半角字」「半形字」时可能指:

  1. 用单字节存储的字符(可能包括片假名)
  2. ASCII 字符即拉丁字母、数字和常见符号[註⁠ 1]
  3. 显示上字身宽度为字体高度一半的字形

为了避免混乱,在使用「字宽」的本意时,可以使用从英文倒翻译回中文的「全宽/半宽」(fullwidth / halfwidth)。

历史

在早期的计算机中,英语或拉丁字母语言使用的系统,每一个字母或符号,都是使用一字节的空间(一字节由8位元組成,共256个编码空间)来储存;而汉语、日语及韩语文字,由于数量大大超过256个,故惯常使用两字节来储存一个字符。所以这原本是编码层面的「单字节」「双字节」的问题。

当时使用等宽字体(如DOS、部分文字编辑器等)时,字体也就顺应这种编码形式,将中日韩文字的宽度绘制成拉丁字母和数字的两倍,这样字符的编码存储和显示宽度可以一一对应起来,「单字节」文字显示成「半宽」,「双字节」文字显示成「全宽」。因此当时的用户就开始习惯称中、日、韩等文字为「全形字符」,而称拉丁字母或数字为「半形字符」。

但是,后来计算机的文字编码技术已经发生很大变化,存储一个字符可能用一个、两个、三个或者四个字节(如UTF-8)。一个英文字符即使显示为半宽,依照不同的编码方式,并不一定是用一个字节存储;而日文的片假名也不一定是双字节,也可能用一个字节存储(即“半角片假名”)。因此,现在字符编码存储和字符显示宽度的已经没有一一对应关系。但是由于字符编码和字形宽度曾经的对应关系,很多用户一直习惯性地使用「全角/半角」词汇。

Unicode 裏的 East_Asian_Width 特性

Unicode 标准的附件11 (UAX#11) 中以信息性附件 (informative) 的形式,定义了东亚文字的字宽 East_Asian_Width 特性[2]。

缩写名称描述
WWide(宽)自然的宽字符,如平假名。
NaNarrow(窄)自然的窄字符,如 ISO 基本拉丁字母。
FFullwidth(全宽)与自然的窄字符具有Unicode等價性的宽式变体,比如全宽拉丁字母。
HHalfwidth(半宽)与自然的寬字符具有Unicode等價性的窄式变体,如半角假名,包括 U+20A9(韩元符号)[註⁠ 2]。
AAmbiguous(模糊)在东亚雙位元組字元集和欧洲单字节字元集中都有的编码的字符,如希腊字母,因此字宽行为会有所不同。
NNeutral(中性)没有出现在东亚雙位元組字元集编码中的字符,如天城文字母。

半形字符与全形字符的比较

ASCII字符

半形字符与全形字符的比较(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
0x300U+FF100U+0030
0x311U+FF111U+0031
0x322U+FF122U+0032
0x333U+FF133U+0033
0x344U+FF144U+0034
0x355U+FF155U+0035
0x366U+FF166U+0036
0x377U+FF177U+0037
0x388U+FF188U+0038
0x399U+FF199U+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
0x41AU+FF21AU+0041
0x42BU+FF22BU+0042
0x43CU+FF23CU+0043
0x44DU+FF24DU+0044
0x45EU+FF25EU+0045
0x46FU+FF26FU+0046
0x47GU+FF27GU+0047
0x48HU+FF28HU+0048
0x49IU+FF29IU+0049
0x4AJU+FF2AJU+004A
0x4BKU+FF2BKU+004B
0x4CLU+FF2CLU+004C
0x4DMU+FF2DMU+004D
0x4ENU+FF2ENU+004E
0x4FOU+FF2FOU+004F
0x50PU+FF30PU+0050
0x51QU+FF31QU+0051
0x52RU+FF32RU+0052
0x53SU+FF33SU+0053
0x54TU+FF34TU+0054
0x55UU+FF35UU+0055
0x56VU+FF36VU+0056
0x57WU+FF37WU+0057
0x58XU+FF38XU+0058
0x59YU+FF39YU+0059
0x5AZU+FF3AZU+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
0x61aU+FF41aU+0061
0x62bU+FF42bU+0062
0x63cU+FF43cU+0063
0x64dU+FF44dU+0064
0x65eU+FF45eU+0065
0x66fU+FF46fU+0066
0x67gU+FF47gU+0067
0x68hU+FF48hU+0068
0x69iU+FF49iU+0069
0x6AjU+FF4AjU+006A
0x6BkU+FF4BkU+006B
0x6ClU+FF4ClU+006C
0x6DmU+FF4DmU+006D
0x6EnU+FF4EnU+006E
0x6FoU+FF4FoU+006F
0x70pU+FF50pU+0070
0x71qU+FF51qU+0071
0x72rU+FF52rU+0072
0x73sU+FF53sU+0073
0x74tU+FF54tU+0074
0x75uU+FF55uU+0075
0x76vU+FF56vU+0076
0x77wU+FF57wU+0077
0x78xU+FF58xU+0078
0x79yU+FF59yU+0079
0x7AzU+FF5AzU+007A
0x7B{U+FF5B{U+007B
0x7C|U+FF5C|U+007C
0x7D}U+FF5D}U+007D
0x7E~U+FF5E~U+007E

日文字符

半形字符与全形字符的比较(日文字符)
JIS X 0201半形字符Unicode全形字符Unicode
0xA1。U+FF61。U+3002
0xA2U+FF62U+300C
0xA3U+FF63U+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
0xワ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+FFㅣ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特性,可以为同样一个编码(码位)的字符供替换成不同的字形(显示形式)。

参见

註釋

[註⁠ 3]
  1. 事实上并不一定是用单字节存储,根据不同的字体会显示成全宽、或者是西文的「比例宽度」而并不是正好「半宽」。
  2. Unicode定義U+20A9為半寬字符,與之相應的是全寬韓元符號(U+FFE6)。韓元字符源自拉丁字母「W」,本應效仿源自拉丁字母「Y」的日元符號(¥,U+00A5)定義為自然窄字符,故而得以派生出全寬符號。半寬字符應由自然寬字符縮窄成半寬而來,但半寬韓元符號並無對應的自然寬字符,加之U+20A9所處的貨幣符號區塊均為自然窄字符,多數字型將U+20A9也視作自然窄字符,而不遵循其半寬限制。

参考资料

  1. Eric Liu. . 2018-02-27 [2020年4月26日]. (原始内容存档于2020-04-22).
  2. Asmus Freytag. . 2006-09-15 [2008年1月1日]. (原始内容存档于2007-12-10).

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.