• 追加された行はこの色です。
  • 削除された行はこの色です。
#navi(../)
*Fontをファイルから取得 [#o126bcf5]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2005-03-07~
更新日:&lastmod;
---
category: swing
folder: CreateFont
title: Fontをファイルから取得
tags: [Font, JTextArea]
author: aterai
pubdate: 2005-03-07T02:07:13+09:00
description: TrueTypeフォントをファイルから読み込み、ASCII artを表示します。
image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTKOUJYB7I/AAAAAAAAAVo/K2rl3dXD4ic/s800/CreateFont.png
---
* 概要 [#summary]
`TrueType`フォントをファイルから読み込み、`ASCII art`を表示します。

#contents
**概要 [#sb13909f]
独自フォント(mona.ttf)をファイルから読み込み、ASCII artを表示します。
#download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTKOUJYB7I/AAAAAAAAAVo/K2rl3dXD4ic/s800/CreateFont.png)

http://terai.xrea.jp/swing/createfont/screenshot.png
* サンプルコード [#sourcecode]
#code(link){{
Font makeFont(URL url) {
  Font font = null;
  try (InputStream is = url.openStream()) {
    font = Font.createFont(Font.TRUETYPE_FONT, is).deriveFont(12f);
  } catch (IOException | FontFormatException ex) {
    ex.printStackTrace();
  }
  return font;
}
// Font makeFont(URL url) {
//   Font font = null;
//   InputStream is = null;
//   try {
//     is = url.openStream();
//     font = (Font.createFont(Font.TRUETYPE_FONT, is)).deriveFont(12f);
//     is.close();
//   } catch (IOException ioe) {
//     ioe.printStackTrace();
//   } catch (FontFormatException ffe) {
//     ffe.printStackTrace();
//   } finally {
//     if (is != null) {
//       try {
//         is.close();
//       } catch (IOException ioex) {
//         ioex.printStackTrace();
//       }
//     }
//   }
//   return font;
// }
}}

**サンプルコード [#ibfdaff0]
 private static Font makeFont(String rpath) {
   Font font = null;
   InputStream is = null;
   try {
     is = MainPanel.class.getResourceAsStream(rpath);
     font = (Font.createFont(Font.TRUETYPE_FONT, is)).deriveFont(12.0f);
     is.close();
   }catch(IOException ioe) {
     ioe.printStackTrace();
     throw new InternalError(ioe.getMessage());
   }catch(FontFormatException ffe) {
     ffe.printStackTrace();
     throw new InternalError(ffe.getMessage());
   }finally{
     if(is!=null) {
       try{
         is.close();
       }catch(IOException ioex) {
         ioex.printStackTrace();
         throw new InternalError(ioex.getMessage());
       }
     }
   }
   return font;
 }
* 解説 [#explanation]
上記のサンプルでは、`Font.createFont(...)`メソッドで`.ttf`ファイルからフォントを作成しています。

-[[サンプルを起動>http://terai.xrea.jp/swing/createfont/sample.jnlp]]
-[[jarファイル>http://terai.xrea.jp/swing/createfont/sample.jar]]
-[[ソース>http://terai.xrea.jp/swing/createfont/src.zip]]
**解説 [#v308e626]
Font.createFont()でフォントを作成しています。
* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/Font.html#createFont-int-java.io.File- Font (Java Platform SE 8)]
- [http://monafont.sourceforge.net/index.html モナーフォント]
- [https://community.oracle.com/thread/1483177 Swing (Archive) - Loading TYPE1 fonts with JRE 1.5.0]

上記のサンプルで使用しているフォントは[[モナーフォント>http://monafont.sourceforge.net/index.html]]を、ASCIIアートは2chから引用しています。
* コメント [#comment]
#comment
- `JDK 1.5.0_01`でずれる? -- &user(aterai); &new{2005-03-07 11:19:11 (月)};
-- 応急処置済み -- &user(aterai); &new{2005-03-07 11:32:44 (月)};
- メモ: [https://bugs.openjdk.org/browse/JDK-6313541 Bug ID: 6313541 Fonts loaded with createFont cannot be converted into FontUIResource] -- &user(aterai); &new{2006-05-25 (木) 23:34:18};

**参考リンク [#cbcb57f0]
-[[モナーフォント>http://monafont.sourceforge.net/index.html]]
-[[Java Forums - Loading TYPE1 fonts with JRE 1.5.0>http://forum.java.sun.com/thread.jspa?forumID=57&threadID=518768]]
**コメント [#d9deff49]
-1.5.0_01でずれる? -- [[terai]] &new{2005-03-07 11:19:11 (月)};
-応急処置済み -- [[terai]] &new{2005-03-07 11:32:44 (月)};

#comment