피드로 돌아가기
Writing a Hepburn Hiragana ↔ Katakana ↔ Rōmaji Converter (With All The Annoying Edge Cases)
Dev.toDev.to
Frontend

Unicode 오프셋과 State Machine을 활용한 Hepburn 표준 변환기 설계

Writing a Hepburn Hiragana ↔ Katakana ↔ Rōmaji Converter (With All The Annoying Edge Cases)

SEN LLC2026년 4월 12일8intermediate

Context

단순 1:1 매핑 기반의 로마자 변환은 Hepburn 표준의 예외 규칙을 처리하지 못하는 한계 존재. 특히 여권 및 도로 표지판 등 공식 문서에서 요구하는 발음 기반의 특수 표기법 구현이 필요함.

Technical Solution

  • Unicode 상의 Hiragana-Katakana 간 0x60 오프셋 차이를 이용한 Zero-lookup 변환 로직 설계
  • 2-character Digraph 우선 매칭 전략을 통한 Longest-match 기반의 토큰 분석 수행
  • Sokuon(っ) 처리 시 Look-ahead 기법을 도입하여 'ch' 접두어에 따른 'tcha' 예외 분기 처리
  • Moraic Nasal(ん) 변환 시 후행 문자가 'ba/pa/ma' 행인 경우 'm'으로 분기하는 State Machine 구현
  • Romaji-to-Kana 역변환 시 Token Length 기준 내림차순 정렬을 통한 우선순위 매칭 구조 채택
  • 정규표현식 기반의 Script Auto-detection으로 입력 타입에 따른 컨버터 자동 라우팅 처리

- 유니코드 블록의 연속적 특성을 활용하여 불필요한 Lookup Table 제거 가능 여부 검토 - 문자열 파싱 시 단순 루프가 아닌 Look-ahead 및 Longest-match 전략으로 모호성 제거 - 엣지 케이스 검증 시 긍정/부정 테스트 케이스를 쌍으로 구성하여 분기 로직의 정확성 확보

원문 읽기