目录

一、语法

二、字体格式

三、实战使用

四、各浏览器兼容

五、用 unicode-range 指定字体适用范围

1. unicode-range的值和语法

2. unicode-range的常用值

六、字体压缩

参考文章


一、语法

@font-face {font-family: <fontFamily>; /* 自定义字体名称; */src: <source> [<format>][,<source> [<format>]]*;  /* 自定义字体的存放路径、格式; */[font-weight: <weight>];[font-style: <style>];
}

src: 远程字体文件位置的URL或用户计算机上的字体名称,可以使用 local 语法指定用户本机上的字体。如果找不到该字体,将会按顺序尝试其他来源,直到找到它。

iconfont 图标字体就是使用了自定义字体。

二、字体格式

1) .ttf 格式

.ttf 全称 TrueType,是 Windows 和 Mac 最常用的字体格式,其最大的特点就是它是由一种数学模式来进行定义的基于轮廓技术的字体,这使得它们比基于矢量的字体更容易处理,保证了屏幕与打印输出的一致性。同时,这类字体和矢量字体一样可以随意缩放、旋转而不必担心会出现锯齿。

2) .otf 格式

.otf 全称 OpenType,是一种可缩放字型电脑字体类型,采用 PostScript格式,是美国微软公司与Adobe 公司联合开发,用来替代 TrueType 字型的新字型。

3) .eot 格式

嵌入字体格式 .eot 全称 Embedded Open Type,是微软开发的一种技术,允许 OpenType 字体嵌入到网页并可以下载至浏览器渲染。这些文件只在当前页活动的状态下,临时安装在用户的系统中,是 IE 专用字体。

4) .woff 格式

Web开发字体格式 .woff 全称 Web Open Font Format,是一种专门为了 Web 而设计的字体格式标准,是对 TrueType / OpenType 等字体格式的封装,并针对网络使用加以优化:每个字体文件中含有字体以及针对字体的元数据( Metadata ),字体文件被压缩,以便于网络传输,并且不包含任何加密或者 DRM 措施,是 Web 字体中最佳格式。

兼容性:IE9+

5) .svg 格式

.svg 全称 Scalable Vector Graphics Fonts,是使用SVG来呈现字体,还有一种 gzip 压缩格式的 SVG 字体 .svgz

兼容性:Chrome4+,Safari3.1+,Opera10.0+,iOS Mobile Safari3.2+

三、实战使用

首先我们可以到 dafont 随便下载一个字体,这里我们选中了下面这个字体:

解压之后,得到我们的字体文件( .ttf 和 .otf 属于不同格式的字体)

