STM publishing: tools, technologies and change A WordPress site for STM Publishing


Tip: PCRE, how to fix the stack overflow problem (Windows)

Posted by Graham Douglas

I kept hitting a stack overflow problem when using the PCRE regular expression C library under windows. To fix it, put the following line in PCRE's config.h to tell it not to use recursion but to use the heap instead.

#define NO_RECURSE 1

Worked for me.


Minimal FreeType program to dump PostScript font names (with file globbing)

Posted by Graham Douglas


I needed to create an updated font map for some work with dvipng/dvips and had to update 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]);

    return 0;


Random test of a neat widget

Posted by Graham Douglas

Large Visitor Globe

And finally: Funky effects with multiple words and vowel placement!

Posted by Graham Douglas

(You'll need to download the PDF or zoom in with the Google PDF viewer). Just to complete the work: "funky effects" with multiple words and vowel positioning according to OpenType mark-to-base rules in the font.

Download PDF


Xpost: New open source PostScript interpreter being developed

Posted by Graham Douglas

Just a brief post to note that a new PostScript interpreter, called Xpost, is being developed. For details see announcement on Google Groups. Definitely one I shall be following.


Quick tip: Decompressing PDFs for Debugging

Posted by Graham Douglas

If you are creating special effects in PDFs (e.g., using pdfTeX's \pdfliteral{...} or via \special{...}) it can be extremely helpful to see the raw PDF code being output by your code/macros etc – especially when debugging! Often, by default, PDF content streams are compressed/encoded into binary data which makes it extremely difficult to access the raw PDF data/content. However, you can use the recently released free community version of Coherent's excellent command-line PDF manipulation software to decompress the binary data into plain text. It's as simple as:

cpdf -decompress compressedfile.pdf -o decompressedfile.pdf

cpdf has a wealth of other interesting command-line options too.