증상
samples/exam_eng.hwp 4페이지 28번 박스의 종이-말림(curl) 데코레이션 그림이 PDF 에서는 박스 왼쪽 상단에 보이지만, rhwp 의 SVG 출력에서는 잘못된 위치(원본 그대로 우하단)로 렌더되어 본문과 겹쳐 보이지 않음.
해당 그림 속성:
[s0 p189 c1] bin_id=2 flip=(h=true,v=true) rot=0
M=[-0.976,0.000,30614; 0.000,-0.881,30190]
본 증상은 이슈 #519 와 동일하며, 해당 이슈에서 이미 수정·검증·CLOSED 처리됨.
회귀 메커니즘
Task #519 의 코드 정정 (5 커밋 — 7ead89d Stage 2 + b5ccd27 Stage 3 + 2 머지 + 묶음 머지 a7e43f9) 은 local/devel 브랜치에 정상 머지되었으나, devel (= stream/devel) 으로의 승격이 한 번도 일어나지 않음.
$ git merge-base --is-ancestor 7ead89d stream/devel
NOT in stream/devel
$ git branch -a --contains 7ead89d
local/devel, local/task524..574, remotes/origin/local/devel, ...
(stream/devel / main 부재)
git log --first-parent stream/devel 첫부모 경로상 e3285b2 mydocs: Task #516 메모리 이후 devel 은 PR 체리픽 위주로만 진행되었고, Task #519 는 PR 로 다시 올라온 이력이 없어 누락됨.
코드 회귀 위치 (6 ImageNode 생성 지점)
Task #519 가 추가한 transform: extract_shape_transform(&pic.shape_attr) 가 6 지점 모두 누락:
| 파일 |
라인 |
현재 |
src/renderer/layout.rs |
2850 |
누락 (..ImageNode::new() → 항등 변환 기본값) |
src/renderer/layout/picture_footnote.rs |
107 |
누락 |
src/renderer/layout/picture_footnote.rs |
317 |
누락 |
src/renderer/layout/paragraph_layout.rs |
1823 |
누락 |
src/renderer/layout/paragraph_layout.rs |
2097 |
누락 |
src/renderer/layout/paragraph_layout.rs |
2207 |
누락 |
src/renderer/layout/table_cell_content.rs |
644 |
명시적 ShapeTransform::default() (flip 정보 폐기) |
extract_shape_transform 헬퍼 자체는 src/renderer/layout/utils.rs:109 에 그대로 살아있음 (현재는 shape_layout.rs:530 1 곳에서만 사용 중).
정량 증거
$ ./target/debug/rhwp export-svg samples/exam_eng.hwp -p 3 -o /tmp/p4/
$ grep -c '<g transform=' /tmp/p4/exam_eng_004.svg
0
Task #519 적용 시 28번 그림 1개에 <g transform> 래퍼가 추가되어야 함.
영향 범위
- 회전·뒤집기가 적용된 모든 Picture 컨트롤이 잘못 렌더됨
- 회귀 테스트 케이스:
samples/exam_eng.hwp 4페이지 28번
수정 방향
Task #519 의 코드 정정 (4 파일 6 사이트) 을 stream/devel 기준으로 재적용. extract_shape_transform 헬퍼는 이미 존재하므로 신규 단위 변환 코드 0줄.
회귀 방지
이번 회귀처럼 local/devel → devel 승격이 누락되지 않도록, 동일 묶음 머지 a7e43f9 (Task #517/#518/#519/#520/#521/#523/#528) 의 다른 task 들도 누락 가능성 점검 필요 (별도 이슈로 분리할 수 있음).
참고
증상
samples/exam_eng.hwp4페이지 28번 박스의 종이-말림(curl) 데코레이션 그림이 PDF 에서는 박스 왼쪽 상단에 보이지만, rhwp 의 SVG 출력에서는 잘못된 위치(원본 그대로 우하단)로 렌더되어 본문과 겹쳐 보이지 않음.해당 그림 속성:
본 증상은 이슈 #519 와 동일하며, 해당 이슈에서 이미 수정·검증·CLOSED 처리됨.
회귀 메커니즘
Task #519 의 코드 정정 (5 커밋 —
7ead89dStage 2 +b5ccd27Stage 3 + 2 머지 + 묶음 머지a7e43f9) 은local/devel브랜치에 정상 머지되었으나,devel(=stream/devel) 으로의 승격이 한 번도 일어나지 않음.git log --first-parent stream/devel첫부모 경로상e3285b2 mydocs: Task #516 메모리이후devel은 PR 체리픽 위주로만 진행되었고, Task #519 는 PR 로 다시 올라온 이력이 없어 누락됨.코드 회귀 위치 (6 ImageNode 생성 지점)
Task #519 가 추가한
transform: extract_shape_transform(&pic.shape_attr)가 6 지점 모두 누락:src/renderer/layout.rs..ImageNode::new()→ 항등 변환 기본값)src/renderer/layout/picture_footnote.rssrc/renderer/layout/picture_footnote.rssrc/renderer/layout/paragraph_layout.rssrc/renderer/layout/paragraph_layout.rssrc/renderer/layout/paragraph_layout.rssrc/renderer/layout/table_cell_content.rsShapeTransform::default()(flip 정보 폐기)extract_shape_transform헬퍼 자체는src/renderer/layout/utils.rs:109에 그대로 살아있음 (현재는shape_layout.rs:5301 곳에서만 사용 중).정량 증거
Task #519 적용 시 28번 그림 1개에
<g transform>래퍼가 추가되어야 함.영향 범위
samples/exam_eng.hwp4페이지 28번수정 방향
Task #519 의 코드 정정 (4 파일 6 사이트) 을
stream/devel기준으로 재적용.extract_shape_transform헬퍼는 이미 존재하므로 신규 단위 변환 코드 0줄.회귀 방지
이번 회귀처럼
local/devel→devel승격이 누락되지 않도록, 동일 묶음 머지a7e43f9 (Task #517/#518/#519/#520/#521/#523/#528)의 다른 task 들도 누락 가능성 점검 필요 (별도 이슈로 분리할 수 있음).참고
7ead89d(Task 그림(Picture) 회전·뒤집기(flip) 속성이 SVG 렌더링에 적용되지 않음 #519 Stage 2: ImageNode.transform 채우기)a7e43f9(Merge local/devel: Task Layout 리팩터링 Phase 1: 디버그 인프라 + 회귀 검증 도구 #517/Layout 리팩터링 Phase 2: line_break_char_idx 다중화 (ls[2..] break 사용) #518/그림(Picture) 회전·뒤집기(flip) 속성이 SVG 렌더링에 적용되지 않음 #519/exam_science.hwp 문제7: inline 도형(tac=true, wrap=TopAndBottom)이 다음 문단 라인에 그려져 텍스트와 겹침 #520/exam_eng p2 18번 답안지 위치가 박스 하단에 너무 가까움 — 그림(BehindText) 의 vertical extent 가 paragraph height 에 미반영 #521/exam_science 페이지 1 → 2 누적 vpos drift: 문제 6번 <보기>/답안이 다음 페이지로 밀림 #523/옛한글 PUA → KS X 1026-1:2007 자모 변환 (HncPUAConverter 정합) — exam_kor 17p 고어 미렌더 #528)