OpenType 特性
最后更新 2026-11-02
- OpenType
- 特性
- 小型大写
- smcp
- 旧式数字
- 等宽数字
- 连字
EN中文
本页目录
很多字体里不止一套字形:大写字母有一套缩小版(小型大写),数字有等高的也有一套高低错落的,fi 可以连成一个……这些可选的样子由 OpenType 特性控制,每个特性有一个四个字母的标签。
最常见的几种
| 效果 | 标签 | 默认 | 一眼认法 |
|---|---|---|---|
| 标准连字 | liga |
开 | fi、fl 连成一体 |
| 可选连字 | dlig |
关 | ct、st 那种花哨连接 |
| 小型大写 | smcp |
关 | 小号的大写字母,高度大约等于 x 高度 |
| 旧式数字 | onum |
关 | 数字有升有降(3、4、7、9 下探) |
| 等高数字 | lnum |
开 | 数字都对齐大写高度 |
| 等宽数字 | tnum |
关 | 每个数字占一样宽,表格里能对齐 |
| 比例数字 | pnum |
开 | 按字形宽度分配,正文里更自然 |
| 分数 | frac |
关 | 1/2 变成真正的分数排法 |
| 上标 / 下标 | sups / subs |
关 | 脚注、化学式 |
| 样式替代 | salt / ss01–ss20 |
关 | 同一个字母的另一种设计 |
| 本地化字形 | locl |
按语言 | 中日文同一码位不同写法 |
小型大写不是缩小的大写
真正的小型大写(small caps) 是单独设计的一套字形:笔画粗细与大写一致,高度大约等于 x 高度。
如果字体没有这套字形,软件可以把大写缩小来凑——那是合成的小型大写,笔画会变细、比例会歪。设计稿上写了小型大写,实现时先确认字体到底有没有 smcp。
数字的四种组合
数字有两个独立的维度,容易混:
| 维度 | 两种 | 用途 |
|---|---|---|
| 高度 | 等高(lining)/ 旧式(oldstyle) | 等高大写高度,适合表格;旧式高低错落,适合正文 |
| 宽度 | 等宽(tabular)/ 比例(proportional) | 等宽适合数字对齐;比例适合连续文本 |
所以表格里的数字通常是等高 + 等宽,而正文里的数字通常是旧式 + 比例。字体不一定四种都有。
设计稿上怎么标
写标签名最不含糊:
数字:tnum(表格)/ onum(正文)
标题:smcp
比写用小型大写更可靠,因为它能直接对应到 CSS 与字体里存在的特性。同时最好注明若无该特性则……——否则实现方可能悄悄用合成的样子交差。
哪些会自己出现
liga 与 clig 默认开,所以 fi 连字你通常不用管;dlig、smcp、onum、tnum 默认关,必须显式开启。
这也解释了一个常见疑问:“设计稿上 fi 是连着的,为什么我排出来没连?”——如果字体有 liga 而引擎没开,就不会连;反之如果字体没有,开也开不出来。
中文相关的几个
| 标签 | 作用 |
|---|---|
palt |
标点的比例宽度(让全角标点占更少的位) |
vert / vrt2 |
竖排时的替换字形 |
locl |
地区字形差异(简中 / 繁中 / 日文) |
hwid / twid / fwid |
半角 / 三分 / 全角宽度形式 |
中文排版里 palt 很实用:默认的全角标点两侧留白很大,开启后更紧凑,但也会影响对齐。
在本站怎么试
排版预览暂时只提供字号、行高、字距、对齐这几项,OpenType 特性还没做——它留在排版测试那批待办里(见 docs/backlog.md)。
想确认某个字体有没有某个特性:在检查器里看它的 GSUB / GPOS 能力,或者直接在预览里试。
延伸阅读
- OpenType 规范:feature tags 注册表
- MDN:
font-variant-*、font-feature-settings - 本站:GSUB / GPOS、font-feature-settings 与 font-variant