当前位置: 首页 > news >正文

css系列之关于字体的事

Web Font

字体类型与格式

按照字体的描述方式来分:
点阵字体
矢量字体(轮廓字体)

按照字体的表现形式来分:
衬线字体(serif):比如,宋体,Georgia,Times New Roman
非衬线字体(sans-serif):比如 Tahoma, Arial , 幼圆
其它字体:等宽字体(monospace),书写体(cursive),梦幻体(fantasy)

@font-face

语法

@font-face的取值有以下几个:
font-family:设置文本的字体名称。之后可以在定义字体的字体栈中使用这个名称。
font-style:设置文本样式
font-variant:设置文本是否大小写
font-weight:设置文本的粗细
font-stretch:设置文本是否横向拉伸变形
font-size:设置文本字体大小
src:设置自定义字体的相对路径或者绝对路径。
注意:此属性只能在@font-face规则里使用。

@font-face {
   font-family: "Bitstream Vera Serif Bold";
   src: url("http://developer.mozilla.org/@api/deki/files/2934/=VeraSeBd.ttf");
}

浏览器支持度

不同的浏览器会要求不同的字体文件类型:
TrueType(TTF)和OpenType(OTF)字体文件在绝大多数的浏览器上都能正常工作。
IE4—IE8要求使用特殊的字体文件格式:嵌入式OpenType(EOT)
唯一能够在Safari上正常工作的字体文件格式就是SVG,SVG在chrome、Opera上也能正常工作,但在Firefox上不行。
WOFF的含义是Web开放字体格式。越来越多的浏览器都在添加对它的支持。
这些字体格式中的一些能够互相转换。
一般在font-face中都引入各个类型的字体文件以适配所有浏览器。

/* 声明字体(图标字体) */
        @font-face {
            font-family: 'webfont';
            src: url('font/webfont.eot');  /* IE9 */
            src: url('font/webfont.eot?#iefix') format('embedded-opentype'),  /* IE6-IE8 */
            url('font/webfont.woff') format('woff'),   /* chrome、firefox */
            url('font/webfont.ttf') format('truetype'),    /* chrome、firefox、opera、Safari、Android、IOS */
            url('font/webfont.svg#webfont') format('svg');   /* ios 4.1 */
        }
 
        .myfont {
            font-family: 'webfont';  /* 使用声明的字体 */
        }

选择字体需要注意的问题

1、字体的中英文写法:

我们在操作系统中常常看到宋体、微软雅黑这样的字体名称,但实际上这只是字体的显示名称,而不是字体文件的名称,一般字体文件都是用英文命名的,如SimSun、Microsoft Yahei。在大多数情况下直接使用显示名称也能正确的显示,但是有一些用户的特殊设置会导致中文声明无效。
因此,保守的做法是使用字体的字体名称(英文)或者两者兼写。如下示例:

font-family: STXihei, "Microsoft YaHei";
font-family: STXihei, "华文细黑", "Microsoft YaHei", "微软雅黑";
2、声明英文字体:

绝大部分中文字体里都包含英文字母和数字,不进行英文字体声明是没有问题的,但是大多数中文字体中的英文和数字的部分都不是特别漂亮,所以建议也对英文字体进行声明。
由于英文字体中大多不包含中文,我们可以先进行英文字体的声明,这样不会影响到中文字体的选择,因此优先使用最优秀的英文字体,中文字体声明则紧随其次。如下示例:

font-family: Arial, "Microsoft YaHei";
3、照顾不同的操作系统:

