{"id":7396,"date":"2011-07-11T08:00:43","date_gmt":"2011-07-10T23:00:43","guid":{"rendered":"http:\/\/www.sssg.org\/blogs\/hiro345\/?p=7396"},"modified":"2011-07-10T10:39:21","modified_gmt":"2011-07-10T01:39:21","slug":"java%e3%81%a7%e3%83%95%e3%82%a9%e3%83%b3%e3%83%88%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e7%90%86%e8%a7%a3%e3%81%97%e3%82%88%e3%81%86%ef%bc%81","status":"publish","type":"post","link":"https:\/\/www.hiro345.net\/blogs\/hiro345\/archives\/7396.html","title":{"rendered":"Java\u3067\u30d5\u30a9\u30f3\u30c8\u306b\u3064\u3044\u3066\u7406\u89e3\u3057\u3088\u3046\uff01"},"content":{"rendered":"<p>\u300c<a href=\"\/\/www.sssg.org\/blogs\/hiro345\/archives\/7378.html\">\u3053\u3093\u306a\u306b\u7c21\u5358\uff01Java\u3067Font\u4e00\u89a7\u3092\u8868\u793a | hiro345<\/a>\u300d\u306e\u3088\u3046\u306b\u3057\u3066\u3001\u30d5\u30a9\u30f3\u30c8\u4e00\u89a7\u3092\u53d6\u5f97\u3067\u304d\u305f\u3089\u3001\u3082\u3046\u5c11\u3057\u30d5\u30a9\u30f3\u30c8\u306b\u3064\u3044\u3066\u7406\u89e3\u3092\u6df1\u3081\u308b\u305f\u3081\u306b\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p><!--more-->\u5177\u4f53\u7684\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3057\u3066\u307f\u307e\u3059\u3002<br \/>\n<a href=\"\/\/www.sssg.org\/blogs\/hiro345\/wp-content\/uploads\/2011\/07\/monospaced.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-content\/uploads\/2011\/07\/monospaced.png\" alt=\"\" title=\"monospaced\" width=\"580\" height=\"46\" \/><\/a><\/p>\n<p><a href=\"\/\/www.sssg.org\/blogs\/hiro345\/wp-content\/uploads\/2011\/07\/sazanami.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-content\/uploads\/2011\/07\/sazanami.png\" alt=\"\" title=\"sazanami\" width=\"580\" height=\"44\" class=\"aligncenter size-medium wp-image-7400\" srcset=\"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-content\/uploads\/2011\/07\/sazanami.png 648w, https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-content\/uploads\/2011\/07\/sazanami-300x22.png 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>\u8a73\u7d30\u306fJava\u306ejava.awt.FontMetrics\u30af\u30e9\u30b9\u306e\u8aac\u660e\u3092\u8aad\u3080\u3068\u826f\u3044\u306e\u3067\u3059\u304c\u3001\u7c21\u5358\u306b\u8aac\u660e\u3092\u3057\u3066\u304a\u304d\u307e\u3059\u3002\u30d5\u30a9\u30f3\u30c8\u306e\u63cf\u753b\u306b\u3042\u305f\u3063\u3066\u306f\u3001\u30d5\u30a9\u30f3\u30c8\u306e\u4f4d\u7f6e\u306f\u3001\u53c2\u7167\u30dd\u30a4\u30f3\u30c8\u3068\u3044\u308f\u308c\u308b\u70b9\u306e\u5ea7\u6a19\u3092 x, y \u3067\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u30dd\u30a4\u30f3\u30c8\u306ey\u5ea7\u6a19\u306e\u6c34\u5e73\u30e9\u30a4\u30f3\u304c\u30d9\u30fc\u30b9\u30e9\u30a4\u30f3\u3068\u306a\u308a\u307e\u3059\uff08\u3055\u304d\u307b\u3069\u306e\u56f3\u3067\u306f\u8d64\u7dda\uff09\u3002\u82f1\u5b57\u3067\u306f\u3001p, q \u306e\u3088\u3046\u306b\u3001\u3053\u306e\u30e9\u30a4\u30f3\u3088\u308a\u4e0b\u306b\u306f\u307f\u3067\u308b\u6587\u5b57\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>Java\u3067\u306f\u3001\u30d5\u30a9\u30f3\u30c8\u306e\u9ad8\u3055\u306f\u3001\u30a2\u30bb\u30f3\u30c8\u3001\u30c7\u30a3\u30bb\u30f3\u30c8\u3001\u30ec\u30c7\u30a3\u30f3\u30b0\uff08\u884c\u9593\u306e\u9593\u9694\uff09\u306e\u5408\u8a08\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u624b\u5143\u306e\u901a\u5e38\u306e\u6587\u5b57\u7528\u30d5\u30a9\u30f3\u30c8\u3067\u306f\u30ec\u30c7\u30a3\u30f3\u30b0\u306f0\u3067\u3057\u305f\u304b\u3089\u3001\u901a\u5e38\u306f\u30a2\u30bb\u30f3\u30c8\u3068\u30c7\u30a3\u30bb\u30f3\u30c8\u3092\u610f\u8b58\u3057\u3066\u304a\u3051\u3070\u3088\u3044\u3067\u3057\u3087\u3046\u3002<\/p>\n<p>\u3055\u304d\u307b\u3069\u306e\u56f3\u3067\u306f\u3001\u30d5\u30a9\u30f3\u30c8\u306e\u9ad8\u3055\u5206\u3092\u30c0\u30fc\u30af\u30b0\u30ec\u30fc\u306e\u7dda\u3067\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u30a2\u30bb\u30f3\u30c8\u306e\u5e45\u306f\u8d64\u7dda\u3068\u7dd1\u7dda\u9593\u306e\u5e45\u3001\u30c7\u30a3\u30bb\u30f3\u30c8\u306e\u5e45\u306f\u8d64\u7dda\u3068\u9752\u7dda\u9593\u306e\u5e45\u3067\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30ec\u30c7\u30a3\u30f3\u30b0\u306f\u30d4\u30f3\u30af\u306e\u7dda\u3067\u308f\u304b\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u305f\u304c\u3001\u4f7f\u3063\u305f\u30d5\u30a9\u30f3\u30c8\u3067\u306f0\u3060\u3063\u305f\u306e\u3067\u3001\u7dda\u304c\u91cd\u306a\u3089\u306a\u3044\u3088\u3046\u306b\u8868\u793a\u4e0a\u306e\u8abf\u6574\u3092\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u306e\u751f\u6210\u306b\u306f\u3001ImageIO\u30af\u30e9\u30b9\u3092\u4f7f\u3063\u3066\u3001\u3082\u306e\u3059\u3054\u304f\u7c21\u5358\u306b\u5b9f\u73fe\u3057\u3066\u3044\u307e\u3059\u3002\u6700\u521d\u3001Gimp\u306a\u3069\u3067\u540c\u69d8\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3057\u3088\u3046\u304b\u3068\u3082\u601d\u3044\u307e\u3057\u305f\u304c\u3001Java\u306e\u65b9\u304c\u6163\u308c\u3066\u3044\u3066\u7c21\u5358\u305d\u3046\u3060\u3063\u305f\u306e\u3067\u3001\u6b62\u3081\u307e\u3057\u305f\u3002<\/p>\n<p>\u5b9f\u969b\u306b\u4f5c\u6210\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u3001\u3061\u3087\u3063\u3068\u9577\u3044\u3067\u3059\u304c\u3001\u6b21\u306e\u3088\u3046\u306a\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u306a\u308a\u307e\u3059\u3002\u30e9\u30a4\u30f3\u63cf\u753b\u7528\u306by\u5ea7\u6a19\u3092\u3044\u308d\u3044\u308d\u8a08\u7b97\u3057\u3066\u3044\u308b\u3068\u3053\u308d\u304c\u308f\u304b\u308a\u306b\u304f\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30b3\u30f3\u30bd\u30fc\u30eb\u753b\u9762\u306b\u3067\u308b\u305d\u308c\u305e\u308c\u306e\u5024\u3068\u3001\u751f\u6210\u3055\u308c\u308b\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u306e\u7d50\u679c\u3092\u898b\u3066\u7167\u3089\u3057\u5408\u308f\u305b\u308c\u3070\u3001\u3069\u3046\u3044\u3046\u3053\u3068\u3092\u3057\u3066\u3044\u308b\u306e\u304b\u308f\u304b\u308b\u306f\u305a\u3067\u3059\u3002<\/p>\n<pre class=\"brush: java; gutter: true\">\r\npackage&nbsp;org.sssg.soft.sample.fontlist&#x3b;\r\n\r\nimport&nbsp;java.awt.Color&#x3b;\r\nimport&nbsp;java.awt.Font&#x3b;\r\nimport&nbsp;java.awt.FontMetrics&#x3b;\r\nimport&nbsp;java.awt.Graphics2D&#x3b;\r\nimport&nbsp;java.awt.GraphicsEnvironment&#x3b;\r\nimport&nbsp;java.awt.image.BufferedImage&#x3b;\r\nimport&nbsp;java.io.File&#x3b;\r\nimport&nbsp;java.io.IOException&#x3b;\r\nimport&nbsp;java.util.Arrays&#x3b;\r\nimport&nbsp;java.util.List&#x3b;\r\n\r\nimport&nbsp;javax.imageio.ImageIO&#x3b;\r\n\r\npublic&nbsp;class&nbsp;FontImageCreator&nbsp;{\r\n&nbsp;&nbsp;private&nbsp;FontMetrics&nbsp;getFontMetrics(Font&nbsp;font)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;image&nbsp;=&nbsp;new&nbsp;BufferedImage(1,&nbsp;1,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage.TYPE_INT_RGB)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;Graphics2D&nbsp;g&nbsp;=&nbsp;image.createGraphics()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;FontMetrics&nbsp;fm&nbsp;=&nbsp;g.getFontMetrics(font)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.dispose()&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;fm&#x3b;\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;public&nbsp;void&nbsp;checkLeading()&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;GraphicsEnvironment&nbsp;genv&nbsp;=&nbsp;GraphicsEnvironment\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getLocalGraphicsEnvironment()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Font&gt;&nbsp;values&nbsp;=&nbsp;Arrays.asList(genv.getAllFonts())&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;checkLeading&nbsp;start&nbsp;...&nbsp;&quot;)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(Font&nbsp;font&nbsp;&#x3a;&nbsp;values)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FontMetrics&nbsp;fm&nbsp;=&nbsp;getFontMetrics(font)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(fm.getLeading()&nbsp;&#x21;=&nbsp;0)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;&quot;&nbsp;+&nbsp;font.getName())&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;checkLeading&nbsp;end&nbsp;...&nbsp;&quot;)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&quot;)&#x3b;\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;public&nbsp;void&nbsp;draw(String&nbsp;fontName,&nbsp;String&nbsp;fileName)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;Font&nbsp;font&nbsp;=&nbsp;Font.decode(fontName).deriveFont(24.0f)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;FontMetrics&nbsp;fm&nbsp;=&nbsp;getFontMetrics(font)&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str&nbsp;=&nbsp;&quot;\u3042\u3044\u3046\u3048\u304aABCPQRSTUabcpqrstu&quot;&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;width&nbsp;=&nbsp;fm.charWidth(str.charAt(0))&nbsp;*&nbsp;(str.length()&nbsp;+&nbsp;4)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;height&nbsp;=&nbsp;fm.getHeight()&nbsp;+&nbsp;20&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;image&nbsp;=&nbsp;new&nbsp;BufferedImage(width,&nbsp;height,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage.TYPE_INT_RGB)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;Graphics2D&nbsp;g&nbsp;=&nbsp;image.createGraphics()&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;fw&nbsp;=&nbsp;fm.stringWidth(str)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;fh&nbsp;=&nbsp;fm.getHeight()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;Font&nbsp;Name&#x3a;&quot;&nbsp;+&nbsp;font.getName())&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;Font&nbsp;Width&#x3a;&quot;&nbsp;+&nbsp;fm.stringWidth(str))&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;Font&nbsp;Height&#x3a;&quot;&nbsp;+&nbsp;fm.getHeight())&#x3b;&nbsp;&#x2f;&#x2f;&nbsp;\u30a2\u30bb\u30f3\u30c8+\u30c7\u30a3\u30bb\u30f3\u30c8+\u6a19\u6e96\u30ec\u30c7\u30a3\u30f3\u30b0\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;Font&nbsp;Ascent&#x3a;&quot;&nbsp;+&nbsp;fm.getAscent())&#x3b;&nbsp;&#x2f;&#x2f;&nbsp;\u30a2\u30bb\u30f3\u30c8\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;Font&nbsp;Descent&#x3a;&quot;&nbsp;+&nbsp;fm.getDescent())&#x3b;&#x2f;&#x2f;&nbsp;\u30c7\u30a3\u30bb\u30f3\u30c8\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;Font&nbsp;Leading&#x3a;&quot;&nbsp;+&nbsp;fm.getLeading())&#x3b;&#x2f;&#x2f;&nbsp;\u6a19\u6e96\u30ec\u30c7\u30a3\u30f3\u30b0\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#x2f;&#x2f;&nbsp;(\u884c\u9593\u306e\u9593\u9694)\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;x_left_margin&nbsp;=&nbsp;(width&nbsp;&#x2d;&nbsp;fw)&nbsp;&#x2f;&nbsp;2&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;y_top_margin&nbsp;=&nbsp;(height&nbsp;&#x2d;&nbsp;fh)&nbsp;&#x2f;&nbsp;2&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;x&nbsp;=&nbsp;x_left_margin&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;y&nbsp;=&nbsp;y_top_margin&nbsp;+&nbsp;fm.getAscent()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;width&#x3a;&quot;&nbsp;+&nbsp;width)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;height&#x3a;&quot;&nbsp;+&nbsp;height)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;x&#x3a;&quot;&nbsp;+&nbsp;x)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;&nbsp;y&#x3a;&quot;&nbsp;+&nbsp;y)&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(Color.WHITE)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.fillRect(0,&nbsp;0,&nbsp;image.getWidth(),&nbsp;image.getHeight())&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&#x2f;&#x2f;&nbsp;\u30d9\u30fc\u30b9\u30e9\u30a4\u30f3\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;lineY&nbsp;=&nbsp;y&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(Color.RED)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.drawLine(0,&nbsp;lineY,&nbsp;width,&nbsp;lineY)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&#x2f;&#x2f;&nbsp;\u30ec\u30c7\u30a3\u30f3\u30b0\u4e0a,&nbsp;\u8868\u793a\u306e\u90fd\u5408\u3067\u8abf\u6574\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(Color.PINK)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;fLeading&nbsp;=&nbsp;fm.getLeading()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(fLeading&nbsp;==&nbsp;0)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fLeading&nbsp;=&nbsp;1&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;lineY&nbsp;=&nbsp;y&nbsp;+&nbsp;fm.getMaxDescent()&nbsp;&#x2d;&nbsp;fm.getHeight()&nbsp;&#x2d;&nbsp;fLeading&nbsp;&#x2d;&nbsp;1&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.drawLine(0,&nbsp;lineY,&nbsp;width,&nbsp;lineY)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&#x2f;&#x2f;&nbsp;\u30ec\u30c7\u30a3\u30f3\u30b0\u4e0b,&nbsp;\u8868\u793a\u306e\u90fd\u5408\u3067\u8abf\u6574\r\n&nbsp;&nbsp;&nbsp;&nbsp;lineY&nbsp;=&nbsp;y&nbsp;+&nbsp;fm.getMaxDescent()&nbsp;+&nbsp;fLeading&nbsp;+&nbsp;1&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.drawLine(0,&nbsp;lineY,&nbsp;width,&nbsp;lineY)&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&#x2f;&#x2f;&nbsp;\u30d5\u30a9\u30f3\u30c8\u306e\u9ad8\u3055\u4e0a,&nbsp;\u8868\u793a\u306e\u90fd\u5408\u3067&nbsp;&#x2d;1\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(Color.DARK_GRAY)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;lineY&nbsp;=&nbsp;y&nbsp;+&nbsp;fm.getMaxDescent()&nbsp;&#x2d;&nbsp;fm.getHeight()&nbsp;&#x2d;&nbsp;1&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.drawLine(0,&nbsp;lineY,&nbsp;width,&nbsp;lineY)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&#x2f;&#x2f;&nbsp;\u30d5\u30a9\u30f3\u30c8\u306e\u9ad8\u3055\u4e0b,&nbsp;\u8868\u793a\u306e\u90fd\u5408\u3067&nbsp;+1\r\n&nbsp;&nbsp;&nbsp;&nbsp;lineY&nbsp;=&nbsp;y&nbsp;+&nbsp;fm.getMaxDescent()&nbsp;+&nbsp;1&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.drawLine(0,&nbsp;lineY,&nbsp;width,&nbsp;lineY)&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&#x2f;&#x2f;&nbsp;\u30a2\u30bb\u30f3\u30c8\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(Color.GREEN)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;lineY&nbsp;=&nbsp;y&nbsp;&#x2d;&nbsp;fm.getMaxAscent()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.drawLine(0,&nbsp;lineY,&nbsp;width,&nbsp;lineY)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&#x2f;&#x2f;&nbsp;\u30c7\u30a3\u30bb\u30f3\u30c8\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(Color.BLUE)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;lineY&nbsp;=&nbsp;y&nbsp;+&nbsp;fm.getMaxDescent()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.drawLine(0,&nbsp;lineY,&nbsp;width,&nbsp;lineY)&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(Color.BLACK)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.setFont(font)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.drawString(str,&nbsp;x,&nbsp;y)&#x3b;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;g.dispose()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImageIO.write(image,&nbsp;&quot;png&quot;,&nbsp;new&nbsp;File(fileName))&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(IOException&nbsp;e)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;FontImageCreator&nbsp;app&nbsp;=&nbsp;new&nbsp;FontImageCreator()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;app.checkLeading()&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;app.draw(&quot;Monospaced&quot;,&nbsp;&quot;monospaced.png&quot;)&#x3b;\r\n&nbsp;&nbsp;&nbsp;&nbsp;app.draw(&quot;Sazanami&nbsp;Mincho&nbsp;Regular&quot;,&nbsp;&quot;sazanami.png&quot;)&#x3b;\r\n&nbsp;&nbsp;}\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u300c\u3053\u3093\u306a\u306b\u7c21\u5358\uff01Java\u3067Font\u4e00\u89a7\u3092\u8868\u793a | hiro345\u300d\u306e\u3088\u3046\u306b\u3057\u3066\u3001\u30d5\u30a9\u30f3\u30c8\u4e00\u89a7\u3092\u53d6\u5f97\u3067\u304d\u305f\u3089\u3001\u3082\u3046\u5c11\u3057\u30d5\u30a9\u30f3\u30c8\u306b\u3064\u3044\u3066\u7406\u89e3\u3092\u6df1\u3081\u308b\u305f\u3081\u306b\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[535,1207],"class_list":["post-7396","post","type-post","status-publish","format-standard","hentry","category-java","tag-font","tag-java"],"_links":{"self":[{"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/posts\/7396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/comments?post=7396"}],"version-history":[{"count":14,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/posts\/7396\/revisions"}],"predecessor-version":[{"id":7404,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/posts\/7396\/revisions\/7404"}],"wp:attachment":[{"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/media?parent=7396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/categories?post=7396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hiro345.net\/blogs\/hiro345\/wp-json\/wp\/v2\/tags?post=7396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}