PeachPDF prefers a font's real OpenType GSUB substitution for font-variant-caps and font-variant-numeric, falling back to a synthesized approximation only where the standard specifically allows one.
Source Sans 3 has real smcp/c2sc/titl data, so its small-caps/all-small-caps/titling-caps below use actual substituted glyphs and the text stays a single run. Source Code Pro has none of those features, so the same CSS instead synthesizes small-caps/all-small-caps by upper-casing and shrinking the affected letters - petite-caps/unicase never synthesize, so on a font that lacks them (both bundled fonts here) they render identically to normal text.
| font-variant-caps | Source Sans 3 (real GSUB) | Source Code Pro (synthesized/none) |
|---|---|---|
| small-caps | Hello World | Hello World |
| all-small-caps | Hello World | Hello World |
| titling-caps | Hello World | Hello World |
| petite-caps | Hello World | Hello World |
Source Sans 3 has real onum/tnum/zero data - oldstyle figures use lowercase-height/descending forms instead of the default lining figures, tabular figures fix every digit to the same advance width for column alignment, and slashed-zero adds a distinguishing slash through the digit 0.
| font-variant-numeric | Sample |
|---|---|
| normal (lining, default) | 1234567890 |
| oldstyle-nums | 1234567890 |
| tabular-nums | 1234567890 |
| slashed-zero | 1002000 |