contract: FontEntry 加 subfamily,family 改用 name 表的排版族名
注册表值名不是字体身份。实测阿里巴巴普惠体 H: 注册表「阿里巴巴普惠体-H」、nameID 1「阿里巴巴普惠体 H」— 浏览器都解析不到 nameID 16「阿里巴巴普惠体」+ nameID 17「Heavy」— 能解析 subfamily 退回 nameID 2 是有损的:该族五个字重的 nameID 2 全是 Regular。 (cherry picked from commit 44b98102741af90620871156d60edf54326df78d)
This commit is contained in:
+20
-1
@@ -32,8 +32,27 @@ export interface CanvasSize {
|
|||||||
export interface FontEntry {
|
export interface FontEntry {
|
||||||
/** 稳定 id,用于取文件;不要假设它等于文件名。 */
|
/** 稳定 id,用于取文件;不要假设它等于文件名。 */
|
||||||
id: string;
|
id: string;
|
||||||
/** 用于 CSS font-family 和界面显示的字族名,如 "阿里巴巴普惠体-H"。 */
|
/**
|
||||||
|
* 排版字族名,用作 CSS `font-family`。来源是字体文件 `name` 表的 **nameID 16**,
|
||||||
|
* 缺失才退回 nameID 1。**不是注册表的值名**——那是安装程序起的标签,不是字体身份。
|
||||||
|
*
|
||||||
|
* 反例(2026-09-04 实测):阿里巴巴普惠体 H 的注册表值名是「阿里巴巴普惠体-H」,
|
||||||
|
* nameID 1 是「阿里巴巴普惠体 H」,两者在浏览器里都解析不到;
|
||||||
|
* 只有 nameID 16 的「阿里巴巴普惠体」能解析。
|
||||||
|
*
|
||||||
|
* `name` 表里同一个 nameID 有中英两份记录(langID 2052 / 1033)。
|
||||||
|
* 取中文那份,没有中文再取英文——本机两者都能解析,中文在下拉里更好认。
|
||||||
|
*/
|
||||||
family: string;
|
family: string;
|
||||||
|
/**
|
||||||
|
* 样式名,如 `Heavy` / `Bold` / `Regular` / `斜体`。来源是 **nameID 17**,
|
||||||
|
* 缺失才退回 nameID 2。用来在下拉里区分同族多字重,并映射到 `fontWeight` / `fontStyle`。
|
||||||
|
*
|
||||||
|
* **退回 nameID 2 是有损的**:阿里巴巴普惠体五个字重的 nameID 2 全是 `Regular`,
|
||||||
|
* 只有 nameID 17 才区分得出 Heavy / Bold / Medium / Regular / Light。
|
||||||
|
* 退回时同族多档会塌成一个,界面上要能看出这种情况。
|
||||||
|
*/
|
||||||
|
subfamily: string;
|
||||||
/** 字体文件绝对路径(仅供调试与配方记录,前端不直接读)。 */
|
/** 字体文件绝对路径(仅供调试与配方记录,前端不直接读)。 */
|
||||||
path: string;
|
path: string;
|
||||||
/** 文件后缀,小写不带点:ttf / otf / ttc / woff2 … */
|
/** 文件后缀,小写不带点:ttf / otf / ttc / woff2 … */
|
||||||
|
|||||||
Reference in New Issue
Block a user