Amazon.co.jpアソシエイト2019年9月24日火曜日Defoldで日本語のテキスト周りあれこれDefoldでも日本語のフォントを普通に使うことができる。otfとかttfのファイルをassetsフォルダみたいなところに入れておいてからNew>fontで.fontファイルを作成すれば、ゲーム内部で利用できるようになる。フォントの大きさとか、字詰・アルファ・影の設定とかはここでやるっぽいので、fontファイルはスタイルみたいなもんだろうと思う。複数のスタイルを使うときはその分だけ作成すれば良さそう。Charsというチェックを入れておかないと日本語フォントは入らない。文字周りのことに触れておくと、Defold自体が利用する文字エンコードは多分UTF-8っぽいのだけど、適当に読む限りLuaは単純にバイト列として読むだけなのでエンコードの変換とかは特に行われない、つまり内部文字コードみたいなものを持たないっぽい。これはRubyなんかも同じような作りだったような気がするけど詳しくないので知らない。Defold使っていて、シナリオデータをJSONとかで作ったりすると、当然読み込まれた文字はUTF-8になるわけだけど、よくあるテキストボックスに文字をぺぺぺってタイプライターみたいに打っていく表現をしようと思うと、文字を一文字ずつ切り分けるということが必要になります。Luaにもstring.subみたいな文字を切り出す処理があるのでそれを使うわけですが、たぶん上述のような理由でLuaは文字がどんな感じで格納されているかに関知しないので、subは指定バイト数で文字を切り出す、という仕様。古い絵文字っぽいものが3バイト、昨今の絵文字とその他あれこれが4バイトみたいになっています。ちなみにそれぞれが何バイトかは文字の先頭4ビットを見ればわかる。そのままUTF-8を利用して文字単位で切り出そうとすると、(DefoldのLua5.1の場合)そういう処理を実装する必要があるわけですが、ちょっと面倒くさかったので、先頭1バイトだけ読んで読めなければ固定で3バイト分読むという方針で実装していたところ、ツイッターで教えてもらいました。2019立て続けに二人に教えてもらいました。私もDefoldを使っているのですが、以前ダイアログを作った際は以下のライブラリを使用させて頂いてました。2019どっちもライセンス表記見ると同じ人が書いたっぽく、後者の方が機能が多い。'フォルダ名.utf8'とやれば、普通に使えるようになった。いうわけで、Defoldの利用者には大変親切な方が多いです。PLUGSという耳栓を海外から買った。