You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于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"

判断元数据中是否支持对应值:

  1. 查看styles字段,若包含"normal"则可用ital=0,包含"italic"则可用ital=1
  2. 查看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到0
    • wght:字重,范围300到1000
    • CASL:书法风格强度,0到1数值控制风格 casual 程度
    • CRSV:手写曲率强度,0到1控制手写感
    • MONO:等宽特性开关,0到1控制字符是否等宽
  • @后的部分是每个轴的取值范围,逗号顺序对应前面的参数:
    • -15..0:slnt的取值范围为-15到0(包含两端)
    • 300..1000:wght的取值范围为300到1000
    • 0..1:对应CASL/CRSV/MONO三个轴的取值范围都是0到1

这种格式用于支持可变字体,可一次性请求一个范围内的所有变体,让浏览器能动态渲染不同特性的字体样式,无需单独请求每个固定变体。


内容的提问来源于stack exchange,提问作者Lance Pollard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:58:11