bencium/bencium-marketplace3 files

UI Typography

>

Specification
Skill ID
bencium/bencium-marketplace/ui-typography
Publisher
bencium
Repository
bencium-marketplace
Installs
0
Files
3
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

bencium/bencium-marketplace/ui-typographyInstalls these files
  • SKILL.md
  • css-templates.md
  • html-entities.md

What this skill tells the agent

UI Typography Skill

Attribution

These rules are distilled from *Matthew Butterick's Practical Typography*** (https://practicaltypography.com). Butterick is a typographer, writer, and type designer whose work bridges professional typography and everyday digital writing. Thank you, Matthew, for making this knowledge accessible and encyclopedic. If you find this skill valuable, consider supporting his work directly.

Mode of Operation

These are permanent rules — not trends, not opinions. They come from centuries of typographic practice, validated by how the human eye reads. They do not go out of style.

ENFORCEMENT (default): When generating ANY UI with visible text, apply every rule automatically. Use correct HTML entities, proper CSS. Do not ask permission. Do not explain. Just produce correct typography.

AUDIT: When reviewing existing code or design, identify violations and provide before/after fixes.

Reference files (read when generating CSS or looking up entities):

  • references/css-templates.md — Full CSS baseline template, responsive patterns, OpenType features
  • references/html-entities.md — Complete entity table with all characters and codes

Characters

Quotes and Apostrophes — Always Curly

Straight quotes are typewriter artifacts. Use “ ” for double, ‘ ’ for single.

