投稿

4月, 2026の投稿を表示しています

svgからwoff2へ変換:「Fantasticon」→「 FontForge+grunt-webfont」

久しぶりにsvgからwoff2へ変換したときの覚書。 Gemini 3 Flash Previewと対話。 環境: FreeBSD 14.3-RELEASE-p9, Node.js v24.13.0 1. Fantasticonとは? Gemini先生に聞いたらFantasticonをお勧めされたので調査。 GitHub - tancredi/fantasticon: Icon font generation tool · GitHub Fantasticon は、単なるコンバーターではなく、アイコンフォント構築のためのオーケストレーター(まとめ役)。 処理のステップと使用ツール SVG → SVG Font (svgicons2svgfont) 複数の SVG ファイルを読み込み、1つの巨大な XML ベースのフォントファイル(SVG Font)にまとめる。 この段階で、パスデータ(d属性)がフォントのグリフ座標系にスケーリング。 SVG Font → TTF (svg2ttf) XML形式の SVG Font を、バイナリ形式の TrueType Font (TTF) に変換。 TTF → WOFF (ttf2woff) TTF を zlib で圧縮し、WOFF 形式のヘッダを付与。 TTF → WOFF2 (wawoff2)  WebAssembly 版のコンバーターを使用して WOFF2 を生成。 なぜ FontForgeなしで変換できるのか? かつてはSVG からフォントを作るには、FontForge のような C/C++ で書かれたデスクトップアプリを OS にインストールし、Python スクリプト経由で操作するのが一般的。 WOFF2 形式は、Google が開発した Brotli という非常に強力な圧縮アルゴリズムを使用する。 この圧縮ロジックは非常に複雑で、かつては C++ の公式リファレンス実装(google/woff2)を使うしかなかった。 Fantasticon が内部で使っているttf2woff2は、そのGoogle製の C++ コードをWebAssembly (プラットフォーム非依存のバイナリ形式)にコンパイルしたもの。 Node.jsはWebAssemblyを実行できる。 fantasticonをインストー...

WordPress WP-Cron(疑似Cron)の仕組みと問題点

WordPress標準のWP-Cron(疑似Cron)からOSのCronに切り替えようとしているときの覚書。 Gemini 3 Flash Previewと対話。 環境: FreeBSD 14.3-RELEASE-p8, WordPress 6.9.4 参考記事 WP-Cron(wp-cron.php)を無効にしてパフォーマンスを改善する方法| Kinsta Optimization – Advanced Administration Handbook | Developer.WordPress.org WordPress 擬似Cron(WP-Cron)が実装された背景 WordPressが擬似Cronを採用した最大の理由は、サーバー環境に依存せず、PHPだけで完結させるため。 ホスティング環境の制約 : 世界中の多種多様な共有サーバー(安価なレンタルサーバーなど)では、ユーザーがOSレベルの crontab を設定できないケースが多々ある。 ゼロ構成での動作 : インストールした瞬間に、予約投稿やアップデート確認などのバックグラウンドタスクが動作し始める必要。 ポータビリティ : サーバーの仕様を知らなくても、WordPressというアプリケーションのレイヤーだけで完結するスケジュール機構が求められた。 WordPress 擬似Cron(WP-Cron)の仕組み WP-Cronは、バHTTPリクエストをトリガーとしたイベント駆動型で動作。 擬似Cronの処理手順 リクエストの受信 : ユーザーがサイトのいずれかのページにアクセス。 実行判定 : WordPressの初期化プロセス(initフック等)の中で、前回の実行時刻を確認し、「実行すべきタスクがあるか」をDB(wp_optionsテーブル)に問い合わせる。 非同期実行(ループバック) : 実行すべきタスクがある場合、WordPressは自分自身に対してループバックHTTPリクエスト(wp-cron.phpへのPOST)を発行。 タスク処理 : wp-cron.php が独立したPHPプロセスとして起動し、予約されたタスクを順次実行。 WordPress 擬似Cron(WP-Cron)の構造的な問題点 技術的負債 オーバーヘッドとDB負荷: あらゆるページビュー(PV)のたびに、DBへの「タスク確認用S...