현상
samples/text-align.hwp 4번 문단(s0:pi=4)의 HY중고딕 텍스트가 웹 에디터에서 글자가 겹쳐 보임. 작업지시자 시각 확인 (2026-04-23).
현상 예 (스크린샷 문단):
"또점고창시춘시창시대전천시이산시전주시목포시경주시창시제주시제주하"
글자 폭이 잘못 계산되어 후속 글자가 앞 글자와 겹친다.
진단
text-align.hwp 본문 폰트 HY중고딕 의 메트릭을 lookup 하는 경로가 중간에서 끊어져 있음:
현재 흐름
- HWP 파일 내 폰트명:
HY중고딕 (또는 별칭 한양중고딕 등)
src/renderer/style_resolver.rs 의 한국어→한국어 정규화 매핑:
한양중고딕 → HY중고딕 (line 467)
신명 중고딕 → HY중고딕 (line 478)
- 기타 여러 별칭 →
HY중고딕
src/renderer/font_metrics_data.rs::find_metric("HY중고딕", …) 호출
resolve_metric_alias("HY중고딕") — HY중고딕 에 대한 매핑 없음 → 그대로 "HY중고딕" 반환
FONT_METRICS 배열에서 name == "HY중고딕" 엔트리 없음 (DB 는 영문명 HYGothic-Medium 으로 저장)
None 반환 → 기본 폭 적용 → 글자 겹침
핵심 원인
resolve_metric_alias() 에 한국어 정규명 → 영문 메트릭 이름 매핑이 HY 계열 전반에 누락됨.
style_resolver.rs: 한국어 별칭 → 한국어 정규명 (OK)
font_metrics_data.rs::resolve_metric_alias: 한국어 정규명 → 영문 DB 이름 (누락)
영향 폰트 (HY 계열 전수)
메트릭 DB 에 있는 HY 계열 35종 vs style_resolver 가 사용하는 HY 정규명 7종 대응 예상:
| HWP 한글 정규명 |
메트릭 DB 영문명 (추정) |
HY중고딕 |
HYGothic-Medium |
HY견고딕 |
HYGothic-Extra |
HY헤드라인M |
HYHeadLine-Medium |
HY견명조 |
HYMyeongJo-Extra |
HY신명조 |
HYSinMyeongJo-Medium |
HY그래픽 |
HYGraphic-Medium |
HY궁서 |
HYGungSo-Bold |
대응은 추정. 한컴 폰트 스펙 또는 원본 TTF PostScript name 대조로 확정 필요.
재현
rhwp-studio 웹 에디터 실행 (cd rhwp-studio && npx vite --host 0.0.0.0 --port 7700)
samples/text-align.hwp 열기
- 본문 4번 문단 (지자체 열거 텍스트) 글자 겹침 확인
또는 디버그 오버레이 SVG:
rhwp export-svg samples/text-align.hwp --debug-overlay -o output/debug/text-align/
수행 계획 (5 단계)
Stage 1 — 매핑 테이블 확정
- 한컴 공식 폰트 리스트 + 원본 TTF PostScript name 대조
- 또는 실측 (동일 텍스트를 두 이름으로 렌더하여 폭 일치 확인)
- 결과:
HY 한글 정규명 → 영문 DB 이름 N:1 매핑 테이블
Stage 2 — resolve_metric_alias 매핑 추가
src/renderer/font_metrics_data.rs 의 resolve_metric_alias 에 Stage 1 결과 반영
- 단위 테스트 (각 HY 계열별 find_metric 성공 확인)
Stage 3 — 회귀 검증 (text-align.hwp)
cargo test --lib · cargo test --test svg_snapshot 그린
text-align.hwp 의 HY중고딕 문단 글자 폭이 PDF 대비 ±1px 이내
- 웹 에디터 시각 확인 — 겹침 해소
Stage 4 — 다른 HY 폰트 샘플 스모크 검증
- 각 HY 계열 폰트를 사용하는 샘플에서 회귀 없음 확인
- 없으면 최소 샘플 생성 (각 폰트 1페이지짜리)
Stage 5 — 문서화 + 메모리 등록
- 수행계획서/단계보고서/최종 보고서
- 메모리: "한글 폰트명 ↔ 메트릭 DB 영문명 동기화 필수" 교훈 등록
- 추후 폰트 추가 시 반드시
resolve_metric_alias 도 갱신하도록 체크리스트화
관련
기여자 감사
작업지시자 시각 확인으로 식별. 웹 에디터 렌더링 과정에서 글자 겹침을 관찰하지 못했다면 본 버그는 PDF 비교 없이는 발견하기 어려웠음.
현상
samples/text-align.hwp4번 문단(s0:pi=4)의 HY중고딕 텍스트가 웹 에디터에서 글자가 겹쳐 보임. 작업지시자 시각 확인 (2026-04-23).현상 예 (스크린샷 문단):
글자 폭이 잘못 계산되어 후속 글자가 앞 글자와 겹친다.
진단
text-align.hwp본문 폰트HY중고딕의 메트릭을 lookup 하는 경로가 중간에서 끊어져 있음:현재 흐름
HY중고딕(또는 별칭한양중고딕등)src/renderer/style_resolver.rs의 한국어→한국어 정규화 매핑:한양중고딕→HY중고딕(line 467)신명 중고딕→HY중고딕(line 478)HY중고딕src/renderer/font_metrics_data.rs::find_metric("HY중고딕", …)호출resolve_metric_alias("HY중고딕")—HY중고딕에 대한 매핑 없음 → 그대로"HY중고딕"반환FONT_METRICS배열에서name == "HY중고딕"엔트리 없음 (DB 는 영문명HYGothic-Medium으로 저장)None반환 → 기본 폭 적용 → 글자 겹침핵심 원인
resolve_metric_alias()에 한국어 정규명 → 영문 메트릭 이름 매핑이 HY 계열 전반에 누락됨.style_resolver.rs: 한국어 별칭 → 한국어 정규명 (OK)font_metrics_data.rs::resolve_metric_alias: 한국어 정규명 → 영문 DB 이름 (누락)영향 폰트 (HY 계열 전수)
메트릭 DB 에 있는 HY 계열 35종 vs style_resolver 가 사용하는 HY 정규명 7종 대응 예상:
HY중고딕HYGothic-MediumHY견고딕HYGothic-ExtraHY헤드라인MHYHeadLine-MediumHY견명조HYMyeongJo-ExtraHY신명조HYSinMyeongJo-MediumHY그래픽HYGraphic-MediumHY궁서HYGungSo-Bold재현
rhwp-studio웹 에디터 실행 (cd rhwp-studio && npx vite --host 0.0.0.0 --port 7700)samples/text-align.hwp열기또는 디버그 오버레이 SVG:
수행 계획 (5 단계)
Stage 1 — 매핑 테이블 확정
HY 한글 정규명 → 영문 DB 이름N:1 매핑 테이블Stage 2 —
resolve_metric_alias매핑 추가src/renderer/font_metrics_data.rs의resolve_metric_alias에 Stage 1 결과 반영Stage 3 — 회귀 검증 (text-align.hwp)
cargo test --lib·cargo test --test svg_snapshot그린text-align.hwp의 HY중고딕 문단 글자 폭이 PDF 대비 ±1px 이내Stage 4 — 다른 HY 폰트 샘플 스모크 검증
Stage 5 — 문서화 + 메모리 등록
resolve_metric_alias도 갱신하도록 체크리스트화관련
src/renderer/font_metrics_data.rs::resolve_metric_aliassrc/renderer/style_resolver.rs(한국어 별칭→정규명, 이미 구현)samples/text-align.hwp(재현 샘플 · PR Task #146: text-align.hwp SVG ↔ 한컴 PDF 렌더링 일치 #256 에서 편입됨)기여자 감사
작업지시자 시각 확인으로 식별. 웹 에디터 렌더링 과정에서 글자 겹침을 관찰하지 못했다면 본 버그는 PDF 비교 없이는 발견하기 어려웠음.