paper op• 数据种类:text → table
• 调用: 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)(要直接调用实现,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);从台账取用则 opsannotate.get("annotate_text_path_layout"))
返回表(dict):沿折线逐字的位置与倾角(按弧长确定)。
第 i 个字符的中心位于弧长 s_i = s0 + Σ_{j<i} a_j*spacing + a_i/2 处,倾斜为该位置线段的切线角(屏幕坐标,度)。比路径长的字符串会引发 ValueError。
位置的确定方式(2026-09-08 新增。默认与此前的行为相同):
• anchor —— 沿路径的对齐方式。"start"(默认、与以往相同)/ "center"(对齐到路径中央)/ "end"(对齐到终端)。start 作为从锚点确定的位置再偏移的量起作用。
• offset —— 与路径垂直的偏移 [px]。正方向为前进方向的右侧 (屏幕坐标。y 朝下,所以对于从左→右排列的文字就是“下”)。用于不碰线而放在旁边。
• 用 \n 换行。第 2 行及以后按乘以 line_spacing 的行高, 向与 offset 相同的方向(前进方向的右侧)偏移。★凭这 1 条规则, 横排“向下”、竖排“向左”,都符合排版规范 (竖排的前进方向朝下,所以它的右侧就是屏幕的左侧)。
• upright —— 不把字符转到切线角,而是保持正立。若路径主要为纵向(起点→终点的 |dy| > |dx|),则步进量用字高而不是字宽, 这就成为竖排。只有 VERTICAL_ROTATED_CHARS 中的字符旋转 90 度。
标点(、。,.)按竖排的规范向右上靠 (VERTICAL_SHIFTED_CHARS,偏移量为步进量的 _VPUNCT_SHIFT 倍)。Windows 中带 @ 的字体在字体端所做的事,这里用合成来完成 —— Pillow 按文件路径打开字体,无法到达 @ 字面, HarfBuzz 的 direction="ttb" 结果也会因有无 Raqm 而变化, 所以采用了在各平台上一致的方式。
★竖排中未实现的内容(不默默近似):小写假名的位置修正、纵中横、行末禁则。这是为简短注记准备的功能,不是正文排版。
dict
{"chars": [{"char","s","xy","angle_deg","width","advance","line"}], "length": 路径长, "used": 最长一行的**步进量总和**(与以往相同 Σ advance*spacing), "span": 最长一行**实际占据**的弧长(不含最后一个字符之后的步进量 —— 锚点按这个对齐), "lines": 行数, "line_height": 行距 [px], "vertical": 是否竖排}。
ValueError
文字为空、路径少于 2 点或长度为零、非有限、某行比路径长、
锚点与 start 的组合使某行超出路径的情况。
• dataset_conventions — 训练数据集规范知识 —— COCO / YOLO / VOC 及外观检测中的陷阱
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• 算法的正典(作者、年份)与用途见上面的族使用指南。
• annotate_paper_tour — py -3.11 examples/annotate_paper_tour.py
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 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.