★Go その2 Advent Calendar 2015の14日目です。
先日のGoConでも扱われる数が増えてきてる感じがしているgomobile。個人的にとても嬉しい流れです。
今回はそのgomobile上でtruetypeフォントを扱って日本語を実機上で表示してみたという感じの記事です。
※英数字のみであればgolang.org/x/mobile/exp/fontでも大丈夫かと思いますがそっちは未確認
※gomobileパッケージ自体の更新がかなり早いので以降のバージョンによってはうまくいかない可能性もあります。ご了承ください。
サンプル
https://github.com/bowzstandard/gmtsmpl
androidとiosとmac上で表示確認済み。
フォントはM+フォントを使用させていただきました。
必要なもの
- Go 1.5
- gomobile
- imageの追加パッケージ。主にこの中のfontを使用します。
- freetype。主にtruetypeを使用します。ttfのパースをおこないます。
やってること
ttfを読み込んで最終的にNodeのSubTexとして扱えるような形に持って行ってます。
以下手順
- ttfをassetパッケージを使って読み込みます。
- ioutil.ReadAllで[]byteを取ります。
- truetype.Parseを使ってtruetype.Fontにパースします。
- font.Drawerを使ってttfのデータから該当の*glutil.Imageへテキストを描画していきます。
- 描画したものをEngine.LoadTextureでTexture化→SubTex化します。
- 対象のNodeにSetSubTexでテクスチャとして乗っけられます。
- その際にSetTransformで大きさを整えます。この辺は描画したテキストサイズに合わせて変更する感じで実装します。
- これでArrangerでも扱える形でテキストを使用可能になります。
TODO
- インタラクティブな入力に対応
- 自動改行
- ワイプとかの演出処理
などなど
その他
来年中にgomobileの安定版が出るという話もあったのでとても楽しみにしている感じですが、その間にもいろいろと試行錯誤しながらパッケージのコード解析しつつ試験段階のコードも楽しくいじり倒せたらなと思ってます。