1

jar ファイルに ttf ファイルをバンドルしており、テキストをレンダリングするための物理フォントとして使用する予定です。

私がインターネットで見たすべてのサンプルコードは次のとおりです。

InputStream is=Essai.class.getResourceAsStream(resourcePath);
Font f=Font.createFont(fontFormat, is);

このコードについて 2 つの質問があります。

  • まず、DejaVu などの 1 つのフォントが 4 つの異なる ttf ファイルを保持し、スタイル (通常、太字、斜体、太字-斜体) ごとに 1 つです。1 つの ttf (4 つのいずれか) からフォントを作成するだけで十分ですか?

  • 第二に、フォントを作成した後にストリームを閉じたコードは見たことがありません。おそらく、作成されたフォント (後でローカルの GraphicsEnvironment に登録されます) は、ストリームを開いたままにする必要がありますか?

    createFont() メソッドの javadoc には、「このメソッドは InputStream を閉じません」と記載されています。

    2 番目の質問は、フォントを作成した後にストリームを閉じるべきか、それとも開いたままにしておくべきかということです。
4

1 に答える 1

3
  1. 1 つのバリアントをロードすると、それらすべてがロードされるとは思いません。しかし、それは問題ではありません。Java はFont、ボールド体とイタリック体の任意の組み合わせでバリアントを作成できます。Fontそもそも標準を瓶に入れるだけでした。
  2. ストリームを閉じます。多くの例では、簡潔にするために手抜きをしています (ただし、これは一般的に悪い考えです)。
于 2012-04-22T16:01:33.703 に答える