Конвертировать определенные шрифты newtx в truetype или opentype

Конвертировать определенные шрифты newtx в truetype или opentype

Я обнаружил, что мне нравится пакет newtx, потому что он использует клон Helvetica для символов без засечек и клон Times для греческих букв. Как мне сгенерировать версии этих клонированных шрифтов opentype или truetype? Я хочу установить их как системные шрифты, чтобы другие приложения могли их использовать.

Когда я ищу файлы шрифтов, установленные с пакетом newtx, я вижу, что есть файлы определения шрифта (.fd), файлы метрик шрифта (.tfm и .afm), но есть только несколько файлов контура шрифта (.pfb). Я не могу найти файлы контура шрифта для 'ntxmi' (курсивный математический шрифт), 'ntxmia' (прямой математический шрифт) или 'ntxss' (шрифт без засечек). Где pdfLaTeX берет эти файлы контура шрифта? Когда они у меня есть, что мне с ними делать?

Если это имеет значение, у меня установлен Font Forge, но я не эксперт по его использованию.

решение1

Для этого шрифта нет контурного шрифта, это виртуальный шрифт, что означает, что по сути каждый «символ» представляет собой фрагмент кода DVI, объединяющий символы из других шрифтов, обычно (хотя и не обязательно) каждый из которых использует глиф из одного из составляющих шрифтов. (В особых случаях один символ в виртуальном шрифте может быть составлен из нескольких символов из, возможно, разных шрифтов.) Файл vf также кодирует сведения о интервалах и позиционировании.

Если вы посмотрите на PDF-файл, созданный с использованием виртуального шрифта, вы не увидите используемый виртуальный шрифт, а вместо этого увидите составляющие его шрифты (которые для этого шрифта, как правило, являются обычными контурными шрифтами).

Вы можете преобразовать файл vf в удобочитаемую форму списка свойств и просмотреть составляющие его шрифты с помощью

vftovp /usr/local/texlive/2013/texmf-dist/fonts/vf/public/newtx/ntxmia.vf

(Или любой другой эквивалентный путь в вашей системе)

Конечно, теоретически было бы возможно создать шрифт с помощью редактора шрифтов, например Font Forge, чтобы объединить компоненты и задать все необходимые настройки кернинга, но по сути это был бы новый проект по созданию шрифта, и существующий файл vf вряд ли в этом поможет.

решение2

Я не могу поместить это в комментарий, но вот часть вывода vftopl для ntxmia.vf:

Каждая из этих команд MAPFONT соответствует невиртуальному шрифту, использованному для создания этой:

(MAPFONT D 0
   (FONTNAME txmia)
   (FONTCHECKSUM O 4141071701)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 1
   (FONTNAME txsyc)
   (FONTCHECKSUM O 2224045220)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 2
   (FONTNAME txr)
   (FONTCHECKSUM O 32212676346)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 3
   (FONTNAME ntxexb)
   (FONTCHECKSUM O 624127613)
   (FONTAT R 0.833)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 4
   (FONTNAME rtxmio)
   (FONTCHECKSUM O 2235410564)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 5
   (FONTNAME ntxsyralt)
   (FONTCHECKSUM O 20635152700)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 6
   (FONTNAME txsyb)
   (FONTCHECKSUM O 24667272411)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 7
   (FONTNAME ptmr8r)
   (FONTCHECKSUM O 4767720433)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 8
   (FONTNAME zxxrl7z)
   (FONTCHECKSUM O 36463136262)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )

Итак, здесь используется 9 шрифтов. Тот, что помечен как 0, является основным, шрифтом по умолчанию. То есть, если не указано иное, символы берутся из txmia.

Вот персонаж, назначенный первому слоту (слот 0):

(CHARACTER O 0
   (CHARWD R 0.546)
   (CHARHT R 0.667999)
   (CHARIC R 0.05)
   (COMMENT
      (KRN O 177 R 0.035)
      )
   (MAP
      (MOVERIGHT R 0.02)
      (SETCHAR O 0)
      (MOVERIGHT R -0.03)
      )
   )

Это регулирует положение символа относительно его естественного положения в исходном шрифте. То есть, TeX немного сместится, прежде чем освободить место для символа, а затем немного сместится в другом направлении. (Что касается TeX, все символы представляют собой прямоугольные блоки.)

Вот персонаж из более позднего слота:

(CHARACTER C 6
   (CHARWD R 0.636)
   (CHARHT R 0.615)
   (CHARDP R 0.102)
   (MAP
      (SELECTFONT D 1)
      (SETCHAR C 1)
      )
   )

Инструкция SELECTFONT говорит, что этот символ следует брать не из txmia, а из txsyc.

Этот персонаж создан путем объединения двух предыдущих идей:

(CHARACTER O 100
   (CHARWD R 0.482)
   (CHARHT R 0.6925)
   (CHARDP R 0.013499)
   (CHARIC R -0.01)
   (COMMENT
      (KRN O 177 R 0.025)
      )
   (MAP
      (MOVERIGHT R -0.01)
      (SELECTFONT D 4)
      (SETCHAR O 100)
      (MOVERIGHT R -0.02)
      )
   )

На этот раз символ взят из rtxmio, но TeX также немного сместится до и после его установки (на этот раз дважды в одном и том же направлении).

Виртуальные шрифты также могут создавать совершенно новые символы, как объяснил Дэвид Карлайл. Например, если в шрифте отсутствует лигатура fi, вы можете создать ее, объединив ее f и i в соответствующем слоте виртуального шрифта. (Конечно, это не будет настоящей лигатурой — это будет просто f, за которой следует i — но это позволит легко набирать такие слова, как «рыба»).

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