Skip to content

Task #1270: 캡션 내 인라인 이미지 렌더링 복구#1551

Merged
postmelee merged 4 commits into
edwardkim:develfrom
postmelee:local/task1270
Jun 27, 2026
Merged

Task #1270: 캡션 내 인라인 이미지 렌더링 복구#1551
postmelee merged 4 commits into
edwardkim:develfrom
postmelee:local/task1270

Conversation

@postmelee

@postmelee postmelee commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

개요

Refs #1270

캡션 문단 안의 treat_as_char 인라인 그림이 렌더링되지 않던 문제를 수정합니다.

기존 layout_caption() 경로는 캡션 문단을 layout_composed_paragraph()로 넘길 때 인라인 이미지 렌더링에 필요한 원본 parabin_data_contentNone으로 전달하고 있었습니다. 이 PR에서는 캡션 문단의 실제 para와 상위 렌더 경로의 bin_data_content를 스레딩해, 캡션 안 인라인 그림이 기존 paragraph layout의 이미지 방출 경로를 사용할 수 있게 했습니다.

메인테이너 지시사항 반영

이번 PR은 메인테이너 코멘트의 방향에 따라 범위를 제한합니다.

"(a) 인라인 스레딩만 이번 범위"

"본 샘플(image2)은 플로팅이라 이번 (a) PR로는 화면에 안 나타나는 게 정상"

참고: #1270 (comment)

범위

  • 캡션 내 treat_as_char 인라인 이미지 렌더링 복구
  • layout_caption() 호출부에 bin_data_content 전달
  • depth 1 인라인 한정
  • 캡션 속 그림의 캡션 재귀 렌더링은 포함하지 않음

범위 제외 및 후속 추적

이슈 첨부 샘플의 오른쪽 상단 SEOUL MY SOUL 로고, 즉 image2는 캡션 내부 그림이지만 textWrap="TOP_AND_BOTTOM"인 플로팅 배치입니다.

따라서 이 PR로는 해당 로고가 아직 화면에 나타나지 않는 것이 예상된 동작입니다. 이 PR은 메인테이너 지시에 따라 (a) 인라인 캡션 이미지 해결과 depth 1 한정에 집중합니다.

플로팅 캡션 이미지는 caption 영역에 앵커, 줄 매핑, wrap 배치 로직을 일반화해야 하므로 후속 이슈 #1585에서 추적합니다.

이 때문에 #1270은 이 PR이 merge된 뒤에도 닫지 않고, 플로팅 캡션 이미지 후속까지 추적 상태로 유지해야 합니다.

변경 사항

  • layout_caption()bin_data_content: &[BinDataContent] 인자 추가
  • 캡션 문단 layout 시 Some(para) / Some(bin_data_content) 전달
  • 관련 호출부 정합화
  • 캡션 내 인라인 TAC picture 회귀 테스트 추가

테스트

  • cargo fmt --check
  • cargo test --test issue_1270_caption_inline_image
  • cargo test --test issue_1139_inline_picture_duplicate
  • cargo test --test issue_1352_table_cell_tac_picture_text
  • cargo test --test issue_1459_topbottom_picture_reflow
  • cargo test --lib
  • cargo clippy --lib -- -D warnings
  • cargo test --test issue_530
  • cargo test --test issue_1486_hwpx_partial_tac_table

@postmelee postmelee marked this pull request as ready for review June 26, 2026 02:19
@postmelee postmelee added this to the v1.0.0 milestone Jun 26, 2026
@postmelee postmelee self-assigned this Jun 26, 2026
@postmelee postmelee added hwpx HWPX 포맷 처리: 파싱, 직렬화, roundtrip, XML/ZIP 패키지 보존, 호환성 개선 layout 문서 레이아웃/페이지네이션: 표·그림 배치, float/anchor, 줄·행 높이, 겹침·클리핑 rendering SVG/Canvas/PDF 등 렌더 출력과 시각 표시: 그리기, 표시 누락, bbox, paint 정합성 labels Jun 27, 2026
@postmelee

Copy link
Copy Markdown
Collaborator Author

보완 커밋 fdfe568 을 추가했습니다.

리뷰 중 확인한 경계 조건은 표 캡션이 cell_index = 65534 센티널 cell_ctx를 쓰는 상태에서, 텍스트 없이 TAC picture만 있는 캡션 문단이 기존 빈 줄 TAC picture 분기(cell_ctx.is_none())를 통과하지 못할 수 있다는 점이었습니다.

반영 내용:

  • paragraph_layout.rs에서 빈 줄 TAC picture 렌더링 조건에 캡션 센티널(cell_index == 65534) 예외를 좁게 추가
  • 실제 표 셀 내부 중복 렌더링 방지 조건은 유지
  • issue_1270_caption_inline_image 테스트에 picture-only 캡션 문단 케이스 추가
  • Stage 3/4 문서와 최종 보고서 검증 결과 갱신

로컬 검증:

  • cargo test --test issue_1270_caption_inline_image — 2 passed
  • cargo test --test issue_1352_table_cell_tac_picture_text
  • cargo test --test issue_1459_topbottom_picture_reflow
  • cargo test --test issue_530
  • cargo test --test issue_1139_inline_picture_duplicate
  • cargo fmt --check
  • cargo clippy --lib -- -D warnings
  • cargo test --lib — 1959 passed, 6 ignored
  • cargo test --test issue_1486_hwpx_partial_tac_table

@postmelee postmelee merged commit a94e205 into edwardkim:devel Jun 27, 2026
7 checks passed
@postmelee

Copy link
Copy Markdown
Collaborator Author

머지 완료했습니다.

검증:

  • 코드 검증 대상 head fdfe5688 기준 Build & Test / CodeQL / Render Diff 통과
  • review 문서 전용 최종 head eaa700db 기준 preflight 통과, heavy jobs는 문서 전용 변경으로 skipped
  • 로컬 검증: cargo test --test issue_1270_caption_inline_image 2 passed
  • 관련 회귀 테스트, cargo test --lib, cargo clippy --lib -- -D warnings 통과 확인

주의: #1270 은 플로팅 캡션 이미지 후속 범위가 남아 있으므로 이번 merge로 닫지 않습니다.

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

Labels

hwpx HWPX 포맷 처리: 파싱, 직렬화, roundtrip, XML/ZIP 패키지 보존, 호환성 개선 layout 문서 레이아웃/페이지네이션: 표·그림 배치, float/anchor, 줄·행 높이, 겹침·클리핑 rendering SVG/Canvas/PDF 등 렌더 출력과 시각 표시: 그리기, 표시 누락, bbox, paint 정합성

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant