跳转到内容

全形和半形

本页使用了标题或全文手工转换
维基百科,自由的百科全书
(重定向自全形)
「fullwidth」的各地常用名稱
中國大陸全角
港澳臺全形
日韓全角
「halfwidth」的各地常用名稱
中國大陸半角
港澳臺半形
日韓半角
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东亚文字宽度 (East_Asian_Width) 属性的例子,其中F、H、W三种一般只用于东亚文字

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

缩写 名称 描述
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 0 U+FF10 0 U+0030
0x31 1 U+FF11 1 U+0031
0x32 2 U+FF12 2 U+0032
0x33 3 U+FF13 3 U+0033
0x34 4 U+FF14 4 U+0034
0x35 5 U+FF15 5 U+0035
0x36 6 U+FF16 6 U+0036
0x37 7 U+FF17 7 U+0037
0x38 8 U+FF18 8 U+0038
0x39 9 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 A U+FF21 A U+0041
0x42 B U+FF22 B U+0042
0x43 C U+FF23 C U+0043
0x44 D U+FF24 D U+0044
0x45 E U+FF25 E U+0045
0x46 F U+FF26 F U+0046
0x47 G U+FF27 G U+0047
0x48 H U+FF28 H U+0048
0x49 I U+FF29 I U+0049
0x4A J U+FF2A J U+004A
0x4B K U+FF2B K U+004B
0x4C L U+FF2C L U+004C
0x4D M U+FF2D M U+004D
0x4E N U+FF2E N U+004E
0x4F O U+FF2F O U+004F
0x50 P U+FF30 P U+0050
0x51 Q U+FF31 Q U+0051
0x52 R U+FF32 R U+0052
0x53 S U+FF33 S U+0053
0x54 T U+FF34 T U+0054
0x55 U U+FF35 U U+0055
0x56 V U+FF36 V U+0056
0x57 W U+FF37 W U+0057
0x58 X U+FF38 X U+0058
0x59 Y U+FF39 Y U+0059
0x5A Z 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 a U+FF41 a U+0061
0x62 b U+FF42 b U+0062
0x63 c U+FF43 c U+0063
0x64 d U+FF44 d U+0064
0x65 e U+FF45 e U+0065
0x66 f U+FF46 f U+0066
0x67 g U+FF47 g U+0067
0x68 h U+FF48 h U+0068
0x69 i U+FF49 i U+0069
0x6A j U+FF4A j U+006A
0x6B k U+FF4B k U+006B
0x6C l U+FF4C l U+006C
0x6D m U+FF4D m U+006D
0x6E n U+FF4E n U+006E
0x6F o U+FF4F o U+006F
0x70 p U+FF50 p U+0070
0x71 q U+FF51 q U+0071
0x72 r U+FF52 r U+0072
0x73 s U+FF53 s U+0073
0x74 t U+FF54 t U+0074
0x75 u U+FF55 u U+0075
0x76 v U+FF56 v U+0076
0x77 w U+FF57 w U+0077
0x78 x U+FF58 x U+0078
0x79 y U+FF59 y U+0079
0x7A z 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字体格式裏定义了fwid、halt、hwid和vhal等GSUB特性,可以为同样一个编码(码位)的字符供替换成不同的字形(显示形式)。

参见

[编辑]

註釋

[编辑]
  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. Unicode Standard Annex #11: East Asian Width (5.0.0). 2006-09-15 [2008年1月1日]. (原始内容存档于2007-12-10). 

外部链接

[编辑]