字符实体、字体图标与Unicode码
字符实体与Unicode
在 HTML 中,某些字符是预留的,例如小于号「<」、大于号「>」等,浏览器会将它们视作标签。如果想要在HTML中显示这些预留字符,我们就要用到字符实体(character entities)。我们比较熟悉的字符实体有空格「 」,小于号「<」,大于号「>」等。这样的格式比较语义化,容易记忆,但其实字符实体有其他的格式:
&name;
,&#dddd;
,&#xhhhh;
这三种转义方式都称作 character reference,
第一种是 character entity reference,「&」符号后接预先定义好的 entity 名称。
后两种是 numeric character reference,数字取值为目标字符的 Unicode code point;
以「&#」开头的后接十进制数字,「&#x」开头的后接十六进制数字。
从 HTML4 开始,numeric character reference 以 Unicode 为准,与文档编码无关。「你好」二字分别是 Unicode 字符 U+4F60 和 U+597D,十六进制表示的 code point 数值「4F60」和「597D」,同时也就是十进制的「20320」和「22909」。所以
在HTML中输入
你好
你好
都会显示为“你好”。
字体图标与Unicode
字体图标本质上是定义一种字体,只不过字体本身是图标。每个字体图标在定义的时候有一个Unicode码,这个Unicode可以是自定义的。
例如:引入了阿里的iconfont字体图标
@font-face {
font-family: "iconfont";
src: url('iconfont.eot?t=1580522005036');
url('iconfont.woff?t=1580522005036') format('woff'),
url('iconfont.ttf?t=1580522005036') format('truetype')
...
...
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
// 下面定义每个字体图标的class类名其中content:"\e604"中的e604就是该字体定义
// 时的Unicode值的16进制
.iconsuoma:before {
content: "\e604";
}
...
...
此时如果设置了字体为
iconfont
,那么同样也可以用实体字符的形式在html中展示
以下两种展示的图标是一样的
<span class="iconfont iconsuoma"></span>
<div class="iconfont">

</div>