증상
samples/exam_kor.hwp 페이지 2 좌측 단의 첫 문단(pi=33) 두 번째 줄에서 본문 39자가 모두 누락되고, 문단에 인라인으로 박힌 글상자(텍스트 "개화")만 단 가운데(x≈428.8)에 표시된다. 결과적으로 본문이 1줄 → 3줄로 건너뛰는 비문이 되며, 좌·우 단 정렬이 어긋나 보인다.
재현
./target/release/rhwp export-svg samples/exam_kor.hwp
# output/svg/exam_kor/exam_kor_002.svg 좌측 단 y≈321 위치 확인
좌측 단 y 좌표별 텍스트:
y=295.1 "서양의 과학과 기술, 천주교의 수용을 반대했던 이항로를 비롯한"
y=321.4 "개화" ← line 2 의 본문 39자 누락
y=347.6 "수없는 대세로 자리잡았다. 개물성무(開物成務)와 화민성속"
IR
./target/release/rhwp dump samples/exam_kor.hwp -s 0 -p 33
- 문단 0.33: cc=186, text_len=177, controls=1
- ls[1]: ts=35, vpos=7116, lh=1417 (line 2, 39자, 높이 5mm)
- controls[0] = 사각형(글상자), 9.0×5.0mm, treat_as_char=true + wrap=TopAndBottom, 내부 텍스트 "개화"
원인 가설
treat_as_char=true 일 때는 wrap 속성을 무시하고 글자처럼 인라인 배치되어야 하는데, 현재 렌더러가 wrap=TopAndBottom 분기를 타면서 line 2 의 본문 텍스트(offset 35..73)를 스킵하는 것으로 보인다. 글상자 내부 "개화" 만 렌더되어 결과적으로 본문 한 줄이 사라진다.
의심 코드
src/renderer/composer.rs:127 (Shape tac 등록)
src/renderer/layout/shape_layout.rs (글상자 분기)
src/renderer/layout.rs (TopAndBottom 처리)
기대
treat_as_char=true 우선 적용 → 글상자를 한 글자처럼 line 2 안에 배치, 주변 본문 39자도 함께 렌더.
증상
samples/exam_kor.hwp페이지 2 좌측 단의 첫 문단(pi=33) 두 번째 줄에서 본문 39자가 모두 누락되고, 문단에 인라인으로 박힌 글상자(텍스트 "개화")만 단 가운데(x≈428.8)에 표시된다. 결과적으로 본문이 1줄 → 3줄로 건너뛰는 비문이 되며, 좌·우 단 정렬이 어긋나 보인다.재현
좌측 단 y 좌표별 텍스트:
IR
./target/release/rhwp dump samples/exam_kor.hwp -s 0 -p 33원인 가설
treat_as_char=true일 때는 wrap 속성을 무시하고 글자처럼 인라인 배치되어야 하는데, 현재 렌더러가wrap=TopAndBottom분기를 타면서 line 2 의 본문 텍스트(offset 35..73)를 스킵하는 것으로 보인다. 글상자 내부 "개화" 만 렌더되어 결과적으로 본문 한 줄이 사라진다.의심 코드
src/renderer/composer.rs:127(Shape tac 등록)src/renderer/layout/shape_layout.rs(글상자 분기)src/renderer/layout.rs(TopAndBottom 처리)기대
treat_as_char=true우선 적용 → 글상자를 한 글자처럼 line 2 안에 배치, 주변 본문 39자도 함께 렌더.