この記事を手にとっていただき、ありがとうございます。
なんちゃってエンジニア・Mojatto です。
概要
大変使いやすいアイコンツールキット「Font Awesome」。

Webサイトをはじめ、様々なアプリケーションにて採用されているこのツールキットですが、Unity で使おうとした場合は、コガネブログ様の下の記事のように、各アイコンの Unicode をチートシートなどから調べ、TextMeshPro向けFontAssetとしてセットアップする必要がありました。
従来手法では、Font Awesome 公式ページにあるチートシート (スタイル情報やアイコンの Unicode などの情報が掲載されたページ) から、Javascript などを用いてページ上から Unicode のみを抽出するようにしていました。
ただ、最新版の Font Awesome 6 においては、Google 検索には出現こそするものの、クリックしてもアイコンライブラリのページへリダイレクトされ、前バージョンの Font Awesome 5 まで公開されていたチートシートへのアクセスができない状態となったため、これまでの手法が取れなくなってしまいました。
※ 実はできるのかもしれませんが・・・
ただ、公式ページから取得できるツールキットデータ (ottなどフォントデータやスタイルデータなどがまとまったZipファイル) の中に、チートシートに掲載されているようなアイコン情報が含まれている Json ファイルが入っているので、この Json ファイルから各アイコンの Unicode を抽出して使うことにしました。
この記事では、試しとして「Python」を使った手法を紹介してみようと思います。
手順とソースコードは大分手前味噌な感じで作成したため、セオリーから離れた手法やコード記述をしている可能性がありますので、よければコメントなどでご指摘いただけると幸いです。
このエントリによって可能となること
- 入れ子構造になっているJSONファイルから特定のキーを持つ値をPythonで取得できる
- FontAwesome6 Free のアイコン情報 (icons.json) から任意のスタイルを持つアイコンフォントの Unicode を抽出することができる
検証環境
項目名 | 内容 |
---|---|
使用PC | 個人所有の Windows 11 PC |
Python 実行環境 | Python 3.11.4 (Anaconda 23.7.2) |
IDE (使用エディター) | Microsoft Visual Studio Code 1.78.2 |
手法説明
事前準備
本エントリの手順を実践する前に、以下の項目の準備が整っていることとします。
- 何らかのプラットフォームでPythonの実行環境が整っていること
- (オプション) Python の GUI アプリが実行できるじょうたいであること ※ サンプル内で tkinter を使用しているため、CLIのみの環境ではソースコードの改変が必要です。
ソース本体
使用手順
- 上記のソースコードを Python コード (*.py) として任意の場所に保存する
- Python 動作環境にて上記のソースコードを実行する
- ファイルピッカーが表示されるので Font Awesome 6 のツールキットに含まれるアイコン情報が含まれている Json ファイル (<ツールキットのルートディレクトリ>/metadata/icons.json) を指定する
- 正しいファイルが選択されていれば、
FA_ICON_TYPE
で指定したスタイルに対応する、アイコンの Unicode が、コンソールに出力される - 出力された Unicode をコピーし、TextMeshPro の FontAsset の設定画面の該当フィールドにペーストする
※ Unity 側の手順については別途記事にしようと思います
あとがき
Unicode抽出からUnityのTextMeshPro向けのFontAssetを生成するまでを、一気通貫で処理できるエディタ拡張作ったら、需要ありますかね・・・?
(局所的すぎて無い気しかしない)
補足
なし
コメント