paper op• Datenarten: text → table
• Aufruf: import fullseye as fs; fs.ledger.annotate_text_path_layout(text, path, font_size=13, font_path=None, spacing=1.0, start=0.0, anchor='start', offset=0.0, upright=False, line_spacing=1.15) (die Implementierung direkt: import annotate; annotate.annotate_text_path_layout(text, path, font_size=13, font_path=None, spacing=1.0, start=0.0, anchor='start', offset=0.0, upright=False, line_spacing=1.15); aus dem Register: opsannotate.get("annotate_text_path_layout"))
Liefert eine Tabelle (dict): Position und Neigung jeder Glyphe entlang eines Linienzugs (über die Bogenlänge bestimmt).
Die Mitte von Zeichen i liegt bei der Bogenlänge s_i = s0 + Σ_{j<i} a_j*spacing + a_i/2, die Neigung ist der Tangentenwinkel des Segments an dieser Stelle (Bildschirmkoordinaten, Grad). Ein String, der länger als der Pfad ist, ergibt ValueError.
Wie die Position bestimmt wird (hinzugefügt am 2026-09-08; der Standard entspricht dem bisherigen Verhalten):
• anchor -- Ausrichtung entlang des Pfads. "start" (Standard, wie bisher) / "center" (an der Pfadmitte ausrichten) / "end" (am Ende ausrichten). start wirkt als Betrag, um zusätzlich zu verschieben gegenüber der durch den Anker festgelegten Position.
• offset -- Verschiebung senkrecht zum Pfad [px]. Positiv ist rechts der Laufrichtung (Bildschirmkoordinaten; da y nach unten zeigt, ist das bei Text von links→rechts "unten"). Gedacht, um Text neben eine Linie zu setzen, ohne sie zu berühren.
• \n erzeugt einen Zeilenumbruch. Ab der 2. Zeile wird um die mit line_spacing multiplizierte Zeilenhöhe in dieselbe Richtung wie offset (rechts der Laufrichtung) verschoben. ★Mit dieser 1 Regel wandert waagerechter Text "nach unten" und senkrechter Text "nach links", beides satzrichtig (senkrechter Text läuft nach unten, sein Rechts ist also das Links des Bildschirms).
• upright -- dreht Zeichen nicht auf den Tangentenwinkel, sondern hält sie aufrecht. Verläuft der Pfad überwiegend senkrecht (|dy| > |dx| von Start→Ende), nutzt der Vorschub statt der Zeichenbreite die Zeichenhöhe, wodurch senkrechte Schrift entsteht. Nur die Zeichen in VERTICAL_ROTATED_CHARS werden um 90 Grad gedreht.
Satzzeichen (、。,.) werden nach der Konvention des senkrechten Satzes nach rechts oben gerückt (VERTICAL_SHIFTED_CHARS; der Versatz ist _VPUNCT_SHIFT mal der Vorschub). Was die @-Schriften unter Windows auf Schriftseite erledigten, geschieht hier durch Synthese -- Pillow öffnet Schriften über den Dateipfad und erreicht daher das @-Schriftbild nicht, und bei HarfBuzz ändert sich das Ergebnis von direction="ttb" je nachdem, ob Raqm vorhanden ist, daher wurde der plattformübergreifend einheitliche Weg gewählt.
★Im senkrechten Satz nicht implementiert (keine stillschweigende Näherung): Positionskorrektur kleiner Kana, Tate-chu-yoko (waagerecht im Senkrechten), Zeilenend-Kinsoku. Eine Funktion für kurze Anmerkungen, kein Fließtextsatz.
dict
{"chars": [{"char","s","xy","angle_deg","width","advance","line"}], "length": Pfadlänge, "used": **Summe der Vorschübe** der längsten Zeile (wie bisher Σ advance*spacing), "span": Bogenlänge, die die längste Zeile **tatsächlich belegt** (ohne den Vorschub nach dem letzten Zeichen -- Anker richten sich danach aus), "lines": Zeilenzahl, "line_height": Zeilenabstand [px], "vertical": ob senkrecht}.
ValueError
Leerer Text, Pfad mit weniger als 2 Punkten oder Länge null, nicht endlich, eine Zeile länger als der Pfad,
oder wenn die Kombination aus Anker und start eine Zeile aus dem Pfad schiebt.
• Leitfaden zur Familie figure_annotation
• dataset_conventions — Konventionen für Trainingsdatensätze — COCO / YOLO / VOC und Fallstricke in der Sichtprüfung
• 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.
• annotate_paper_tour — py -3.11 examples/annotate_paper_tour.py
table als Eingabe)—
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. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.