A vectorization utility, converts black and white raster images to PostScript. Needed for the preparation of music fonts for the roemer engine.

This is an example input for pbm2glyph, designed in gimp for this showcase. But you can obtain similar raster images from a black and white scanner. A higher resolution is generally advisable, 600 DPI should be fine.

The first processing step is to read the bitmap and convert it to straight lines. This step is completely lossless, all information in the image is preserved. This is exactly what you get if you call pbm2glyph with the --pixels option.

In the second step, all short lines (shorter than 2.5 pixels) are collapsed to their midpoints. The result is already quite an improvement. If this is good enough for you, give the option --straight to pbm2glyph. The output then uses the PostScript command lineto for straight lines.

In default mode, pbm2glyph proceeds to make some cubic bezier curves with a try and error algorithm. It repeatedly tries to join neighbouring lines to curves with as small an error as possible. The output uses the PostScript command curveto.

With the option --debug, pbm2glyph produces line graphics with red dots for the end points of segments, like above.

In the end, the EPS output from pbm2glyph looks somewhat like below. Because it is standard PostScript, you can use ghostview to look at it, or you can send it directly to your laser printer. If you're curious how the PostScript can be turned back into raster graphics most easily, have a look at glyph2pgm.

%!PS-Adobe-2.0 EPSF-2.0
%%Name: minim
%%BoundingBox: -66 -50 66 50
-34.62 -34.62 moveto
1 -33.98 36.66 -3.17 34.62 34.62 curveto
-1 33.98 -36.66 3.17 -34.62 -34.62 curveto
-42.3 -38.46 moveto
-69.91 -21.26 -67.22 21.04 -42.3 38.46 curveto
-15.98 49.96 15.89 49.47 42.3 38.46 curveto
67.22 21.04 69.91 -21.26 42.3 -38.46 curveto
15.98 -49.96 -15.89 -49.47 -42.3 -38.46 curveto