measure_text — ANNOTATE text op

• Datenarten: text → table

• Aufruf: import fullseye as fs; fs.ledger.measure_text(text, font_size=14, font_path=None, max_width=None, min_font_size=9, line_spacing=1.15, wrap=True, bold=False, italic=False) (die Implementierung direkt: import annotate; annotate.measure_text(text, font_size=14, font_path=None, max_width=None, min_font_size=9, line_spacing=1.15, wrap=True, bold=False, italic=False); aus dem Register: opsannotate.get("measure_text"))

Verwendung

Misst Text, bevor er gezeichnet wird. Passt er nicht, wird umbrochen oder verkleinert; sonst eine Ausnahme.

Parameters

text : str

Zu messende Zeichenkette (\n für Zeilenumbrüche).

font_size : int

Gewünschte Größe. Passt sie nicht in max_width, wird sie um je 1pt verkleinert.

font_path : str or None

Explizit angegeben, ergibt sich auch über Maschinen hinweg dasselbe Ergebnis. None durchsucht FONT_CANDIDATES

in fester Reihenfolge.

max_width : int or None

Breite [px], in die es passen soll. Bei None wird weder verkleinert noch umgebrochen.

min_font_size : int

Passt es auch nach Verkleinern bis hierhin nicht, ValueError (kein stilles Abschneiden).

line_spacing : float

Zeilenabstandsfaktor.

bold, italic : bool or int

Synthetisches Fett und Kursiv (_bold_px / _italic_tile). Es sind keine echten

Bold-/Italic-Schnitte, daher weichen die Glyphenformen ab -- wenn der echte Schnitt nötig ist,

dessen Datei als font_path übergeben. Eine Ganzzahl für bold

gibt die Zahl der Überdruck-Durchgänge direkt an. Der Zuwachs durch Stärke und Neigung geht in width ein,

sodass Tafeln und Tabellenspalten entsprechend breiter werden (Überdruck verdickt nur horizontal, daher

ändert sich height nicht).

wrap : bool

Bei True (Standard) wird an max_width umgebrochen. Bei False wird nicht umgebrochen, sondern

durch Verkleinern der Schrift ohne zusätzliche Zeilen eingepasst (für Stellen, an denen 2 Zeilen

das Layout zerstören, etwa Gitterlabels -- dieselbe Vorgehensweise wie exhibit_tile._fit_label).

In beiden Fällen gibt es eine Exception, wenn es bis min_font_size nicht passt.

\n-Umbrüche wirken immer, unabhängig davon, ob max_width gesetzt ist und welchen Wert wrap hat

(der Unfall "ohne Breite wird alles zu 1 Zeile zusammengedrückt" tritt nicht auf).

Returns

dict

{"lines", "font", "font_size", "width", "height", "line_height"}.

width/height sind gemessen [px].

Raises

ValueError

max_width nicht positiv / 1 Zeile passt auch bei min_font_size nicht.

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie figure_annotation

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• dataset_conventions — Konventionen für Trainingsdatensätze — COCO / YOLO / VOC und Fallstricke in der Sichtprüfung

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• annotate_gallery — py -3.11 examples/annotate_gallery.py

• annotate_paper_tour — py -3.11 examples/annotate_paper_tour.py

• poc_diabolo_model_and_vision — py -3.11 examples/poc_diabolo_model_and_vision.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

—

Gleiche Kategorie (text)

text_box


*Provenance: annotate.py — ANNOTATE Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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