
Работает xelatex
(или lualatex
) на входе
\documentclass{standalone}
\usepackage{unicode-math}
\setmathfont[Ligatures=TeX]{texgyretermes-math.otf}
\begin{document}
\(\{f\}\)
\end{document}
должен производить некоторую форму
{ф}
в текстовом слое PDF. Но он производит
{ф}
с пробелом между f и }. Этого пробела там быть не должно. Как от него избавиться?
Что касается видимого результата, то вот он:
Как вы видите, левая фигурная скобка и f перекрываются в PDF. Однако, когда вы открываете шрифт с помощью fontforge и помещаете левую фигурную скобку с флорином в окно метрик, они не перекрываются! Вывод непоследователен. Что я упускаю? Как правильно увеличить кернинг раз и навсегда для вхождений "{ф"в моем огромном документе (который не является MWE)? Я пыталсяулучшить шрифт самостоятельно(разработчики ранее не реагировали на подобные просьбы), но пока это ни к чему не привело...
решение1
Пробел в "текстовом слое" PDF вставляется эвристикой вашего просмотрщика PDF, поскольку между f
и есть некоторое расстояние }
. В долгосрочной перспективе файлы PDF с тегами должны решить эту проблему, но, особенно, для математических формул я бы не стал придерживаться своей широты. Поэтому в краткосрочной перспективе вы либо указываете тексты замены для каждой математической формулы, используя eg, repltext
либо живете с этим пространством.
Относительно "непоследовательности" в FontForge: Знак флорина (U+0192) и математическая курсивная строчная буква f (U+1D453) не являются одним и тем же глифом. Сравнение обоих в FontForge показывает тот же внешний вид, что и в TeX:
(Математический курсив, сначала строчная буква F, затем флорин)
Но в целом я бы не рекомендовал использовать метрическое окно FontForge для вывода Math, потому что Math не форматируется так же, как обычный текст. Особенно "классический кернинг", как в этом случае, на самом деле не существует, потому что {
и f
являются отдельными объектами, а не частью слова.
Конечно, если вы предпочитаете знак флорина вместо математической f, вы можете использовать
\Umathcode`\f 7 0 "192
после \begin{document}
того, как LaTeX вставляет знак флорина вместо U+1D453 в математическом режиме для "f". Один недостаток в том, что текстовый слой также будет содержать знак флорина. Вы также можете вносить изменения U+1D453
непосредственно в FontForge.