Skip to content

HY 계열 한글 폰트명 → 메트릭 DB 영문명 매핑 누락 → 글자 폭 오류·겹침 #259

@edwardkim

Description

@edwardkim

현상

samples/text-align.hwp 4번 문단(s0:pi=4)의 HY중고딕 텍스트가 웹 에디터에서 글자가 겹쳐 보임. 작업지시자 시각 확인 (2026-04-23).

현상 예 (스크린샷 문단):

"또점고창시춘시창시대전천시이산시전주시목포시경주시창시제주시제주하"

글자 폭이 잘못 계산되어 후속 글자가 앞 글자와 겹친다.

진단

text-align.hwp 본문 폰트 HY중고딕 의 메트릭을 lookup 하는 경로가 중간에서 끊어져 있음:

현재 흐름

  1. HWP 파일 내 폰트명: HY중고딕 (또는 별칭 한양중고딕 등)
  2. src/renderer/style_resolver.rs 의 한국어→한국어 정규화 매핑:
    • 한양중고딕HY중고딕 (line 467)
    • 신명 중고딕HY중고딕 (line 478)
    • 기타 여러 별칭 → HY중고딕
  3. src/renderer/font_metrics_data.rs::find_metric("HY중고딕", …) 호출
  4. resolve_metric_alias("HY중고딕")HY중고딕 에 대한 매핑 없음 → 그대로 "HY중고딕" 반환
  5. FONT_METRICS 배열에서 name == "HY중고딕" 엔트리 없음 (DB 는 영문명 HYGothic-Medium 으로 저장)
  6. 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 대조로 확정 필요.

재현

  1. rhwp-studio 웹 에디터 실행 (cd rhwp-studio && npx vite --host 0.0.0.0 --port 7700)
  2. samples/text-align.hwp 열기
  3. 본문 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.rsresolve_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 비교 없이는 발견하기 어려웠음.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions