overlay: フォントキャッシュ追加と小型ログのルビ描画を改善

- フォントのメモリキャッシュ(_font_cache)と _get_font を導入し truetype 読み込みを最適化
- createTextboxSmallLog を堅牢化(None対応、幅測定の例外処理、改行判定の改善)
- 単語単位ルビ描画機能を追加(renderRubyBlock / createTextboxSmallLogWithRubyTokens)
  - トークン毎の幅算出/センタリング、行折り返し検出時のフォールバック実装
- createOverlayImageSmallLog を拡張して、元文・翻訳それぞれにルビ適用とフォールバック合成を実行
- __main__ のテスト呼び出しを翻訳リスト形式に合わせて修正し、ルビテスト追加
This commit is contained in:
misyaguziya
2025-10-22 14:23:41 +09:00
parent caeb8b6888
commit 8be132abe6
3 changed files with 303 additions and 44 deletions

View File

@@ -1068,6 +1068,15 @@ class Config:
case "opacity" | "ui_scaling":
if isinstance(value, (int, float)):
self._OVERLAY_SMALL_LOG_SETTINGS[key] = float(value)
case "ruby_font_scale":
if isinstance(value, (int, float)):
v = float(value)
if 0.05 <= v <= 3.0:
self._OVERLAY_SMALL_LOG_SETTINGS[key] = v
case "ruby_line_spacing":
if isinstance(value, int):
if 0 <= value <= 200:
self._OVERLAY_SMALL_LOG_SETTINGS[key] = value
self.saveConfig(inspect.currentframe().f_code.co_name, self.OVERLAY_SMALL_LOG_SETTINGS)
@property
@@ -1423,6 +1432,8 @@ class Config:
"opacity": 1.0,
"ui_scaling": 1.0,
"tracker": "HMD",
"ruby_font_scale": 0.5,
"ruby_line_spacing": 4,
}
self._OVERLAY_LARGE_LOG = False
self._OVERLAY_LARGE_LOG_SETTINGS = {