Web字体简介_TTF_OTF_WOFF_EOT以及SVG

字体格式有太多选择,不幸的是始终 没有一个能在所有的浏览器上通用 。这意味着,你必须使用多种字体的方案来保持 用户跨平台的一致性体验 。本文内容如题,会依次介绍一下 TTF、OTF、WOFF、EOT 和 SVG 几种字体目前在 Web 上的情况。

浏览器支持情况

@Font-face 目前浏览器的兼容性:

  • Webkit/Safari(3.2+):TrueType/OpenType TT (.ttf) 、OpenType PS (.otf);
  • Opera (10+): TrueType/OpenType TT (.ttf) 、 OpenType PS (.otf) 、 SVG (.svg);
  • Internet Explorer: 自 ie4 开始,支持 EOT 格式的字体文件;ie9 支持 WOFF;
  • Firefox(3.5+): TrueType/OpenType TT (.ttf)、 OpenType PS (.otf)、 WOFF (since Firefox 3.6)
  • Google Chrome:TrueType/OpenType TT (.ttf)、OpenType PS (.otf)、WOFF since version 6

由上面可以得出:.eot + .ttf /.otf + svg + woff = 所有浏览器的完美支持。

@Font-face 让所有浏览器都兼容的方法:

Fira Code 字体下载地址:

各种字体介绍

TTF (TrueType Font) 字体格式是由苹果和微软为 PostScript 而开发的字体格式。在 Mac 和 Windows 操作系统上,TTF 一直是最常见的格式,所有主流浏览器都支持它。然而,IE8 不支持 TTF;且 IE9 上只有被设置成 “installable” 才能支持(译注:别想了,转别的格式吧)。

TTF 允许嵌入最基本的数字版权管理标志————内置标志可以告诉我们字体作者是否允许改字体在 PDF 或者网站等处使用,所以可能会有版权问题。另一个缺点是,TTF 和 OTF 字体是没压缩的,因此他们文件更大。

OTF (OpenType Font) 由 TTF 演化而来,是 Adobe 和微软共同努力的结果。OTF 字体包含一部分屏幕和打印机字体数据。OTF 有几个独家功能,包括支持多平台和扩展字符集。OTF 字体可以在 Macintosh 和 Windows 系统上使用。

OTF 也允许多达 65000 个字符的存储。这个额外的空间让设计师可以自由地添加附加元素,比如小帽子、老式数字体、代替的字符和其他一些以前必须作为独立字体分发的附加材料。

(译注:苹果当年为了对抗 Adobe 在 PostScript 的 Type 1 字体拉上了微软一起撸了 TTF,结果后来微软又反水跟 Adobe 搞一套 OTF,还让 IE 后面的版本取消 TTF 支持,IT 圈子还真是乱。。)

EOT (Embedded Open Type) 字体是微软设计用来在 Web 上使用的字体。是一个在网页上试图绕过 TTF 和 OTF 版权的方案。你可以使用微软的工具从现有的 TTF/OTF 字体转成 EOT 字体使用,其中对字体进行压缩和裁剪使得文件体积更小。同时为了避免一些收版权保护的字体被随意复制,EOT 还集成了一些特性来阻止复制行为,以及对字体文件进行加密保护。听起来很有前途?嗯哼,可惜 EOT 格式只有 IE 支持。

(译注:微软曾经弄死网景的恶意竞争引起了公愤,在 IE 上推行孤立主义的微软遭到整个行业的唾弃)

WOFF (Web Open Font Format) 本质上是 metadata + 基于 SFNT 的字体(如 TTF、OTF 或其他开放字体格式)。该格式完全是为了 Web 而创建,由 Mozilla 基金会、微软和 Opera 软件公司合作推出。 WOFF 字体均经过 WOFF 的编码工具压缩,文件大小一般比 TTF 小 40%,加载速度更快,可以更好的嵌入网页中。metadata 允许在字体文件中包含许可数据,以解决版权问题。这是万维网联盟提(qing)倡(ding)的,所以毫无疑问的是字体格式的未来。 目前主流的浏览器的新版本几乎都支持 WOFF。

WOFF2 是 WOFF 的下一代。 WOFF2 格式在原有的基础上提升了 30% 的压缩率。由于它还没有 WOFF 的广泛支持,所以还只是一个可展望的升级。

SVG (Scalable Vector Graphics font) 字体格式使用 SVG 的字体元素定义。这些字体包含作为标准 SVG 元素和属性的字形轮廓,就像它们是 SVG 映像中的单个矢量对象一样。SVG 字体最大的缺点是缺少字体提示(font-hinting)。字体提示是渲染小字体时为了质量和清晰度额外嵌入的信息。同时,SVG 对文本(body text)支持并不是特别好。因为 SVG 的文本选择(text selection)目前在 Safari、Safari Mobile 和 Chrome 的一些版本上完全崩坏,所以你不能选择单个字符、单词或任何自定义选项,你只能选择整行或段落文本。

然而,如果你的目标是 iPhone 和 iPad 用户,需要说 SVG 字体是 iOS 上 Safari 4.1 以下唯一允许的字体格式。

