编程字体常见后缀解释

NF

NF: Nerd Fonts

Nerd Fonts 是一个开源项目,它提供了一系列专门为开发者和终端用户设计的字体,它们包含大量的字形和符号。这些图体内置了图标集合,如 Powerline、FontAwesome、Devicons、Octicons、Material Design Icons 等,使得用户能够在代码编辑器、终端或其他开发工具中轻松地使用图标。

image

PL

PL: Powerline

一个嵌入了 Powerline 符号的字体版本,如 Cascadia Code PL。

PL 和 NF 的关系:NF 是 PL 的超集,NF 包含了 PL。

Mono

Mono: Monospace(等宽字体)

  • 一个字体的 Mono 变体提供该字体的没有连字功能的版本,如 Cascadia Mono。相比于 Cascadia Code,Cascadia Mono 是 Cascadia Code 字体家族中的非连字版本,适用于不需要或不想使用连字的场景。

  • 对于 Nerd Fonts 来说,Mono 表示 Nerd Fonts 的字形将是等宽的,但并不意味着整个字体都是等宽的。由于某些原因,一些终端可能只能显示等宽字体,这时一个字体的 Mono 版本就很好用。比如说,对于 Meslo 字体族在 Windows Terminal 以及 Visual Studio Code 内置终端上的显示情况,当终端字体设置为 MesloLGM Nerd Font 时,字体中的图标字型会宽于正常文本。当我们把终端字体设置为 MesloLGM Nerd Font Mono 时,图标字型就和正常文本一样宽了。因此在终端上最好使用 MesloLGM Nerd Font Mono

  • 字体设置为 MesloLGM Nerd Font 时的情况:

    image

  • 字体设置为 MesloLGM Nerd Font Mono 时的情况:

    image

Prop

Proportion(比例)

  • 就是最常见的不同字母具有不同宽度的字体。

  • 如果你在比例环境中工作(GUI 元素或编辑演示文稿等),请选择具有 Nerd Font Propo(或 NFP)后缀的字体。

参考:nerd-fonts/patched-fonts/Meslo

Script

Script: 手写体

一个字体的 Script Variant(手写变体)指的是模仿手写或书法风格的字体。一般来说 Script Variant 应用于一个字体的斜体版本,使得该字体的斜体看起来像手写的一样,增加一定的趣味性。

例:Monolisa 字体的正常斜体和手写变体的比较

  • 斜体:

    image

  • 手写体:

    image

NL

NL: No Ligature(无连字)

提供一个字体的无连字功能的版本。某些文本编辑器不支持手动关闭字体的连字功能,这时可以使用该字体的 NL 版本。

LG, L, M, S, DZ, SZ

  • LG:Line Gap(行距)

    • L:Large(大)
    • M:Medium(中等)
    • S:Small(小)

Meslo 字体为例,MesloLGL 表示 Meslo 字体的大行距版本, MesloLGM 表示 Meslo 字体的中等行距版本,而 MesloLGS 表示 Meslo 字体的小行距版本。

  • DZ:Dotted Zero(点零,0 的中间是点号,而不是斜杠)
  • SZ:Slashed Zero(斜杠零)

如 MesloLGMDZ 就表示 Meslo 字体的中等行距、使用点零的版本。(而 MesloLGM 则使用斜杠零)

  • 点零:

    image

  • 斜杠零:

    image

Lig

Lig: Ligature(连字)

有连字,提供一个字体的有连字功能的版本

SSm

SSm: ScreenSmart

指一系列为屏幕显示而优化的字体。如 Hoefler & Co. 字体公司的 Operator ScreenSmart 字体,该字体是 Operator 字体针对网页使用的屏幕优化版本,可在小至九磅字体大小的文本中使用。

Operator ScreenSmart 和 Operator Mono ScreenSmart 是专为屏幕设计的改编字体,并可在网页上使用。为了确保在像素尺寸小至九个像素的屏幕上出色地呈现,我们仔细调整了字体的适应性、颜色和比例,并精心安排了它们权重的变化,使每种样式都与其邻近者明显不同。就像所有 ScreenSmart 字体一样,他们配备有一套详细指示称为“hints”,这些 hints 告诉它们的轮廓如何适应不同点大小的像素网格,以确保字体始终保持其易读性和个性。

Display

Display 字体用于在大字号情况下提供更好的视觉效果。它缩短了字间距,以便在相同大小的区域内显示更多文本。Display 字体的例子如苹果公司设计的 SF Pro 和 SF Pro Display。

OpenType

Variable Font

20260409-005550

可变字体(Variable Font)是 OpenType 字体规范上的演进,它允许将同一字体的多个变体统合进单独的字体文件中。从而无需再将不同字宽、字重或不同样式的字体分割成不同的字体文件。

静态字体

过去,一个字体家族往往由大量独立字体文件组成,每个字体文件都代表某一特定的宽度/字重/样式的组合。因此你会看到有单独的字体文件叫做“Roboto Regular”、“Roboto Bold”,或是“Roboto Bold Italic”——这意味着你可能需要 20 或 30 个不同的字体文件才能算是有了一整个字体家族(对于有着不同宽度的大型字体来说,这个数量还要翻上几倍)。

在这样的情景下,为了在一个单纯显示进行正文展示的页面中使用一个字体,你至少需要四个字体文件:常规、斜体、加粗、斜体加粗。如果你想添加更多的字重,比如让题注更轻或让额外强调的地方更重,意味着你需要更多文件。这就导致了更多大量 HTTP 请求的产生,同时也需要下载更多的数据(通常每个文件至少有 20k 或更多)。

