Ошибочный текстовый слой. Несоответствие между кернингом в fontforge и в {xe|lua}latex

Ошибочный текстовый слой. Несоответствие между кернингом в fontforge и в {xe|lua}latex

Работает 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.

Связанный контент