明智的选择

正如你所看到的,有许多因素可能会影响 Web 字体的呈现。为了提供质量和一致性,对所有可能的 OS 和浏览器组合进行彻底测试是至关重要的。

译者能想到的无非是造一些 xx2woff(主流兼容)、xx2eot(兼容 IE)、xx2svg (向下兼容 Safari)之类的轮子然后在 webpack 中配置(在 npm 上看了下确实有已经有不少的轮子了, 2333),不过貌似还没看到最佳实践(有轮子心的同学们,机会来了!),有知道的同学欢迎在评论中补充。

Original: https://www.cnblogs.com/tangyouwei/p/web-font-introduction-ttf-otf-woff-eot-z4e8fh.html
Author: 灯塔下的守望者
Title: Web字体简介_TTF_OTF_WOFF_EOT以及SVG

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570303/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Vue学习之——–深入理解Vuex之getters、mapState、mapGetters(2022/9/3)

    这一篇博客的内容是在上一篇博客的基础上进行:深入理解Vuex、原理详解、实战应用 @ 1、getters的使用 1.1 概念 1.2 用法 1.3 如何读取数据 2、getters…

    Java 2023年6月14日
    085
  • Java 线程创建与常用方法

    进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、…

    Java 2023年6月9日
    071
  • Java相关面试题

    =与== = 属于逻辑运算符,将右侧的值赋给左侧的变量名称 ==数据关系运算符,判断左右两边的值是否相等,结果为boolean类型 &与&& &是逻…

    Java 2023年5月29日
    095
  • 继承中的初始化和加载

    继承关系中的执行顺序代码 package onjava8.extend; /** * 继承关&#x7CFB…

    Java 2023年6月15日
    076
  • Zookeeper-3.4.9安装

    环境: centos7 Zookeeper-3.4.9.tar.gz 官网下载 步骤 下载后上传压缩文件并解压 tar -zxvf zookeeper-3.4.9.tar.gz -…

    Java 2023年6月7日
    0100
  • SpringBoot自动装配

    1、SpringBoot自动装配是什么? 关键文件: META-INF/spring.factories 启动器:spring-boot-starter-XXX 文件中的配置的类型…

    Java 2023年6月5日
    0103
  • SpringMvc的Url映射和传参案例(转)

    Springmvc的基本使用,包括url映射、参数映射、页面跳转、ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧…

    Java 2023年5月30日
    079
  • 基于多数据源零代码同时生成多个数据库CRUD增删改查RESTful API接口——MySql,PostgreSql,Oracle,Microsoft SQL Server

    多数据源 回顾 通过前面文章的介绍,目前已经支持主流数据库,包括MySql,PostgreSql,Oracle,Microsoft SQL Server等,通过配置零代码实现了CR…

    Java 2023年6月6日
    0100
  • element-ui使用心得总结

    1、树形列表el-table的数据data中有hasChildren属性时,必须结合lazy,load,才能有点击展开的效果,缺其中一个要素没有配置,都不能点击展开; 2、树形列表…

    Java 2023年6月5日
    070
  • Win10离线安装.NET Framework 3.5的方法技巧

    很多办公环境是没有外网的,而Win10又不自带.net 3.5,导致很多运行在.net 2.0\3.0\3.5的程序无法正常运行,所以存在Win10上离线安装.net 3.5的需求…

    Java 2023年6月5日
    077
  • 第五章 Mac系统软件-安装Java Web开发环境基本软件

    大家好,这是入手Macbook Pro的第三周了,最近公司启动比较多项目,都需要经过自己去安排,所以会比较忙,抽不出来比较多的时间来更新文档,只能是下班挤一点时间来进行总结。 这个…

    Java 2023年5月29日
    085
  • JVM集合之开篇点题

    大家在平时的开发过程中是否遇到过 StackOverflowError、 OutOfMemoryError等类似的内存溢出错误呢?大家又是怎么解决这个问题的?再来,大家在面试过程中…

    Java 2023年6月5日
    090
  • IDEA:库源与类的字节码不匹配

    在我配置pom.xml文件后,进行代码编辑,发现引入的方法并不是想要的内容,然后我就进入下载源码后进入到源码中发现我想要的方法和导入的jar包内的源码方法并不相同 ,于是到jar的…

    Java 2023年6月13日
    093
  • Java中AES加密和解密的方法分享

    转自: http://www.java265.com/JavaJingYan/202206/16559759223818.html 下文笔者讲述java代码实现的AES加密和解密的…

    Java 2023年6月15日
    067
  • SpringCloud 学习总结

    SpringCloud 学习总结 学习回顾 1.Maven依赖管理 ​ 在微服务项目中,我们一般是先创建一个父项目模块对整个项目的依赖进行版本限定和依赖控制,子模块继承父模块后,不…

    Java 2023年6月8日
    093
  • Office2019&Office365下载安装激活 一步到位

    Office Tool官方 https://otp.landian.vip/zh-cn/index.html 直接点击” 立即下载“ Office Tool…

    Java 2023年5月29日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球