annotate_text_path — ANNOTATE paper op

• Data kinds: image2d × text → image2d

• Call: import fullseye as fs; fs.ledger.annotate_text_path(img, text, path, font_size=13, color='neutral', spacing=1.0, start=0.0, draw_path=False, width=1.0, scheme='okabe_ito', font_path=None, layout=None, anchor='start', offset=0.0, upright=False, line_spacing=1.15, bold=False, italic=False) (to call the implementation directly, import annotate; annotate.annotate_text_path(img, text, path, font_size=13, color='neutral', spacing=1.0, start=0.0, draw_path=False, width=1.0, scheme='okabe_ito', font_path=None, layout=None, anchor='start', offset=0.0, upright=False, line_spacing=1.15, bold=False, italic=False); from the registry, opsannotate.get("annotate_text_path"))

Usage

Returns an image (image2d): text set along a polyline (each glyph rotated to the tangent angle).

No text backing box is laid down (it is meant to sit on top of the path). Placement, and the meaning of anchor / offset / upright (vertical writing) / line breaks via \n, are described in annotate_text_path_layout.

If layout is passed, it is used as is -- anchor and the like are ignored, so do not pass both.

bold / italic are synthesised (_bold_px / _italic_tile). Glyphs are rendered 1 at a time and then rotated, so the slant applies relative to the glyph's vertical axis (even if the path is diagonal, the italic is not skewed along the path direction).

Raises

ValueError

Same as annotate_text_path_layout + a rotated glyph goes outside the image.

Detailed usage guide

• figure_annotation family guide

Background guides (the physics and conventions behind this op)

• dataset_conventions — Training-dataset conventions — COCO / YOLO / VOC and pitfalls in visual inspection

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• annotate_paper_tour — py -3.11 examples/annotate_paper_tour.py

• paper_figure — py -3.11 examples/paper_figure.py

Ops the type connects to (they accept image2d as input)

text_box · arrow · leader_line · label_points · crosshair · legend_box · color_bar · scale_bar

Same category (paper)

annotate_leader_layout · annotate_leader · annotate_markers · annotate_legend · annotate_dimension_layout · annotate_dimension · annotate_angle_layout · annotate_angle


*Provenance: annotate.py — ANNOTATE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.