Skip to content

Task #671: 표 셀 내부 paragraph 줄바꿈 시 다중 LINE_SEG 줄 겹침 정정 (closes #671)#673

Closed
jangster77 wants to merge 3 commits into
edwardkim:develfrom
jangster77:local/task671
Closed

Task #671: 표 셀 내부 paragraph 줄바꿈 시 다중 LINE_SEG 줄 겹침 정정 (closes #671)#673
jangster77 wants to merge 3 commits into
edwardkim:develfrom
jangster77:local/task671

Conversation

@jangster77

Copy link
Copy Markdown
Collaborator

요약

samples/계획서.hwp 1페이지 표 셀에서 단일 paragraph 가 셀 너비에 맞춰 다중 줄로 줄바꿈될 때 두 줄 이상이 같은 y 좌표에 겹쳐 그려지던 결함 정정.

closes #671

본질 진단

samples/계획서.hwp 의 모든 셀 paragraph 가 line_segs.len() == 0 상태 — 한컴이 PARA_LINE_SEG 를 의도적으로 인코딩하지 않은 케이스 (다른 정상 HWP5 파일은 셀 paragraph 에 정상 인코딩).

HWP5 파일 → 셀 paragraph PARA_LINE_SEG 부재
  ↓
파서 정상 → para.line_segs = [] (빈 Vec)
  ↓
composer::compose_lines fallback (composer.rs:296-323):
  단일 ComposedLine 으로 전체 텍스트 압축 ⚠️
  ↓
layout 한 번 호출, vpos=0
  ↓
시각 결함 (한 줄 압축, 텍스트 겹침)

본질 정정

신규 함수 (src/renderer/composer.rs)

pub fn recompose_for_cell_width(
    composed: &mut ComposedParagraph,
    para: &Paragraph,
    cell_inner_width_px: f64,
    styles: &ResolvedStyleSet,
)

3 중 가드 (회귀 0 보장):

  1. para.line_segs.is_empty() — 한컴 인코딩 부재만
  2. composed.lines.len() == 1 — fallback 단일 ComposedLine 만
  3. 측정 폭 > cell_inner_width_px — 너비 안에 들어가면 분할 불필요

분할 전략: 단어 경계 (공백) 우선 + 단일 단어가 width 초과 시 글자 단위 break (CJK 안전).

호출 위치 (6곳)

파일:줄 역할
composer.rs 신규 함수 추가
table_layout.rs:1226 셀 layout 렌더링 경로 (핵심)
table_layout.rs:614/678/700 resolve_row_heights 측정 fallback
table_partial.rs:94/358 분할 표 측정 + layout
height_measurer.rs:527/712 MeasuredTable 핵심 측정 (row_heights 정합)

회귀 위험 영역 좁힘

  • 본문 paragraph 무영향 (compose_paragraph 변경 없음)
  • HWPX 영역 무영향
  • 정상 line_segs 인코딩된 셀 무영향 (1차 가드)
  • 단일 줄 텍스트 무영향 (3차 가드)

feedback_rule_not_heuristic + feedback_hancom_compat_specific_over_general 정합.

검증

검증 영역 결과
cargo build --release
cargo test --lib --release 1155 passed (회귀 0)
cargo test --release --test svg_snapshot 6/6
cargo test --release --test issue_546 1/1
cargo test --release --test issue_554 12/12
cargo clippy --release ✅ 0 warnings

광범위 페이지네이션 회귀 sweep

samples/ 폴더 전체 187 fixture 페이지 수 BEFORE/AFTER 비교:

