What Is PostScript and How Does It Relate to Fonts and Unicode?
Updated
PostScript is a page description language: a program that tells a printer or renderer how to draw a page, including the shapes of every glyph. It matters for fonts because PostScript introduced outline-based font formats (notably Type 1) and a device-independent way to print text and graphics. It is not a character encoding, so it does not compete with Unicode — Unicode says which character a code point represents, while PostScript describes how to paint shapes on a page. The two meet when a Unicode-encoded document is rendered with PostScript-flavored fonts or sent to a PostScript printer.
What PostScript actually does
A PostScript file is executable: the interpreter reads commands such as "move to this coordinate, draw this curve, fill it." Text is drawn by selecting a font, mapping character codes to glyph names, and painting the glyph outlines.
Key consequences:
- Device independence. The same file can target different resolutions because coordinates are expressed in abstract units (typically 1/72 inch, a "point").
- Outlines, not bitmaps. Glyphs are stored as curves, so they scale cleanly. This is the core reason PostScript-era fonts look sharp at any size.
- Two layers. The language handles page layout and graphics; fonts supply the glyph programs. A missing or mismatched font breaks output even if the PostScript itself is valid.
Fonts in the PostScript workflow
The classic PostScript font format is Type 1, which stores glyphs as encrypted charstrings plus hinting information for small sizes. Later formats (Type 3, Type 42/TrueType wrapping, and OpenType with CFF outlines) also plug into PostScript printing pipelines.
| Concern | What to check |
|---|---|
| Glyph coverage | Does the font contain the characters your text uses? |
| Encoding | Are character codes mapped to the right glyph names? |
| Embedding | Will the printer or PDF workflow accept the font? |
| Licensing | Does the font's license permit embedding? |
For a concrete task: if you are preparing a document for a print shop that requires PostScript-compatible output, you need fonts whose outlines the RIP can interpret and whose embedding rights allow distribution. A font that renders fine on screen can still fail at the printer if it is bitmap-only or if embedding is restricted.
PostScript vs. Unicode fonts such as GNU Unifont
These solve different problems, and conflating them causes most confusion.
- Unicode is a character set and encoding standard. It assigns code points (for example, U+0041 for "A") and defines properties, but says nothing about drawing.
- GNU Unifont, per Unifoundry, is a bitmap font project providing a glyph for every printable code point in the Unicode Basic Multilingual Plane (BMP). The site notes that as of 20 June 2008 the font covered Unicode 5.1, the then-current version, culminating an effort begun by Roman Czyborra in 1998.
- PostScript is the drawing/printing layer. A bitmap font like Unifont is not a PostScript outline font; using it in a PostScript workflow generally means converting or wrapping it, and bitmap glyphs do not scale the way Type 1 outlines do.
So the practical distinction: Unicode answers "which character is this?"; PostScript answers "how do I draw and print it?" A font can be Unicode-complete and still be unsuitable for high-quality PostScript printing if it is bitmap-based.
When you need PostScript-compatible fonts
You need to convert or choose PostScript-compatible formats when:
- Sending files to a commercial printer or a PostScript RIP.
- Producing PDFs where fonts must embed as outlines or CFF.
- Using older publishing software that expects Type 1 fonts.
Common tool categories (verify current capabilities before relying on them):
- FontForge — converts between outline formats and can generate PostScript-flavored output; Unifoundry lists FontForge among its related resources.
- Ghostscript — interprets and renders PostScript/PDF.
- Font conversion utilities — for moving between TrueType, OpenType/CFF, and Type 1.
For bitmap fonts like Unifont, conversion to outlines is possible but changes the look: pixel edges become curves, and you must decide whether to keep the blocky aesthetic or smooth it.
Common failure points
- Missing glyphs. The document uses characters the font lacks; the renderer substitutes or drops them. Check coverage against your actual text, not just the script.
- Encoding mismatch. Codes map to wrong glyph names, producing garbled output. Confirm the font's encoding matches what the document assumes.
- Embedding restrictions. The license forbids embedding, or the workflow refuses the format. Unifoundry states its precompiled fonts are under GNU GPL v2 or later, with the exception that embedding a font in a document does not by itself bind that document to the GPL — read the specific license before distributing.
- Bitmap-in-outline pipeline. A bitmap font passed to an outline-only RIP fails or degrades. Convert deliberately and inspect the result.
- Font not found at print time. The printer lacks the font and no embedding was done; output falls back to a default.
Bottom line
Use PostScript thinking when your goal is printing and drawing: choose outline fonts, confirm embedding rights, and test the actual output path. Use Unicode thinking when your goal is character coverage: verify the font contains the code points your text needs. GNU Unifont is a strong answer to the coverage question for BMP scripts, but it is a bitmap font, so treat any PostScript use as a conversion decision rather than a drop-in.