# General Translation Platform: uploadFonts
URL: https://generaltranslation.com/zh/docs/platform/core/reference/gt-class-methods/translation/upload-fonts.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 上传供 Lottie 翻译工作流长期使用的字体资源。uploadFonts 的 API 参考。

通过项目上传 TrueType 或 OpenType 字体，以便同一组织中的 Lottie 翻译任务在布局处理期间使用这些字体。

## 概述 [#overview]

使用 Base64 编码的字体资源调用 `uploadFonts`。该方法会将大型输入拆分为每批 50 个，并返回已存储资源的内部标识符。

```typescript
const result = await gt.uploadFonts(fonts, {
  timeout: 30000,
});
```

签名：

```typescript
uploadFonts(
  fonts: AssetUpload[],
  options?: UploadAssetsOptions
): Promise<UploadAssetsResponse>
```

*注意：`uploadFonts` 需要在 GT 实例上配置 `apiKey` (或 `devApiKey`) 和 `projectId`。*

## 工作原理 [#how-it-works]

* 传给该方法的字体内容必须已进行 Base64 编码。
* 每个字体都必须具有 `.ttf` 或 `.otf` 文件名，且解码后大小不得超过 20MB。
* 项目决定字体归属的组织。上传的字体会在该组织的所有翻译任务中保留。
* 服务会从字体元数据中识别字体系列、字重和斜体样式；如果无法识别，则回退到文件名。再次上传具有相同派生字体标识的字体，会替换已存储的资源。
* 输入超过 50 个字体时，会通过多个请求上传。

 (有关验证、字体标识和重试行为，请参阅[上传项目资源](/docs/platform/openapi/reference/project/upload-assets)) 。

## 参数 [#parameters]

| 参数                    | 描述                | 类型                    | 可选 | 默认值  |
| --------------------- | ----------------- | --------------------- | -- | ---- |
| [`fonts`](#fonts)     | 要上传的 Base64 编码字体。 | `AssetUpload[]`       | 否  | —    |
| [`options`](#options) | 请求选项。             | `UploadAssetsOptions` | 是  | `{}` |

### `fonts` [#fonts]

**类型** `AssetUpload[]` · **必填**

| 字段          | 描述                        | 类型       | 可选 |
| ----------- | ------------------------- | -------- | -- |
| `assetType` | 资源类型。仅支持 `FONT`。          | `'FONT'` | 否  |
| `content`   | Base64 编码的字体字节数据。         | `string` | 否  |
| `fileName`  | 以 `.ttf` 或 `.otf` 结尾的文件名。 | `string` | 否  |

### `options` [#options]

**类型** `UploadAssetsOptions` · **可选** · **默认值** `{}`

| 字段        | 描述            | 类型       | 可选 |
| --------- | ------------- | -------- | -- |
| `timeout` | 请求超时时间，单位为毫秒。 | `number` | 是  |

## 返回值 [#returns]

**类型** `Promise<UploadAssetsResponse>`

解析后返回已存储的资源内部标识符和已处理的字体数量：

| 属性                  | 描述                                   | 类型                |
| ------------------- | ------------------------------------ | ----------------- |
| `assets`            | 已存储的字体资源。                            | `UploadedAsset[]` |
| `assets[].id`       | 已存储的组织资源 ID。             | `string`          |
| `assets[].assetKey` | 派生的字体标识，格式为 `<family>-<weight>[-i]`。 | `string`          |
| `assets[].fileName` | 上传时提供的文件名。                           | `string`          |
| `count`             | 已处理的字体数量。                            | `number`          |

<Callout type="warn">
  **当前 v9.1.0 存在类型不匹配：**`UploadedAsset` 声明了 `deduped` 布尔字段，但服务响应中不包含该字段。请勿使用该字段判断现有字体是否被替换。
</Callout>

## 示例 [#example]

```typescript title="upload-fonts.ts"
import { readFile } from 'node:fs/promises';
import { GT } from 'generaltranslation';

const gt = new GT({
  apiKey: process.env.GT_API_KEY,
  projectId: process.env.GT_PROJECT_ID,
});

const content = (await readFile('./public/fonts/BrandSans.ttf')).toString(
  'base64'
);

const result = await gt.uploadFonts([
  {
    assetType: 'FONT',
    content,
    fileName: 'BrandSans.ttf',
  },
]);

console.log(result.assets[0].assetKey);
```

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
