Xperia arcでのフォント変更 太字フォントファイルの作成と変更

前回のエントリーXperia arcのフォント変更に成功したものの、個人的にはちょっとまだ完璧になっていない部分が合ったので、それを改善したく悶々としていました。
ここでの記事は以下の方のお役に立てるかと思います。

  • フォントを設定したが滲む
  • 太字の日本語フォントと細字の日本語フォントを別にしたい

では早速とりかかっていきたいと思います。

1.root化〜フォント変更アプリのインストールとフォント変更の仕方
 
こちらの記事をお読みください。

変更するフォントの用意
ここからが今回の記事のメインです
Androidの太字用のフォントは、DroidSansーBoldが対応します。OSやWEBなので太字指定がされた場合、こちらのフォントが使われるようです。しかし、太字属性が付いていないフォントを指定すると、DroidSans-boldが通常のウェイトをかいがするようです。(つまり、すべての文字が太字フォントになります)さらに、OSやWEBが指定する太字の部分は、AndroidがDroidSans-Boldのフォントを自分で太字処理させます。これがうまく行かず、滲む原因となります。コレを踏まえていくつかのニーズによって方法が変わります。

まず、日本語フォントは一種類で良い場合(つまり、別途太字用のフォントを必要としない場合)
この場合、英数字のみが太字になります。
DoidSans-Boldに「英字太字」フォントを適応します。
単に太い文字のことではなく、ここでいう「英字太字」フォントとは、Bold書体という設定になっているものです。(例えば、Wordなどのソフトで太さが「Bold」などとなっているものです。)
もし使いたいフォントが太いだけで、ボールド属性でない場合は下の「太字化する」の部分をお読みください。

次に、太字の日本語フォントを用いいたい場合 
この場合、英数字、日本語両方太字になります。
こちらの場合も指定するフォントは太字扱いになっている物を使います。(例えばヒラギノ角ゴW6などはなっています。)このフォントを上記と同じようにDroidSansーBoldに適応します。 ここでの英数字は指定された日本語用フォントに収録された英数字が使われます。
ここで太字属性ではないフォントを使用すると、上記で説明したように、すべての日本語フォントが指定した太字フォントを使用し、太字の部分では滲みます。
太字属性ではないフォントを太字に使いたい場合は、下の太字化させるをお読みください。

フォントを太字属性化する

ここからはかなり重労働になります。お気をつけください。

まずfontforgeをインストール
このソフトはフォントを編集するるソフトです。商用フォントなどを改ざんするのは利用規約に違反するおそれがありますので、フォントの利用規約をご確認の上行ってください。

fontforgeこちらよりダウンロードします。
Windowsの方はこちらを使うと便利です。

以下ではWindows版をインストールしたのを前提に行っていきます。
展開する先は日本語が含まれていないフォルダにしてください。エラーの原因となるようです。

先に余談ですが、fontforged簡単に太字属性を追加する方法が僕にはわかりませんでしたので、以下でやる方法はかなり非能率的で面倒な手順を踏んでいます。もし、分かりやすい方法がありましたらお知らせいただけると幸いです。

次に太字属性をもったフォント(例えばヒラギノ角ゴW6やメイリオ?)をfontforgeで開きます。(日本語と英字すべて交換したい場合は日本語フォントを、英字だけでいい場合は英字フォントを用意します。)

fontforgeを起動し、「ファイル」から開く、で太字フォントを開きます。
以下なんども使う可能性がありますので、C/Windows/fontから必要なフォントをバックアップの意味も兼ねて、fontforgeを展開いたフォルダにコピーしておきましょう。

するとウインドウにズラッと、文字が出てくるはずです。もし表示されない場合(少なくともヒラギノ角ゴW6はでできませんでした)メニューバーの「CID」をクリックして、「単一化」をクリックします。

次に出てきたフォントをすべて選択し(ドラッグすると複数選択ができます)、右クリックから「クリア」をクリックします。しばらく時間がかかった後、フォントの中身がすべて消えます。

これより使いたいフォントを空になったフォントに統合していきます。

英字フォントを交換したい場合は(日本語も交換したい人も含む)まず先に英字フォントから統合していきます。
「ファイル」から交換したいフォントを開きます。
開いた後、「エレメント」から「フォント情報」をクリックし、高さ、EM、深さの値が、空になった太字フォントと同じか確認します。
違う場合、空になった太字フォントと同じ値になるようにして、OKを押します。

次に先程の空になったフォントに戻って、「エレメント」から「フォントの統合」をクリックします。
すると統合するフォントを聞いてきますので、英字フォントを指定して、OKを押します。

すると英字の部分に適応したいフォントが埋まっていきます。

同様に日本語のフォントも埋め込んでいきます。
(日本語を交換しない場合はMTLmr3m.ttfが日本語の太字を担当すると思います)

日本語と英字の埋込みが完了したら「ファイル」より、「フォントを出力」を選びます。いくつかエラーが出るかもわかりませんが、とりあえずすべてOKや保存を押して頑張ります。

すると太字属性を持った英字と日本語の統合フォントが出来上がります。
(拡張子がotfの場合は、otfで出力してから、拡張子を.ttfにしたほうがエラーが起きないと思います。)

コレをtype freshで細字日本語をMTLmr3m.ttf、細字英字をDroidsans.ttfに、今秋作った太字フォントをDroidSans-Bold.ttfに適応すれば完成です。


以下余談

上記のフォントの統合を用いて、細字の英字と細字の統合もできます。こうしてできたファイルをDroidsansに適応すれば,日本語、英語の細字をいっぺんに交換できると思います。

おそらくDroidsans-Boldに太字属性フォントのが指定されてい得る場合は、太字の部分に適応され、DroidSansのフォントが細字を担当します。さらにDroidsansに日本語が含まれていない場合は日本語のみMTLmr3m(一般のAndroidではDroisans-Japanese)が担当するという仕組みではないかと推測します。
太字属性フォントでない場合はすべてをDroidsans-Boldが対応してしまうのだと思います。