@betteroffice/fonts

中文文档
0.4.2发布于 2026/10/27(Apache-2.0 AND OFL-1.1)TypeScriptES Module零依赖构建来源已验证近 30 天下载 39.8万

为BetterOffice引擎装订的开口字体:与拉丁文相容的平面(Carlito、Caladea、Liberation、Gelasio、Comic Relief)、常见的展示家庭(Inter、Roboto、蒙特塞拉特等)外加Noto RTL脚本覆盖面相容、懒惰的同名或

中文使用文档
文档目录8 节
  1. 安装
  2. 使用量
  3. 从CDN取出面相
  4. 炸弹
  5. 被捆住的脸
  6. API 密码
  7. 文档
  8. 许可证发放

@ betteroffice/ fonts (日语)

打开字体和一个懒惰的加载器,用于BetterOffice布局引擎:与标准兼容的替代品 微软核心字体,常见的演示家族,以及希伯来语和阿拉伯语的覆盖. 国防部 引擎装入它们 configureDefaultFonts; 对于 PPTX 编辑器 fonts 螺丝管, loadBundledFontBytes 返回任何捆绑面孔的字节。 CJK的脸 单独进舰 @betteroffice/fonts-cjk。 。 。 .

替代物共享卡利布里、坎布里亚、阿里亚尔、时代新罗马和库里尔的先行宽度 新的,所以换行和Pagination匹配Word. 横跨813个真实世界的文件, 配置这个 软件包将准确的页数协议从46.5%提高到61.9%.

安装

bun add @betteroffice/fonts
# for Chinese, Japanese or Korean text:
bun add @betteroffice/fonts-cjk

使用量

在任何编辑器挂载前配置一次 DOCX 引擎 :

import { configureDefaultFonts } from '@betteroffice/docx/layout';
import * as fonts from '@betteroffice/fonts';

configureDefaultFonts({ fonts });

要保持包 在自己的块,通过 load 相反:

configureDefaultFonts({ load: () => import('@betteroffice/fonts') });

configureDefaultFonts 是全过程的。 模块初始化时称它; 用于平面编辑或 每个租户的 URL,通过一个提供者 DocxEditor 作为 measurementFontProvider 换句话说.

导入软件包不会获取或注册任何东西 。 每张相片第一次被取出 因此,从软件包的自有资产(同源)中,Vite等捆绑者将文件放出旁边 模块.

从CDN取出面相

这个 @betteroffice/fonts/cdn 条目将字体二进制和 CJK 添加从您的捆绑中保存出来。 这个 从 jsDelivr URL 从已安装的软件包版本获取面孔 :

import { configureDefaultFonts } from '@betteroffice/docx/layout';

configureDefaultFonts({ load: () => import('@betteroffice/fonts/cdn') });

使用自己的CDN,创建一个提供者并传递给 DocxEditor 作为 measurementFontProvider数字 :

import { createFontProvider } from '@betteroffice/fonts/cdn';

const measurementFontProvider = createFontProvider({
  baseUrl: 'https://cdn.example.com/fonts/latin/',
  cjkBaseUrl: 'https://cdn.example.com/fonts/cjk/',
});

或者保留捆绑的条目,只移动二进制:

import { configureDefaultFonts } from '@betteroffice/docx/layout';
import * as fonts from '@betteroffice/fonts';

configureDefaultFonts({ fonts, baseUrl: 'https://cdn.example.com/betteroffice-fonts/' });
  • 服务原始文件名 assets/ 目录, 启用 CORS 和 源码允许在您的 connect-src 政策.
  • 单人 baseUrl,每个面孔,包括CJK, 来自目录的负载。 复制 assets/ 中两个包;文件名不相撞.
  • 一个亲戚 baseUrl 解决当前页面; 浏览器外必须绝对.
  • 每一次下载都会对照清单的字节长度进行检查,该字节长度可以检测出短音,但不能 篡改,所以使用一个你信任的来源。 CDN 可以看到文档要求的所在 .
  • 处理文件 br 或者说 gzip 编码 面相是原始的TTF/OTF,因为浏览器和 webAssembly 引擎必须测量相同的字节;压缩将 65 面从 14,527 KB 带到 7,156克贝.

