# @betteroffice/fonts 中文文档

规范地址：https://npmcn.com/package/%40betteroffice/fonts/

版本：0\.4\.2
npm 元数据更新时间：2026-10-27T11:27:20.410Z
中文译文更新时间：2026-11-08T00:21:22.387Z
软件包许可：\(Apache-2\.0 AND OFL-1\.1\)

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40betteroffice/fonts
原文对照：https://npmcn.com/package/%40betteroffice/fonts/?lang=original
项目主页：https://betteroffice.dev/
源码仓库：https://github.com/openooxml/betteroffice

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：15.3 MB，96 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：@betteroffice/fonts-cjk ^0
- 首次发布：2026-08-19T21:08:59.148Z
- 最新版本发布：2026-10-27T11:27:19.778Z
- 近 30 天下载量：397504（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：7（近 12 个月 7 个）

## 中文简介

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

## 安装

```sh
npm install @betteroffice/fonts
```

也可以使用：`pnpm add @betteroffice/fonts`、`yarn add @betteroffice/fonts`、`bun add @betteroffice/fonts`

## README

# @ betteroffice/ fonts (日语)

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

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

## 安装

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

## 使用量

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

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

configureDefaultFonts({ fonts });
```

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

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

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

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

## 从CDN取出面相

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

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

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

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

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

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

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

```ts
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`数字 :

```bash
esbuild app.js --bundle --external:@betteroffice/fonts --external:@betteroffice/fonts-cjk
```

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

## 被捆住的脸

| 受困家庭 | 与量子兼容 | 别名也解决了 | 许可证 | 版本 |
| --- | --- | --- | --- | --- |
| 卡丽托 | 卡利布里语Name | 无 | 资产管制处1.1 | 1.104 联合国 |
| 塞拉维克 | Segoe UI, 光, 半光, 半粗体 | 无 | 资产管制处1.1 |  |
| 卡拉迪亚 | 坎布里亚 | 无 | 资产管制处1.1 | 1.001 (韩语) |
| 桑斯解放组织 | 参数 | 螺旋桨 | 资产管制处1.1 | 2.1.5 |
| 塞里夫解放组织 | 新罗马时代 | 时间 | 资产管制处1.1 | 2.1.5 |
| 莫诺解放组织 | 库里尔New | 库里尔 | 资产管制处1.1 | 2.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.1 | 3.001 (中文(简体) ) |
| 诺托·桑斯阿拉伯语 | 阿拉伯语报道 | `arabic` | 资产管制处1.1 | 2.013 (中文(简体) ) |
| 诺托·纳什克阿拉伯语 | 阿拉伯脸 | `arabic` | 资产管制处1.1 | 2.021 (英语) |

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

## API 密码

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

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

## 文档

-   [软件包和字体](https://docs.betteroffice.dev/docs/packages#fonts)
-   [`@betteroffice/fonts-cjk`](https://www.npmjs.com/package/@betteroffice/fonts-cjk)
-   [`@betteroffice/docx`](https://www.npmjs.com/package/@betteroffice/docx)

## 许可证发放

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

-   `LICENSES/OFL-Carlito.txt`:版权2013 The Carlito Project Authors, 保留字体名称"Carlito". 供应商 [google/ fonts 图像 `ofl/carlito`](https://github.com/google/fonts/tree/main/ofl/carlito) (上游: [googlefonts/ carlito (英语)](https://github.com/googlefonts/carlito)) (中文(简体) ).
-   `LICENSES/OFL-Selawik.txt`:版权2015微软公司,保留字体名称"Selawik". 未修改的供应商 [微软/塞拉维克](https://github.com/microsoft/Selawik)。 。 。 .
-   `LICENSES/OFL-Caladea.txt`:版权2012 Caladea项目作者. 供应商 [google/ fonts 图像 `ofl/caladea`](https://github.com/google/fonts/tree/main/ofl/caladea) (上游: [韦塔蒂波格拉菲卡/卡拉迪亚](https://github.com/huertatipografica/Caladea)) (中文(简体) ).
-   `LICENSES/OFL-Liberation.txt`:数字化数据版权 (c)2010 Google Corporation;版权 (c)2012 Red Hat, Inc., Reserved Font Name Liberation. 未修改的供应商 [解放字体 2.1.5 发行](https://github.com/liberationfonts/liberation-fonts/releases/tag/2.1.5)。 。 。 .
-   `LICENSES/OFL-NotoSansHebrew.txt`:版权2022 野藤计划作者. 出售自 [(原始内容存档于2017-09-21) (英语). notons/nootons.github.io](https://github.com/notofonts/notofonts.github.io) 实施时 `cd06befda260d2abb6e5db96cf5530f80ea5180d` (单位:千美元)`fonts/NotoSansHebrew/hinted/ttf/`);上游项目 [空出/空出数](https://github.com/notofonts/hebrew)。 。 。 .
-   `LICENSES/OFL-NotoArabic.txt`:版权2022 Noto项目作者;涵盖Noto Sans阿拉伯语和Noto Naskh阿拉伯语. 出售自 [(原始内容存档于2017-09-21) (英语). notons/nootons.github.io](https://github.com/notofonts/notofonts.github.io) 实施时 `cd06befda260d2abb6e5db96cf5530f80ea5180d` (单位:千美元)`fonts/NotoSansArabic/hinted/ttf/`, (中文(简体) ), `fonts/NotoNaskhArabic/hinted/ttf/`);上游项目 [损失/阿拉伯](https://github.com/notofonts/arabic)。 。 。 .
-   `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`](https://www.npmjs.com/package/@betteroffice/fonts-cjk)。 。 。 .

## 常见问题

### @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（12 天前）；至今共发布 7 个版本，其中过去 12 个月发布了 7 个；首次发布于 2026/08/20。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