英文、数字部分:在默认的操作系统中,Mac和Win都会带有Arial, Verdana, Tahoma等几个预装字体,从显示效果来看,Tahoma要比Arial更加清晰一些,因此字体设置Tahoma最好放到前面,当找不到Tahoma时再使用Arial;而在Mac中,还拥有一款更加漂亮的Helvetica字体,所以为了照顾Mac用户有更好的体验,应该更优先设置Helvetica字体;Android系统下默认的无衬线字体就可以接受,因此无需单独设置。最后,英文、数字字体的最佳写法如下:
font-family: Helvetica, Tahoma, Arial;
中文部分:在Win下,微软雅黑为大部分人最常使用的中文字体,由于很多人安装Office的缘故,Mac电脑中也会出现微软雅黑字体,因此把显示效果不错的微软雅黑加入到字体列表是个不错的选择;同样,为了保证Mac中更为优雅字体苹方(PingFang SC)、黑体-简(Heiti SC)、冬青黑体( Hiragino Sans GB )的优先显示,需要把这些字体放到中文字体列表的最前面;同时为了照顾到Linux操作系统的体验,还需要添加文泉驿微米黑字体。最后,中文字体部分最佳写法如下:
font-family: "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei";
中英文整合写法:

font-family: Helvetica, Tahoma, Arial, "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei";
font-family: Helvetica, Tahoma, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei";
4、注意向下兼容

如果还需要考虑旧版本操作系统用户的话,不得不加上一些旧版操作系统存在的字体:Mac中的华文黑体、冬青黑体,Win中的黑体等。同样按照显示效果排列在列表后面,写法如下:

font-family: Helvetica, Tahoma, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", STXihei, "Microsoft YaHei", SimHei, "WenQuanYi Micro Hei";
加入了 STXihei(华文细黑)和 SimHei(黑体)。

5、补充字体族名称

字体族大体上分为两类:sans-serif(无衬线体)和serif(衬线体),当所有的字体都找不到时,我们可以使用字体族名称作为操作系统最后选择字体的方向。一般非衬线字体在显示器中的显示效果会比较好,因此我们需要在最后添加 sans-serif,写法如下:。

font-family: Helvetica, Tahoma, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;
6、lang及charset
影响默认字体。
lang 属性规定元素内容的语言。
图片描述

charset 属性可以通过任意元素上的 lang 属性来重写。

参考链接

真正了解CSS3背景下的@font face规则
Web 字体应用指南最佳实践修炼之道(上)
给自己的Fonts教程

相关文章:

  • Linux 下 项目管理
  • 蛤车1:两个习题,群作用与覆叠空间,N-S定理
  • Vue学习第二天
  • 想熟悉PostgreSQL?这篇就够了
  • Kotlin Weekly 中文周报 —— 103
  • 洛谷P2765 魔术球问题(贪心 最大流)
  • Linux鸟哥(总)
  • JQuery 选择器与过滤器(随手笔记)
  • python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学
  • Django - 一对多数据示例
  • Apache 年度报告:Java 是项目开发使用最多的语言
  • SendSms短信发送相关记录
  • SQL Server2016 配置管理器
  • java 判断请求来自手机端还是电脑端
  • javascript - 封装ajax
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Cumulo 的 ClojureScript 模块已经成型
  • JavaScript DOM 10 - 滚动
  • JavaScript类型识别
  • JS字符串转数字方法总结
  • python大佬养成计划----difflib模块
  • React-redux的原理以及使用
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • 闭包--闭包之tab栏切换(四)
  • 配置 PM2 实现代码自动发布
  • 突破自己的技术思维
  • 延迟脚本的方式
  • 用Visual Studio开发以太坊智能合约
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 智能合约开发环境搭建及Hello World合约
  • 【云吞铺子】性能抖动剖析(二)
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​一些不规范的GTID使用场景
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (四) 虚拟摄像头vivi体验
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • .gitignore文件—git忽略文件
  • .jks文件(JAVA KeyStore)
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net 无限分类
  • .NET 中创建支持集合初始化器的类型
  • :“Failed to access IIS metabase”解决方法
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @FeignClient注解,fallback和fallbackFactory
  • [20190416]完善shared latch测试脚本2.txt
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
  • [luoguP3159] [CQOI2012]交换棋子(最小费用最大流)
  • [翻译] GiFHUD
  • [基础服务] CentOS 7.x 安装NodeJS环境并搭建Hexo