世界第一!泰山JDK8完美支持TTC字体文件的效果图
Posted 柳鲲鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了世界第一!泰山JDK8完美支持TTC字体文件的效果图相关的知识,希望对你有一定的参考价值。
- 首先感谢搜索时给予启发的朋友
在前面博文中有说明。
- 字体介绍
batang.ttc中,共有4个字体:Batang, BatangChe, Gungsuh, GungsuhChe
- 渲染效果图
由图中可以看到,4行文字的英文各不相同。
- 非渲染效果图
- 测试代码
package taishan;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.io.File;
import sun.font.TrueTypeFont;
@SuppressWarnings("serial")
public class TTCFontFileTestFrame extends TFrame
private final static String FONT_DIR = "D:\\\\test-fonts";
private final static String[] FONT_FILES =
//"simsun.ttc",
"batang.ttc",
;
private final static int POS_OFFSET = 100;
private final static char[] TAISHAN = "泰山Office".toCharArray();
private Font[] mTestFonts;
public TTCFontFileTestFrame()
try
TrueTypeFont ttf = new TrueTypeFont(FONT_DIR+"\\\\"+FONT_FILES[0]);
mTestFonts = new Font[ttf.getFontCount()];
String[] names = ttf.getFullNames();
for (int i=0; i<names.length; i++)
Font font = Font.createFont(Font.TRUETYPE_FONT, new File(FONT_DIR+"\\\\"+FONT_FILES[0]), names[i]);
font = font.deriveFont(Font.PLAIN, 30);
System.out.println(font.getFamily()+", "+font.getName()+", "+font.getFontName());
mTestFonts[i] = font;
catch (Exception e)
e.printStackTrace();
private void drawBoldFonts(Graphics2D g)
//int xunit = 20;
int yunit = 40;
for (int i=0; i<mTestFonts.length; i++)
if (mTestFonts[i] == null)
continue;
g.setFont(mTestFonts[i]);
int y = POS_OFFSET+i*yunit;
g.drawChars(TAISHAN, 0, TAISHAN.length, POS_OFFSET, y);
@Override
public void paint(Graphics g)
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
drawBoldFonts(g2d);
public static void main(String[] args)
TTCFontFileTestFrame frame = new TTCFontFileTestFrame();
frame.startTest();
以上是关于世界第一!泰山JDK8完美支持TTC字体文件的效果图的主要内容,如果未能解决你的问题,请参考以下文章