Skip to content

shortcut.hwp PDF 정합성: 우측탭 정렬·단 구분선 점선·헤더 바 위치 (#842 중 3건)#843

Closed
planet6897 wants to merge 9 commits into
edwardkim:develfrom
planet6897:pr-task842
Closed

shortcut.hwp PDF 정합성: 우측탭 정렬·단 구분선 점선·헤더 바 위치 (#842 중 3건)#843
planet6897 wants to merge 9 commits into
edwardkim:develfrom
planet6897:pr-task842

Conversation

@planet6897
Copy link
Copy Markdown
Contributor

Closes part of #842 (4건 중 3건 — #1 헤더 표 spacing 은 RFC #774 영역이라 후속 이슈로 분리).

변경

결함 #4 — 단축키 우측정렬 탭 항목이 단 우측 끝을 초과

  • right_tab_block_width(): cross-run 우측·가운데 탭 정렬 시 탭 직후 \t 없는 연속 composed run 들의 폭을 합산해 정렬. composer 가 스크립트·char-shape 경계로 run 을 쪼개는 케이스("Ctrl+(회색)5"["Ctrl+(", "회색)", "5"])에서 나머지 run 이 탭스톱 우측으로 흘러넘치던 ~32px 해소.
  • compute_char_positions in-run RIGHT 인라인 탭 분기를 (2,_) if fill_low!=0(2,_) 로 확장: RIGHT 인라인 탭은 leader 유무 무관 body_right - our_seg_w 정렬(한컴 ext[0] 무시). \t 가 bold run 시작에 오는 항목("끝"+"\tAlt+X")의 ~28px 해소.
  • → shortcut.hwp 8페이지 우측탭 항목 정렬 폭 ±6px 수렴.

결함 #3 — 두 단 가운데 구분선이 실선 (점선이어야 함)

  • build_column_separators 의 line-type→dash 매핑에 6 => Dash(LongDash), 7 => Dot(Circle/원형 점선) 추가. shortcut.hwp 의 구분선 type=7 이 점선으로 렌더.

결함 #2 — 페이지 2~8 섹션 헤더 바(1×1 TAC 표) +28px 우측 편위

  • layout_table_item is_tac 분기: 다줄 문단 + line 0 에 alphanumeric 글자(한글 음절/라틴/숫자/한자)가 있으면 표는 자체 줄 좌측에서 시작 → leading = 0. line 0 이 HWP TAC 필러(U+F081C/U+F012B 등 PUA)/공백뿐인 경우(복학원서.hwp pi=16)는 종전대로. is_alphanumeric() 판정으로 PUA 필러 자동 제외.

검증

  • cargo test 전건 통과 (svg_snapshot 8/8 포함, 회귀 없음)
  • shortcut.hwp 1~8페이지 SVG ↔ pdf/basic/shortcut-2022.pdf 시각 정합 확인 (mutool 렌더 + pdftotext -bbox 좌표 비교)

미포함 (#842 잔여 → 후속 이슈)

상세: mydocs/report/task_m100_842_report.md, mydocs/working/task_m100_842_stage{1..5}.md

planet6897 and others added 9 commits May 12, 2026 09:52
- 수행/구현 계획서 작성
- 결함 edwardkim#4(cross-run 우측탭 폭 합산), edwardkim#3(단 구분선 type=7→Dot), edwardkim#1(TAC 표 후속 spacing) 원인 확정
- 결함 edwardkim#2(헤더 바 좌측 위치) 원인 후보 식별 — Stage 4 확정

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- right_tab_block_width(): 탭 직후 \t 없는 연속 run 들의 폭 합산
- est/render 패스 cross-run 우측·가운데 탭 정렬을 블록 전체 폭 기준으로 변경
- shortcut.hwp "Ctrl+(회색)5" 류 ~32px 오버플로 해소
- "Alt+P/Ctrl+P" 류(\t 가 bold run 시작에 오는 케이스)는 잔여 — Stage 2b

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…dwardkim#4 잔여)

- compute_char_positions inline-tab RIGHT 분기를 (2,_) if fill_low!=0 → (2,_) 확장
- RIGHT 인라인 탭은 leader 유무 무관 body_right - our_seg_w 정렬 (한컴 ext[0] 무시)
- "끝"+"\tAlt+X" 류(\t 가 bold run 시작) ~28px 우측 초과 해소
- shortcut.hwp 우측탭 전부 ±6px 수렴, cargo test 전건 통과

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…im#3)

- build_column_separators: separator_type 6=>Dash(LongDash), 7=>Dot(Circle/원형 점선) 추가
- shortcut.hwp 단 구분선이 실선 → 점선(stroke-dasharray) 렌더
- cargo test 전건 통과

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… 요청)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…dwardkim#1 후속 이슈 분리 권고

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- layout_table_item is_tac 분기: 다줄 문단 + line 0 에 alphanumeric 글자 있으면
  표는 자체 줄 좌측에서 시작 → leading = 0 (line 0 텍스트 폭 미합산)
- line 0 이 HWP TAC 필러(U+F081C/U+F012B 등 PUA)/공백뿐이면 종전대로 compute_tac_leading_width
- shortcut.hwp 헤더 바 페이지 2~8 +28px 우측 편위 해소, 복학원서.hwp 회귀 없음
- cargo test 전건 통과

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…미수정, RFC edwardkim#774 영역, 판단 요청)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…정 완료, edwardkim#1 후속 분리

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim pushed a commit that referenced this pull request May 13, 2026
…#842)

PR #843 (@planet6897) GitHub diff 기반 cherry-pick.
mydocs 거버넌스 산출물 제외 (PR #629 패턴 정합).

결함 #4 — cross-run 우측탭 블록 폭 합산 + in-run RIGHT 인라인 탭 body_right 정렬
결함 #3 — 단 구분선 line type 6→Dash, 7→Dot 매핑 추가
결함 #2 — 헤더 바 TAC 표 좌측 위치 정정 (alphanumeric 글자 시 leading=0)

검증:
- cargo test --release --lib: 1246 passed (회귀 0)
- SVG before/after 비교: 헤더 바 x좌표 122→94 + 우측탭 항목 좌측 이동 확인
- 시각 판정 ★ 통과 (PDF 권위 자료 대비)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@edwardkim
Copy link
Copy Markdown
Owner

검토 + cherry-pick 머지 완료. 감사합니다.

처리 결과

재검증

검증 결과
cargo test --release --lib 1246 passed (회귀 0)
SVG before/after 헤더 바 좌측 이동 + 우측탭 오버플로 해소 확인
작업지시자 시각 판정 ★ 통과 (PDF 권위 자료 대비)

수고하셨습니다.

@edwardkim edwardkim closed this May 13, 2026
planet6897 added a commit to planet6897/rhwp that referenced this pull request May 13, 2026
stream/devel 에 PR edwardkim#843 (단 구분선 line type 6/7 dash 매핑, 결함 edwardkim#3) 이
merge 되어 6=>Dash, 7=>Dot 가 추가됨. PR edwardkim#872 의 3|6|7=>Dot 와 자동 merge
시 두 변경이 합쳐져 6/7 별도 라인이 unreachable_pattern 으로 clippy
실패.

해결: PR edwardkim#872 의 3|6|7=>Dot 변경을 PR edwardkim#843 매핑 (한컴 PDF 측정 기반)
으로 변경. 6 => Dash (LongDash 근사), 7 => Dot (Circle 원형 점선).

build_column_separators + emit_zone_column_separators 두 함수 모두 동일
매핑 적용.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
planet6897 added a commit to planet6897/rhwp that referenced this pull request May 13, 2026
stream/devel 에 PR edwardkim#843 (단 구분선 line type 6/7 dash 매핑, 결함 edwardkim#3) 이
merge 되어 6=>Dash, 7=>Dot 가 추가됨. PR edwardkim#872 의 3|6|7=>Dot 와 자동 merge
시 두 변경이 합쳐져 6/7 별도 라인이 unreachable_pattern 으로 clippy
실패.

해결: PR edwardkim#872 의 3|6|7=>Dot 변경을 PR edwardkim#843 매핑 (한컴 PDF 측정 기반)
으로 변경. 6 => Dash (LongDash 근사), 7 => Dot (Circle 원형 점선).

build_column_separators + emit_zone_column_separators 두 함수 모두 동일
매핑 적용.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants