Local Font Access API
Local Font Access API 向开发者提供了获取用户本地安装的字体的信息的方式,包括字体名称、字体样式及字体族等等
获取本地字体
调用 window.queryLocalFonts() 方法来获取本地安装的字体
方法允许传入一组可选的配置项,其 postscriptNames 参数允许传入一组字符串数组,代表希望筛选的 postscriptName 名称
方法会返回 Promise 的 FontData 数组,表示本地安装的字体的列表
方法可能抛出 NotAllowedError 异常,表示用户拒绝授予开发者 'local-fonts' 权限
方法可能抛出 SecurityError 异常,表示该 API 受 Permissions Policy 的限制无法被调用或调用该方法并非缘于用户交互行为
1 | window.queryLocalFonts().then((fonts) => { |
处理本地字体
字体信息使用 FontData 接口表示
FontData 接口的 family 属性表示字体的字体族,可以用于 CSS 的 font-family 属性或者 @font-face 规则中的 local() 函数等;
FontData 接口的 fullName 属性表示字体的全名,通常是一个用户可辨识的名称,可以用于向用户展示;
FontData 接口的 postscriptName 属性表示字体的 PostScript 名称,可以用于唯一地辨识字体;
FontData 接口的 style 属性表示字体的样式,可以用于 CSS 的 font-style 属性;
1 | async function logFonts() { |
FontData 接口的 blob() 方法以 Blob 形式返回字体的源数据;
1 | async function getFontFormat(font) { |
权限策略
该 API 调用受到 local-fonts 权限策略的控制,可以通过 Permissions-Policy 响应头指定,或通过 <iframe> 标签的 allow 属性指定
默认为 self,即允许在当前上下文或内嵌的其他同源上下文中使用
权限 API
该 API 调用需要用户授予 local-fonts 权限,可以调用 Permission.query() 方法检查用户是否已授予了该权限
类型
1 | interface Window { |
链接
Local Font Access API
https://skyclouds2001.github.io/2023/09/20/Local-Font-Access-API/

