GarminのWatchFaceアプリで好きな文字フォントへ変更！

# はじめに

GarminのWatchFaceを開発する際にサンプルとして開発したときの手順をまとめます。

今回は以前の記事「[GarminのWatchFaceアプリでHello,world!](https://qiita.com/nyanko5656/items/6177de3f5cd4d57fd7ca)」を使った内容になります。

# 前提条件
* 「[GarminのWatchFaceアプリでHello,world!](https://qiita.com/nyanko5656/items/6177de3f5cd4d57fd7ca)」の動作確認までできる状態であること

# 手順
## 表示させたいフォントを用意する
フォントにも利用規約が存在するので問題ないことを確認してください。

今回は[たちばなフォント](https://yutatachibana.com/news/m3pWWXcZZtxvVTejtsmxBB)をお借りして作っていきます。
2023年の立花裕大さん(俳優)が作成した手書き系フォントです。
個人利用、商用利用に関わらず、使用用途を問わず無料で利用可能となっています。(2024/05時点)
詳細なライセンスは[SIL Open Font License Version 1.1](https://ja.osdn.net/projects/opensource/wiki/SIL_Open_Font_License_1.1)となります。

## フォントの変換
GarminはOpenType,TrueTypeフォントに対応していません。
BMP（やPNG）で画像として保存して、表示の時に呼び出すという手法になります。

変換用として「BMFont」というツールが用意されているのでそちらを使います。
https://www.angelcode.com/products/bmfont/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/a43483d8-cbd4-8ae6-d523-83aca6fbea39.png)

私が見たときには「Downloads」に2種類ありましたが好みの方をダウンロードし、解凍してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/b73af1ca-e8a1-2b53-0173-d4ab08a550e2.png)

展開後、「bmfont64.exe」を起動してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/5d28c4a0-e1e5-5d8a-6e62-ba896a29335d.png)

今回は時刻と最低限必要なテキストだけ用意します。
[Options]>[Font Settings]を選択します。
（もしくはキーボードの「F」キーを押下）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/372a58f7-c4c6-b198-92fb-8328f3556656.png)

用意したフォントを選びます。
フォントのサイズは暫定として50を選びました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/1b106068-a3f4-9e0b-1b51-e1932dfcea2c.png)

「OK」を押すと画面の読み込みが入り、選択したフォントの文字に変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/b930415e-3808-affc-27d9-f99e784f0c2c.png)

この中から使用する文字を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/6cce6876-b851-70f5-bea6-6e388e539f68.png)

[Options]>[Save bitmap font as...]を選択し、任意の名前で保存してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/c7627ed6-443a-7c6e-8af5-6a1cae38b26d.png)

.fnt形式と.png形式のファイルができていれば問題ありません。
.png形式のファイルが作られなかった場合、
[Options]>[Export Options]を開いてください。
画面下部にあるTexturesの中から「png」を選択し、「OK」ボタンを押下後、再度[Options]>[Save bitmap font as...]での保存を試してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/c998bbcc-7cda-b169-f491-162b6517df6f.png)

## フォントを配置して確認する

[resources]>[fonts] フォルダを作成し、先ほど作成した.fnt形式と.png形式のファイルを配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/79239cad-bbb8-786f-1b77-976e132c75f3.png)

同一フォルダにfonts.xmlを新規作成し、fntファイルと紐づけるよう記載します。
```diff_xml:fonts.xml
<fonts>
    <font id="yutatachibana" filename="yutatachibana.fnt" />
</fonts>
```

layout.xmlで設定した<label>内では今までfont="Graphics.FONT_NUMBER_HOT"となっていましたが、
font="@Fonts.【自分で設定したID】"という書き方へ変更します。

```diff_xml:layout.xml
<layout id="WatchFace">
    <drawable class="Background" />
    <label id="TimeLabel" x="center" y="center" font="@Fonts.yutatachibana" justification="Graphics.TEXT_JUSTIFY_CENTER" color="Graphics.COLOR_BLUE" />
    <label id="Hello" x="50%" y="60%" font="@Fonts.yutatachibana" justification="Graphics.TEXT_JUSTIFY_CENTER" color="Graphics.COLOR_BLUE" />
</layout>

```

ビルドを実行すると、下記エミュレータ結果になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320059/1366181d-4c93-6089-8ede-1745689de37f.png)
((選択する文字を間違えてやり直したのはココだけの話))

# 終わりに
今回はここまでにします。
次回は状況に応じたアイコン表示を目標にしたいと思います。

# 参考リンク

https://note.com/run_bike_other/n/n919fe1e57f1b

https://note.com/monkey_mayo/n/na463889a0a8b

http://marupeke296.com/UNI_PLG_No1_NGUI01.html