fullseye

annotate_text_path_layout — ANNOTATE paper op

使い方

table(dict)を返す: 折れ線に沿って 1 文字ずつ置く位置と傾き(弧長で決める)。

文字 i の中心は弧長 s_i = s0 + Σ_{j<i} a_j*spacing + a_i/2、傾きは その位置の線分の接線角(画面座標、度)。経路より長い文字列は ValueError。

位置の決め方(2026-09-08 に追加。既定はそれまでの動作と同じ):

句読点(、。,.)は縦組みの作法どおり右上へ寄せる (:data:VERTICAL_SHIFTED_CHARS、寄せ量は送りの :data:_VPUNCT_SHIFT 倍)。 Windows の @ 付きフォントが font 側でやっていたことを、ここでは合成で行う —— Pillow はフォントをファイルパスで開くので @ の顔に到達できず、 HarfBuzz の direction="ttb" も Raqm の有無で結果が変わるため、 プラットフォームで揃うほうを採った。

縦書きで実装していないこと(黙って近似しない): 小書き仮名の位置補正、 縦中横、行末の禁則。短い注記のための機能で、本文組版ではない。

Returns

dict {"chars": [{"char","s","xy","angle_deg","width","advance","line"}], "length": 経路長, "used": 最も長い行の**送りの合計**(従来どおり Σ advance*spacing), "span": 最も長い行が**実際に占める**弧長 (最後の字の後ろの送りを含まない —— アンカーはこちらで揃える), "lines": 行数, "line_height": 行送り [px], "vertical": 縦書きか}

Raises

ValueError 文字が空、経路が 2 点未満か長さゼロ、非有限、行が経路より長い、 アンカーと start の組み合わせで行が経路から外れる場合。

詳しい使い方ガイド

背景知識ガイド(この op の手前にある物理・規約)

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(table を入力に取れる)

同カテゴリ(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. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

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