.NET Micro Frameworkデバイスに日本語フォントを埋め込む
.NET Micro FrameworkのWindowsアプリケーションプロジェクトを作成して出来上がるサンプルプロジェクトには、small.tinyfntという小さなフォントが入っています。このフォントには日本語のデータが入ってはいないので、平仮名やカタカナ、漢字を表示しようとすると文字化けしてしまいます。
日本語を表示したい場合は、以下の手順で.NET MFデバイスに埋め込むフォントデータを作る必要があります。
- 埋め込みたいフォントのUnicode上のコードを調べる
- .NET MFデバイスに埋め込むフォントデータを作る為の定義ファイルを作成する
- 定義ファイル、True Type Fontからデバイスに埋め込むフォントデータを作り出す
- .NET MFアプリプロジェクトにフォントデータを組込む
先ず1番目、スタートボタンをクリックし、”プログラムとファイルの検索”に”charmap"と入力し、検索されたアイコンを起動します。文字コード表が起動されるので、組込みたい文字のコードを調べます。例えば平仮名の場合は、0x3041~0x3096です。十進法では、12353~12438です。
次に定義ファイルを作ります。詳細は、https://msdn.microsoft.com/en-us/library/ee436564.aspx を参考にしてもらうとして、Meiryoフォントの平仮名を組込むとして、c:¥Windows¥Fontsからmeiryo.ttcをどこか適当な場所にコピーします。(以下の例では、.NET Micro Framework 4.2のインストールフォルダーのTools¥Fonts¥True Typeにコピーしている)
※Windows¥FontsフォルダーのMeiryo UIをダブルクリックして開き、Meiryo UI標準をコピペします。
以下のような定義ファイルをmeiryo.fntdefという名前で作成します。
AddFontToProcess "C:\\Program Files (x86)\\Microsoft .NET Micro Framework\\v4.2\\Tools\\Fonts\\TrueType\\meiryo.ttc"SelectFont "WE:400,FN:Meiryo UI"ImportRange 12353 12438 |
このファイルの3行目が平仮名を指定しているところです。
コマンドプロンプトを起動して、.NET Micro Frameworkのインストールディレクトリの下のToolsにcdします。そして、以下のコマンドを実行します。
> tfconvert.exe "Fonts\TrueType\meiryo.fntdef" "Fonts\TrueType\meiryohiragana.tinyfnt"
※fntdefファイルはtfconvert.exeファイルが存在するフォルダーの下のFonts\TrueTypeフォルダーに置いたものとします。
これで、meiryohiragana.tinyfntというMeiryoフォントで平仮名のデータが入ったファイルが出来上がります。
.NET MFプロジェクトに組込むには、このtinyfntファイルを、プロジェクトフォルダーのResourcesフォルダー(デフォルトではsmall.tinyfntファイルが入っている)にコピーします。
そして、このプロジェクトのResources.resxを開きます。そしてメニューの”リソースの追加”→”既存ファイルの追加”を選択して、meiryohiragana.tinyfntを選択し、フォントリソースに追加します。
この状態で一度プロジェクトをビルドします。そして、書体を指定するコードで、
text.Font = Resources.GetFont(Resources.FontResources.meiryohiragana);
こんな風にフォントを指定し、
text.TextContent = @"あいうえお";
な感じで、コーディングすれば、日本語フォントでメイリオの書体で表示されます。
実際に製品として使う場合には、大概のフォントは著作権があって勝手には使えない場合があるのでご注意。
Comments
Anonymous
August 19, 2011
先ほどTFConvertと書きましたが、TinyFontTool.exeの間違いでした TinyFontTool.exeはGUI形式でフォントファイルを作成するツールですAnonymous
August 19, 2011
最初に書いたコメントが反映されないので、再度ポストします フォント利用の説明ありがとうございました 2つほど質問です 上記で書かれたように作成するとフォントのサイズは実行時に変更できるのでしょうか 以前、TinyFontTool.exeで作成した時はビットマップ形式になっているようでサイズはフォントファイル作成時に決まっているようでした。 著作権についてですが、Windows標準のフォントも著作権上使用できないのでしょうか?等幅のMSゴシックなどを使用したいのですが。