Skip to content

feat: Webフォントをローカルホスティング化して外部CDN依存を排除#1343

Merged
HansRobo merged 1 commit intodevelopfrom
feat/web-debugger-local-fonts
Apr 21, 2026
Merged

feat: Webフォントをローカルホスティング化して外部CDN依存を排除#1343
HansRobo merged 1 commit intodevelopfrom
feat/web-debugger-local-fonts

Conversation

@HansRobo
Copy link
Copy Markdown
Member

@HansRobo HansRobo commented Apr 21, 2026

概要

crane_web_debuggerのWebインターフェースで使用している全フォント(Material Symbols Outlined、Noto Sans JP、Roboto)をGoogle Fonts CDNからローカルファイルに切り替え、外部ネットワークアクセスを完全に排除する。

背景・根本原因

アイコン表示が毎回遅い問題があった。原因はGoogle Fonts CDNからのフォント読み込みで毎回外部ネットワークアクセスが発生していたため。特にMaterial Symbols Outlinedはフォントサイズが大きく(3.8MB)、CDNからの取得に時間がかかっていた。

変更内容

  • Material Symbols Outlined(アイコンフォント)をローカルに配置(3.8MB)
  • Noto Sans JP wght 400/500/700 をローカルに配置(124のunicode-rangeサブセット、約5.3MB)
  • Roboto wght 400/500/700 をローカルに配置(9サブセット、約252KB)
  • 各フォントの@.font-face定義をローカルCSSファイルとして作成
  • 4つのHTMLファイル(index/viewer/telemetry/test)のGoogle Fonts CDN参照をローカルCSS参照に変更
  • preconnect行を削除

## 背景
crane_web_debuggerのWebインターフェースでアイコンやテキストフォントの表示が
毎回遅い問題があった。原因は全フォント(Material Symbols Outlined、
Noto Sans JP、Roboto)をGoogle Fonts CDNから読み込んでおり、
ページアクセスのたびに外部ネットワークアクセスが発生していたため。

## 変更内容
- download_fonts.py を追加: Google Fonts CDNからフォントをダウンロードするスクリプト
- Dockerfileに `RUN python3 /app/web/download_fonts.py` を追加し、
  Dockerビルド時にフォントをダウンロードしてイメージに焼き込む
- 4つのHTMLファイルのGoogle Fonts CDN参照をローカルCSS参照に変更
- .gitignoreに assets/fonts/ を追加(フォントファイルはgit管理外)

## 開発時の使い方
初回およびフォント更新時に以下を実行:
  python3 crane_web_debugger/web/download_fonts.py
@HansRobo HansRobo force-pushed the feat/web-debugger-local-fonts branch from d08bc66 to 481ecb0 Compare April 21, 2026 15:33
@HansRobo HansRobo merged commit ce62b2e into develop Apr 21, 2026
7 of 8 checks passed
@HansRobo HansRobo deleted the feat/web-debugger-local-fonts branch April 21, 2026 15:33
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