Skip to content

수식 Canvas/WASM 렌더 경로 누락 정정 — SVG-only 정정 2건 동기화 (font-size + 적분 nolimits) #900

@planet6897

Description

@planet6897

현상

rhwp-studio (WASM Canvas 경로) 에서 samples/exam_math.hwp 수식 들여쓰기·정렬이 한컴 2022 PDF (samples/exam_math.pdf) 와 불일치. CLI export-svg 는 정상.

원인

SVG 경로 (src/renderer/equation/svg_render.rs) 정정 PR 2건이 Canvas 경로 (src/renderer/equation/canvas_render.rs) 에 미반영. 동일 LayoutBox 트리를 소비하지만 렌더 함수 분기 단계에서 누락된 정정.

누락 1 — font_size_from_box 제거 (commit 5a6f9a8, Task #142, 2026-04-14)

font_size_from_box(lb, fs)lb.height 반환. 복합 요소(자식 포함 박스)의 height 를 font-size 로 오용해 글리프가 의도보다 크게 그려짐. SVG 는 부모 전달 fs 사용으로 정정. Canvas 미정정 arm:

  • src/renderer/equation/canvas_render.rs:45LayoutKind::Text
  • 같은 파일 line 56 — LayoutKind::Number
  • 같은 파일 line 62 — LayoutKind::Symbol
  • 같은 파일 line 70 — LayoutKind::MathSymbol (적분 특례 포함)
  • 같은 파일 line 76 — LayoutKind::Function

(Limit arm 는 d47b7c7, Fraction 분수선은 7048d3e 로 별도 정정 완료)

누락 2 — 적분 nolimits 배치 (commit 292dbbe, Task #142, 2026-04-16)

SVG 는 BigOp 에서 적분 기호 검출 시 좌측·작은 첨자 우상단·우하단 배치 (nolimits). Canvas 는 모든 BigOp 를 중앙·sup 위쪽 (limits) 으로 처리.

  • src/renderer/equation/canvas_render.rs:138LayoutKind::BigOp 적분 분기 추가 필요
  • src/renderer/equation/canvas_render.rs:70LayoutKind::MathSymbol 적분 시 lb.height 사용 (BIG_OP_SCALE 적용 높이)

정정 범위 (canvas_render.rs 단일 파일)

SVG 경로와 1:1 동기화. 5개 arm 의 fi 산출 룰을 SVG 와 일치, BigOp 에 is_integral_symbol 분기 추가.

권위 자료

  • samples/exam_math.pdf (한컴 2022 PDF)
  • SVG 경로 output/svg/exam_math/exam_math_001.svg (정합 기준)

회귀 가드

  • cargo test --lib 수식 테스트군 GREEN 유지
  • rhwp-studio 에서 samples/exam_math.hwp 시각 비교 — PDF 정합

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions