Skip to content

[7445] rowbreak-problem-pages HWP 전체 피델리티 #7726

Closed

Description

@jangster77

대표 이슈와 범위

대표 이슈: #7445

rowbreak-problem-pages HWP 전체 피델리티의 원본·독립 PDF·검증 근거와 후속 결과를 한곳에서 추적합니다. 2026-10-10 사용자 요청에 따라 #7445의 첫 본문과 전체 코멘트를 문제별 하위 이슈로 정리했습니다. 아래 기록은 원문의 링크·수치·명령·정정 내용을 보존한 인용입니다.

현재 추적 상태

기존 기록에 따른 후속 검증 대상입니다. 아래의 수치·완료 표현은 해당 작성 시점의 관측이며 이번 구조 변경으로 재검증한 결과가 아닙니다.

후속 확인 기준

  • 실제 수정은 해당 기록의 원본과 독립 한컴 Print PDF로 원인·적용 경로를 확인합니다.
  • 렌더링 회귀 추가·기대값 보정은 관련 전체 범위 Native/fresh WASM의 최저90% 이상과 직접 review 판독 후 진행합니다.
  • 원본 보존과 회귀 검사 처리 범위를 구분하고, 정확한 기존 검사를 문서 미달만으로 일괄 제외하지 않습니다.
  • 완료 여부는 이 하위 이슈의 실제 보정·검증·통합 증거로 갱신합니다. 과거 기록의 조건·범위는 아래 작성 시점을 기준으로 읽습니다.

원문과 후속 기록

기존 코멘트 10 — jangster77, 2026-09-28T12:29:06Z

출처: #7445 (comment)

추가 문서: rowbreak-problem-pages HWP의 전체 피델리티

실패한 body partition2의 본문 초과 신규1건을 같은 원문의 독립 한컴 PDF로 검증했습니다.

  • 원문 samples/rowbreak-problem-pages.hwp, SHA-256 10b6ab6548610e18c82ba78a1c844a00107fedbb28c195cb05e6fd20626d33ed, 553,984byte, 한컴2024 13.0.0.3622 저장본입니다.
  • 독립 기준 pdf/rowbreak-problem-pages-hwp-2024.pdf, 한컴2024/Hancom PDF1.3.0.550, 18쪽, SHA-256 2c49bda9cc21dc8b93b554d2607da241dd7e894657eb308ed823e7d44654e85c입니다. HWPX는 별도 입력이므로 그 PDF나 검사 결과로 대체하지 않습니다.
  • 현재18/기준18쪽입니다. Native96DPI/검증 글꼴 full 임베드/2px 관용 실루엣에서3쪽96.83411%,8쪽49.39444%,12쪽80.05503%,13쪽71.99775%,17쪽99.82183%,18쪽88.25163%로 90%미만이 확인됩니다.8쪽은 이전 쪽 내용이 추가로 이어지고 제27조 셀 경계가 약120px 아래로 내려가며 후속 항목의 페이지 소유도 달라집니다. 실제 review를 직접 확인했습니다.3쪽 표 조각의 본문 하단 초과는2.26667px입니다.

사용자 지시에 따라 원문을 mydocs/pr/assets/issue7445/rowbreak-problem-pages.hwp에 바이트 동일하게 보존하고, HWP 전용 렌더링/페이지 검사5함수, 공용 검사4함수의 HWP matrix 입력만 제거하겠습니다. 해당 corpus의 off-canvas/render-page/oracle3행만 제거합니다. HWPX 입력과 나머지 matrix 및 기대값·공차는 유지합니다. #1770의 순수 파서 origin-marker 계약은 원문 경로만 이관해 유지합니다. #4967의 cache-key 검사는 실제 page tree 기반이므로 이 HWP 렌더링 검사 제거 범위에 포함됩니다. 정적 IR 자료는 보존합니다.

선택 Native에 따른 부적합 증거이며 전체18쪽/fresh WASM 통과를 주장하지 않습니다. 글꼴 예외·새 함수·skip/ignore·허용치 완화는 없습니다. 회귀 제외를 피델리티 해결로 보고하지 않습니다. 추후 전체 내용 소유·표 조각과 후속 문단을 개선하고 Native/fresh WASM 전체 최저90% 이상, 독립 기대값과 수정 전FAIL/후PASS를 확인한 뒤 회귀를 재구축해야 합니다.

원문 보존·전용5함수와matrix4입력 및원장3행 제외를 코드 66510d325d7c085e684a914f4176d953bf9eef38에 반영했습니다. 유지 집중41함수는37PASS/다른 입력4FAIL/1265SKIP(exit100)입니다. 별도HWPX7쪽2함수·다른 exact-face 문서·관제교육 검사 실패를 유지하며 전체 통과로 보고하지 않습니다. fmt·Clippy3종·workspace build·고정 base manifest/unit-tier는모두exit0입니다. 제거 과정의 잔여 주석/단일입력 loop와 suite 재배정 누락을 수정한 뒤 최신 배정으로 재실행한 최종 결과입니다.


기존 코멘트 70 — jangster77, 2026-10-01T01:25:00Z

출처: #7445 (comment)

PR #7382 검토 후속: RowBreak HWP 8쪽 검사 한 건

기존 이슈에 등록된 samples/rowbreak-problem-pages.hwp(SHA-256 10b6ab6548610e18c82ba78a1c844a00107fedbb28c195cb05e6fd20626d33ed)와 독립 기준 pdf/rowbreak-problem-pages-hwp-2024.pdf(SHA-256 2c49bda9cc21dc8b93b554d2607da241dd7e894657eb308ed823e7d44654e85c)를 현재 PR #7382 검토 head에서 다시 비교했습니다. 양쪽 모두 18쪽입니다.

Native 96dpi 전체 18쪽 Visual Sweep에서 11쪽이 90% 미만이었고, 최저는 11쪽 57.61640%, 이번 검사의 대상 8쪽은 **78.56730%**였습니다. 글꼴 예외를 사용하지 않았으며, 8쪽의 표와 글줄 위치 차이는 review PNG에서 직접 확인했습니다. 이번 head의 fresh WASM 전쪽 비교는 아직 실행하지 않았습니다.

rowbreak_hwp_page8_keeps_continued_nested_reference_line은 글줄 상단 96.34px과 셀 상단 98.24px을 ±0.5px로 비교하여 실패했습니다. 문서 전체 피델리티가 90%에 못 미치는 동안 이 한 함수의 경계값만 보정해 PR #7382의 회귀 근거로 유지하지 않도록, 커밋 21ce163a0에서 이 차단 함수 한 개만 제외했습니다. 같은 파일의 나머지 HWP/HWPX 검사 17개는 17/17 통과했고, 원본 HWP·PDF와 다른 검사·기준값은 보존했습니다.

이 변경은 피델리티 해결이 아닙니다. 표 조각과 글줄의 독립 PDF 정합을 개선하고 Native/fresh WASM 전체 페이지 최저 90% 이상을 확인한 뒤, 위치 고정 대신 내용 소유·셀 포함 관계를 검사하는 회귀로 재구축해야 합니다. 근거는 mydocs/pr/archives/pr_7382_review.md 보정264와 대표 그림 mydocs/pr/assets/pr7382_20260926/stage264_rowbreak_hwp_review_008.png에 기록했습니다.

Activity

  1. self-assigned this
    on Oct 10, 2026
  2. added
    bugSomething isn't working
    layout문서 레이아웃/페이지네이션: 표·그림 배치, float/anchor, 줄·행 높이, 겹침·클리핑
    renderingSVG/Canvas/PDF 등 렌더 출력과 시각 표시: 그리기, 표시 누락, bbox, paint 정합성
    testregression test
    on Oct 10, 2026
  3. jangster77 commented on Oct 24, 2026

    @jangster77
    CollaboratorAuthor

    PR #8191 병합 후 완료 기록

    PR #8191을 병합했습니다. 이 하위 이슈의 동일 원본 범위에서 전쪽 비교·내용 보존 회귀와 확대 판독을 확인하여 완료 처리합니다. 대표 #7445 전체 해결을 뜻하지 않습니다.

    • merge: 60972534680a0c5e51e54ec189b92e252e81a867, 검증 code: 8ba0980feb5995dffbfdb84601e53085b49f810d, trailing: 8310b925b699277f355deeae58456db898117eef
    • 코드 Full CI와 최종 head CI의 실제 성공·재사용 판정을 확인했습니다.
    • 현재 전체 nextest 11,766 PASS / 0 FAIL / 45 skip, Native/fresh WASM 필수 게이트와 실제 소비를 통과했습니다. Mac WASM은 locked wrapper의 --no-opt 로컬 대체 빌드이며 Docker 최적화 통과가 아닙니다.
    조건 독립/후보 쪽수 Native 최저 raw fresh WASM 최저 raw
    rowbreak18 18 93.06876% 92.99291%

    해당 전쪽에서90% 미달·누락/중복·후보 쪽수 불일치가 없으며 내용 소속·순서·보존을 정식 회귀와 독립 Print로 확인했습니다. source77/base e7 PNG의 원래 producer/build/font hash를 감사하여 현재196 TSV를 다시 산출했습니다. 이를8ba 전쪽 재캡처로 쓰지 않으며, 새8ba 실제 소비72관측·API/셀 편집·전체 회귀를 별도로 검증했습니다.

    입력과 독립 기준

    • 입력: 10b6ab6548610e18c82ba78a1c844a00107fedbb28c195cb05e6fd20626d33ed
    • 독립 한컴 Print PDF: 2c49bda9cc21dc8b93b554d2607da241dd7e894657eb308ed823e7d44654e85c

    현재 전체 회귀에서 실제 PASS를 확인한 검사

    • tests/cases/issue_7470_rowbreak_source_frame_ownership.rs: original_page_count_and_cut_labels_keep_their_owners, nested_terminal_line_is_owned_once_inside_the_continuation_cell, visible_lines_stay_inside_both_sides_of_the_source_cut, first_fragment_keeps_its_blank_band_below_the_last_owned_line, visible_successor_uses_the_original_line_origin_without_readding_lead, coanchored_tac_does_not_skip_or_overlap_its_float_sibling

    입력·전쪽 TSV 원문은 과거50조건 원장을 보존한 것입니다. 현재49조건과195개 동일 TSV 및1개 최신 base 원문은 PR 본문에서 구분했습니다. 현재 셀프 리뷰와 판독·잔여 기록을 함께 확인하실 수 있습니다.

    Visual Sweep 비교 방법을 따랐습니다. raw는 사람의 판정 정확도가 아니라 내용 실루엣의 자동 일치율 보조값입니다. 얇은 선·안티앨리어싱·미세 획/간격 잔여가 있으며 RGB·원 글꼴의 완전 동일성을 주장하지 않습니다. 과거 미완료/이관 기록은 당시 이력으로 보존하며 이 동일 입력의 현재 개선과 구분합니다.

    native rowbreak18 review

    native rowbreak18 overlay

    wasm rowbreak18 review

    wasm rowbreak18 overlay

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinglayout문서 레이아웃/페이지네이션: 표·그림 배치, float/anchor, 줄·행 높이, 겹침·클리핑renderingSVG/Canvas/PDF 등 렌더 출력과 시각 표시: 그리기, 표시 누락, bbox, paint 정합성testregression test

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions