Skip to content

[layout] HWPX 로 저장한 뒤 다시 열면 글자처럼 그림 + 위아래 글상자 문단의 줄 높이와 다음 문단 위치가 바뀐다 (합성 입력) #8271

Closed

Description

@planet6897

증상

한 문단에 글자처럼 취급한 그림과 떠 있는 위아래(TopAndBottom) 글상자가 함께 있는 문서를 편집한 뒤 exportHwpx()로 저장하고 rhwp로 다시 열면, 저장 전 화면과 배치가 달라진다.

같은 편집을 exportHwp()로 저장해 다시 열면 저장 전과 같다. 그림만 있는 문단은 HWPX로 다시 열어도 같다.

재현 (WASM API)

const d = HwpDocument.createEmpty(); d.createBlankDocument();
d.insertText(0, 0, 0, '앞 글 뒤 글');
d.splitParagraph(0, 0, 7); d.insertText(0, 1, 0, '다음 문단');
const p = JSON.parse(d.insertPicture(0, 0, 2, '', jpgBytes, 8504, 4447, 1000, 523, 'jpg', '그림'));
d.setPictureProperties(0, p.paraIdx, p.controlIdx, JSON.stringify({ treatAsChar: true }));
const pd = JSON.parse(d.getPageDef(0));
const s = JSON.parse(d.createShapeControl(JSON.stringify({
  sectionIdx: 0, paraIdx: 0, charOffset: 7, width: 17008, height: 5669,
  horzOffset: pd.marginLeft, vertOffset: 15000, treatAsChar: false,
  textWrap: 'TopAndBottom', shapeType: 'textbox' })));
d.insertTextInCell(0, s.paraIdx, s.controlIdx, 0, 0, 0, '중요');
const again = new HwpDocument(d.exportHwpx());   // ← 배치가 바뀐다

jpgBytes는 rhwp-studio/public/samples/images/moogung.jpg이다. #8168 재현과 같은 편집이다.

getPageControlLayout(0)·getPageTextLayout(0) 값(96dpi px):

빌드 문서 편집 직후 HWPX 다시 열기 HWP 다시 열기
devel 4e690c930 그림만 그림 y132–192, 다음 문단 y200 같음 같음
devel 4e690c930 그림 + 위아래 글상자 그림 y215–275, 다음 문단 y283 그림 y176–235, 다음 문단 y154 편집 직후와 같음
#8206 head 6e59ef78f 그림 + 위아래 글상자 그림 y132–192, 다음 문단 y283 그림 y93–152, 다음 문단 y154 편집 직후와 같음

(devel의 편집 직후 그림 y215는 #8168 결함이고, #8206이 고친다. 이 이슈는 HWPX로 다시 열 때의 차이다.)

확인한 원인 범위

  • devel의 HWPX 저장은 편집으로 줄 분할이 바뀐 문단의 linesegarray를 의도적으로 뺀다(dirty_text_partition_omits_hwpx_linesegarray, 한/글이 다시 계산하게 하는 설계). 위 문서의 첫 문단에는 linesegarray가 없다.
  • 그래서 rhwp가 다시 열면 첫 문단을 저장 줄 정보 없이 재조판한다. 그림만 있는 문단은 이 재조판에서 줄 높이가 맞지만, 같은 문단에 위아래 글상자가 있으면 그림 줄 높이와 다음 문단 위치가 틀린다.
  • 재조판 경로의 어느 단계(줄 높이 계산 또는 위아래 개체 회피)인지는 아직 확인하지 않았다.

독립 기준

  • 기준은 같은 문서의 저장 전 rhwp 배치와 HWP 저장본 재열기 배치다. 둘은 서로 같다.
  • 한/글 2024 Print PDF(pdf/issue8168/tac_picture_with_topandbottom_textbox-2024.pdf, 같은 편집의 이전 HWPX 저장본)에서는 「앞 [그림] 글 뒤 글」이 한 줄이고, 글상자는 그 줄 아래, 「다음 문단」은 글상자 아래에 있다.
  • 입력 생성 방식: 위 스크립트로 만든 합성 입력이다.

영향

  • 편집한 문서를 HWPX로 저장한 뒤 rhwp(studio 포함)에서 다시 열면 그림과 다음 문단이 겹치거나 어긋나 보인다. 한/글에서 여는 경우는 한/글이 줄을 다시 계산하므로 해당하지 않는다(미확인).
  • #8206의 미검증 합성 입력은 이 때문에 HWPX 대신 HWP로 만들었다.

범위 메모

Activity

  1. planet6897 commented on Oct 28, 2026

    @planet6897
    ContributorAuthor

    PR #8283 가 #8348(통합 c76d87cfda)로 devel 에 반영되어 닫습니다.

    devel f291d772a1 재측정:

    • issue_8271_hwpx_reopen_tac_picture_float·issue_8168_topandbottom_sibling_tac_picture 통과
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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