跳转到内容

全形和半形

本页使用了标题或全文手工转换
维基百科,自由的百科全书
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]

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

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

[编辑]

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
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
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
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字体格式里定义了fwidhalthwidvhalGSUB特性,可以为同样一个编码(码位)的字符供替换成不同的字形(显示形式)。

参见

[编辑]

註釋

[编辑]

    註:

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

参考资料

[编辑]

外部链接

[编辑]