# General Translation Platform: uploadFonts
URL: https://generaltranslation.com/ja/docs/platform/core/reference/gt-class-methods/translation/upload-fonts.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Lottie 翻訳ワークフロー用の永続フォントアセットをアップロードします。uploadFonts の API リファレンス。

プロジェクトを通じて TrueType または OpenType フォントをアップロードすると、同じ Organization 内の Lottie 翻訳ジョブでレイアウト処理時に使用できます。

## 概要 [#overview]

最大 10 件の base64-encoded のフォントアセットを指定して `uploadFonts` を呼び出します。保存されたアセットの識別子が返されます。10 件を超えるフォントをアップロードする場合は、1 回あたり最大 10 件ずつ、複数回に分けて呼び出してください。

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

シグネチャ:

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

*注: `uploadFonts` を使用するには、`org:assets:write` 権限 (ダッシュボードの **組織 assets**) を持つ組織 API キーを `apiKey` または非推奨のエイリアス `devApiKey` として渡し、さらに GT インスタンスに `projectId` を設定する必要があります。プロジェクト API キーを使用すると 403 エラーが返されます。*

## 仕組み [#how-it-works]

* フォントコンテンツは、メソッドに渡す時点ですでにbase64-encodedである必要があります。
* 各フォントには `.ttf` または `.otf` のファイル名が必要で、デコード後のサイズは20MB以下でなければなりません。
* フォントの所有元となる組織はプロジェクトによって決まります。アップロードしたフォントは、その組織の翻訳ジョブ間で保持されます。
* サービスはフォントメタデータからフォントファミリー、ウェイト、イタリックスタイルを導出し、取得できない場合はファイル名にフォールバックします。同じ識別情報を持つフォントを再度アップロードすると、保存されているアセットが置き換えられます。
* APIが1回のリクエストで受け付けるフォントは最大10個までで、それを超えるリクエストは400エラーで拒否されます。一方、メソッドが入力を複数のリクエストに分割するのは50個を超える場合のみです。そのため、11個以上のフォントを指定して呼び出すと失敗します。フォントは最大10個ずつのグループに分け、グループごとに `uploadFonts` を1回ずつ呼び出してください。

(検証、識別情報、再試行時の動作については、[プロジェクトのアセットをアップロード](/docs/platform/openapi/reference/organizations/upsert-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>`

保存されたアセットの識別子と、処理されたフォント数を返します。

| Property            | 説明                                       | 型              |
| ------------------- | ---------------------------------------- | ----------------- |
| `assets`            | 保存されたフォントアセット。                           | `UploadedAsset[]` |
| `assets[].id`       | 保存された組織アセットのID。                | `string`          |
| `assets[].assetKey` | `<family>-<weight>[-i]`形式で導出されたフォント識別情報。 | `string`          |
| `assets[].fileName` | アップロード時に指定したファイル名。                       | `string`          |
| `count`             | 処理されたフォント数。                              | `number`          |

<Callout type="info">
  **v9.5.0での変更点:** `UploadedAsset`は、サービスが実際には一度も返していなかった`deduped`フィールドを宣言しなくなりました。同じ導出識別情報でアップロードすると、保存済みのアセットが置き換えられます ([仕組み](#how-it-works)を参照) 。
</Callout>

## 例 [#example]

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

// org:assets:write 権限を持つ組織のAPIキー（gtx-org-）を使用します。
const gt = new GT({
  apiKey: process.env.GT_API_KEY,
  projectId: process.env.GT_PROJECT_ID,
});

const fileNames = ['BrandSans.ttf', 'BrandSans-Bold.ttf'];
const fonts = await Promise.all(
  fileNames.map(async (fileName) => ({
    assetType: 'FONT' as const,
    content: (await readFile(`./public/fonts/${fileName}`)).toString('base64'),
    fileName,
  }))
);

// APIが1回のリクエストで受け付けるフォントは最大10個です。
for (let i = 0; i < fonts.length; i += 10) {
  const result = await gt.uploadFonts(fonts.slice(i, i + 10));
  console.log(result.assets.map((asset) => asset.assetKey));
}
```

## Sitemap

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