# `HtmlToMarkdown.TextAnnotation`

A styling or semantic annotation that applies to a byte range within a node's text.

Unlike [`DocumentNode`], which captures block-level structure (headings, paragraphs, etc.),
a `TextAnnotation` describes inline-level markup — bold, italic, links, code spans, and
similar — that spans a contiguous run of bytes inside `DocumentNode::content`'s text field.

Byte offsets (`start`..`end`) are into the UTF-8 encoded text of the parent node. The range
is half-open: `start` is inclusive and `end` is exclusive.

Multiple annotations on the same node can overlap (e.g. bold-italic text), and they are
stored in the order they are encountered during DOM traversal.

See [`AnnotationKind`] for the full list of supported annotation types.

# `t`

```elixir
@type t() :: %HtmlToMarkdown.TextAnnotation{
  end: non_neg_integer(),
  kind: String.t() | nil,
  start: non_neg_integer()
}
```

A styling or semantic annotation that applies to a byte range within a node's text.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
