Skip to content

feat(converter): add font fallback improvements for unknown and CJK fonts#86

Merged
JSv4 merged 1 commit intomainfrom
feature/font-fallback-improvements
Dec 21, 2025
Merged

feat(converter): add font fallback improvements for unknown and CJK fonts#86
JSv4 merged 1 commit intomainfrom
feature/font-fallback-improvements

Conversation

@JSv4
Copy link
Copy Markdown
Owner

@JSv4 JSv4 commented Dec 21, 2025

Summary

  • Adds FontClassifier helper to classify unknown fonts by name patterns and apply appropriate generic fallbacks (serif/sans-serif/monospace)
  • Adds CJK font fallback chains for East Asian text (Japanese, Simplified Chinese, Traditional Chinese, Korean)
  • Fixes Courier New and Lucida Console to include monospace fallback (was missing)
  • Updates CreateFontCssProperty to accept language context for CJK detection

Changes

Unknown Font Classification

Fonts are classified by name patterns:

  • "sans" pattern → font-family: 'FontName', sans-serif
  • "mono", "code", "courier" patterns → font-family: 'FontName', monospace
  • Other fonts default to serif fallback

CJK Font Chains

Language-specific fallback chains for East Asian text:

  • Japanese (ja-JP): 'Noto Serif CJK JP', 'Yu Mincho', 'MS Mincho', ...
  • Simplified Chinese (zh-hans): 'Noto Serif CJK SC', 'Microsoft YaHei', 'SimSun', ...
  • Traditional Chinese (zh-hant): 'Noto Serif CJK TC', 'Microsoft JhengHei', 'PMingLiU', ...
  • Korean (ko): 'Noto Serif CJK KR', 'Malgun Gothic', 'Batang', ...

Test plan

  • HC042: Unknown serif font gets serif fallback
  • HC043: Unknown sans font gets sans-serif fallback
  • HC044: Unknown mono font gets monospace fallback
  • HC045: Known font (Arial) uses predefined fallback
  • HC046: Courier New gets monospace fallback
  • HC047: Japanese text gets CJK JP fallback chain
  • HC048: Chinese Simplified text gets CJK SC fallback chain
  • All 1152 existing tests pass

Addresses converter gaps #13 (Limited Font Fallback) and #14 (No CJK Font-Family Fallback Chain)

…onts

- Add FontClassifier helper to classify unknown fonts by name patterns
  - "sans" pattern → sans-serif fallback
  - "mono", "code", "courier" patterns → monospace fallback
  - Other fonts default to serif
- Add CJK font fallback chains for East Asian text:
  - Japanese (ja-JP): Noto Serif CJK JP, Yu Mincho, MS Mincho, etc.
  - Simplified Chinese (zh-hans): Noto Serif CJK SC, Microsoft YaHei, SimSun, etc.
  - Traditional Chinese (zh-hant): Noto Serif CJK TC, Microsoft JhengHei, PMingLiU, etc.
  - Korean (ko): Noto Serif CJK KR, Malgun Gothic, Batang, etc.
- Fix Courier New and Lucida Console to include monospace fallback
- Update CreateFontCssProperty to accept language context

Addresses converter gaps #13 (Limited Font Fallback) and #14 (No CJK Font-Family Fallback Chain)
@JSv4 JSv4 merged commit 80aba2b into main Dec 21, 2025
6 checks passed
@JSv4 JSv4 deleted the feature/font-fallback-improvements branch December 21, 2025 02:45
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