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점 미만이거나 길이 0, 비유한, 줄이 경로보다 김,
앵커와 start의 조합으로 줄이 경로를 벗어나는 경우.
• dataset_conventions — 학습 데이터셋 규약 지식 — COCO / YOLO / VOC와 외관 검사의 함정
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL 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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.