Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Font metrics for the "base 14" fonts in the PDF specification

I've been writing software to parse content from PDFs, specifically text broken into regions. For this I need font metrics such as glyph displacements, font-wide ascent, descent and glyph bounding box, etc. In short, the type of metrics that should be available in the FontDescriptor dictionary of a font definition in a PDF.

Unfortunately a FontDescriptor doesn't have to be included for fonts whose base font is one of the "base 14" set of standard fonts.

Where can I find or how can I generate font metrics for the base 14 fonts?

like image 705
Karl Jonathan Ward Avatar asked Jun 17 '11 08:06

Karl Jonathan Ward


People also ask

What is a base 14 font?

Zapf Dingbats is a font containing a collection of ornamental typographic elements. For example; arrows, stars, flowers, office symbols, etc. The Base 14 Fonts are also referred to as “Standard 14 Fonts”, “Standard Type 1 Fonts”, or “Standard Fonts”.

What is the standard PDF font?

The 14 standard PDF fonts are Courier (Regular, Oblique, Bold, Bold Oblique), Helvetica (Regular, Oblique, Bold, Bold Oblique), Times (Roman, Italic, Bold, Bold Italic), Symbol, and ITC Zapf Dingbats. Fonts included with Adobe Cloud subscriptions.


2 Answers

On Linux (and probably on Mac OS X too) you can easily use the font2afm script which creates font metrics files from PostScript or TrueType fonts (.pfa, .pfb, .ttf, .otf).

If you don't have the original Base 14 available, you can use the clones provided by Ghostscript. These clones may use completely different font names, but they can only be clones by using the very same metrics for each glyph.

Here is a Ghostscript commandline, that lists you all the base 14 fontnames:

Windows:

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

Linux/Unix/Mac:

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

In recent versions of Ghostscript, the filenames for cloned fonts usually match the clone's fontname. Older GS versions may have used more cryptic nameing conventions. Here is the list of fontname mappings to the cloned fonts:

+===============+========================+==========================+
| 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             |
+---------------+------------------------+--------------------------+

You can download the Ghostscript fonts from many places on the 'net (f.e. from here). Then run f.e. this command:

font2afm StandardSymL.ttf

and the resulting file, StandardSymL.afm should contain the font metrics for the Symbol font in standard .afm format....

like image 60
Kurt Pfeifle Avatar answered Oct 25 '22 15:10

Kurt Pfeifle


I'm sure those font metrics are widely available. For instance, in my Ubuntu they're in /usr/share/fonts/type1/gsfonts/ -- maybe you don't recognize some of the font names, but they're metrically compatible to Helvetica etc.

like image 31
Kerrek SB Avatar answered Oct 25 '22 16:10

Kerrek SB