pub enum Role {
Body,
Heading(u8),
Code,
Link,
Mark,
ListMarker,
QuoteGutter,
Rule,
Delimiter,
Image,
}Expand description
What a glyph is, typographically — the semantic role a frontend maps to its
own presentation. Mutually exclusive per glyph (a glyph is a heading, or a
link, or body text — not two at once); the compositional emphasis a run can
also carry lives in Style’s bold/italic/underline/strikethrough
flags alongside this.
Variants§
Body
Ordinary prose — the surface’s default text.
Heading(u8)
A heading of the given level (1 = top). A GUI scales the font by level; a terminal cycles a color by it.
Code
Code — inline `verbatim` or a fenced block. A GUI renders it in a
monospace family; a terminal tints it.
Link
A hyperlink’s visible text (or bare URL/email).
Mark
Highlighted / marked text (==mark==).
ListMarker
A list item’s bullet or number — synthetic decoration, not authored text.
QuoteGutter
A block quote’s gutter (│), drawn down its left edge.
Rule
A drawn rule: a thematic break (───) or a table’s borders. A GUI that
draws its own tables ignores the border glyphs; the rule still reaches it.
Delimiter
Raw markup a revealed line is showing: the * around an emphasis, the
# opening a heading, a link’s ](dest). Only ever emitted for the
caret’s line under MarkupMode::Full —
every other line resolves its markup away and has none of these.
A role rather than a Style flag because it is what the glyph is: the
delimiter of an emphasis is not itself emphasised text. A frontend
typically dims it, so the revealed line still reads as prose with its
scaffolding visible rather than as source code. One that doesn’t map it
draws it as body text, which is correct if unsubtle.
Image
A block-level image’s placeholder text (🖼 alt). The glyphs are a
default rendering any surface can paint as-is (a terminal shows the
label); an image-capable frontend skips the placeholder row named by the
map’s ImageInfo rows_span and paints the
real picture in its place — the same skip-the-picture contract
Role::Rule table borders use.