如何基于Google Font元数据生成CSS2 API请求URL及解析ital参数
Google Fonts CSS v2 API 工作机制解析
基础URL结构
Google Fonts CSS v2 API的核心请求格式为:https://fonts.googleapis.com/css2?family=[字体参数]
以示例Crimson+Pro:ital,wght@0,700;1,700为例,拆解各部分含义:
Crimson+Pro:字体家族名,空格需替换为+ital,wght:指定的字体变体参数,ital控制斜体开关,wght控制字重@:分隔参数定义与参数值0,700;1,700:参数值组合,分号分隔不同变体:0,700:ital=0(非斜体)+wght=700(粗体)1,700:ital=1(斜体)+wght=700(粗体)
ital参数含义与元数据对应规则
ital=0:代表**常规(非斜体)**样式,对应元数据中styles数组的"normal"ital=1:代表斜体样式,对应元数据中styles数组的"italic"
判断元数据中是否支持对应值:
- 查看
styles字段,若包含"normal"则可用ital=0,包含"italic"则可用ital=1 - 查看
variants字段,确认对应字重下是否存在该样式的子集数据(比如ABeeZee的variants["400"]["normal"]存在,说明支持ital=0,wght=400)
从ABeeZee元数据生成API请求URL
先分析ABeeZee元数据的可用变体限制:
weights数组仅含[400],说明仅支持400字重(常规),无粗体(700)styles数组包含["italic","normal"],支持常规和斜体样式
生成步骤
- 提取字体家族名
ABeeZee,名称无空格直接使用 - 确定变体参数:
ital(斜体开关)和wght(字重) - 筛选可用变体组合:
- 常规:
ital=0+wght=400(元数据variants["400"]["normal"]存在) - 斜体:
ital=1+wght=400(元数据variants["400"]["italic"]存在)
- 常规:
- 用分号分隔变体组合,拼接参数部分:
ital,wght@0,400;1,400 - 拼接基础URL得到完整请求地址:
https://fonts.googleapis.com/css2?family=ABeeZee:ital,wght@0,400;1,400
复杂可变字体参数逻辑(以Recursive为例)
对于Recursive:slnt,wght,CASL,CRSV,MONO@-15..0,300..1000,0..1,0..1,0..1这类请求,逻辑拆解如下:
slnt,wght,CASL,CRSV,MONO:字体的可变轴参数,每个参数对应一个可调节的字体特性:slnt:倾斜度,范围-15到0wght:字重,范围300到1000CASL:书法风格强度,0到1数值控制风格 casual 程度CRSV:手写曲率强度,0到1控制手写感MONO:等宽特性开关,0到1控制字符是否等宽
@后的部分是每个轴的取值范围,逗号顺序对应前面的参数:-15..0:slnt的取值范围为-15到0(包含两端)300..1000:wght的取值范围为300到10000..1:对应CASL/CRSV/MONO三个轴的取值范围都是0到1
这种格式用于支持可变字体,可一次性请求一个范围内的所有变体,让浏览器能动态渲染不同特性的字体样式,无需单独请求每个固定变体。
内容的提问来源于stack exchange,提问作者Lance Pollard
相关产品推荐
相关产品推荐