Apostrophes always point down — identical to closing single quote ’. Smart-quote engines wrongly insert opening quotes before decade abbreviations ('70s) and word-initial contractions ('n'). Fix with explicit ’.

The <q> tag auto-applies curly quotes when <html lang="en"> is set.

Hawaiian okina points upward — it's a letter, not an apostrophe. Use opening single quote or anglicize.

JSX/React Implementation Warning

Unicode escape sequences (`\u2019`, `\u201C`, etc.) do NOT work in JSX text content. They render as literal characters — the user sees \u2019 instead of a curly apostrophe. This is because JSX text between tags is treated as string literals by the transpiler, not as JavaScript expressions.

What fails:

{/* WRONG — renders literally as \u2019 */}
<p>Don\u2019t do this</p>

What works (pick one):

  1. Actual UTF-8 characters (preferred): Paste the real character directly into the source file. ``jsx <p>Don\u2019t do this</p> {/* This is the actual curly apostrophe character U+2019 */} ``
  1. JSX expression with string literal: Wrap in curly braces so the JS engine interprets the escape. ``jsx <p>Don{'\u2019'}t do this</p> ``
  1. HTML entity (HTML files only): Use &rsquo; — but this does NOT work in JSX/React.

For bulk fixes via CLI, use sed with raw UTF-8 bytes (not escape sequences):

CURLY=$(printf '\xe2\x80\x99')  # U+2019 RIGHT SINGLE QUOTATION MARK
sed -i '' "s/don't/don${CURLY}t/g" file.tsx

In JavaScript data arrays and string literals, \u2019 works correctly because the JS engine processes the escape. The bug only affects JSX text content between tags.

Dashes and Hyphens — Three Distinct Characters

CharacterHTMLUse
- (hyphen)-Compound words (cost-effective), line breaks
– (en dash)&ndash;Ranges (1–10), connections (Sarbanes–Oxley Act)
— (em dash)&mdash;Sentence breaks—like this

Never approximate with -- or ---. If you open with "from", pair with "to" not en dash. Hyphen for compound names (marriage); en dash for joint authorship. Em dash typically flush; add &thinsp; if crushed. No slash where en dash belongs. Hyphenate phrasal adjectives (five-dollar bills). No hyphen after -ly adverbs.

Ellipses — One Character

Use &hellip; (…), not three periods. Spaces before and after; use &nbsp; on the text-adjacent side. For interrupted dialogue, prefer em dash over ellipsis.

Math and Measurement

Use &times; for multiplication, &minus; for subtraction. Use + and = from keyboard. En dash is acceptable as simple minus. Dimensions: 8.5″ × 14″ uses &times;.

Foot and inch marks — the ONE exception to curly quotes. Must be STRAIGHT: &#39; for foot, &quot; for inch. Use &nbsp; between values: 6&#39;&nbsp;10&quot;.

Trademark and Copyright

Use real symbols: &copy; &trade; &reg;, never (c) (TM) (R). ™/® are superscripts, no space before. © is inline, followed by &nbsp; then year. "Copyright ©" is redundant — word OR symbol, not both.

Paragraph and Section Marks

&sect; (§) and &para; (¶) always followed by &nbsp;: &sect;&nbsp;1782. Spell out at sentence start. Double for plurals: &sect;&sect;.

Accented Characters

Proper names: accents are MANDATORY (François Truffaut, Plácido Domingo). Loanwords: check dictionary — some naturalized (naive), some not (cause célèbre).

Other Punctuation

  • Semicolons join independent clauses. Colons introduce completion. Don't mix them
  • Question marks: underused — simplify topic sentences with them
  • Exclamation points: overused — budget ONE per long document. Never multiple in a row
  • Ampersands: correct in proper names only. Write "and" in body text
  • Parentheses/brackets: do NOT adopt formatting of surrounded material
  • Emoticons/emoji: OK in email/Slack. Never in formal documents or professional UI copy

Spacing

One Space After Punctuation — Always

Exactly one space after any punctuation. Never two. Not debatable. Two spaces create rivers and disrupt text balance. The period already contains visual white space.

Nonbreaking Spaces

&nbsp; prevents line break. Use before numeric refs (&sect;&nbsp;42, Fig.&nbsp;3), after © (&copy;&nbsp;2025), after honorifics (Dr.&nbsp;Smith), between foot/inch values.

White-Space Characters

NeedTool
Space between wordsOne word space (spacebar)
Prevent line break&nbsp;
New line, same paragraph<br>
New paragraph<p> tags
New page (print)page-break-before: always
Suggest hyphenation point&shy;

Never hold spacebar. Never double carriage returns for spacing. Never tabs for indentation in output. HTML collapses all whitespace to single space (except &nbsp;).


Text Formatting

Bold and Italic

Rule 1: Bold OR italic. Mutually exclusive. Never combine. Rule 2: Use as little as possible. If everything is emphasized, nothing is.

Serif: italic for gentle, bold for strong. Sans serif: bold only — italic sans barely stands out. Never bold entire paragraphs. Never use quotation marks for emphasis.

Underlining — Never

Never underline in a document or UI. Typewriter workaround. Use bold or italic. For web links, use subtle styling: text-decoration-thickness: 1px; text-underline-offset: 2px.

All Caps — Less Than One Line, Always Letterspaced

Caps are harder to read (homogeneous rectangles vs varied lowercase contour). Suitable for short headings, labels, captions. ALWAYS add 5–12% letterspacing. ALWAYS ensure kerning is on. NEVER capitalize whole paragraphs. letter-spacing: 0.06em in CSS.

Small Caps — Real Only

Never fake (scaled-down regular caps). Use font-variant-caps: small-caps with fonts that have real small caps (OpenType smcp). System fonts lack them. Add letterspacing + kerning.

Point Size

Print: 10–12pt. Web: 15–25px. The 12pt default is a typewriter relic. Half-point differences matter. Use smallest increment for emphasis. Use clamp() for fluid web sizing.

Letterspacing

5–12% extra on ALL CAPS and small caps. Nothing on lowercase. Never spread so far apart that letters could fit in the gaps. CSS: letter-spacing: 0.05em to 0.12em.

Kerning — Always On

No exceptions. font-feature-settings: "kern" 1; text-rendering: optimizeLegibility;

Ligatures

Mandatory only when fi/fl visually collide. Check bold and italic too. Otherwise optional.

Use this skill in a project

Open any RiverX project, search the Skills panel for bencium/bencium-marketplace/ui-typography, and install it in one click.

Use this skill