Introduction
I needed to create an updated font map for some work with dvipng/dvips and had to update psfonts.map
to contain the mapping between tfm/pfb files and the corresponding PostScript name for each font. To do that I wrote a tiny C program (a simple throw-away utility using FreeType) to extract the PostScript font name from the .pfb files. To save time I used “file globbing” so that the utility’s command line could use wildcards – e,g.,[path]\*.pfb
to list all Type 1 fonts in [path]. To use file globbing with Windows you need to link your code with an object file called setargv.obj
which takes care of the messy details and expands the wildcards on the command line. I use the now-ancient Visual Studio 2008 IDE (good enough for me!) and needed to add setargv.obj
as an additional project dependency under “Additional Dependencies” in the project settings for the linker. With that in place, the following ultra-simple program (no error checking!!) prints the font’s PostScript name and the full path name of the corresponding font file.
#include <stdio.h> #include <ft2build.h> #include FT_FREETYPE_H #include FT_GLYPH_H #include FT_OUTLINE_H int main(int argc, char ** argv) { FT_Library libfreetype; FT_Face ftface; int i; FT_Init_FreeType( &libfreetype ); for (i=1; i<argc; i++){ FT_New_Face( libfreetype, argv[i], 0, &ftface ); printf("%s %s\n", FT_Get_Postscript_Name(ftface), argv[i]); FT_Done_Face(ftface); } FT_Done_FreeType(libfreetype); return 0; }