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

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

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

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

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

---

## Структура описания шрифта

В Univer шрифты определяются с помощью интерфейса `IFontConfig`:

| Свойство   | Тип                                                                    | Описание                                                                                                                            |
| ---------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `value`    | `string`                                                               | Уникальный идентификатор шрифта, обычно также предпочтительное значение CSS-свойства font-family.                                   |
| `label`    | `string`                                                               | Ключ перевода для интернационализации. Если при создании экземпляра Univer этот ключ не задан, значение отображается без изменений. |
| `category` | `'sans-serif' \| 'serif' \| 'monospace' \| 'display' \| 'handwriting'` | Категория шрифта, используемая для группировки в интерфейсе (необязательно).                                                        |

> [!NOTE]
> Univer не запрещает пользователям выбирать неустановленные шрифты. Если шрифт не установлен на устройстве, браузер заменит его шрифтом по умолчанию.

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

Пункты раскрывающегося списка шрифтов можно задать с помощью параметра `customFontFamily` для `UniverSheetsCorePreset` (режим предустановок) или `UniverUIPlugin` (режим плагинов).

#### Режим плагинов

```typescript
univer.registerPlugin(UniverUIPlugin, {
  container: 'app',
  customFontFamily: {
    list: [
      {
        value: 'PingFang SC',
        label: '苹方（简）',
        category: 'sans-serif',
      },
      {
        value: 'Helvetica Neue',
        label: 'Helvetica Neue',
        category: 'sans-serif',
      },
    ],
    // Whether to override the default font list, defaults to false
    override: true,
  },
})
```

#### Режим предустановок

```typescript
const { univerAPI } = createUniver({
  presets: [
    UniverSheetsCorePreset({
      container: 'app',
      customFontFamily: {
        list: [
          {
            value: 'PingFang SC',
            label: '苹方（简）',
            category: 'sans-serif',
          },
          {
            value: 'Helvetica Neue',
            label: 'Helvetica Neue',
            category: 'sans-serif',
          },
        ],
        // Whether to override the default font list, defaults to false
        override: true,
      },
    }),
  ],
})
```

### Facade API

Помимо настройки при инициализации, новые шрифты можно динамически регистрировать во время выполнения через Facade API. Это особенно удобно, когда файлы шрифтов необходимо загружать асинхронно.

```typescript
univerAPI.addFonts([{
  value: 'PingFang SC',
  label: 'PingFang SC',
  category: 'sans-serif',
}, {
  value: 'Helvetica Neue',
  label: 'Helvetica Neue',
  category: 'sans-serif',
}])
```
