人民币符号问题可能是每个前端开发者都会遇到的问题,你可能和设计师争论过是一横还是两横,也可能和同事争论过是 ¥
还是 ¥
,这里记录一下。
人民币符号是 ¥ U+00A5 还是 ¥ U+FFE5
下表列出了人民币和美元、英镑、欧元等币种的符号和编码:
Symbol | Unicode | Decimal | Name | HTML Entity |
---|---|---|---|---|
¥ |
U+00A5 | 165 | YEN SIGN | ¥ ¥ ¥ |
¥ |
U+FFE5 | 65509 | FULLWIDTH YEN SIGN | ¥ |
Ұ |
U+04B0 | 1200 | CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE | Ұ |
$ |
U+0024 | 36 | DOLLAR SIGN | $  |
$ |
U+FF04 | 65284 | FULLWIDTH DOLLAR SIGN | $ |
£ |
U+00A3 | 163 | POUND SIGN | £ £ |
£ |
U+FFE1 | ... | FULLWIDTH POUND SIGN | ... |
€ |
U+20AC | ... | EURO SIGN | € € € |
₩ |
U+20A9 | ... | WON SIGN | ... |
₩ |
U+FFE6 | ... | FULLWIDTH WON SIGN | ... |
其中半角字符 ¥ U+00A5 和全角字符 ¥ U+FFE5 都表示人民币符号(日元也是这个符号),都是正确的。
具体使用 ¥ U+00A5 还是 ¥ U+FFE5 取决于上下文,如果语境是西文或者是和半角数字搭配,使用半角 ¥ U+00A5 更美观,如果语境是中文,全篇标点符号都是全角字符,那使用全角 ¥ U+FFE5 更合适。美元、英镑符号也是同理。
怎么输入人民币符号
微软拼音输入法,中文模式,按 Shift + 4 默认输出全角 ¥,支持通过按 Shift + Space 切换全/半角。
macOS 简体拼音输入法,按 Shift + 4 默认输出半角 ¥,支持配置“使用半/全角标点符号”,修改后可变为输出全角 ¥。
人民币符号在 HTML 中使用时需不需要转义
过去 HTML 的编码不统一,尤其在非英语国家问题泛滥,国内同时存在 GB2312、GBK、GB18030,以及港台使用的 BIG-5,开发者相关知识的缺乏,导致单个项目中同时存在多种编码文件。因此需要使用 HTML 字符实体或者转义字符,以半角字符 ¥ U+00A5 为例,转写为 ¥
(名称)、¥
(Unicode 十进制编码)、¥
(Unicode 十六进制编码),可以最大程度保持兼容,不受文件编码影响。
目前 Web 开发普遍使用 UTF-8 编码,可以直接使用原始字符,让代码有更好的可读性,所写即所见,没有特殊情况不应该强制转义。
人民币符号是「Y」加一横还是两横
目前并没有明确标准规定是一横还是两横,不过我们可以参考人民币纸币:
在第五套人民币 2005 年版的「全息磁性开窗安全线(100 元)」上,人民币符号的造型为:Y 字母加两道水平线。
字体中的人民币符号样式
新的 Windows/macOS/Android/iOS 系统中,无论是 ¥ U+00A5 还是 ¥ U+FFE5 系统默认 UI 字体都展示为 Y=
。
具体就是:
- Windows 10 —— Segoe UI、Arial、微软雅黑
- macOS/iOS —— Helvetica Neue、苹方、华文细黑
- Android —— Roboto、思源黑体
在 Windows XP 年代,默认中文字体中易宋体将 ¥ U+FFE5 显示为
Y-
,这可能是部分开发者坚持使用 ¥ U+00A5 的原因。
一般来说,正文使用如下的字体族定义已经足够覆盖桌面端和移动端。
body {
font-family: -apple-system, BlinkMacSystemFont, Roboto, 'Segoe UI',
'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Source Han Sans SC',
'Mi Lan Pro VF', 'Mi Lanting', 'Noto Sans CJK SC', 'Microsoft YaHei',
'Heiti SC', 'DengXian', sans-serif;
}
如果希望更精细地控制人民币符号字体,可以选择自定义字体族:
@font-face {
font-family: Yuan;
src: local('PingFang SC'), local('Microsoft YaHei'),
local('Source Han Sans SC'), local('Noto Sans CJK SC');
unicode-range: U+00A5, U+FFE5;
}
body {
font-family: Yuan, -apple-system, BlinkMacSystemFont, Roboto, 'Segoe UI',
'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Source Han Sans SC',
'Mi Lan Pro VF', 'Mi Lanting', 'Noto Sans CJK SC', 'Microsoft YaHei',
'Heiti SC', 'DengXian', sans-serif;
}
这里我们自定义了一个新的字体族 Yuan
,单独设置 ¥ U+00A5 和 ¥ U+FFE5 的字体,优先使用苹方、微软雅黑、思源黑体来展示人民币符号。
常见字体的人民币符号样式
以下是部分中西文字体在显示人民币符号时的统计结果:
¥ U+00A5 显示为 Y=
的字体
- 西文字体
- Segoe UI: ¥
- Arial: ¥
- Consolas: ¥
- Courier New: ¥
- Times New Roman: ¥
- Cambria: ¥
- Helvetica Neue: ¥
- Roboto: ¥
- Verdana: ¥
- 中文字体
- 苹方: ¥
- 微软雅黑: ¥
- 思源黑体: ¥
- 思源宋体: ¥
- 冬青黑体: ¥
- 中易宋体: ¥
- 方正等线: ¥
- 华文宋体: ¥
- 华文细黑: ¥
- 华文楷体: ¥
- 华文仿宋: ¥
- 其他字体(虽然显示为
Y=
但第一横位置偏上)- Comic Sans MS: ¥
- Helvetica: ¥
- 儷黑: ¥
¥ U+00A5 显示为 Y-
的字体
- 西文字体
- Georgia: ¥
- Tahoma: ¥
- Trebuchet MS: ¥
¥ U+FFE5 显示为 Y=
的字体
- 中文字体
- 苹方: ¥
- 微软雅黑: ¥
- 思源黑体: ¥
- 华文细黑: ¥
- 方正等线: ¥
¥ U+FFE5 显示为 Y-
的字体
- 中文字体
- 中易宋体: ¥
- 中易楷体: ¥
- 中易黑体: ¥
- 中易仿宋: ¥
- 华文宋体: ¥
- 华文楷体: ¥
- 华文仿宋: ¥
- 兰亭黑: ¥
主要是 Georgia/Tahoma/Trebuchet MS 这几款经典英文字体和中易、华文的几款字体在显示 ¥ U+00A5 或 ¥ U+FFE5 时会渲染为 Y-
。可能有人会奇怪,为什么 ¥ U+FFE5 的统计结果里缺席西文字体?答案是不支持。全角字符 ¥ U+FFE5 通常只有中文字体支持,因此使用半角字符 ¥ U+00A5 的一大优势是西文字体支持率高。话说回来,在2020年,但凡还在更新维护的操作系统,又有多少是不支持中文显示的呢?