> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ru/voprosy-i-otvety/58-i-have-a-custom-font-i-d-like-to-load-to-my-document.-how-can-i-do-this.md).

# У меня есть собственный шрифт, который я хотел бы загрузить в свой документ. Как это сделать?

## Введение

В этой статье показано, как установить пользовательские шрифты для набора текста в вашем документе — она не рассматривает шрифты для набора математических формул. Под «пользовательским шрифтом» мы понимаем шрифт, недоступный на серверах Overleaf, включая коммерческие шрифты, требующие лицензии, или бесплатные шрифты, не распространяемые вместе с TeX Live и не включённые в нашу установку Linux.

* **Примечание**: В этой статье рассматриваются основные технологии шрифтов, но не обсуждаются специализированные решения на базе TeX, такие как [Metafont](https://en.wikipedia.org/wiki/Metafont) и [виртуальные шрифты](https://texfaq.org/FAQ-virtualfonts).

## С чего мне начать?

Решения для верстки на основе LaTeX существуют в контексте наследия прошлых лет. За более чем четыре десятилетия развитие компиляторов LaTeX и форматов шрифтов породило экосистему, сочетающую старые и новые технологии. В результате реальный процесс установки и настройки пользовательских шрифтов для использования с LaTeX зависит от двух факторов:

1. Тип (формат) любого шрифта (шрифтов), который вы хотите установить:

* устаревшие [PostScript Type 1](https://en.wikipedia.org/wiki/PostScript_fonts#Type_1) или [TrueType](https://en.wikipedia.org/wiki/TrueType) шрифты, или
* современные [OpenType](https://en.wikipedia.org/wiki/OpenType) шрифты.

3. Какой компилятор LaTeX используется для компиляции вашего проекта (проектов) Overleaf:
   * pdfLaTeX, или
   * XeLaTeX или LuaLaTeX

Перейдите к разделу, посвящённому предпочитаемому вами компилятору:

* [Использование пользовательских шрифтов с pdfLaTeX](#using-custom-fonts-with-pdflatex)
* [Использование пользовательских шрифтов с XeLaTeX и LuaLaTeX](#using-custom-fonts-with-xelatex-and-lualatex)

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

Вот краткое изложение того, что вам нужно сделать — в зависимости от сложности настройки вашего пользовательского шрифта:

1. Для каждого файла шрифта (`.ttf`, `.otf` или `.pfb`), вам потребуется иметь (или сгенерировать!) подходящий метрический файл шрифта TeX (`.tfm`) и, возможно, файл кодировки (`.enc`).
2. pdfLaTeX должен знать, как встроить шрифты документа в итоговый PDF-файл. Для этого он читает файл карты шрифтов (`pdftex.map`), который вам нужно обновить, указав сведения о вашем пользовательском шрифте. В Overleaf это делается с помощью одной из этих команд:

* `\pdfmapfile{...}`
* `\pdfmapline{...}`

4. Вам понадобится файл описания шрифта (`.fd`), который сообщает LaTeX, как использовать новые файлы шрифтов.

Вот основные типы файлов, которые вам понадобятся:

* **`.tfm`** (метрика шрифта TeX): эти компактные двоичные файлы не содержат данных, описывающих визуальный вид очертаний символов, только размеры символов и метаданные шрифта, которые движки TeX могут использовать для выполнения своих основных задач верстки. Метрики шрифтов TeX для математических шрифтов содержат дополнительные данные, не требуемые текстовыми шрифтами; в частности, они имеют несколько параметров «межсимвольного интервала», используемых при наборе формул.
* **`.fd`** (описание шрифта): эти файлы содержат команды LaTeX, необходимые для настройки и подготовки вашего шрифта к использованию с LaTeX. Команды, допустимые внутри `.fd` файлов, а также `.fd` соглашение об именовании файлов [Выбор шрифта в LaTeX2ε](https://texdoc.org/serve/fntguide/1).
* **`.map`** (карта шрифтов): файлы карт связывают имя файлов метрик шрифта TeX с физическим файлом шрифта, содержащим данные, необходимые для построения очертаний символов (глифов). Каждый шрифт, известный pdfTeX, описывается одной строкой файла карты с использованием строго определённого синтаксиса. Подробности см. в разделе 5 [Руководство пользователя pdfTeX](http://mirrors.ctan.org/systems/doc/pdftex/manual/pdftex-a.pdf).
* **`.enc`** (кодировка): если требуется, этот тип файла определяет соответствие между кодами символов в вашем тексте LaTeX и соответствующими очертаниями символов (глифами), содержащимися в файле шрифта.

### Пример пользовательского шрифта TrueType

В Overleaf Galley есть проект, который [демонстрирует установку пользовательского шрифта TrueType](https://www.overleaf.com/latex/examples/example-using-a-custom-truetype-font/yndxyzgbhpjv)—шрифт PostScript Type 1 использовал бы похожую настройку. Он компилируется с помощью pdfLaTeX, XeLaTeX и LuaLaTeX и даёт следующий результат:

![Изображение, показывающее набор в Overleaf с использованием пользовательского шрифта](/files/50b5ec6aabe7cc66fcf9e7d301940358124c26a3)

#### Примечания к примеру проекта

* Он использует следующую `\pdfmapline` команду:

```latex
\pdfmapline{+delphine < Delphine.ttf <T1-WGL4.enc}
```

которая связывает файл метрик шрифта TeX под названием `delphine` с физическим файлом шрифта под названием `Delphine.ttf`.

* Первый `<` символ instructs pdfTeX to subset the TrueType font; то есть *частично* встроить этот шрифт в итоговый PDF-файл. Подмножество шрифта создаёт более компактные PDF-файлы, потому что они содержат только данные очертаний символов, необходимые для отображения символов, присутствующих в документе.
* Второй `<` символ предшествует имени файла векторной кодировки, `T1-WGL4.enc`, используемого для сопоставления кодов символов в вашем тексте с данными очертаний символов (глифами) внутри файла шрифта — данные очертаний необходимы для отображения (рисования) символа.
* LuaLaTeX требует дополнительного шага настройки, потому что `\pdfmapline` генерирует **Неопределённая управляющая последовательность** ошибку из-за изменений в обработке некоторых команд backend в LuaTeX — в разделе 3 [Справочное руководство LuaTeX](http://mirrors.ctan.org/systems/doc/luatex/luatex.pdf). `\ifLuaTeX` команда, предоставляемая пакетом `iftex` используется для проверки LuaTeX; если он обнаружен, `\pdfmapline` определяется:

```latex
\ifLuaTeX
\protected\def\pdfmapline {\pdfextension mapline }
\fi
```

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

Чтобы управлять файлами, предоставленными коммерческими поставщиками шрифтов, и коллекциями бесплатных шрифтов, вы можете создавать папки в проекте Overleaf, чтобы организовать файлы шрифтов по их типу (`.tfm`, `.pfb`, `.ttf` и т. д.). Хорошей моделью для именования и организации ваших папок является [Структура каталогов TeX (TDS)](https://www.tug.org/tds/tds.pdf), которая была разработана как «чертёж» передовой практики для управления набором файлов, связанных с TeX.

После создания папок проекта вам затем нужно создать так называемый [`latexmcrc` файла](/latex/ru/podrobnye-stati/28-how-to-use-latexmkrc-with-overleaf.md) содержащий инструкции, указывающие компилятору LaTeX искать файлы в этих папках. По умолчанию компиляторы не знают, что эти папки существуют, и не найдут файлы, которые в них содержатся.

#### Пример проекта Overleaf

Пример Overleaf Gallery [Использование папок для управления файлами пользовательских шрифтов](https://www.overleaf.com/latex/templates/example-using-folders-to-manage-custom-font-files/qvqgnpjxvqzd) использует папки и `latexmkrc` файл для установки пользовательского шрифта TrueType. Он содержит структуру папок, показанную на этом изображении:

![Организация папок проекта в Overleaf](/files/ee66fa5f8949c5809f659e56772e033ce4debe1e)

и `latexmkrc` файл, содержащий следующие строки, которые задают переменные среды [окружения](https://en.wikipedia.org/wiki/Environment_variable) в рантайме, указывая компилятору LaTeX искать файлы в папках нашего проекта:

```perl
$ENV{'TEXINPUTS'}='myfonts/tex//:' . $ENV{'TEXINPUTS'};
$ENV{'T1FONTS'}='myfonts/fonts/type1//:' . $ENV{'T1FONTS'};
$ENV{'AFMFONTS'}='myfonts/fonts/afm//:' . $ENV{'AFMFONTS'};
$ENV{'TEXFONTMAPS'}='myfonts/fonts/map//:' . $ENV{'TEXFONTMAPS'};
$ENV{'TFMFONTS'}='myfonts/fonts/tfm//:' . $ENV{'TFMFONTS'};
$ENV{'TTFONTS'}='myfonts/fonts/ttf//:' . $ENV{'TTFONTS'};
$ENV{'VFFONTS'}='myfonts/fonts/vf//:' . $ENV{'VFFONTS'};
$ENV{'ENCFONTS'}='myfonts/fonts/enc//:' . $ENV{'ENCFONTS'};
```

Если вам интересно, какие файлы обычно попадают в какую папку, посмотрите [эту статью](/latex/ru/podrobnye-stati/06-an-introduction-to-kpathsea-and-how-tex-engines-search-for-files.md#table-listing-kpathsea-config-variables).

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

### Использование шрифтов PostScript Type 1

Чтобы использовать устаревшие шрифты PostScript Type 1 с XeLaTeX и LuaLaTeX, вы можете следовать [рекомендациям для pdfLaTeX](#using-custom-fonts-with-pdflatex), поэтому мы не будем повторять эти детали здесь.

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

XeLaTeX и LuaLaTeX обеспечивают широкую поддержку расширенной верстки с использованием шрифтов OpenType — вариантов TrueType и PostScript — поскольку их базовые движки TeX, XeTeX и LuaHBTeX, имеют встроенные возможности обработки технологий шрифтов OpenType, чего не умеет pdfTeX.

* **Примечание**: LuaLaTeX, через свой базовый движок TeX (LuaHBTeX), обладает самыми продвинутыми возможностями работы со шрифтами среди всех движков TeX; однако обсуждение этого выходит за рамки статьи — для получения дополнительной информации см. разделы 6 и 12 [Справочное руководство LuaTeX](https://ctan.org/pkg/luatex?lang=en).

Чтобы использовать шрифты OpenType с XeLaTeX и LuaLaTeX, вам нужно подключить [`fontspec`](https://ctan.org/pkg/fontspec?lang=en), мощный и функционально богатый пакет, который предоставляет интерфейс для расширенных возможностей верстки шрифтов OpenType.

* **Примечание**: Вам не нужно использовать `\usepackage[T1]{fontenc}` (или `\usepackage[utf8]{inputenc}`) при использовании шрифтов OpenType с XeLaTeX или LuaLaTeX.

### Пример: знакомство с fontspec

Процесс прост, поскольку установка шрифтов не требуется — не нужны `.tfm`, `enc` или `.map` файлы и написание определений шрифтов (`.fd`) кануло в историю! Всё так же просто, как это:

1. Добавьте следующую строку в преамбулу документа:

```latex
\usepackage{fontspec}
```

3. Выберите значок загрузки файла (![UploadIcon.png](/files/b8bb2d7751214ed6254a247b964ad20fe3978716)), расположенный над списком файлов.
4. Перетащите шрифт (шрифты) в окно загрузки или выберите их на своём компьютере, чтобы добавить шрифт (шрифты) в ваш проект Overleaf.
5. Используйте одну из `fontspec` пакет `\set*xxx*font` команд, чтобы настроить и активировать шрифт (шрифты).

Отличная `fontspec` документация пакета содержит множество примеров, которые вы можете изучить, поэтому здесь мы оставим всё простым, чтобы помочь вам начать. Например, предположим, вы загрузили файл шрифта под названием `CrimsonText-Regular.ttf`; после подключения `fontspec` вы можете задать основной шрифт текста документа, написав

```latex
\setmainfont{CrimsonText-Regular.ttf}
```

Вы также можете писать синтаксис, например

```latex
\setmainfont{CrimsonText}[
Extension = .ttf,
UprightFont = *-Regular,
...]
```

Вы также можете объявить новую семейство шрифтов для использования в произвольных ситуациях:

```latex
\newfontfamily{\crimson}{CrimsonText}
[Extension = .ttf, UprightFont = *-Regular, ...]
{\crimson Этот текст использует шрифт CrimsonText}
```

#### Ресурсы

* Это [`fontspec` документация пакета](http://mirrors.ctan.org/macros/unicodetex/latex/fontspec/fontspec.pdf) обязательно к прочтению — оно не только содержит множество полезных примеров, но и много полезной справочной информации о шрифтах OpenType.
* Страница помощи Overleaf по [XeLaTeX](/latex/ru/shrifty/03-xelatex.md) содержит [подробный пример](/latex/ru/shrifty/03-xelatex.md#using-fonts-not-installed-on-overleaf27s-servers-google-fonts-example) показывающий, как загрузить шрифты OpenType из Google и настроить их с помощью `fontspec`.

**Примеры проектов**

В Overleaf Galley есть примеры проектов, демонстрирующие использование шрифтов OpenType с XeLaTeX или LuaLaTeX — вы можете открыть их и переключать компилятор между LuaLaTeX и XeLaTeX:

* [Использование шрифтов Google с XeLaTeX](https://www.overleaf.com/latex/templates/using-google-fonts-with-xelatex/xxkpcgfttjvd)
* [Использование шрифтов STIX2 OpenType с LuaLaTeX или XeLaTeX](https://www.overleaf.com/latex/templates/using-the-stix2-opentype-fonts-with-lualatex-or-xelatex/hdfvhzqmhnpx)

Следующая иллюстрация объединяет вывод, полученный в этих проектах:

![Примеры проектов Overleaf с использованием шрифтов Opentype](/files/f8460ac5659203cafe1e5c4f5f051ce6eaeb9c85)

## Основы шрифтов и компилятора LaTeX

### Расширения файлов шрифтов

В таблице ниже перечислены расширения файлов, используемые для обозначения различных типов (форматов) файлов шрифтов:

|                                                                                                                 |                   |
| --------------------------------------------------------------------------------------------------------------- | ----------------- |
| **Тип шрифта**                                                                                                  | **Расширение**    |
| [PostScript Type 1](https://en.wikipedia.org/wiki/PostScript_fonts#Type_1)$$\displaystyle{}^{\mathbf\*}$$       | `.pfb`            |
| [TrueType](https://en.wikipedia.org/wiki/TrueType)                                                              | `.ttf`            |
| [Коллекции TrueType](https://learn.microsoft.com/en-us/typography/opentype/otspec150/otff#truetype-collections) | `.ttc`            |
| [OpenType](https://learn.microsoft.com/en-us/typography/opentype/)                                              | `.otf` или `.ttf` |

$$\displaystyle{}^{\mathbf\*}$$ В январе 2023 года все приложения Adobe для создания и редактирования [прекратили поддержку устаревшего формата шрифтов Type 1](https://helpx.adobe.com/uk/fonts/kb/postscript-type-1-fonts-end-of-support.html).

Шрифты OpenType существуют в двух «разновидностях», часто называемых «вариантами»: PostScript-variant и TrueType-variant — названия отражают данные и механизм(ы), используемые для представления содержащихся в них очертаний символов (глифов). Именно поэтому у шрифтов OpenType есть два расширения файла: `.otf` или `.ttf` которые, по *соглашению*, означают:

* `*filename*.otf` — это шрифт OpenType в варианте PostScript
* `*filename*.ttf` — это шрифт OpenType в варианте TrueType

Например, pdfTeX предполагает, что расширение `.otf` обозначает шрифт OpenType в варианте PostScript.

* **Примечание**: `.ttc` расширение используется только для коллекций шрифтов TrueType.

### О расширении файла .ttf

Если у файла шрифта есть расширение `.ttf` , это может быть либо:

* старый шрифт TrueType (не OpenType), или
* шрифт OpenType, содержащий данные TrueType плюс дополнительные возможности, предоставляемые OpenType.

Определить, является ли данный `.ttf` файл шрифта OpenType или обычным TrueType, может быть непросто, и приложениям требуется исследовать внутренние структуры данных шрифта. Дополнительные сведения см. [это обсуждение (тред)](https://typedrawers.com/discussion/2945/determine-whether-a-font-file-is-opentype-format-or-truetype-format) или эту [статью Microsoft](https://learn.microsoft.com/en-us/typography/opentype/#why-is-my-opentype-font-listed-as-a-truetype-font-by-my-application).

### Форматы шрифтов и компиляторы LaTeX

Следующая таблица суммирует (основные) форматы шрифтов, поддерживаемые тремя компиляторами LaTeX (строго говоря, поддерживаемые базовыми движками TeX):

|                |                         |                                                          |                                                        |                                                 |
| -------------- | ----------------------- | -------------------------------------------------------- | ------------------------------------------------------ | ----------------------------------------------- |
| **Компилятор** | **PostScript (Type 1)** | **TrueType (обычный**$$\displaystyle{}^{\mathbf†}$$**)** | **OpenType (TrueType)**$$\displaystyle{}^{\mathbf\*}$$ | **OpenType (PostScript)**                       |
| pdfLaTeX       | Да                      | Да                                                       | Ограниченная$$\displaystyle{}^{\mathbf{\*\*}}$$        | Ограниченная$$\displaystyle{}^{\mathbf{\*\*}}$$ |
| XeLaTeX        | Да                      | Да                                                       | Да                                                     | Да                                              |
| LuaLaTeX       | Да                      | Да                                                       | Да                                                     | Да                                              |

$$\displaystyle{}^{\mathbf†}$$Под «обычным» мы понимаем шрифт TrueType, не содержащий дополнительных данных (таблиц), определённых спецификацией OpenType, а следовательно, лишённый более продвинутых возможностей верстки, присущих шрифтам OpenType в варианте TrueType.

$$\displaystyle{}^{\mathbf\*}$$pdfTeX обеспечивает ограниченную поддержку [Коллекции TrueType](https://learn.microsoft.com/en-us/typography/opentype/otspec150/otff#truetype-collections) (расширение `.ttc`) — он будет читать только данные для первого шрифта, содержащегося в коллекции.

$$\displaystyle{}^{\mathbf{\*\*}}$$«Ограниченная» поддержка OpenType в pdfTeX означает следующее:

* он не поддерживает расширенные возможности верстки, содержащиеся в шрифтах OpenType;
* он будет создавать подмножество шрифтов OpenType в варианте TrueType, но не шрифтов OpenType в варианте PostScript, которые должны встраиваться полностью. Отсутствие подмножеств шрифтов приводит к увеличению размера PDF-файлов и создаёт лицензионные проблемы с коммерческими шрифтами, которые обычно запрещают полное встраивание;
* он не может использовать более 256 символов на шрифт, тогда как отдельные шрифты OpenType поддерживают десятки тысяч;
* он требует создания метрик шрифтов TeX и других вспомогательных файлов (необходимых LaTeX) — процессы, которые выходят за рамки этой статьи (см. [Дополнительное чтение](#further-reading) ссылки на описания этих процессов).

## Дополнительное чтение

* [Как работает OpenType](https://simoncozens.github.io/fonts-and-layout/opentype.html) (Саймон Козенс).
* [Определить, является ли файл шрифта форматом OpenType или форматом TrueType](https://typedrawers.com/discussion/2945/determine-whether-a-font-file-is-opentype-format-or-truetype-format)— обсуждение трудности определения того, является ли данный `.ttf` обычным TrueType или OpenType в варианте TrueType.
* [Более пристальный взгляд на шрифты TrueType и pdfTeX](https://tug.org/TUGboat/tb30-1/tb94thanh.pdf)— статья TUGboat, написанная [Хан Тхе Тханем](https://tug.org/interviews/thanh.html), создателем [pdfTeX](https://www.tug.org/applications/pdftex/).
* [Структура каталогов для файлов TeX](https://tug.org/tds/tds.html), стандартная иерархия папок/каталогов для организации файлов, связанных с TeX.
* [Установка и использование шрифтов OpenType в LaTeX](https://www.tug.org/TUGboat/tb27-2/tb87owens.pdf)— статья TUGboat, объясняющая, как подготовить шрифты OpenType для использования с pdfLaTeX.
* [Как использовать шрифты TrueType с PdfTeX с помощью otftotfm?](https://tex.stackexchange.com/questions/52819/how-do-i-use-truetype-fonts-with-pdftex-using-otftotfm/52902#52902)— тема на tex.stackexchange с подробным примером.

### Примечание о «войнах шрифтов»...

1980-е и 1990-е годы ознаменовались так называемыми «войнами шрифтов», когда два конкурирующих формата шрифтов, PostScript Type 1 (от Adobe) и TrueType (созданный Apple, лицензированный Microsoft), боролись за превосходство — за сердца и умы всех пользователей, особенно дизайнеров и типографов. В конечном итоге [формат шрифтов OpenType](https://learn.microsoft.com/en-us/typography/opentype) появился (в 1997 году) как гибридное решение, объединяющее и расширяющее технологии шрифтов Adobe и Apple. OpenType основан на оригинальном формате файлов TrueType, чтобы обеспечить расширенные возможности верстки и лучшую поддержку Unicode благодаря шрифтам, содержащим более 65 000 очертаний символов (глифов).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ru/voprosy-i-otvety/58-i-have-a-custom-font-i-d-like-to-load-to-my-document.-how-can-i-do-this.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
