Skip to content

task: planet6897 #2470 #2523 #2528 통합 - #2532

Merged
jangster77 merged 6 commits into
develfrom
task/planet6897-prs-2470-2523-2528-20260720
Jul 20, 2026
Merged

jangster77 merged 6 commits into
develfrom
task/planet6897-prs-2470-2523-2528-20260720

Conversation

@jangster77

Copy link
Copy Markdown
Collaborator

대상

#2510, #2522는 이 통합 범위에서 제외했습니다.

통합 방식

최신 upstream/devel 위에 위 세 PR의 기능 커밋 4개를 순서대로 체리픽했습니다. 충돌은 없었습니다. 원 PR별 review 문서, #2470 HWP 2020 기준 PDF와 visual sweep 자산, 오늘할일을 함께 보존합니다.

검증

검토 기록

  • mydocs/pr/archives/pr_2470_review.md
  • mydocs/pr/archives/pr_2523_review.md
  • mydocs/pr/archives/pr_2528_review.md
  • mydocs/orders/20260720.md

planet6897 and others added 6 commits July 20, 2026 19:03
한글 COM 재저장 오라클 실측(36382471/36341511 신규 수집) 기반 2건:

1. stale-lh 표 (36382471 pi10 현황사진): 마스킹 도구가 셀 내용·cellSz 를
   축소하고 표 선언높이(common.height)와 host lineseg lh 를 갱신하지 않음
   - 선언=lh 154.2px vs 셀 실측 25px(재저장 fresh 24.6px 정합). 단일 TAC
   경로에서 저장 lh 기반 table_height 가 실측(ft)의 2배 이상 + 선언도 동률
   모순이면 실측을 신뢰. 3->2쪽 (한글 COM PageCount=2 일치).

2. 마스킹 저장 줄수 과소 (masked_stored_lines_stale): #2360(실폭 과잉)의
   대칭 - 마스킹 치환으로 좁아졌는데 저장 분할은 원문 기준 줄수를 남긴
   경우 fresh 프로브 재래핑 줄수와 다르면 stale 로 재래핑. 마스킹('*'
   비중 >=50%, 8자+) 한정, typeset/render 양 경로 동일 적용.

게이트: 92셋 92/92 유지 · 10k devel 대비 발산 2 = FIXED 2 / REGRESSED 0
(36382471 3->2, 1351000-201100184 212->211) · 정합률 95.54% · nextest
3344/3344 · fmt+clippy clean. COM 오라클: task2279_advance/36382471·36341511
_{warm.pdf,resave.hwp}.

참고: 36341511(9 vs 한글 8)은 실텍스트 재래핑(한글이 더 적은 줄) 글리프
정밀도 계열로 본 커밋 범위 밖 - 잔여 기록. PR 제출은 병행 세션 PR #2454
(같은 TAC 경로, CONFLICTING) 정리 후 보류 해제.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 10c6694)
156689818 보도자료 4쪽 핀(모순 TAC host font_size 근사류 재도입 가드) +
재저장 오라클 도구(tools/task2373: resave_oracle/ladder_diff/pop_gate).
step-trust 본체는 devel(#2441 sb+sa) 대비 10k FIXED 0/REGRESSED 9 실측
기각(PR #2454 코멘트 5016042108) — 핀과 도구만 승계.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 5054702)
studio canvas2d 는 이미지를 두 경로로 그린다. WASM web_canvas render_image 는
compose_image_filter 로 색효과를 ctx.filter 에 적용하지만, DOM flow-image 경로
(usesDomFlowImages: <img> 합성)는 필터를 적용하지 않아, 회색조/흑백 등 효과가
걸린 그림이 원본 컬러로 렌더됐다(예: pr-149 의 회색조/흑백 이미지가 컬러로 표시).

layer JSON(paint/json.rs)은 이미 effect/brightness/contrast 를 emit 하므로 TS
만 수정한다. flow-image-clip.ts 에 composeImageFilter() 헬퍼(= web_canvas.rs 의
compose_image_filter 와 동일 CSS: grayscale(100%), 흑백은 +contrast(1000%),
밝기/명암 linear)를 추가하고 FlowImagePaintOp.filter 로 산출한다. bakedWatermark
픽셀은 효과가 이미 baked 되어 있으므로 제외한다. page-renderer 는 DOM flow <img>
생성 시 element.style.filter 를 적용한다.

검증(headless canvas2d 기본): pr-149 DOM <img> filter 가 none(원본) /
grayscale(100%)(회색조) / grayscale(100%) contrast(1000%)(흑백) 로 정확히 적용
(수정 전 3개 모두 none = 컬러). 자연 렌더 시각 확인 시 원본/회색조/흑백 정상 —
chrome 로 래스터한 rhwp SVG 기준과 일치. RealPic(비-효과) 그림 무회귀,
tsc --noEmit 0 errors.

조사·증적은 mydocs/working/task_studio_svg_divergence_20260720.md (PR #2522).

(cherry picked from commit 65904a5)
빈 lineseg 문단이 다수인 HWPX에서 자동 보정(reflowLinesegs)이 글리프
좌표를 붕괴시켜 한 줄 글자가 대량으로 겹친다. reflow 근본 수정 전까지
모달을 띄우지 않고 문서를 항상 as-is로 연다.

- main.ts: showValidationModalIfNeeded 호출·reflowLinesegs 제거, 감지 결과는
  진단 로그만 유지. 자동 보정 없으므로 로드 직후 항상 markClean.
- validation-modal.ts: 로직 원복 + 재도입 대비 보존(현재 미사용 주석).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 8edcaf6)
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