Метрики шрифта для шрифтов "base 14" в спецификации PDF

Я пишу программное обеспечение для анализа содержимого из PDF файлов, в частности, текст разбит на регионы. Для этого мне нужны метрики шрифта, такие как смещения глифов, ограничивающие рамки шрифта, спуска и глифа и т.д. Короче говоря, тип метрик, который должен быть доступен в словаре FontDescriptor определения шрифта в PDF.

К сожалению, FontDescriptor не обязательно должен быть включен для шрифтов, базовый шрифт которых является одним из стандартных стандартных шрифтов "base 14".

Где я могу найти или как я могу сгенерировать метрики шрифта для базовых 14 шрифтов?

Ответ 1

В Linux (и, возможно, в Mac OS X) вы можете легко использовать font2afm script, который создает файлы метрик шрифтов из шрифтов PostScript или TrueType (.pfa,.pfb,.ttf,.otf).

Если у вас нет исходной базы 14, вы можете использовать клоны, предоставленные Ghostscript. Эти клоны могут использовать совершенно разные имена шрифтов, но они могут быть только клонами, используя одни и те же показатели для каждого символа.

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

Окна:

gswin32c.exe -q -dNODISPLAY -dSAFER -c "systemdict /.standardfonts get == quit"

Linux/Unix/Mac:

gs -q -dNODISPLAY -dSAFER -c "systemdict /.standardfonts get == quit"

В последних версиях Ghostscript имена файлов для клонированных шрифтов обычно соответствуют имени клона. Предыдущие версии GS, возможно, использовали более критические соглашения об именах. Ниже приведен список сопоставлений имен шрифтов с клонированными шрифтами:

+===============+========================+==========================+
| Base 14 name  | Ghostscript name       | Font filename (older GS) |
+===============+========================+==========================+
| Courier       |                        |                          |
|    standard   | NimbusMonL-Regu        | n022003l.pfb             |
|    bold       | NimbusMonL-Bold        | n022004l.pfb             |
|    italic     | NimbusMonL-ReguObli    | n022023l.pfb             |
|    bolditalic | NimbusMonL-BoldObli    | n022024l.pfb             |
+---------------+------------------------+--------------------------+
| Helvetica     |                        |                          |
|    standard   | NimbusSanL-Regu        | n019003l.pfb             |
|    bold       | NimbusSanL-Bold        | n019004l.pfb             |
|    italic     | NimbusSanL-ReguItal    | n019023l.pfb             |
|    bolditalic | NimbusSanL-BoldItal    | n019024l.pfb             |
+---------------+------------------------+--------------------------+
| Times-Roman   |                        |                          |
|    standard   | NimbusRomNo9L-Regu     | n021003l.pfb             |
|    bold       | NimbusRomNo9L-Medi     | n021004l.pfb             |
|    italic     | NimbusRomNo9L-ReguItal | n021023l.pfb             |
|    bolditalic | NimbusRomNo9L-MediItal | n021024l.pfb             |
+---------------+------------------------+--------------------------+
| Symbol        | StandardSymL           | s050000l.pfb             |
+---------------+------------------------+--------------------------+
| ZapfDingbats  | Dingbats               | d050000l.pfb             |
+---------------+------------------------+--------------------------+

Вы можете загрузить шрифты Ghostscript из многих мест в сети (f.e. from здесь). Затем запустите f.e. эта команда:

font2afm StandardSymL.ttf

и полученный файл StandardSymL.afm должен содержать метрики шрифта для шрифта Symbol в стандартном формате .afm....

Ответ 3

Я уверен, что эти метрики шрифтов широко доступны. Например, в моем Ubuntu они находятся в /usr/share/fonts/type1/gsfonts/ - возможно, вы не узнаете некоторые имена шрифтов, но они метрически совместимы с Helvetica и т.д.