可变字体

通过使用可变字体,所有这些情况的排列组合都可以被装进一个文件中。这个文件可能比常规的单个字体文件大一些。但通常情况下,都不会大于,并且常常是小于你因为要展示正文所需要下载的四个文件的尺寸总和。使用可变字体的优势是你可以直接使用所有可用的字重、宽度和样式的字体,而不必像过去一样仅仅受限于使用其中单独的某一种。

这允许使用常见的排版技术,例如在不同的字重中设置不同大小的标题,以便在每种大小下都具有更好的可读性,或者在数据密集展示时使用稍窄一点的字体宽度。相比之下,在杂志的印刷系统中,在整个出版物中使用 10-15 种或更多不同的字重和宽度组合是很典型的——这比目前在 web 上的典型样式提供了更广泛的样式范围(或者仅从性能方面考虑确实很实用)。

参见:Introducing variable fonts | Google Fonts

Stylistic Set

20260409-004939

Stylistic Set(风格集)是 OpenType 字体特性,feature tag 为 ss01ss20,共 20 个独立插槽。它允许字体设计师将一组有内在关联的字形变体打包成一个具名集合,用户可以按需整体启用某个集合,从而切换到一种特定的视觉风格,而不必逐个字符地手动选择变体。

calt(自动、基于上下文)不同,Stylistic Set 是用户主动选择的全局或局部风格切换。

与相近特性的区别

特性 Tag 粒度 触发
Stylistic Set ss01ss20 一组字符 手动
Stylistic Alternates salt 单个字符 手动,逐字循环
Character Variants cv01cv99 单个字符 手动,精确指定
Contextual Alternates calt 单个字符 自动

ss__cv__ 的关键区别:cv 针对单一字符的多个变体(如小写 a 的单层/双层形式),ss 则是跨多个字符的风格组合,体现一种整体美学倾向。

编程字体(如 Fira Code)

  • ss01r 使用弯钩变体
  • ss03& 使用花体变体
  • ss05@ 使用无圈变体

衬线/无衬线切换风格

某些多风格字体用 ss01 切换到更几何化的字形集,ss02 切换到更人文主义的字形集。

大写字母替换

全大写排版时启用某个 Set,让字母间距和字形更适合标题场景。

在 CSS 中使用

/* 启用第1个风格集 */
font-feature-settings: "ss01" 1;

/* 同时启用多个 */
font-feature-settings: "ss01" 1, "ss03" 1, "ss07" 1;

/* 高层属性(CSS Fonts Level 4) */
font-variant-alternates: stylistic-set(1 3 7);

命名支持

OpenType 规范允许字体为每个 Stylistic Set 附加一个人类可读的名称(存储在 name 表中),例如 ss01 = "Casual a" 。设计师工具(如 Figma、Adobe Illustrator)会显示这些名称,让用户无需记忆编号即可选择风格。但并非所有字体都提供命名,很多字体的 Set 只有编号。

实际使用建议

需要查阅具体字体的文档或用 fonttools、Wakamai Fondue 等工具检查字体内部的 ss__ 定义,因为每款字体对各个编号的使用完全由设计师自定义,没有跨字体的统一语义。

参见:Stylistic sets | Google Fonts

Contextual Alternates

img

Contextual Alternates(上下文替换字形)是 OpenType 字体特性之一,feature tag 为 calt。它允许字体根据字符的上下文环境(前后相邻的字符)自动替换为不同的字形变体,而无需用户手动干预。目的是让文字排版看起来更自然、更美观,模拟手写或传统印刷中字形随上下文变化的效果。

  • 连字字体(Script/Cursive fonts):最常见的用途。比如在手写风格字体中,字母 f 在词尾时使用带收笔的字形,在词中时使用连接下一个字母的字形。
  • 避免碰撞:某些字母组合放在一起时,其默认字形会发生视觉冲突(如 gyfy),calt 可自动替换为经过调整的字形。
  • 数字与标点的上下文变体:例如紧跟货币符号后的数字可能使用特定对齐的字形。

与相近特性的区别

特性 Tag 触发方式
Contextual Alternates calt 自动,基于上下文规则
Stylistic Alternates salt 手动,用户选择变体
Ligatures liga 自动,固定字符序列合并
Contextual Ligatures clig 自动,上下文相关的合并

caltliga 的关键区别:liga 是将多个码位合并成一个字形(如 fi),而 calt 是将单个字符替换为适应上下文的变体字形,码位不变。

在 CSS 中启用/禁用

/* 启用(大多数现代浏览器默认开启) */
font-feature-settings: "calt" 1;

/* 禁用 */
font-feature-settings: "calt" 0;

/* 或用高层属性 */
font-variant-ligatures: contextual;        /* 启用 */
font-variant-ligatures: no-contextual;     /* 禁用 */

编程字体中的 calt

这也是程序员最熟悉 calt 的场景——伪连字(pseudo-ligatures)。Fira Code、Cascadia Code、JetBrains Mono 等字体利用 calt-> => != === 等符号序列渲染成类似数学符号的连体形式,但实际上底层仍是独立字符,不影响复制粘贴。

参见:Contextual Alternates | Type Network

posted @ 2024-01-10 22:56  undefined443  阅读(3271)  评论(2)    收藏  举报