배경
#938 검증 중 추가 워터마크 샘플(143E433F503322BD33.hwp, Tistory [HWP 2010] 워터마크 예제)을 열어보니, 큰 컬러 배경 이미지가 페이지 전체로 늘어나 보이는 별도 문제가 확인됐다.
이 문제는 #938의 JPEG 워터마크 보정 대상이 아니다. #938은 그림 개체의 effect != RealPic + brightness/contrast 워터마크 보정이고, 이 샘플은 페이지 배경/BorderFill 이미지 경로다.
해당파일 다운로드 링크:
https://t1.daumcdn.net/cfile/tistory/143E433F503322BD33
재현
143E433F503322BD33.hwp를 rhwp-studio 또는 rhwp export-svg로 연다.
- 문서의 파란 배경 이미지가 페이지 전체 크기로 늘어나 렌더링된다.
- dump 결과에서는 해당 이미지가 그림 개체가 아니라 페이지 배경 이미지로 확인된다.
border_fill[2] fill_type=Image image(bin_id=3, mode=Center)
현재 동작
- layout 단계에서는
PageBackgroundImage { fill_mode: img_fill.fill_mode }로 mode=Center를 보존한다.
- 하지만 SVG/Canvas 렌더러에서 PageBackground 이미지를 항상 페이지 bbox 전체로 그린다.
관련 코드:
src/renderer/layout.rs: build_page_background()에서 PageBackgroundImage.fill_mode 보존
src/renderer/svg.rs: RenderNodeType::PageBackground 이미지 출력 시 preserveAspectRatio="none" + 전체 bbox 사용
src/renderer/web_canvas.rs: RenderNodeType::PageBackground 이미지 출력 시 draw_image(..., bbox 전체) 사용
기대 동작
PageBackground/BorderFill 이미지도 일반 이미지 채우기와 동일하게 ImageFillMode를 존중해야 한다.
Center: 원본 크기 또는 HWP가 지정한 배경 이미지 크기 기준으로 중앙 배치
FitToSize: 현재처럼 대상 영역에 맞춤
- tile 계열: 반복 배치
- 기타 위치 모드: 해당 기준점에 배치
범위
#938과 분리해서 처리한다. #938은 복학원서.hwp의 JPEG 워터마크 톤 보정에 집중하고, 이 이슈는 페이지 배경/BorderFill 이미지 fill mode 렌더링 정합만 다룬다.
배경
#938 검증 중 추가 워터마크 샘플(
143E433F503322BD33.hwp, Tistory [HWP 2010] 워터마크 예제)을 열어보니, 큰 컬러 배경 이미지가 페이지 전체로 늘어나 보이는 별도 문제가 확인됐다.이 문제는 #938의 JPEG 워터마크 보정 대상이 아니다. #938은 그림 개체의
effect != RealPic+brightness/contrast워터마크 보정이고, 이 샘플은 페이지 배경/BorderFill 이미지 경로다.해당파일 다운로드 링크:
https://t1.daumcdn.net/cfile/tistory/143E433F503322BD33
재현
143E433F503322BD33.hwp를 rhwp-studio 또는rhwp export-svg로 연다.현재 동작
PageBackgroundImage { fill_mode: img_fill.fill_mode }로mode=Center를 보존한다.관련 코드:
src/renderer/layout.rs:build_page_background()에서PageBackgroundImage.fill_mode보존src/renderer/svg.rs:RenderNodeType::PageBackground이미지 출력 시preserveAspectRatio="none"+ 전체 bbox 사용src/renderer/web_canvas.rs:RenderNodeType::PageBackground이미지 출력 시draw_image(..., bbox 전체)사용기대 동작
PageBackground/BorderFill 이미지도 일반 이미지 채우기와 동일하게
ImageFillMode를 존중해야 한다.Center: 원본 크기 또는 HWP가 지정한 배경 이미지 크기 기준으로 중앙 배치FitToSize: 현재처럼 대상 영역에 맞춤범위
#938과 분리해서 처리한다. #938은
복학원서.hwp의 JPEG 워터마크 톤 보정에 집중하고, 이 이슈는 페이지 배경/BorderFill 이미지 fill mode 렌더링 정합만 다룬다.