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
[layout] 저장 vpos 가 문단 아래 간격을 빠뜨린 문서에서 8px 이내 역보정이 문단을 7.57px 씩 위로 당긴다 (HWP5-nopassword 9~12쪽) #7874
samples/HWP5-nopassword-123456.hwpx(기준 pdf/HWP5-nopassword-123456-hwpx-2024.pdf, --compat 2024)에서 문단 몇 곳이 한/글보다 7.57px 위로 붙는다. 어긋남은 쪽 아래로 누적된다.
12쪽: [HNC Input] 아래 −7.6px, 「한글 97의 나아진 기능」 아래 −15.1px(줄마다 일정, 표준편차 약 0.1px)
10쪽: 9쪽에서 당겨진 7.57px 덕분에 제목 pi=135 가 9쪽 바닥(1003.3 / 본문 아래 1009.2)에 들어간다. 한/글은 이 제목을 10쪽 첫머리에 둔다. 그래서 10쪽 전체가 제목 한 줄(35px)만큼 어긋난다.
devel 552f5228d 와 #7805·#7836 head 에서 9~12쪽 줄 y 가 같다(기존 결함). #7836 이 줄 나눔을 한/글과 맞추면서 이 어긋남을 가리던 여분 줄이 사라져 Visual Sweep 점수에 드러났다(#7836 p10 36.07 → 30.71, p12 51.49 → 40.81, 줄 시작 PDF 일치는 문서 전체 523 → 611줄로 개선).
재현
RHWP_VPOS_DEBUG=1 rhwp export-svg samples/HWP5-nopassword-123456.hwpx -p 11 -o out
VPOS_CORR 가 매번 정확히 −7.57px 되감는다.
쪽
문단
y_in → 결과
9
pi=133
837.01 → 829.44
10
pi=146
448.80 → 441.23
12
pi=169
225.17 → 217.60
12
pi=173
333.23 → 325.65
원인
HeightCursor::vpos_adjust(src/renderer/height_cursor.rs)가 vpos_corrected_end_y(src/renderer/layout.rs)를 호출하고, 이 함수는 단계당 8px 이내의 뒤로 가는 보정을 받아들인다(MAX_BACKWARD_PX = 8.0, Task 페이지 분할 드리프트 — pi=80 마지막 줄 다음 페이지로 넘어감 (2022 국립국어원 업무계획.hwp p6) #643). 쪽 나누기(typeset/section/vpos.rs::vpos_snap_current_height)도 같은 함수를 쓴다.
이 문서의 저장 vpos 는 실제 출력과 맞지 않는다. 예: pi=168 은 저장 줄 4개가 63672 에서 끝나고 pi=169 는 65272 에 저장돼 간격이 줄 피치 1600 뿐이다(문단 아래 간격 없음). 한컴 2024 PDF 는 1600 + 568 = 2168 을 둔다. 568HU = 7.57px. 빈 문단 → 제목 경계(pi=132→133, 145→146, 172→173)도 같은 꼴이다.
7.57px 는 8px 허용 안이라 rhwp 가 낡은 저장값으로 되감는다.
진단 근거
뒤로 가는 보정만 끄는 진단 빌드(정식 수정 아님)에서:
pi=135 가 10쪽으로 넘어가고, 12쪽 줄 시작 잔차가 제목 줄(약 −4px)을 빼고 0 이 된다.
PR #8015 로 수정했습니다. 저장 사다리가 문단 아래 간격을 뺀 경계(경계 간격 0)에서 후방 이동량이 앞 문단 아래 간격과 같으면 스냅하지 않습니다 — 조판·배치 공용 HeightCursor::vpos_adjust. pi=133·146 의 7.57px 되감기가 사라지고 제목 pi=135 가 다음 쪽 첫머리로 갑니다. 공개 합성 입력 samples/issue7874(한/글 2024 Print) 1쪽 46.7 → 98.5%(fresh WASM 99.4%), 10k 코퍼스 변화 0. 문서 전체의 25/24쪽 차이는 4쪽 한 줄 넘침에서 시작하는 별도 차이로 남습니다.
저장 사다리가 뺀 문단 아래 간격을 되감지 않는 수정(PR #8163 판정 공유)이 #8228(3e02fe274)로 devel 에 들어갔습니다. devel 4e690c930 새 빌드로 다시 쟀습니다(Native native-skia·fresh WASM, --compat 2024, 96dpi, raw 실루엣, 글꼴 공급).
회귀 검사 issue_7874_stored_ladder_omitted_spacing_after::paragraphs_keep_spacing_after_omitted_by_stored_ladder: PASS
합성 samples/issue7874/omitted-spacing-after.hwpx ↔ pdf/issue7874/omitted-spacing-after-2024.pdf: Native·WASM 전 2쪽 100 / 100
Activity
planet6897 commentedon Oct 18, 2026
PR #8015 로 수정했습니다. 저장 사다리가 문단 아래 간격을 뺀 경계(경계 간격 0)에서 후방 이동량이 앞 문단 아래 간격과 같으면 스냅하지 않습니다 — 조판·배치 공용
HeightCursor::vpos_adjust. pi=133·146 의 7.57px 되감기가 사라지고 제목 pi=135 가 다음 쪽 첫머리로 갑니다. 공개 합성 입력samples/issue7874(한/글 2024 Print) 1쪽 46.7 → 98.5%(fresh WASM 99.4%), 10k 코퍼스 변화 0. 문서 전체의 25/24쪽 차이는 4쪽 한 줄 넘침에서 시작하는 별도 차이로 남습니다.fix(height_cursor): 저장 사다리가 빼먹은 문단 아래 간격을 후방 스냅으로 되감지 않는다 (edwardkim#…
docs(report): edwardkim#7874 아래 간격을 뺀 저장 사다리 시각 증적
fix(typeset): 저장 사다리가 뺀 문단 아래 간격을 조판도 트림 복원으로 기대하지 않는다 (edwardkim#7874)
fix(typeset): 아래 간격 누락 판정을 위 간격 항까지 포함한 사다리 등식으로 정의한다 (edwardkim#7874)
docs(report): edwardkim#7874 재수정 Native/fresh WASM 전쪽 TSV·대표 PNG와 이관 …
docs(report): edwardkim#7874 fresh WASM 대표 review·overlay PNG 추가
feat: 기여 PR 10건 통합과 조판·Studio 회귀 보정 (#8228)
planet6897 commentedon Oct 26, 2026
devel 반영 확인 — 닫습니다
저장 사다리가 뺀 문단 아래 간격을 되감지 않는 수정(PR #8163 판정 공유)이 #8228(
3e02fe274)로 devel 에 들어갔습니다. devel4e690c930새 빌드로 다시 쟀습니다(Native native-skia·fresh WASM,--compat 2024, 96dpi, raw 실루엣, 글꼴 공급).issue_7874_stored_ladder_omitted_spacing_after::paragraphs_keep_spacing_after_omitted_by_stored_ladder: PASSsamples/issue7874/omitted-spacing-after.hwpx↔pdf/issue7874/omitted-spacing-after-2024.pdf: Native·WASM 전 2쪽 100 / 100samples/HWP5-nopassword-123456.hwpx↔pdf/HWP5-nopassword-123456-hwpx-2024.pdf:이 문서에는 이 이슈 범위 밖의 차이가 남아 있어, 문서 전체 피델리티 추적 이슈 #7746 쪽에 둡니다.