全形和半形

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

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

意义和用法编辑

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

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

而中文里的「角」虽然有「角度」「角落」等含义,却没有「方块」的意思,中文在字体排印时不说「全角/半角」而说「全身/半身」[來源請求]。中文里说「半角/全角」是计算机文字编码技术引入时直接借用了日文的做法[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 特性[3]

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

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

ASCII字符编辑

半形字符与全形字符的比较(ASCII字符)
ASCII全形字符Unicode半形字符Unicode
0x20" "U+3000" "U+0020
0x21U+FF01!U+0021
0x22U+FF02"U+0022
0x23U+FF03#U+0023
0x24U+FF04$U+0024
0x25U+FF05%U+0025
0x26U+FF06&U+0026
0x27U+FF07'U+0027
0x28U+FF08(U+0028
0x29U+FF09)U+0029
0x2AU+FF0A*U+002A
0x2BU+FF0B+U+002B
0x2CU+FF0C,U+002C
0x2DU+FF0D-U+002D
0x2EU+FF0E.U+002E
0x2FU+FF0F/U+002F
0x30U+FF100U+0030
0x31U+FF111U+0031
0x32U+FF122U+0032
0x33U+FF133U+0033
0x34U+FF144U+0034
0x35U+FF155U+0035
0x36U+FF166U+0036
0x37U+FF177U+0037
0x38U+FF188U+0038
0x39U+FF199U+0039
0x3AU+FF1A:U+003A
0x3BU+FF1B;U+003B
0x3CU+FF1C<U+003C
0x3DU+FF1D=U+003D
0x3EU+FF1E>U+003E
0x3FU+FF1F?U+003F
0x40U+FF20@U+0040
0x41U+FF21AU+0041
0x42U+FF22BU+0042
0x43U+FF23CU+0043
0x44U+FF24DU+0044
0x45U+FF25EU+0045
0x46U+FF26FU+0046
0x47U+FF27GU+0047
0x48U+FF28HU+0048
0x49U+FF29IU+0049
0x4AU+FF2AJU+004A
0x4BU+FF2BKU+004B
0x4CU+FF2CLU+004C
0x4DU+FF2DMU+004D
0x4EU+FF2ENU+004E
0x4FU+FF2FOU+004F
0x50U+FF30PU+0050
0x51U+FF31QU+0051
0x52U+FF32RU+0052
0x53U+FF33SU+0053
0x54U+FF34TU+0054
0x55U+FF35UU+0055
0x56U+FF36VU+0056
0x57U+FF37WU+0057
0x58U+FF38XU+0058
0x59U+FF39YU+0059
0x5AU+FF3AZU+005A
0x5BU+FF3B[U+005B
0x5CU+FF3C\U+005C
0x5DU+FF3D]U+005D
0x5EU+FF3E^U+005E
0x5F_U+FF3F_U+005F
0x60U+FF40`U+0060
0x61U+FF41aU+0061
0x62U+FF42bU+0062
0x63U+FF43cU+0063
0x64U+FF44dU+0064
0x65U+FF45eU+0065
0x66U+FF46fU+0066
0x67U+FF47gU+0067
0x68U+FF48hU+0068
0x69U+FF49iU+0069
0x6AU+FF4AjU+006A
0x6BU+FF4BkU+006B
0x6CU+FF4ClU+006C
0x6DU+FF4DmU+006D
0x6EU+FF4EnU+006E
0x6FU+FF4FoU+006F
0x70U+FF50pU+0070
0x71U+FF51qU+0071
0x72U+FF52rU+0072
0x73U+FF53sU+0073
0x74U+FF54tU+0074
0x75U+FF55uU+0075
0x76U+FF56vU+0076
0x77U+FF57wU+0077
0x78U+FF58xU+0078
0x79U+FF59yU+0079
0x7AU+FF5AzU+007A
0x7BU+FF5B{U+007B
0x7CU+FF5C|U+007C
0x7DU+FF5D}U+007D
0x7EU+FF5E~U+007E

日文字符编辑

半形字符与全形字符的比较(日文字符)
JIS X 0201半形字符Unicode全形字符Unicode
0xA1U+FF61U+3002
0xA2U+FF62U+300C
0xA3U+FF63U+300D
0xA4U+FF64U+3001
0xA5U+FF65U+30FB
0xA6U+FF66U+30F2
0xA7U+FF67U+30A1
0xA8U+FF68U+30A3
0xA9U+FF69U+30A5
0xAAU+FF6AU+30A7
0xABU+FF6BU+30A9
0xACU+FF6CU+30E3
0xADU+FF6DU+30E5
0xAEU+FF6EU+30E7
0xAFU+FF6FU+30C3
0xB0U+FF70U+30FC
0xB1U+FF71U+30A2
0xB2U+FF72U+30A4
0xB3U+FF73U+30A6
0xB4U+FF74U+30A8
0xB5U+FF75U+30AA
0xB6U+FF76U+30AB
0xB7U+FF77U+30AD
0xB8U+FF78U+30AF
0xB9U+FF79U+30B1
0xBAU+FF7AU+30B3
0xBBU+FF7BU+30B5
0xBCU+FF7CU+30B7
0xBDU+FF7DU+30B9
0xBEU+FF7EU+30BB
0xBFソU+FF7FU+30BD
0xC0U+FF80U+30BF
0xC1U+FF81U+30C1
0xC2U+FF82U+30C4
0xC3U+FF83U+30C6
0xC4U+FF84U+30C8
0xC5U+FF85U+30CA
0xC6U+FF86U+30CB
0xC7U+FF87U+30CC
0xC8U+FF88U+30CD
0xC9U+FF89U+30CE
0xCAU+FF8AU+30CF
0xCBU+FF8BU+30D2
0xCCU+FF8CU+30D5
0xCDU+FF8DU+30D8
0xCEU+FF8EU+30DB
0xCFU+FF8FU+30DE
0xD0U+FF90U+30DF
0xD1U+FF91U+30E0
0xD2U+FF92U+30E1
0xD3U+FF93U+30E2
0xD4U+FF94U+30E4
0xD5U+FF95U+30E6
0xD6U+FF96U+30E8
0xD7U+FF97U+30E9
0xD8U+FF98U+30EA
0xD9U+FF99U+30EB
0xDAU+FF9AU+30EC
0xDBU+FF9BU+30ED
0xDCU+FF9CU+30EF
0xDDU+FF9DU+30F3
0xDEU+FF9EU+309B
0xDFU+FF9FU+309C

韩文字符编辑

半形字符与全形字符的比较(韩文字符)
半形字符Unicode全形字符Unicode
U+FFA0U+3164
U+FFA1U+3131
U+FFA2U+3132
U+FFA3U+3133
U+FFA4U+3134
U+FFA5U+3135
U+FFA6U+3136
U+FFA7U+3137
U+FFA8U+3138
U+FFA9U+3139
U+FFAAU+313A
U+FFABU+313B
U+FFACU+313C
U+FFADU+313D
U+FFAEU+313E
U+FFAFU+313F
U+FFB0U+3140
U+FFB1U+3141
U+FFB2U+3142
U+FFB3U+3143
U+FFB4U+3144
U+FFB5U+3145
U+FFB6U+3146
U+FFB7U+3147
U+FFB8U+3148
U+FFB9U+3149
U+FFBAU+314A
U+FFBBU+314B
U+FFBCU+314C
U+FFBDU+314D
U+FFBEU+314E
U+FFC2U+314F
U+FFC3U+3150
U+FFC4U+3151
U+FFC5U+3152
U+FFC6U+3153
U+FFC7U+3154
U+FFCAU+3155
U+FFCBU+3156
U+FFCCU+3157
U+FFCDU+3158
U+FFCEU+3159
U+FFCFU+315A
U+FFD2U+315B
U+FFD3U+315C
U+FFD4U+315D
U+FFD5U+315E
U+FFD6U+315F
U+FFD7U+3160
U+FFDAU+3161
U+FFDBU+3162
U+FFDCU+3163

其他字符编辑

半形字符与全形字符的比较(其他字符)
半形字符Unicode全形字符Unicode
U+2985U+FF5F
U+2986U+FF60
¢U+00A2U+FFE0
£U+00A3U+FFE1
¬U+00ACU+FFE2
¯U+00AFU+FFE3
¦U+00A6U+FFE4
¥U+00A5U+FFE5
U+20A9U+FFE6
U+FFE8U+2502
U+FFE9U+2190
U+FFEAU+2191
U+FFEBU+2192
U+FFECU+2193
U+FFEDU+25A0
U+FFEEU+25CB
U+27E8U+3008
U+27E9U+3009
U+27EAU+300A
U+27EBU+300B
U+27ECU+3018
U+27EDU+3019
U+27E6U+301A
U+27E7U+301B

OpenType编辑

OpenType字体格式里定义了fwidhalthwidvhalGSUB特性,可以为同样一个编码(码位)的字符供替换成不同的字形(显示形式)。

参见编辑

註釋编辑

    註:

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

参考资料编辑

外部链接编辑