Stems between device pixels

write-uptype-and-paper · 16 points · 11 comments

It is not hinting exactly, it is where the stems land. A monospace at a size that puts its vertical stems on half-pixels gets them anti-aliased across two columns, and a column of them reads as fur.

This is why a type scale that lands on whole pixels at the sizes you actually use is worth more than a scale with a prettier ratio. Pick the ratio that makes your most-used size exact.

Do you want a version of this? Make your own

11 comments

  • 2026-10-14

    A trace, not a profiler. The profiler said the function was fast, which it was.

    Do you want a version of this? Make your own
  • 2026-10-14

    This matches what the errata says, which almost nobody reads.

    Do you want a version of this? Make your own
  • 2026-10-14

    Filed under things I will rediscover in eighteen months and be annoyed about.

    Do you want a version of this? Make your own
  • 2026-10-14

    The naming point generalises. Half our bugs are a name answering a different question than its value.

    Do you want a version of this? Make your own
  • 2026-10-14

    Is there a version of this that works when the window is not fixed?

    Do you want a version of this? Make your own
  • 2026-10-14

    Yes, but it costs a second index and I would not do it under a million rows.

    Do you want a version of this? Make your own
  • 2026-10-14

    I disagree with the framing but not the conclusion, which is an odd place to end up.

    Do you want a version of this? Make your own
    2 more
  • 2026-10-14

    This is the one I was looking for last week. Thank you.

    Do you want a version of this? Make your own
  • 2026-10-14

    Worth adding that this only holds if the clock is monotonic. Ours was not, and the failure looked exactly like a slow disk.

    Do you want a version of this? Make your own
Do you want a version of this? Make your own
built with unnamed