# Список пользовательских шрифтов

- Human documentation: [https://docs.univer.ai/ru-RU/guides/pdfs/ui/fonts](https://docs.univer.ai/ru-RU/guides/pdfs/ui/fonts)

- Agent Markdown: [https://docs.univer.ai/ru-RU/guides/pdfs/ui/fonts.md](https://docs.univer.ai/ru-RU/guides/pdfs/ui/fonts.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

- Source: [pdfs/ui/fonts.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/pdfs/ui/fonts.ru-RU.mdx)

---

Текст PDF и меню шрифтов редактора используют связанные, но разные источники данных.

| Источник                                                | Что он определяет                                                                          |
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| `document.assets.fonts` и `fontId` текстового фрагмента | Метаданные и ресурсы импортированных PDF-шрифтов для восстановления исходного содержимого. |
| `fontFamily` редактируемого фрагмента                   | CSS-семейство для компоновки и отрисовки редактируемого текста.                            |
| Общий список шрифтов Univer                             | Варианты в списке шрифтов инспектора PDF.                                                  |

Добавление варианта в общий список не создаёт ресурс в `document.assets.fonts`, не загружает и не встраивает файл шрифта.

## Настройка списка редактора

Когда `editor.enabled` имеет значение `true`, инспектор PDF использует общий `FontFamilyDropdown`. Настройте список в `UniverUIPlugin`:

```ts
import { UniverUIPlugin } from '@univerjs/ui'

univer.registerPlugin(UniverUIPlugin, {
  container: 'app',
  customFontFamily: {
    list: [
      { value: 'Inter', label: 'Inter', category: 'sans-serif' },
      { value: 'Noto Serif', label: 'Noto Serif', category: 'serif' },
    ],
    override: false,
  },
})
```

Загрузите каждый браузерный шрифт через `@font-face` или таблицу стилей. Иначе Canvas использует резервный шрифт браузера.

## Добавление вариантов во время выполнения

После загрузки UI Facade добавляйте варианты в тот же общий список с помощью `addFonts`:

```ts
univerAPI.addFonts([
  { value: 'Inter', label: 'Inter', category: 'sans-serif' },
])
```

Метод обновляет только список приложения: он не загружает данные шрифта и не переписывает существующие фрагменты PDF.

## Применение шрифта к редактируемому тексту PDF

Передайте `fontFamily` при вставке текста или обновите текстовое поле через PDF Facade:

```ts
const page = univerAPI.getActivePdf()?.getPageByIndex(0)
const textBox = page?.insertTextBox({
  text: 'Hello PDF',
  fontFamily: 'Inter',
  fontSize: 14,
  left: 36,
  top: 36,
})

textBox?.setTextStyle({ fontFamily: 'Noto Serif' })
```

Импортированный нативный текст из `page.getTextSpans()` является снимком и не изменяется напрямую. Сначала вызовите `replaceText(...)`, чтобы преобразовать его в редактируемое поле, затем вызовите `setTextStyle`.