영역 결과
BEFORE (devel) 187 fixtures / 2013 pages
AFTER (Task #671) 187 fixtures / 2013 pages
차이 0

핵심 fixture 개별 검증 — aift / exam_kor / exam_math / exam_science / synam-001 / footnote-01 / hwp3-sample / hwp3-sample4 / hwp3-sample5 / 계획서 모두 차이 0.

시각 판정

samples/계획서.hwp 1페이지 표:

BEFORE (정정 전) AFTER (정정 후)
[13] r=3,c=1 "탈레스 HSM 관리 시스템 및 REST API" 1줄 압축 (글자 겹침) 2줄 정상 분리
[21] r=5,c=1 "탈레스 HSM 을 관리하기위한 CCC..." 1줄 압축 (글자 겹침) 3줄 분리

본 PR 의 본질 영역 (셀 paragraph line_segs 부재 → 줄겹침) 정정 완료.

잔존 결함 영역 (별도 Issue)

본 PR 정정 후 노출된 잔존 영역 (셀 [21] 마지막 줄 ~0.88px 클립 + 셀 [52] 3번째 paragraph 클립):

본 PR 본질 영역 (line_segs 부재) 과 다른 본질 (TAC 표 권위 영역 불일치) 으로 분리 — feedback_hancom_compat_specific_over_general 정합.

권위 자료

samples/계획서.hwp (143KB, HWP 5.x) — 본 PR 의 권위 재현 영역. git tracked 영구 보존 영역으로 등록 (작업지시자 결정).

진단 도구

  • examples/inspect_task671.rs — 셀 paragraph line_segs 검사
  • examples/inspect_task671_v2.rs — recompose 결과 정밀 진단

산출물

영역 파일
코드 정정 src/renderer/composer.rs, src/renderer/layout/table_layout.rs, src/renderer/layout/table_partial.rs, src/renderer/height_measurer.rs
진단 도구 examples/inspect_task671.rs, examples/inspect_task671_v2.rs
권위 자료 samples/계획서.hwp
거버넌스 산출물 mydocs/plans/task_m100_671{,_impl}.md, mydocs/working/task_m100_671_stage{1,2,3}.md, mydocs/report/task_m100_671_report.md

커밋 시퀀스 (3 단계)

  • Stage 1: 본질 진단 + 권위 자료 보존
  • Stage 2: 본질 정정 — recompose_for_cell_width 도입
  • Stage 3: 광범위 회귀 sweep + 최종 보고서 + orders 갱신

jangster77 added 3 commits May 8, 2026 17:37
- 수행계획서 / 구현계획서 작성
- 진단 도구 (examples/inspect_task671.rs / _v2.rs) — 셀 paragraph
  line_segs 검사 + recompose 정밀 진단
- 권위 자료 samples/계획서.hwp git tracked 등록 (HWP5 한컴
  PARA_LINE_SEG 인코딩 부재 케이스 권위 영역)
- Stage 1 보고서: composer::compose_lines fallback 의 단일 ComposedLine
  압축이 본질 결함 위치로 식별. line_segs 비어 있는 셀 paragraph
  fallback 경로에서 텍스트 폭 측정 + 자동 줄바꿈 미수행 → 셀 너비
  초과 텍스트 한 줄 그려져 줄겹침 시각 결함

refs edwardkim#671
본질: HWP5 일부 파일은 셀 paragraph 의 PARA_LINE_SEG 를 인코딩하지
않는다 (한컴이 layout 시 자동 계산). 본 환경 fallback (compose_lines
단일 ComposedLine 압축) 은 셀 너비 초과 텍스트가 한 줄에 그려져
줄겹침 시각 결함 발생.

신규 함수 (composer.rs):
- recompose_for_cell_width(composed, para, cell_inner_width_px, styles)
  — 진입점 (3 중 가드: line_segs.is_empty() + lines.len()==1 + 폭 초과)
- split_composed_line_by_width(line, max_width_px, styles)
  — 단어 경계 우선 + CJK 글자 단위 break 본질 룰

호출 위치 (6 곳):
- table_layout.rs:1226 — 셀 layout 렌더링 경로 (핵심)
- table_layout.rs:614/678/700 — resolve_row_heights 측정 fallback
  (caller + callee 시그니처 변경)
- table_partial.rs:94/358 — 분할 표 측정 + layout
- height_measurer.rs:527/712 — MeasuredTable 핵심 측정
  (row_heights 정합 보장)

회귀 위험 영역 좁힘:
- 본문 paragraph 무영향 (compose_paragraph 변경 없음)
- HWPX 영역 무영향
- 정상 line_segs 인코딩된 셀 무영향 (1차 가드)
- 단일 줄 텍스트 무영향 (3차 가드)

검증:
- cargo test --lib --release: 1155 passed (회귀 0)
- svg_snapshot: 6/6
- issue_546: 1/1
- issue_554: 12/12
- cargo clippy: 0 warnings

refs edwardkim#671
광범위 페이지네이션 회귀 sweep:
- 187 fixtures / 2013 pages BEFORE/AFTER
- 차이 0 (회귀 위험 영역 완전 좁힘 입증)

핵심 fixture 개별 검증 (모두 차이 0):
  aift / exam_kor / exam_math / exam_science / synam-001 /
  footnote-01 / hwp3-sample / hwp3-sample4 / hwp3-sample5 / 계획서

시각 판정 (작업지시자 게이트웨이):
- 셀 [13] r=3,c=1: 1줄 압축(겹침) → 2줄 정상 분리 ✅
- 셀 [21] r=5,c=1: 1줄 압축(겹침) → 3줄 분리 ✅
- 본 task 본질 영역 (줄겹침) 정정 완료

잔존 결함 영역 별도 분리:
- TAC 표 (treat_as_char=true) 비례 축소 메커니즘
  (height_measurer.rs:822-830) → Issue edwardkim#672 별도 등록
- feedback_hancom_compat_specific_over_general 정합

산출물:
- mydocs/report/task_m100_671_report.md — 최종 결과 보고서
- mydocs/working/task_m100_671_stage3.md — Stage 3 단계별 보고서
- mydocs/orders/20260507.md — Task edwardkim#671 상태 갱신 + Issue edwardkim#672 등록 정보

closes edwardkim#671
edwardkim added a commit that referenced this pull request May 8, 2026
closes #671

3 commits 단계별 보존 (작업지시자 직접 결정):
- a1c9042 Stage 1: 본질 진단 + 권위 자료 보존
- 30fa295 Stage 2: 본질 정정 — recompose_for_cell_width 도입
- e2ddd65 Stage 3: 광범위 회귀 sweep + 최종 보고서 + orders 갱신

본질 정정:
- samples/계획서.hwp 영역의 모든 셀 paragraph 영역의 line_segs.len() == 0 영역
  — 한컴이 PARA_LINE_SEG 영역을 의도적으로 인코딩하지 않은 케이스
- composer::compose_lines fallback 영역의 단일 ComposedLine 압축 → 시각 결함
- 정정: recompose_for_cell_width(composed, para, cell_inner_width_px, styles)
  — composer.rs 신규 함수 + table_layout.rs / table_partial.rs / height_measurer.rs 6 곳 호출

3중 가드 (회귀 0):
1. para.line_segs.is_empty() — 한컴 인코딩 부재만
2. composed.lines.len() == 1 — fallback 단일 ComposedLine 만
3. 측정 폭 > cell_inner_width_px — 너비 안에 들어가면 분할 불필요

분할 전략: 단어 경계 (공백) 우선 + 단일 단어가 width 초과 시 글자 단위 break (CJK 안전)

본 환경 검증:
- cherry-pick 영역: Stage 1+2 깨끗, Stage 3 orders 영역 ours
- cargo test --release ALL PASS (1165 lib + svg_snapshot 7/7 + issue_546 1/1 + issue_554 12/12)
- clippy clean
- 광범위 sweep 7 샘플 170 페이지: same=170 / diff=0 ✅
- 권위 자료 (samples/계획서.hwp 143KB) 영구 보존

PR: #673
컨트리뷰터: @jangster77 (Taesup Jang)
잔존 분리: Issue #672 — TAC 표 비례 축소 시 셀 콘텐츠 클립 영역 (별도 본질)
edwardkim added a commit that referenced this pull request May 8, 2026
closes #671 (자동보정 회귀 영역 정정 영역 통합)

본질:
PR #673 (Task #671) 영역의 layout 단계 영역 정정 영역의 가드 #1 (line_segs.is_empty())
영역이 자동보정 영역 영역의 LINE_SEG 영역 채움 영역 후 영역 거짓 영역으로 영역 →
PR #673 영역의 정정 영역 미적용 영역 → 자동보정 영역에서 한 줄 겹침 회귀.

작업지시자 시각 판정 영역에서 발견:
"그대로 보기 하면 2줄로 처리되지만 오히려 자동보정 선택하면 한줄로 겹쳐집니다."

자동보정 영역의 결함 본질:
src/document_core/commands/document.rs:270 + :425 영역 영역 두 곳 영역 모두
reflow_line_segs(cell_para, col_width, ...) 영역 — column 폭 영역 사용.
주석 영역 의도: "셀 너비가 아직 불확정이므로 컬럼 너비를 근사값으로 사용. ...
실제 셀 내 줄바꿈은 테이블 레이아웃이 재수행한다." 그러나 본 환경 영역의 layout
영역 (PR #673) 영역의 가드 #1 영역으로 인해 재수행 영역 미작동 영역.

정정 (옵션 A1):
- col_width 영역 → cell_inner_width 영역 (cell.width - cell.padding.left - cell.padding.right)
- 두 곳 영역 (line 270 자동 + line 425 사용자 명시) 영역 모두 영역 동일 본질 영역 정정
- 자동보정 영역 자체 영역에서 셀 폭 영역으로 LINE_SEG 영역 채움 영역
  → recompose_for_cell_width 영역의 가드 #1 (line_segs.is_empty()) 영역 우회 영역
  → 본 환경 영역의 layout 영역의 multi-line 영역 분할 영역 정합

본 환경 검증:
- cargo test --release ALL PASS (1165 lib + 회귀 0)
- cargo clippy --release clean

작업지시자 결정:
"A1 으로 진행해봅니다. 검증 할 수 있게 준비해주세요"

PR: #673
컨트리뷰터: @jangster77 (Taesup Jang)
edwardkim added a commit that referenced this pull request May 8, 2026
PR #673 (Task #671): 표 셀 내부 paragraph 줄바꿈 시 다중 LINE_SEG 줄 겹침 정정
- merge commit: a6645ed (3 commits 단계별 보존 no-ff merge)
- 메인테이너 후속 commit: 4d354d2 (A1 자동보정 셀 폭 정정)
- 본 환경 결정적 검증 1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13 + clippy clean
- 광범위 sweep 7 샘플 170 페이지: same=170 / diff=0
- WASM 빌드 4,589,092 bytes
- 작업지시자 1차 시각 판정 영역의 자동보정 회귀 발견 → A1 정정 → 2차 ★ 성공

본질:
- recompose_for_cell_width 신규 함수 (composer.rs) + 3중 가드
- 한컴 LINE_SEG 비표준 영역의 본질 정정 영역 (project_hancom_lineseg_behavior)
- 자동보정 영역의 col_width → cell_inner_width 영역 정정 (A1)

컨트리뷰터: @jangster77 (Taesup Jang) — 첫 사이클
잔존 분리: Issue #672 (TAC 표 비례 축소 — 별건 본질)

closes #671

산출물:
- mydocs/pr/archives/pr_673_review.md
- mydocs/pr/archives/pr_673_report.md
- mydocs/orders/20260508.md 갱신
- 메모리 룰 신규: feedback_fix_scope_check_two_paths
@edwardkim

edwardkim commented May 8, 2026

Copy link
Copy Markdown
Owner

@jangster77 님 PR 처리 완료입니다.

본 환경 검증 결과:

결정적 검증 통과:

  • `cargo test --release` → ALL PASS (1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13)
  • `cargo clippy --release` → clean

광범위 회귀 sweep (7 샘플 170 페이지): same=170 / diff=0 ✅

메인테이너 후속 정정 (A1):
작업지시자 1차 시각 판정 영역에서 발견된 자동보정 영역의 회귀 영역의 본질 영역 정정:

  • 위치: `src/document_core/commands/document.rs:270` + `:425` 영역 두 곳
  • 정정 전: `reflow_line_segs(cell_para, col_width, ...)` — column 폭 사용 영역 → 본 PR 영역의 가드 baseline/line_height/line_spacing 역공학 #1 (`line_segs.is_empty()`) 영역 우회 영역으로 정정 영역 미적용 영역
  • 정정 후: `cell_inner_width = hwpunit_to_px(cell.width) - padding.left - padding.right` 영역 사용 영역
  • A1 commit: `4d354d2e`

처리: 3 commits 단계별 보존 no-ff merge + 메인테이너 후속 commit (A1).

  • merge commit: `a6645ed7` (PR 영역)
  • A1 commit: `4d354d2e` (자동보정 영역 정정)
  • devel push: `91620061..119519a`

작업지시자 시각 판정:

  • 1차 (PR 영역만): 그대로 보기 영역 ★ 통과 / 자동보정 영역 회귀 발견
  • 2차 (PR + A1): ★ 성공 ("성공입니다") — 그대로 보기 + 자동보정 영역 모두 정합

본질 정정 영역의 정확성: `recompose_for_cell_width` 영역 (composer.rs) + 3중 가드 — 한컴 LINE_SEG 비표준 영역의 본질 영역의 자체 재계산 영역 정합 (`project_hancom_lineseg_behavior` 메모리 룰 정합).

잔존 영역 분리 정합: Issue #672 (TAC 표 비례 축소 영역) — 별건 본질 영역 분리 영역의 깔끔한 분리 영역.

처리 보고서: `mydocs/pr/archives/pr_673_report.md`

closes #671

@edwardkim edwardkim closed this May 8, 2026
edwardkim added a commit that referenced this pull request May 8, 2026
작업지시자 지적 영역 정정:
"이 컨트리뷰터도 여러번 PR 하신 분입니다."

직접 점검 결과 (gh pr list --author jangster77 --state all):
- @jangster77 (Taesup Jang) 영역의 PR 영역 누적 13건
- HWP 3.0 파서 영역의 핵심 영역 컨트리뷰터 (PR #451 부터 누적)
- 이전 영역의 review/report/orders 영역의 "첫 사이클" 영역 표현 영역 정정

정정 영역:
- mydocs/pr/archives/pr_673_review.md (3 곳)
- mydocs/pr/archives/pr_673_report.md (2 곳)
- mydocs/orders/20260508.md (2 곳)

메모리 룰 신규 등록:
- feedback_contributor_cycle_check — PR review 시작 시 gh pr list --author 영역
  영역으로 누적 점검 의무 영역. "첫 사이클" 영역 임의 추정 금지 영역.
- 핵심 컨트리뷰터 영역 명단 영역 영구 보존
edwardkim added a commit that referenced this pull request May 8, 2026
closes #672

3 commits 단계별 보존 (Task #672 영역만 — Task #671 영역 commits 영역은 PR #673 영역에서 이미 머지됨):
- 071e952 Stage 1: 본질 진단 + 임계값 평가
- b524c4f Stage 2: 본질 정정 — TAC 표 비례 축소 임계값 강화
- d071d37 Stage 3: 광범위 회귀 sweep + 최종 보고서 + orders 갱신

본질 정정:
- src/renderer/height_measurer.rs:805 영역 단일 분기
- 정정 전: raw > common + 1.0 (절대값 1px 임계값)
- 정정 후: raw > common + max(common * 2%, 1px)
- 본질: 측정 오차 / line_height 보정 부산물 영역의 미세한 불일치 영역에서 비례
  축소 발동 영역 → 셀 콘텐츠 클립 영역. 한컴 권위 영역: 작은 차이 영역
  비례 축소 안 함 (계획서.hwp 1.32% 차이 영역 3 줄 정상 표시).
- 187 fixture sweep 영역: ≤2% 7 건 면제, ≥5% 11 건 그대로 (의도적 압축 보존)

본 환경 검증:
- cherry-pick: Task #672 commits 만 (Task #671 commits 는 PR #673 영역에서 머지됨)
  - Stage 1+2 깨끗, Stage 3 orders 영역 ours
- cargo test --release ALL PASS (1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13)
- clippy clean
- 광범위 sweep 7 샘플 170 페이지: same=167 / diff=3
  - 2010-01-06 p5 (1.97% 차이 면제)
  - synam-001 p19 / p31 (0.38~0.94% 차이 면제)

작업지시자 가설 점검:
PR #673 영역의 A1 (자동보정 셀 폭 정정) 영역만으로는 본 PR 영역의 본질 영역 미해결 영역.
두 영역의 본질 영역 다름:
- A1: LINE_SEG 채움 영역의 셀 폭 영역 정정 영역
- Task #672: HeightMeasurer 영역의 row_heights 비례 축소 영역의 임계값 영역

PR: #675
컨트리뷰터: @jangster77 (Taesup Jang) — 14번째 사이클 PR
잔존 분리: Issue #674 → PR #678 (paragraph_layout 줄 위치 vs row_heights 정합)
edwardkim added a commit that referenced this pull request May 8, 2026
PR #675 (Task #672): TAC 표 비례 축소 임계값 강화 — 작은 차이 (≤2%) 면제
- merge commit: 877e020 (3 commits 단계별 보존 no-ff merge)
- 본질: height_measurer.rs:805 영역 단일 분기 — TAC_SHRINK_THRESHOLD_RATIO = 0.02
- 187 fixture sweep: ≤2% 7 건 면제 / ≥5% 11 건 보존
- 본 환경 결정적 검증 1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13 + clippy clean
- 광범위 sweep 7 샘플 170 페이지: same=167 / diff=3 (영향 영역만)
- WASM 빌드 4,589,098 bytes

작업지시자 가설 점검:
"#674 PR 메인테이너 자동보정으로 #675 문제 해결?" → ❌ 미정합
- 그대로 보기 영역 SVG md5 다름 (b66efd77 → cc174155, -706 bytes)
- 두 영역 본질 다름:
  - PR #673 + A1: LINE_SEG 채움 영역의 셀 폭 정정 (document.rs)
  - PR #675: HeightMeasurer row_heights 비례 축소 임계값 (height_measurer.rs)

작업지시자 시각 판정:
- 자동보정 영역 ★ 정합 (셀내 2줄 컨텐츠 한컴처럼 정렬)
- 그대로 보기 영역 클립핑 유지 (PR #678 영역 잔존)
작업지시자 결정: 머지 유지 영역 (PR #678 머지 시 자연 해소 영역)

잔존 분리: Issue #674 → PR #678 (paragraph_layout 줄 위치 vs row_heights)

closes #672

산출물:
- mydocs/pr/archives/pr_675_review.md
- mydocs/pr/archives/pr_675_report.md
- mydocs/orders/20260508.md 갱신
edwardkim added a commit that referenced this pull request May 8, 2026
…보정 — 마지막 줄 시각 클립 정정

closes #674

3 commits 단계별 보존 (Task #674 영역만 — Task #671/#672 영역 commits 영역은 PR #673/#675 영역에서 머지됨):
- fda8601 Stage 1: 본질 진단 — 24px 오프셋 식별
- f50297b Stage 2: 본질 정정 — calc_para_lines_height 보정
- 230099f Stage 3: 광범위 회귀 sweep + 최종 보고서 + orders 갱신

본질 정정:
- src/renderer/layout/table_layout.rs:746 영역 calc_para_lines_height 영역 시그니처 영역
  + corrected_line_height 영역 보정 적용 (height_measurer.rs 영역과 동일 로직)
- 호출자 영역 시그니처 정정: calc_cell_paragraphs_content_height + calc_composed_paras_content_height
- 본질: line_segs 부재 셀 paragraph 영역의 fallback line_height (raw 5.33px) 영역이
  폰트 보정 (corrected 21.33px) 영역 안 받아 영역 mechanical_offset 영역 잘못 계산 영역
  → text_y_start 영역 24px 위로 밀림 영역 → 마지막 줄 cell-clip 초과 영역 → 시각 클립 영역

본 환경 검증:
- cherry-pick: Task #674 commits 만 (Task #671/#672 영역은 PR #673/#675 영역에서 머지)
  - Stage 1+2 깨끗, Stage 3 orders 영역 ours
- cargo test --release ALL PASS (1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13)
- clippy clean
- 광범위 sweep 7 샘플 170 페이지: same=170 / diff=0 ✅

Task #671 ~ #674 시리즈 완성:
- #671: 셀 paragraph line_segs 부재 영역 — composer.rs (recompose_for_cell_width)
- #672: TAC 표 비례 축소 영역 임계값 — height_measurer.rs:822 (2% 가드)
- #674: calc_para_lines_height corrected_line_height 영역 — table_layout.rs:746

PR: #678
컨트리뷰터: @jangster77 (Taesup Jang) — 15번째 사이클 PR (HWP 3.0 파서 영역의 핵심 영역)
선행 PR: #673 (Task #671) + #675 (Task #672) 영역 머지 영역 후 영역
edwardkim added a commit that referenced this pull request May 8, 2026
…즈 완성)

PR #678 (Task #674): paragraph_layout 측정 corrected_line_height 보정
- merge commit: f8b38cc (3 commits 단계별 보존 no-ff merge)
- 본질: calc_para_lines_height 영역의 corrected_line_height 보정 누락 영역
  → 24px 영역 mechanical_offset 잘못 계산 → text_y_start 24px 위로 밀림 → 클립
- 정정: table_layout.rs:746 영역 시그니처 + 보정 + 호출자 시그니처 정정
- 본 환경 결정적 검증 1165 lib + svg_snapshot 7/7 + issue_546/issue_554 13/13 + clippy clean
- 광범위 sweep 7 샘플 170 페이지: same=170 / diff=0 ✅
- WASM 빌드 4,589,700 bytes
- 작업지시자 시각 판정 ★ 통과 (그대로 보기 + 자동보정 영역 모두 정합)

🎉 Task #671~#674 시리즈 완성:
- PR #673 (#671) — 셀 paragraph line_segs 부재 영역 → composer.rs (recompose_for_cell_width)
- A1 (메인테이너) — 자동보정 col_width → cell_inner_width (document.rs)
- PR #675 (#672) — TAC 표 비례 축소 임계값 → height_measurer.rs (2% 가드)
- PR #678 (#674) — calc_para_lines_height corrected_line_height → table_layout.rs

@jangster77 (Taesup Jang) — 15번째 사이클 PR (HWP 3.0 파서 영역 핵심 컨트리뷰터)
한컴 LINE_SEG 비표준 영역의 자체 재계산 영역 정합 영역 도달 영역 (project_hancom_lineseg_behavior)

closes #674

산출물:
- mydocs/pr/archives/pr_678_review.md
- mydocs/pr/archives/pr_678_report.md
- mydocs/orders/20260508.md 갱신
@jangster77 jangster77 deleted the local/task671 branch May 8, 2026 10:43
edwardkim added a commit that referenced this pull request May 8, 2026
PR #673 (Task #671) 영역에서 권위 자료 영역으로 영역 영구 보존 영역 등록된
samples/계획서.hwp 영역 (143KB) 영역 — 컨트리뷰터 영역 요청 영역으로 영역 삭제.

작업지시자 결정 영역:
"컨트리뷰터의 요청대로 계획서.hwp 는 삭제합니다."

영향 영역:
- 결정적 검증 1165 lib + clippy clean (회귀 0)
- 진단 도구 (examples/inspect_task671.rs, inspect_task671_v2.rs, inspect_task672.rs)
  영역은 본 환경 영역의 다른 fixture 영역으로 영역 동작 가능 영역
- 본 환경 영역의 fixture 영역에서 본 파일 영역 사용 영역 부재 영역

Task #671~#674 시리즈 영역의 본질 정정 영역은 모두 영역 적용 영역 보존 영역
(samples/계획서.hwp 영역 영역 의존 부재 영역).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants