# General Translation Platform: uploadFonts
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/translation/upload-fonts.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Загрузка постоянных шрифтовых ресурсов для рабочих процессов перевода Lottie. Справочник API для uploadFonts.

Загружает шрифты TrueType или OpenType через проект, чтобы задачи перевода Lottie в той же организации могли использовать их при обработке макета.

## Обзор [#overview]

Вызовите `uploadFonts`, передав до 10 ресурсов шрифтов в кодировке Base64. Метод возвращает идентификаторы сохранённых ресурсов. Чтобы загрузить больше шрифтов, распределите их по нескольким вызовам — не более 10 шрифтов в каждом.

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

Сигнатура:

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

*Примечание: для `uploadFonts` в экземпляре GT должны быть указаны ключ API организации с правом `org:assets:write` (**Organization assets** в панели управления), переданный через `apiKey` или устаревший алиас `devApiKey`, а также `projectId`. При использовании ключей API проекта возвращается ошибка 403.*

## Принцип работы [#how-it-works]

* Содержимое шрифта передаётся методу уже в кодировке Base64.
* У каждого шрифта должно быть имя файла с расширением `.ttf` или `.otf`, а размер после декодирования не должен превышать 20 МБ.
* Проект определяет организацию, которой принадлежит шрифт. Загруженные шрифты сохраняются и используются во всех задачах перевода этой организации.
* Сервис деривирует семейство шрифта, начертание и курсивный стиль из метаданных шрифта, а при их отсутствии использует имя файла. Повторная загрузка шрифта с тем же деривированным идентификатором заменяет сохранённый ресурс.
* API принимает не более 10 шрифтов за один запрос, а запросы большего размера отклоняет с ошибкой 400. Метод разбивает входные данные на несколько запросов, только если в них более 50 шрифтов, поэтому вызов с 11 и более шрифтами завершится ошибкой. Вызывайте `uploadFonts` отдельно для каждой группы, содержащей не более 10 шрифтов.

(Сведения о проверке, идентификаторе и повторных попытках см. в разделе [Загрузка ресурсов проекта](/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>`

Возвращает идентификаторы сохранённых ресурсов и количество обработанных шрифтов:

| Свойство            | Описание                                                            | Тип               |
| ------------------- | ------------------------------------------------------------------- | ----------------- |
| `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';

// Ключ API организации (gtx-org-) с правом org:assets:write.
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 принимает не более 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.
