Пакет fontspec - Управление кодировками шрифтов в XeLaTeX
Полное руководство по пакету fontspec для XeLaTeX и LuaLaTeX
Categories:
Введение в fontspec
Пакет fontspec
предоставляет мощную систему выбора и настройки шрифтов для движков XeTeX и LuaTeX. Он заменяет традиционный подход с использованием fontenc
и inputenc
, предлагая прямую работу со шрифтами системы через Unicode.
Основные возможности
- Доступ к любым системным шрифтам (OTF, TTF)
- Полная поддержка Unicode
- Гибкое управление начертаниями шрифтов
- Настройка параметров шрифтов
- Работа с OpenType-функциями
Установка и загрузка
\usepackage{fontspec} % В преамбуле документа
Основные команды
1. Установка основного шрифта
\setmainfont{<название шрифта>}[<опции>]
Пример:
\setmainfont{TeX Gyre Termes}[
Path = /usr/local/texlive/texmf-local/fonts/opentype/,
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic
]
2. Установка моноширинного шрифта
\setmonofont{<название шрифта>}[<опции>]
3. Установка шрифта без засечек
\setsansfont{<название шрифта>}[<опции>]
4. Временное изменение шрифта
\newfontfamily\<команда>{<название шрифта>}[<опции>]
Пример:
\newfontfamily\cyrillicfont{PT Serif}
\newfontfamily\cyrillicfontsf{PT Sans}
\newfontfamily\cyrillicfonttt{PT Mono}
Основные опции шрифтов
Пути и файлы
Опция | Описание |
---|---|
Path |
Путь к файлам шрифтов |
Extension |
Расширение файлов |
UprightFont |
Обычное начертание |
BoldFont |
Полужирное начертание |
ItalicFont |
Курсивное начертание |
BoldItalicFont |
Полужирный курсив |
Характеристики шрифта
Опция | Описание |
---|---|
Ligatures |
Управление лигатурами |
Numbers |
Стиль цифр |
Scale |
Масштабирование |
Color |
Цвет шрифта |
WordSpace |
Межсловные пробелы |
OpenType-функции
Опция | Описание |
---|---|
Renderer |
Рендерер (Basic/Node) |
Script |
Скрипт (Cyrillic, Latin и др.) |
Language |
Язык |
FeatureFile |
Файл с OpenType-фичами |
Примеры конфигураций
Базовая настройка для русского/английского
\usepackage{polyglossia}
\setmainlanguage{russian}
\setotherlanguage{english}
\setmainfont{PT Serif}[
Ligatures=TeX,
Extension=.ttf,
UprightFont=*-Regular,
BoldFont=*-Bold,
ItalicFont=*-Italic,
BoldItalicFont=*-BoldItalic
]
\setsansfont{PT Sans}[
Ligatures=TeX,
Extension=.ttf,
UprightFont=*-Regular,
BoldFont=*-Bold,
ItalicFont=*-Italic,
BoldItalicFont=*-BoldItalic
]
\setmonofont{PT Mono}[
Scale=0.9,
Extension=.ttf,
UprightFont=*-Regular
]
Использование разных шрифтов для разных языков
\usepackage{polyglossia}
\setdefaultlanguage{russian}
\setotherlanguage{english}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{EB Garamond}[
Language=English,
Script=Latin
]
\newfontfamily\cyrillicfont{PT Serif}[
Language=Russian,
Script=Cyrillic
]
OpenType-фичи
Включение дополнительных возможностей
\setmainfont{Some Font}[
RawFeature={
+ss01; % Альтернативные глифы
+onum; % Старостильные цифры
+frac; % Дроби
+c2sc; % Капитель из прописных
}
]
Доступные OpenType-фичи
+liga
- стандартные лигатуры+dlig
- декоративные лигатуры+tnum
- табличные цифры+pnum
- пропорциональные цифры+smcp
- капитель из строчных+c2sc
- капитель из прописных+frac
- дроби+ss01
-+ss20
- альтернативные наборы глифов
Работа с математическими шрифтами
\usepackage{unicode-math} % Должен загружаться после fontspec
\setmathfont{TeX Gyre Termes Math}
\setmathfont{XITS Math}[range={\mathcal,\mathbfcal}]
\setmathfont{STIX Two Math}[range={\mathscr}]
Продвинутые техники
Динамическое изменение шрифтов
\newfontfamily\headfont{Helvetica Neue}[Scale=1.2]
\newcommand{\heading}[1]{{\headfont\Large #1}}
Использование символов за пределами Unicode BMP
\newfontface\emojifont{Segoe UI Emoji}[Renderer=Harfbuzz]
\newcommand{\showemoji}[1]{{\emojifont #1}}
Вертикальное выравнивание
\newfontfamily\vertfont{SomeFont}[Vertical=RotatedGlyphs]
Решение проблем
Шрифт не находится
\setmainfont{Arial}[
Path=/Users/username/Library/Fonts/,
Extension=.ttf
]
Конфликты кодировок
\usepackage{fontspec}
% Не загружать fontenc или inputenc!
Проблемы с переносами
\usepackage{polyglossia}
\setmainlanguage{russian}
\setmainfont{Some Font}[Language=Russian]
Заключение
Пакет fontspec
предоставляет:
- Полный доступ к системным шрифтам
- Гибкую систему настройки шрифтов
- Поддержку современных OpenType-возможностей
- Удобную работу с многоязычными документами
- Интеграцию с математическими шрифтами через
unicode-math
Для максимальной эффективности используйте fontspec
в сочетании с:
polyglossia
для языковой поддержкиunicode-math
для математических шрифтовmicrotype
для улучшенной типографики