A backup face for the rarer signs

Chain several faces together: each character is drawn by the first one in the list that has a shape for it.

Written at the top level of a request, under "font_chains"

In plain words

Written for anybody. It says what this puts on a sheet of paper, and asks nothing of you beyond that.

No typeface holds every sign in the world. A handsome text face may well know nothing of the Greek alphabet, of an ideogram, or of a rarer currency symbol. Rather than leave a hole, several typefaces are lined up: the first draws what it knows how to draw, and for the rest the next one takes over. The reader sees a complete text.

For a developer

Written for somebody who writes the calling program: the model, the units, and the settings that carry the weight.

font_chains declares a font made of several others, under its own name: a character is drawn by the first font of the chain that carries a shape for it. Each font in the chain stays usable as it is elsewhere. Links are looked for among the embedded fonts, the client's, the library's, and among the fonts the request declares itself: the fourteen normalised faces, the Type 1 programs, the drawn letters.

Every key, with its default

The reference: which keys are required, which are optional, what each one defaults to and which combinations the server declines.

  • font_chains — array, optional, empty by default.
  • font_chains[].name — string, required. The name items set text in the chain by.
  • font_chains[].faces — array of strings, required, at least two names. The fonts it is made of, in the order a character is offered to them. A chain of one name is refused.

A link names an embedded font, a client font, a library font, or a font the request declares: standard_fonts, type1_fonts, type3_fonts. The fonts a request declares are loaded before the chains, so a chain can lean on them.

A whole request that draws it

Post this as it stands and a PDF comes back. Nothing has been left out of it.

{
  "standard_fonts": [
    { "name": "sans", "face": "helvetica" },
    { "name": "signs", "face": "symbol" }
  ],
  "font_chains": [
    { "name": "text_and_signs", "faces": ["sans", "signs"] }
  ],
  "items": [
    {
      "type": "text",
      "rect": { "llx": 60, "lly": 740, "urx": 535, "ury": 765 },
      "content": ["Angle α = 30 degrees"],
      "font": "text_and_signs",
      "font_size": 14
    }
  ]
}

The line that sends it, in three languages

The lettering

Carrying a font inside the document The older Type 1 font programs The fourteen faces every reader owns The typographic niceties of a face A face whose letters you draw yourself

Where to go next

Every key of a request, in one page The other thirty-two settings of a request

See the prices See the examples

Glossary

PDF library
A piece of software your own programs use to write PDF documents. It has no window and no buttons: your program tells it what to draw, and it hands the finished file back. This site also calls it the engine, which is the same thing under another name. The server is a second program that holds the engine and answers whoever asks it for a document over the network, and the rendering service is that server running on our machines rather than on yours.
font
The drawing of every letter, digit and mark a document writes, held in a file of its own. A PDF carries the fonts it is set in inside itself, which is why it opens looking the same on a machine that has never had them. Leave them out and a reader puts another font in their place, and the layout moves.
request
One call to the service: you send what the document should say, and get the document back. Your bill counts these calls, one for each document. The number of pages inside a document is never counted.
Type 1 font
The older shape a typeface file comes in, still used where a particular cut of a typeface only ever existed that way. A document carries the file as it was supplied.

Every word the site explains