Typography test — every garnish on the dog

A self-referential test. If something here looks wrong, the layout or theme needs attention. This is the heading the author chose to display on the page; the template never injects one.

Section heading (h2)

A normal paragraph. Here is some bold, some italic, some both at once, a little strikethrough, and inline code for measure. An external link and an autolink: https://example.com. A footnote reference1 for good luck.

A second paragraph, to make sure paragraphs space themselves apart without help. Suspendisse potenti. Etiam vitae tortor a felis ultricies mollis. Donec ut leo nec velit interdum facilisis.

Subsection heading (h3)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat volutpat. Mauris ac justo vel velit cursus aliquet a quis nibh.

Deeper (h4)

Deeper still (h5)
Deepest standard heading (h6)

Lists

Unordered:

  • A first item.
  • A second item.
    • With a nested item.
      • And one nested further.
  • A third item, back at the top level.

Ordered:

  1. First.
  2. Second.
  3. Third, with a link inside.

Mixed:

  1. Ordered item
    • Unordered nested
    • Another nested
  2. Back to ordered

Task list:

  • Done thing
  • Another done thing
  • Not-yet thing
  • Also not yet

Blockquotes

A single blockquote. Should read as quoted, not just indented.

A blockquote with two paragraphs.

The second paragraph still belongs to the quote.

A nested blockquote inside the second.

A quote with an attribution. The last paragraph starts with a dash, so it moves out of the quote and sits under it, upright.

— Hot Dog, On the Nature of Buns

A short one, attributed after a hard break at the end of the line.

— Relish

An attribution long enough to wrap, so the hanging dash shows.

— A Condiment Philosopher of Some Renown, Collected Lectures on Mustard, Ketchup, and the Ethics of Sauerkraut, Volume II

Code

Inline code like npm install should be visually distinct from prose.

A fenced code block with a language tag:

function greet(name) {
  return `Hello, ${name}!`;
}
greet('hotdog');

A second one, longer, for measure:

type Order = {
  dog: 'classic' | 'chili' | 'kraut';
  bun: 'plain' | 'pretzel' | 'brioche';
  toppings: string[];
};

const order: Order = {
  dog: 'chili',
  bun: 'pretzel',
  toppings: ['mustard', 'onions'],
};

// Line-wrapping behavior matters here. This is a deliberately long comment that should wrap or scroll depending on what the theme decides.

Table

Topping Sodium Universally agreed?
Mustard low yes
Ketchup mid debated
Relish low regional
Sauerkraut high regional
Chili high yes

Horizontal rule

Above the rule.


Below the rule. The rule should be distinct, not just empty space.

Video embed

A click-to-load <video-embed>. Nothing should load from YouTube until the play button is pressed; before that, this is a local facade card styled by the site’s own tokens. With JavaScript off, only the fallback link inside the element should show.

Watch "reciting ancient roman graffiti" on YouTube

The thumbnail above is self-hosted: the build fetched it once into this post’s own folder (where it’s committed to git) and wired it into the page. Visitors get the image from this site, never from YouTube’s CDN — a live fetch there would tell Google who’s reading before anyone opted in, which is the whole thing this element exists to prevent.

Closing

End of file. If anything here looks off — line length, heading rhythm, code-block contrast, table borders, list indentation — that’s the theme’s job to fix when we get there.

[!note] Not an addendum Other callout types aren’t built yet, so this stays a plain quote.

Footnotes

  1. This is a footnote. If footnotes render at the bottom with a return link, the markdown processor’s footnote extension is on. ↩

Keyboard shortcuts

f
Focus: hide everything but the post
j or →
Next post (or day)
k or ←
Previous post (or day)
/
Search
g h
Go home
g a
Go to archive
g t
Go to tags
g s
Go to search
g r
Random post
g d
On this day
?
Show this help
Esc
Close this help, or leave focus