编写代码(为了方便使用,已经把 .ttf 格式的字体重命名为 webfont.ttf

/* 定义字体 */
@font-face {font-family: MyFont;src: url('webfont.ttf') format('truetype'),url('webfont.otf');
}/* 使用字体 */
.font {font-family: MyFont;
}

四、各浏览器兼容

@font-face {font-family: 'myFont';src: url('myFont.eot'); /* IE9 Compat Modes */src: url('myFont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */url('myFont.woff') format('woff'), /* Modern Browsers */
}

五、用 unicode-range 指定字体适用范围

现在我们再来下载一种比较飘逸的字体

现在我们来实现一下 a 用这种比较飘逸的字体(J-Flames),其余的用上面那种字体

@font-face {font-family: MyFont;src: url('webfont.ttf') format('truetype'),url('webfont.otf');
}
@font-face {font-family: Fashion;src: url('J-Flames.ttf');unicode-range: U+61; /* a的unicode */
}.font {font-family: Fashion, MyFont;
}

效果图

1. unicode-range的值和语法

unicode-range 值的组成:U+跟上对应字符的charCode值。

unicode-range: U+26;               /* 单个字符编码 */
unicode-range: U+0-7F;
unicode-range: U+0025-00FF;        /* 字符编码区间 */
unicode-range: U+4??;              /* 通配符区间 */
unicode-range: U+0025-00FF, U+4??; /* 多个值 */

这里使用的 Unicode 是十六进制的,所以要把用 charCodeAt 获取的十进制 Unicode 用 toString 转成十六进制才能使用。

let unicode10 = 'a'.charCodeAt(0);
let unicode16 = unicode10.toString(16); // 61

于是,前端领域字符表示方式又多了一员:
1. HTML中字符输出使用&#x配上charCode值;
2. 在JavaScript文件中为防止乱码转义,则是\u配上charCode值;
3. 而在CSS文件中,如CSS伪元素的content属性,直接使用\配上charCode值。
4. unicode-rangeU+配上charCode值。

2. unicode-range的常用值

汉字:[0x4e00,0x9fa5](或十进制[19968,40869]
数字:[0x30,0x39](或十进制[48, 57]
小写字母:[0x61,0x7a](或十进制[97, 122]
大写字母:[0x41,0x5a](或十进制[65, 90]

六、字体压缩

自定义的字体文件一般都比较大,这时可以用字蛛进行压缩。

字蛛官网是这么介绍字蛛的:字蛛通过分析本地 CSS 与 HTML 文件获取 WebFont 中没有使用的字符,并将这些字符数据从字体中删除以实现压缩,同时生成跨浏览器使用的格式。

参考文章

  • CSS unicode-range特定字符使用font-face自定义字体
  • 自定义字体

用 @font-face 实现自定义字体相关推荐

  1. css 自定义字体 Internet Explorer,Firefox,Opera,Safari

    FROM: https://developer.mozilla.org/ja/CSS/@font-face http://nicewebtype.com/notes/2009/10/30/how-to ...

  2. Unity/UI —— 使用字符图片自定义字体(Custom Font)

    前言 在Unity的UI设计中,我们经常会遇到需要自定义字体的情况.毕竟Unity自带的字体只有Arial一种,根本无法满足人民群众对于美的向往.当然,全能的Unity支持我们导入或创建字体,并可以在 ...

  3. java加载自定义字体java.io.IOException: Problem reading font data.

    异常信息 load font error:{} java.io.IOException: Problem reading font data.at java.awt.Font.createFont0( ...

  4. 记录猫眼电影的自定义字体反爬

    猫眼电影用的是动态字体库 猫眼电影榜单国内票房榜,地址:https://maoyan.com/board/1 首先需要获得字体文件,在页面或css里搜@font-face或font-famil 在fo ...

  5. ios设置中性黑体_ios 解决自定义字体无法显示问题

    现在的项目中都会使用自定义字体,而iOS9其中的一项新特性就是用新的「苹方」字体替代了已经使用了几年的「华文黑体」,所以现在记录一下iOS如何导入并在项目中使用苹方字体的使用. 1. 下载一个 .tf ...

  6. Qt Creator使用自定义字体

    Qt Creator使用自定义字体 使用自定义字体 使用自定义字体 为了使UI在设备上预览时使用自定义字体,必须将字体导入项目文件夹.Qt Design Studio会将它们与您的UI一起部署到设备上 ...

  7. 01_MUI之Boilerplate中:HTML5示例,动态组件,自定义字体示例,自定义字体示例,图标字体示例

     1安装HBuilder5.0.0,安装后的界面截图如下: 2 按照https://www.muicss.com/docs/v1/css-js/boilerplate-html中的说明,创建上图的 ...

  8. elementUI自定义字体图标

    上一篇<ionic(mui.elementUI)自定义字体图标>写一部分了.重要的点,再强调一下下. 在阿里妈妈上的项目中编辑相关属性: elementUI 的前缀是el-icon,Fon ...

  9. hexo的yelee主题使用自定义字体并用字蛛进行字体压缩的sed脚本

    说真的,这个操作有点复杂,我也是花了一天时间才搞定,大部分时间都消耗在font-spider的调试上面了. 根目录路径: /home/appleyuchi/桌面/Github博客/整体测试/blog_ ...

  10. hexo的yelee主题使用本地自己指定的自定义字体

    研究了老半天,好了,我们切入正题. 因为网上居多都是next主题来指定自定义字体的, 对于yelee这种主题想要制指定自己喜欢的字体,就显得困难重重. 说具体步骤: 1.在[1]中上传你的字体,我的是 ...

最新文章

  1. 图论500题 ---- 并查集+树形dp+枚举 求解动态的最小生成树 HDU 4126
  2. android 中间按钮突出,Android 实现 按钮从两边移到中间动画效果
  3. 微软联手埃森哲打造基于区块链技术的数字化ID网络
  4. 一个指针的引用引发的血案
  5. Java实现算法导论中有限自动机字符串匹配算法
  6. Ubuntu16.04安装Xtion驱动并测试使用
  7. DeepLearning.AI第一部分第三周、 浅层神经网络(Shallow neural networks)
  8. python判断两线段是否相交_c语言 判断两直线段是否相交
  9. 【H.264/AVC视频编解码技术】第六章【指数哥伦布编码】
  10. Laravel 5 4 实现前后台登录
  11. 单元格格式_单元格格式的用法你知道吗~~
  12. Riot Blockchain再次购入1.5万台比特大陆S19系列矿机
  13. Java 数据库编程专栏 目录
  14. 计算相关系数进行显著性检验
  15. 计算机体系结构量化研究方法——学习(一)
  16. w ndows英文读音,英语名词变复数的发音规则
  17. 苹果App Store最新应用审核标准
  18. 【AI测试】人工智能测试整体介绍——第六部分
  19. 恢复我的文档中三个标准文件夹
  20. python重新加载文件_Python的重新加载知识点总结

热门文章

  1. 99句古代经典名言!
  2. WPF DataGrid 使用
  3. 小小游戏S.漂亮的FLASH小小游戏S
  4. 切出任务管理器快捷键
  5. 武汉大学计算机学院 公费,2018年全国硕士研究生自费、公费补助待遇标准一览表!...
  6. 酷睿i9 12900h和i7 12700h差距 i912900h和i712700h选哪个好
  7. 电脑卡顿,软件运行加载缓慢的解决方法
  8. 外贸邮件营销用什么免费邮件群发平台好?
  9. android TextView 不显示文字
  10. 童言无忌最高境界~~笑死人