炸弹

随着卷起、 Esbuild 或 Vite 构建, 将软件包内嵌, 将字体包标为外部 因此它们的资产 URL 存活下来,或者配置一个 baseUrl数字 :

esbuild app.js --bundle --external:@betteroffice/fonts --external:@betteroffice/fonts-cjk
// rollup.config.js
export default {
  external: ['@betteroffice/fonts', '@betteroffice/fonts-cjk'],
};

被捆住的脸

受困家庭与量子兼容别名也解决了许可证版本
卡丽托卡利布里语Name无资产管制处1.11.104 联合国
塞拉维克Segoe UI, 光, 半光, 半粗体无资产管制处1.1
卡拉迪亚坎布里亚无资产管制处1.11.001 (韩语)
桑斯解放组织参数螺旋桨资产管制处1.12.1.5
塞里夫解放组织新罗马时代时间资产管制处1.12.1.5
莫诺解放组织库里尔New库里尔资产管制处1.12.1.5

Gelasio 1.008与佐治亚州和Comic Relief 1.200与Comic Sans MS(两者都是OFL)相匹配 1.1) 介绍家庭 Inter, Roboto, Source Sans 3 (Source Sans Pro), DM Sans, DM Serif 显示、开放桑斯、蒙特塞拉特、波平斯、奥斯瓦尔德和希波是字体本身。 未知的家庭 与相通的单相相接相接相接相接相接 塞拉维克号定期轮船、粗体轮船、轻体轮船、半光轮船 和直立的面相, 斜体 Segoe UI 请求保留最后一回的链条,其斜体是 真正的斜体表情.

受困家庭覆盖范围脚本桶许可证版本
诺托·桑斯希伯来语希伯来语报道hebrew资产管制处1.13.001 (中文(简体) )
诺托·桑斯阿拉伯语阿拉伯语报道arabic资产管制处1.12.013 (中文(简体) )
诺托·纳什克阿拉伯语阿拉伯脸arabic资产管制处1.12.021 (英语)

测量从不查询安装在机器上的字体: 嵌入式文档字体先来, 然后 捆绑的替代品,然后是最后的一张相, 所以一个文档测量 各地相同.

API 密码

大多数主机只需要 configureDefaultFonts。软件包还导出自定义字节的部件 来源和其他消费者:

导出说明
createFontProvider({ baseUrl? })测量引擎消耗的供应商.
BUNDLED_FONTS面相显相.
resolveMetricCompatFamily, (中文(简体) ), resolveMetricCompatFace将 Word 家族( 和样式) 映射到其捆绑的替代品 .
resolveBundledFamilyFace为了一个家庭 和风格,或 undefined; 缺少斜体使用浏览器合成.
resolveScriptFallbackFace脚本桶的覆盖面, 如 cjk-sc 或者说 arabic。 。 。 .
resolveGlyphFallbackFace, (中文(简体) ), createFontProvider().resolveGlyphFallbackSelawik 中没有字符的覆盖元数据和懒字节;可选 office 默认为 powerpoint,与 word 选择 Word 的倒置.
resolveLastResortFace总是有后退的面孔.
resolveDigitAdvance, (中文(简体) ), maxDigitWidth最宽的数位前进,记录或测量.
loadBundledFontBytes(face, { baseUrl? })获取面部的字节,每个面部和基址缓存.
registerBundledFontFace(face)用浏览器注册一张相 FontFace API; DOM外无外接.

文档

许可证发放

