”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > ATOZ CSS屏幕截图:Unicode范围和 @font-face

ATOZ CSS屏幕截图:Unicode范围和 @font-face

发布于2025-03-25
浏览:485

AtoZ CSS Screencast: Unicode Range and @font-face

要点总结

  • CSS 的 @font-face 规则允许在网页设计中使用自定义字体,从而提升性能并改善排版效果。务必在不同的操作系统和浏览器上测试这些自定义字体,以确保其正确显示。
  • CSS 的 unicode-range 属性可用于限制自定义字体应用的字符范围。这对于直接在标记中添加特殊字符或符号,或对特定字符使用特殊字体特别有用。
  • 通过使用 unicode-range 属性,您可以通过确保仅下载和使用必要的字符来提高网页性能,从而减少需要加载的数据量。但是,需要注意的是,并非所有浏览器都支持此属性,因此应在 CSS 代码中提供备用字体。

视频讲解(文字稿节选)

上一节我们学习了各种文本样式属性。

在现代浏览器(以及 IE4 及更高版本)中,我们可以添加自定义字体来增强网站的设计。

我们可以利用这些自定义字体的各种功能来帮助提升性能并整体改善排版效果。

本节我们将学习:

  • @font-face 规则详解
  • 如何使用字体堆栈和 unicode-range 控制排版

@font-face

过去,网页上的字体选择仅限于少量“网络安全”字体,例如:

  • Arial
  • Comic Sans
  • Courier New
  • Georgia
  • Impact
  • Palatino
  • Tahoma
  • Times New Roman
  • Trebuchet
  • Verdana

其中一些字体非常优秀,非常适合网页使用——Georgia 作为衬线字体,Arial 或 Verdana 都是很棒的字体。Comic Sans 当然不是最好的……

但现在,我们可以使用各种自定义字体,并通过使用 @font-face 使其在所有浏览器上显示。

虽然我们可以这样做,但始终值得在一系列操作系统和浏览器上测试任何自定义字体,以确保它们看起来符合预期。

还要记住,字体文件的大小可能相当大,因此请明智地使用它们以避免性能问题。

@font-face 的语法如下所示:

@font-face {
  font-family: 'Baskerville';
  src: url('baskerville.eot?#iefix') format('embedded-opentype'); 
  url('baskerville.woff') format('woff'); 
  url('baskerville.ttf') format('truetype');
  url('baskerville.svg#Baskerville') format('svg');
}

字体使用 font-family 属性命名,然后为不同的浏览器提供一系列不同的文件类型和格式。

为了避免用户下载系统中已有的字体,可以指定要搜索的字体的本地名称 local()

为了为不同的浏览器创建所有正确的字体格式,我使用了一个名为 Font Squirrel 的很棒的在线资源。

他们有一个网络字体生成器,它运行得非常好。他们提供的下载还包含在 CSS 中添加这些自定义字体的所有代码片段,这也很方便!

unicode-range

字体的每个字符都可以用其 Unicode 数字来描述,其形式为:

U 0041

字符串“AtoZ CSS”可以用 Unicode 表示如下:

A      t      o      Z      space  C      S      S
U 0041 U 0074 U 006F U 005A U 0020 U 0043 U 0053 U 0053

包括空格在内的每个字符都有唯一的 Unicode 数字。UTF-8 字符集中还包含一系列特殊的字符,这对于直接在标记中添加形状和符号非常有用。

在使用 @font-face 添加自定义字体时,我们可以限制它们应用的字符范围,这乍一看有点奇怪,但请耐心听我解释。

Baskerville 字体的斜体&符号非常漂亮,许多设计师即使不使用 Baskerville 字体的其余部分,也喜欢使用它。

只对&符号使用这种特殊字体的一种方法是将其包装在 标签中,并为其设置不同的 font-family。但这有点麻烦,并且完全可以在没有任何额外标记的情况下完成。

我们可以创建一个只包含此字符的字体,并将其作为列表中的第一个字体添加到我们的字体堆栈中。

当浏览器遇到字体中不存在的字符时,它将向下扫描堆栈,直到找到包含所需字符的字体为止。我们可以利用这种行为在使用任何自定义或网络安全字体时添加特殊的&符号。

首先,我们创建 @font-face 规则来加载单个字符字体。我将为其命名为“Ampersand”,并使用本地字体文件源以节省带宽。

我将 unicode-range 指定为 U 0026,用于单个&符号字符。可以指定整个字符范围,正如属性名称所示,但在这种情况下只需要一个字符。

@font-face {
  font-family: 'Ampersand';
  src: local('Baskerville-italic');
  unicode-range: U 0026;
}

在这个示例 HTML 文件中,我有一系列标题和段落,两者都包含几个&符号。

我将创建两个不同的字体堆栈,一个用于标题,一个用于正文。在每种情况下,堆栈中的第一个字体都将是自定义的“Ampersand”字体。

对于标题,我将添加 Museo 或 Rockwell 或衬线字体作为备用字体。

对于正文,我将添加 Avenir、Arial 或 sans-serif 作为备用字体。

h1, h2 {
  font-family: 'Ampersand', 'Museo Slab', 'Rockwell', serif;
}
p {
  font-family: 'Ampersand', 'Avenir', 'Arial', sans-serif;
}

就是这样。当浏览器呈现文本时,堆栈中的第一个字体仅包含一个&符号字符,因此它将使用列表中的下一个字体(如果找到)来呈现其余字符。

unicode-range 的浏览器支持良好。它在所有现代浏览器(Firefox 除外)以及 IE9 及更高版本中受支持。由于这纯粹是视觉增强,因此浏览器支持对我来说不是什么大问题——不支持的浏览器只会获得可以成功加载的堆栈中的第一个字体。

(后续的FAQ部分已省略,因为与伪原创目标不符,且篇幅过长。核心内容已在以上部分体现。)

最新教程 更多>
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    编程 发布于2025-03-31
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 为什么在grid-template-colms中具有100%的显示器,当位置设置为设置的位置时,grid-template-colly修复了?问题: 考虑以下CSS和html: class =“ snippet-code”> g...
    编程 发布于2025-03-31
  • 如何在php中使用卷发发送原始帖子请求?
    如何在php中使用卷发发送原始帖子请求?
    如何使用php 创建请求来发送原始帖子请求,开始使用curl_init()开始初始化curl session。然后,配置以下选项: curlopt_url:请求 [要发送的原始数据指定内容类型,为原始的帖子请求指定身体的内容类型很重要。在这种情况下,它是文本/平原。要执行此操作,请使用包含以下标头...
    编程 发布于2025-03-31
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,可以更快地搜索这些前缀。了解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-03-31
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-03-31
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-03-31
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-03-31
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-03-31
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-03-31
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-03-31
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-03-31
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-03-31
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-03-31
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-03-31
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-03-31

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3