Helveticaはプロポーショナルフォントでヒラギノが等幅フォント。
まぁ見やすいからいいかーとも思ってたんだけど、
英数歌詞に入ると、アスキーアート並の空白調整が必要。
いい加減面倒くさくなってきた
ただ、単純に等幅フォントにすればいいってものでもないのが面倒で、
iPhone標準の1バイトフォントだとCourierか Courier newのみ。
ズレはともかく、Courierにしてみた状態
(JASRAC非信託曲)
やはりセリフ体はヒラギノと相性が悪い。
かと言って他にない。
しかたないので、カスタムフォントを搭載してみる。
プロプライエタリなフォントを使っても
後々面倒なので、
フリーで欧文フォントを探すも、意外と良いのが無い。
M+フォントを入れてみたけれども、
日本語フォントが中途半端に入っている。
これだと無いフォントは代替されるか、空白になるかなー。
と思ったら、M+とIPAの合成なんてあるのね
意外と悪くない
(JASRAC非信託曲)
ただここで問題が発生。
上記の歌詞表示モードは同一行は重ね書きなので、
文字の内容はあまり関係ない。
ただモーションモードは空白と位置を、
歌詞の内容を見て座標調整しているので、
テキストから座標変換をする必要がある。
CATextLayerはCGFontRefという参照でフォントを読み込むのだが、
フォントのサイズを測る場合はUIFontというクラスで読む必要がある。
だが、なぜかMigMix M1フォントがUIFontで読めない。
Info.plistに設定し、フォントファミリ名で指定するなど、
考えつくことはすべてやったけれども、
UIFontの初期化でなぜかポインタがNULLで帰ってくる。
諦めたら試合終了なので、
フォントのサイズを測るだけのために、
UIFontへフォントをロードすることはメモリの無駄と自分に言い聞かせて、
自前でフォント幅を図ることにする。
1バイトと2バイトの判別方法は色々あるらしいので、
それに加えて空白だけの判別ロジックで早くなるように分岐処理。
1.5日の難産の末、等幅フォント化終了。
これで、テキストの打ち込みが3倍の速さでできるようになる筈。
等幅フォントを諦めなかった理由として、
ベースラインも統一されるというメリットがある。
これで英語でもロシア語でも綺麗に歌詞表示が可能になるかな。
C#で作ったタグチェックソフトも改訂しないと。
0 件のコメント:
コメントを投稿