加载器代码为Apache-2.0(参见 LICENSE) (中文(简体) ). 字体二进制根据SIL Open Font许可证1.1获得许可;包含每个家庭版权通知的完整许可证文本在 LICENSES/数字 :

  • LICENSES/OFL-Carlito.txt:版权2013 The Carlito Project Authors, 保留字体名称"Carlito". 供应商 google/ fonts 图像 ofl/carlito (上游: googlefonts/ carlito (英语)) (中文(简体) ).
  • LICENSES/OFL-Selawik.txt:版权2015微软公司,保留字体名称"Selawik". 未修改的供应商 微软/塞拉维克。 。 。 .
  • LICENSES/OFL-Caladea.txt:版权2012 Caladea项目作者. 供应商 google/ fonts 图像 ofl/caladea (上游: 韦塔蒂波格拉菲卡/卡拉迪亚) (中文(简体) ).
  • LICENSES/OFL-Liberation.txt:数字化数据版权 (c)2010 Google Corporation;版权 (c)2012 Red Hat, Inc., Reserved Font Name Liberation. 未修改的供应商 解放字体 2.1.5 发行。 。 。 .
  • LICENSES/OFL-NotoSansHebrew.txt:版权2022 野藤计划作者. 出售自 (原始内容存档于2017-09-21) (英语). notons/nootons.github.io 实施时 cd06befda260d2abb6e5db96cf5530f80ea5180d (单位:千美元)fonts/NotoSansHebrew/hinted/ttf/);上游项目 空出/空出数。 。 。 .
  • LICENSES/OFL-NotoArabic.txt:版权2022 Noto项目作者;涵盖Noto Sans阿拉伯语和Noto Naskh阿拉伯语. 出售自 (原始内容存档于2017-09-21) (英语). notons/nootons.github.io 实施时 cd06befda260d2abb6e5db96cf5530f80ea5180d (单位:千美元)fonts/NotoSansArabic/hinted/ttf/, (中文(简体) ), fonts/NotoNaskhArabic/hinted/ttf/);上游项目 损失/阿拉伯。 。 。 .
  • LICENSES/OFL-Gelasio.txt, (中文(简体) ), OFL-ComicRelief.txt, (中文(简体) ), OFL-Inter.txt, (中文(简体) ), OFL-Roboto.txt, (中文(简体) ), OFL-SourceSans3.txt, (中文(简体) ), OFL-DMSans.txt, (中文(简体) ), OFL-DMSerifDisplay.txt, (中文(简体) ), OFL-OpenSans.txt, (中文(简体) ), OFL-Montserrat.txt, (中文(简体) ), OFL-Poppins.txt, (中文(简体) ), OFL-Oswald.txt, (中文(简体) ), OFL-Heebo.txt每个家庭一个,每个家庭的版权通知.

CJK二进制及其 OFL-NotoCJK.txt 许可文本船进入 @betteroffice/fonts-cjk。 。 。 .

版本与发布记录

@betteroffice/fonts 共发布 7 个版本,首次发布于 2026/08/20;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.4.2latest2026/10/2711 天前
0.4.12026/10/2613 天前
0.4.02026/10/011 个月前
0.3.02026/09/291 个月前
0.2.02026/09/161 个月前
0.1.02026/08/202 个月前

关于 @betteroffice/fonts 的常见问题

@betteroffice/fonts 是什么?

为BetterOffice引擎装订的开口字体:与拉丁文相容的平面(Carlito、Caladea、Liberation、Gelasio、Comic Relief)、常见的展示家庭(Inter、Roboto、蒙特塞拉特等)外加Noto RTL脚本覆盖面相容、懒惰的同名或

如何安装 @betteroffice/fonts?

在项目目录运行 npm install @betteroffice/fonts,或使用 pnpm add / yarn add / bun add。

@betteroffice/fonts 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@betteroffice/fonts 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@betteroffice/fonts 可以商用吗?

@betteroffice/fonts 使用 (Apache-2.0 AND OFL-1.1) 许可。声明的许可为 (Apache-2.0 AND OFL-1.1),请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@betteroffice/fonts 的下载量有多少?

根据 npm 官方下载统计,@betteroffice/fonts 在 2026/10/08 – 2026/11/06 这 30 天内被下载 397,504 次,日均约 13,250 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@betteroffice/fonts 还在维护吗?

最新版本 0.4.2 发布于 2026/10/27(11 天前);至今共发布 7 个版本,其中过去 12 个月发布了 7 个;首次发布于 2026/08/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。