Skip to content

feat: 제목의 굵게·크기를 글자 속성으로 — WinUI 포트와 같은 모델 - #63

Merged
centwon merged 1 commit into
mainfrom
feat/heading-on-runs
Oct 2, 2026
Merged

centwon merged 1 commit into
mainfrom
feat/heading-on-runs

Conversation

@centwon

@centwon centwon commented Oct 1, 2026

Copy link
Copy Markdown
Owner

요약

상류와 포트가 같은 파일을 다르게 보던 유일한 곳인 제목 서식을 포트 모델로 맞춥니다. #62 위에 쌓은 PR이라 #62를 먼저 머지해야 합니다.

문제

  • 포트는 2026-09-13부터 제목의 굵게·크기를 run 속성으로 저장하고, 문서에 "HeadingFormat": 1로 표시합니다.
  • 상류는 렌더러가 제목을 무조건 굵게, 제목 크기로 그렸습니다.
  • 그래서 포트에서 굵게를 끈 제목이 상류에서는 굵게 보였습니다.
  • 상류가 그 파일을 저장하면 표식이 빠졌고, 포트가 다시 열 때 굵게를 실제로 되살렸습니다.

변경 (⚠ 동작 변경)

  • HeadingStyle: 제목을 적용하면(같은 수준 재적용 포함) 모든 run에 굵게와 수준별 크기를 씁니다. 본문으로 되돌리면 둘 다 뗍니다.
  • 그 사이에는 평범한 글자 속성입니다. 그래서 Ctrl+B가 제목에서 토글되고, 10pt도 보입니다.
  • 표식이 없는 옛 문서는 에디터가 받을 때 한 번 예전 모양을 run에 적어 넣습니다(Materialize).
  • 표식은 Clone, undo, 저장을 따라 이어지고, 판독기는 저장된 그대로 읽습니다.
  • Enter로 생긴 다음 문단은 본문 서식이고, 빈 제목에 입력하면 제목 서식이 붙습니다.
  • 제목 중간에 블록을 넣으면(상류 전용 규칙) 꼬리 문단이 제목 수준과 자기 서식을 그대로 유지합니다.
  • HTML: 굵게를 끈 제목 글자는 font-weight:normal로 쓰고, 리더도 font-weight:normal을 읽습니다(Google Docs 붙여넣기가 전부 굵게 들어오던 문제의 원인). 제목 안의 10pt는 크기를 명시합니다.
  • RTF: 제목에 강제로 붙이던 \b를 없앴습니다.
  • 툴바: 이미 선택된 수준을 다시 고르면 재적용합니다.
  • 교환 정본 파일에 "HeadingFormat":1을 넣었습니다. 포트도 같은 파일입니다.

검증

  • 단위 테스트 1326개, 렌더 테스트 55개 모두 통과합니다.
  • HeadingStyleTests 13개를 추가했습니다(포트 12개 + 블록 삽입 1개). 기존 테스트 3개는 새 규칙에 맞게 고쳤습니다.
  • 반증 15/15: 표식 쓰기·읽기·Clone, Materialize, HTML 4곳, RTF, 렌더러, 분할 3곳, 타이핑, SetHeading을 하나씩 되돌리면 각각 빨강입니다.
  • ⚠ GUI 확인 필요: 툴바 제목 콤보에서 이미 선택된 수준을 다시 고르는 동작은 헤드리스 테스트로 잴 수 없었습니다.

🤖 Generated with Claude Code

두 에디터가 같은 파일을 다르게 보던 유일한 곳. 포트(2026-09-13~)는 제목 서식을 run에 쓰고 "HeadingFormat": 1로
표시하는데, 상류는 렌더러가 제목을 강제로 굵게·제목 크기로 그렸다. 포트에서 굵게를 끈 제목이 상류에선 굵게 보였고,
상류가 저장하면 표식이 빠져 포트가 다시 열 때 굵게를 실제로 되살렸다.

- HeadingStyle: 제목 적용 시(같은 수준 재적용 포함) 모든 run에 굵게·수준 크기, 본문 복귀는 둘 다 뗌
- 표식 없는 옛 문서는 에디터가 받을 때 한 번 변환(Materialize), 표식은 Clone·저장으로 이어짐
- 렌더러·캐럿 보고·캐럿 높이·리스트 마커의 강제 규칙 제거, Ctrl+B가 제목에서 토글됨
- Enter 꼬리는 본문 서식, 빈 제목 타이핑은 제목 서식, 블록 삽입용 분할은 꼬리가 제목 서식 그대로(상류 전용 규칙)
- HTML: 굵지 않은 제목 글자 font-weight:normal 출력·읽기, 제목 안 10pt 명시. RTF: 강제 \b 제거
- 툴바: 이미 선택된 수준을 다시 고르면 재적용(GUI 확인 필요)
- HeadingStyleTests 13개(포트 12 + 블록 삽입), 기존 3개를 새 규칙으로. 반증 15/15

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@centwon
centwon force-pushed the feat/heading-on-runs branch from e96cc7a to 4eac593 Compare October 2, 2026 07:16
@centwon
centwon merged commit c27294c into main Oct 2, 2026
4 checks passed
@centwon
centwon deleted the feat/heading-on-runs branch October 2, 2026 07:20
centwon added a commit that referenced this pull request Oct 2, 2026
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.

1 participant