← 字体里的隐藏开关 / OpenType 原始开关:font-feature-settings 待审核 4 / 18
底层 · font-feature-settings

OpenType 原始开关:font-feature-settings

数字的对齐与字形一页里 font-variant-numeric 的各个取值,底层都对应着 OpenType 字体里一个 4 字符的 feature tagtnum / onum / zero…)。font-feature-settings 是直接拨动这些原始开关的低层接口:写 "liga" 1 开启、"liga" 0 关闭。除数字外,它还覆盖连字、上下标、风格集等多种 feature。

1 · 高层属性 vs 底层 tag:优先用高层

同一件事,font-feature-settings: "tnum" 1font-variant-numeric: tabular-nums 效果一致。但常规需求应优先使用高层语义属性——从语义、组合、继承三个维度看它都更省心,底层接口的唯一优势只是能力覆盖更全。

维度 font-variant-*(高层) font-feature-settings(底层)
语义 tabular-nums 一眼可读 "tnum" 1 需查表
组合 多个值各自独立设定 一次性全覆盖,易互相清除
继承 按属性正常层叠 整串覆盖,子元素难以局部修改
能力 只覆盖常用 feature 可开启任意 tag(swsh / ss05…)

原则:常规排版需求用 font-variant-*;只有要某个高层属性未暴露的少用 feature(花体、特定风格集)时,才下沉到 font-feature-settings

注意font-feature-settings 是「整串覆盖」式属性——后一条声明会完全替换前一条,而非叠加。要同时开启多个,必须写在同一条里:font-feature-settings: "liga" 1, "tnum" 1;。本页 demo 会把勾选的项合并成一条声明。

2 · 相关链接

  • font-feature-settings · MDN——developer.mozilla.org。底层 OpenType feature 开关,4 字符 tag + 0 / 1;以及为什么应优先用 font-variant-* 高层属性。
  • OpenType Layout feature tag registry——learn.microsoft.com。全部 OpenType feature 4 字符 tag 的官方注册表:liga / dlig / smcp / onum / tnum / frac / ss01… 各自含义。