Changing style in the middle of a paragraph

Most text in a real document is not one style from end to end. A sentence has a bold term, a total is underlined, a footnote marker is smaller than the words around it. The usual workaround is to cut the sentence into pieces and place each one after the last — which holds until the text is translated and the pieces no longer add up to the same width.

Here the sentence stays one sentence and changes style inside itself, so it can be translated without anybody putting the pieces back in order. A line grows as tall as the tallest thing standing on it, so a big word in a small paragraph opens up its own line and leaves the others alone. And an underline drawn at a fixed distance below the words cuts through the tails of the g and the p in one font and floats miles below them in the next, so here each one is placed where that font says its own underline belongs.

What this example shows

  • Size, colour and underline changing inside one sentence.
  • A line growing as tall as the tallest word standing on it.
  • Underlines placed where the font itself says they belong.

The source code, complete

Nothing is left out and nothing is simplified: this is the program exactly as it runs, for the developer who uses this library. The third is the description itself: a plain list of what the page has to say, which is what the service is sent.

Read the Rust source Read the Python source Read the JSON source

The document itself

Open the document in English Open the document in French

Changing style in the middle of a paragraph, first page

Optimised, this document weighs 12.7 kB — at least 85 % lighter than most PDF generators would write it

The document is lighter than it was, and every page still looks exactly the same. See this document's row in the table of every example.

Examples near this one

Breaking an overlong word

A word longer than the column that holds it: the library leaves it whole, or cuts it at the column's edge.

Break points after a slash or a hyphen

A justified column set twice: file paths and compounds running past the edge with no break points, then wrapping where a break after a slash or a hyphen is allowed.

A font behind the font

One line of statuses set twice: in a company font alone, where the characters it has no glyph for come out as empty boxes, then with a second font behind it that draws them.

Every example, by subject