世界第一!泰山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字体文件的效果图的主要内容,如果未能解决你的问题,请参考以下文章

泰山JDK8新实现的一个字体斜体效果

全网首发:JDK/Java对于TTC字体文件的支持研究

泰山JDK8率先支持多种权重(笔画粗细)的字体绘制

六石编程学:抄代码是个技术活,大多数人不传抄

世界最好的字体引擎,泰山FreeType,开源:我们站在巨人的肩膀上

关于JDK/Java支持TTC字体的思路