BD-Jでは既存のフォントと言う概念が無いようです
製作者が必要なフォントをディスクに入れておくと言う考えかたです
Blu-Rayディスクは大容量なので、フォントファイルのサイズなど大した事は無いと言う考えなのでしょう
Minimal BD-J (Java) Devkit for PS3、HD cookbookのどちらを使ったとしても、ディスクイメージに付属のフォントがあります
恐らく Devkitが、HDcookbookのディスクイメージを元に作成されたのだと思われます
AVCHD
|-BDMV
|-AUXDATA
|-00000.otf
|-00001.otf
|-dvb.fontindex
AUXDATAに格納されているのがフォントです
OTFファイルはオープンタイプフォントで、ダブルクリックすればどんなフォントなのか見ることができます
Windowsで使えるフォーマットのフォントです
一般的には TTF(トゥルータイプフォント)の方が多く使われていますが、どちらも考え方は同じ意味のファイルです
これをプログラムから呼び出すには、dvb.fontindexに記述された nameタグを使って、以下のようにします
public class MyXlet extends Component implements Xlet, ControllerListener, KeyListener{ //~他の宣言~ Font oUseFont; FontFactory oUseFontF; public void initXlet(XletContext context){ //~他のプログラム~ try{ oUseFontF= new FontFactory(); oUseFont= oUseFontF.createFont("Arial", java.awt.Font.BOLD,36); }catch(Exception e){} } public void paint(Graphics g){ //~他のプログラム~ g.setFont(oUseFont); g.drawString("文字列", 0, 0); }
付属フォントは英字のみです
新しいフォントを追加するには、AUXDATAフォルダにフォントファイルを入れて、dvb.fontindexファイルに fontエレメントを追記する必要があります
AVCHD
|-BDMV
|-AUXDATA
|-00000.otf
|-00001.otf
|-00002.otf ←追加
|-dvb.fontindex ←追記する
ファイル名は 00000からの連番でなければなりません
重複すると PS3でフリーズを引き起こしました
AVCHD
|-BDMV
|-AUXDATA
|-00000.otf
|-00001.otf
|-00001.ttf ←こういうのはダメです
|-dvb.fontindex
dvb.fontindexに 00002.otfを追記します
<?xml version="1.0"?> <!DOCTYPE fontdirectory PUBLIC "-//DVB//DTD Font Directory 1.0//EN" "http://www.dvb.org/mhp/dtd/fontdirectory-1-0.dtd"> <fontdirectory> <font> <name>Arial</name> <fontformat>OTF</fontformat> <filename>00000.otf</filename> <style>BOLD</style> </font> <font> <name>NewsGothicStd</name> <fontformat>OTF</fontformat> <filename>00001.otf</filename> <style>BOLD</style> </font> <font> <name>NihongoFont</name> <fontformat>TTF</fontformat> <filename>00002.ttf</filename> <style>PLAIN</style> </font> </fontdirectory>
こう定義すると、プログラムから呼び出す時は、以下のようになります
oUseFont= oUseFontF.createFont("NihongoFont", java.awt.Font.PLAIN, 36);
・機器毎に読み込めるフォントファイルが異なる
みかちゃんフォントTTF版は、PS3では読み込めるが、DMR-BW800(BDレコーダー)では読み込めない
みかちゃんフォントOTF版は、DMR-BW800では読み込めるが、PS3で読み込もうとするとフリーズする
・読み込めない場合に、styleタグを BOLDにすると読み込める場合がある
みかちゃんフォントOTF版を DMR-BW800で読み込ませるには BOLDにする必要があるようだ
・機器によっては、2つのフォントを同時に開くことができない
DMR-BW800では、以下のように記述すると oUseFont2のみ有効になる
oUseFont1= oUseFontF.createFont("Arial", java.awt.Font.BOLD,36);
oUseFont2= oUseFontF.createFont("NewsGothicStd", java.awt.Font.BOLD,36);
但し、同じフォントのサイズ違いは可能だった
oUseFont1= oUseFontF.createFont("NewsGothicStd", java.awt.Font.BOLD, 36);
oUseFont2= oUseFontF.createFont("NewsGothicStd", java.awt.Font.BOLD, 24);