You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
조판: RowBreak 표 조각의 쪽당 행 수용량이 한/글보다 한 행 크다 — 바깥 아래 여백 예약 축 (scattered_header 15/52) #7685
samples/task1716/table_scattered_header_rowbreak.hwpx(52쪽, 정본 pdf/task1716/table_scattered_header_rowbreak-hwpx-2020.pdf)에서 rhwp 는 2쪽부터 RowBreak 표 조각마다 한/글보다 한 행을 더 담는다. 쪽 끝 글줄이 정본과 같은 쪽은 devel f0e7228f6 기준 15/52 뿐이다(1, 713, 24, 32, 33, 37, 4345쪽). 같은 원문의 samples/table_scattered_header_rowbreak.hwp 도 같은 양상이다.
PR #7611 리뷰에서 이 문서 44·45쪽이 devel 대비 «하락» 으로 보였지만, devel 의 44·45쪽 일치는 앞쪽 어긋남이 우연히 같은 위상으로 돌아온 결과였다(아래 실측).
실측 (2쪽, 0-based 1)
표 행 위치는 1024px 까지 정본과 0.1px 안에서 같다(render tree TextLine.y ↔ PyMuPDF 줄 위끝).
한/글은 다음 행(「인장시험」, rhwp 높이 약 22.0px)을 3쪽으로 넘기고 직전 행을 쪽 바닥까지 늘린다(가운데 정렬 글자 +10.3px).
한/글 표 아래 괘선은 확인한 모든 쪽(1·2·3·40·41)에서 1081.5px = 본문 바닥 1084.7 − 바깥 아래 여백 141HU(1.88px) − 1.33px.
1342000_edu_curriculum_map.hwp 구역 10 표(217×9) 186..202 조각은 rhwp 여유 1.80px 인데 한/글은 그 행을 받는다. scattered 2쪽은 여유 약 1.9px 인데 한/글이 거절한다. 판정이 0.1px 수준에서 갈려 px 반올림한 행 높이로는 규칙을 가를 수 없다.
저장 셀 선언 높이(HU)로 한/글 행 높이를 재구성하면 실제 배치와 82px 어긋난다(내용으로 늘어난 행을 반영하지 못함).
«제목 행 반복 표만» 한정은 실측으로 고른 조건이라 근거가 없다.
다음 단계 제안
한/글 행 높이를 HU 정밀도로 재현(글꼴 줄 높이·셀 안 여백의 HU 반올림 지점)해 경계 여유를 정수로 비교한다.
그 위에서 바깥 아래 여백 예약이 조각 종류(이어받기/첫 조각, 제목 행 반복 여부)와 무관한 단일 규칙인지 다시 판정한다.
실험 패치(env 토글, 커밋하지 않음)와 A/B 스크립트는 PR #7611 작업 환경에 보관했다.
착지: 통합된 #7685 커밋들 — ece68e79f(칸 줄 상자 두 곳을 한/글 정본 높이에), 77f600653(행 경계에서 이어지는 RowBreak 조각은 쪽 위에서 바깥 위 여백을 다시 연다), 70783a257(HWP5 저장 조판에서 문단을 넘는 0→0 저장 쪽 재시작 인정). 이 이슈가 «먼저 풀어야 할 것»으로 적은 행 높이 정밀도가 그 첫 커밋이다.
쪽 끝 비교는 각 쪽 본문의 가장 낮은 글줄(렌더 트리 ↔ PyMuPDF)을 맞댄 것이다. 문자열 단순 비교로는 45/52 가 나오는데, 나머지 7쪽(4·5·19·32·33·35·41)은 같은 행의 칸들이 같은 높이(차 ≤1px)에 있고 칸 순서만 달라 가장 낮은 글줄 하나가 다른 칸으로 잡힌 것이다. 예: 4쪽 rhwp 「플라이애시 · KSL5106 · 비표면적」 1064.7~1065.2 ↔ 정본 「·제조회사별 · 비표면적 · 플라이애시」 1065.1, 다음 쪽 첫 행도 둘 다 「KSLISO9597 · 응결」.
Activity
planet6897 commentedon Oct 9, 2026
착수합니다(planet/rhwp-71e0b4c1). 정본 PDF 에서 한/글이 쪽 바닥까지 늘린 끝 행의 바닥(L)을 RowBreak 표 조각 전수로 재어,
본문 바닥 − L이 바깥 아래 여백·100HU 와 어떤 관계인지부터 판정하겠습니다.planet6897 commentedon Oct 9, 2026
1차 측정 결과 — 「바깥 아래 여백 + 상수」 규칙은 세울 수 없고, 판정은 행 높이 정밀도에 좌우된다
1. 정본의 이어지는 표 조각 아래 끝 L 전수
표본 중 rhwp 쪽수 = 정본 쪽수인 59문서에서 RowBreak 표 조각 541개를 쟀습니다(
본문 바닥 − 정본 쪽의 가장 낮은 긴 가로 괘선).2. 경계 두 곳 직접 대조
결론과 다음 단계
수정(typeset): 이어받는 rowspan 시작 행은 앞 조각이 그린 띠를 다시 세지 않는다 (edwardkim#7685)
수정(조판): HWP5 저장 조판에서 문단을 넘는 0→0 저장 쪽 재시작도 줄 사다리 확인 시 인정한다 (edwardkim#…
문서(edwardkim#7685): 현재 head Visual Sweep review·overlay PNG (Native·f…
문서(edwardkim#7685): 현재 head Visual Sweep review·overlay PNG (Native·f…
수정(조판): 병합 칸 행 높이 풀이에서 선언 초과분을 먼저 반영한 뒤 미지 행을 푼다 (edwardkim#7685)
수정(조판): 칸 줄 상자 두 곳을 한/글 정본 높이에 맞춘다 (edwardkim#7685)
증적(edwardkim#7685): 칸 줄 상자 Visual Sweep 전후 review·점수표
수정(조판): 행 경계에서 이어지는 RowBreak 표 조각은 쪽 위에서 바깥 위 여백을 다시 연다 (edwardkim#7685)
증적(edwardkim#7685): 이어지는 조각 바깥 위 여백 Visual Sweep 전후 review·점수표
수정(조판): HWP5 저장 조판에서 문단을 넘는 0→0 저장 쪽 재시작도 줄 사다리 확인 시 인정한다 (edwardkim#…
planet6897 commentedon Oct 18, 2026
devel
6ed1682c3재측정 — 52쪽 모두 쪽 끝 행이 정본과 같아 닫는다착지: 통합된 #7685 커밋들 —
ece68e79f(칸 줄 상자 두 곳을 한/글 정본 높이에),77f600653(행 경계에서 이어지는 RowBreak 조각은 쪽 위에서 바깥 위 여백을 다시 연다),70783a257(HWP5 저장 조판에서 문단을 넘는 0→0 저장 쪽 재시작 인정). 이 이슈가 «먼저 풀어야 할 것»으로 적은 행 높이 정밀도가 그 첫 커밋이다.samples/task1716/table_scattered_header_rowbreak.hwpx(정본-hwpx-2020, 52쪽 = 52쪽)f0e7228f6)6ed1682c3쪽 끝 비교는 각 쪽 본문의 가장 낮은 글줄(렌더 트리 ↔ PyMuPDF)을 맞댄 것이다. 문자열 단순 비교로는 45/52 가 나오는데, 나머지 7쪽(4·5·19·32·33·35·41)은 같은 행의 칸들이 같은 높이(차 ≤1px)에 있고 칸 순서만 달라 가장 낮은 글줄 하나가 다른 칸으로 잡힌 것이다. 예: 4쪽 rhwp 「플라이애시 · KSL5106 · 비표면적」 1064.7~1065.2 ↔ 정본 「·제조회사별 · 비표면적 · 플라이애시」 1065.1, 다음 쪽 첫 행도 둘 다 「KSLISO9597 · 응결」.
내 열린 PR #7965 head 에서도 52쪽 전부 90% 이상(평균 99.36)이다.