以ubuntu服务器为示例:
首先,先安装字体库所需要的控件
apt-get install xfonts-utils
apt-get install fontconfig
apt-get install ttf-dejavu-core
然后,将你下载好的字体文件放置到如下位置(.ttf文件):
将下载好的字体复制到/usr/share/fonts/truetype/liberation路径下
然后,在fonts路径下执行以下命令行
sudo mkfontscale (创建字体的fonts.scale文件,它用来控制字体旋转缩放)
sudo mkfontdir (创建字体的fonts.dir文件,它用来控制字体粗斜体产生)
sudo fc-cache -fv (建立字体缓存信息,也就是让系统认识认识雅黑)
建立路径和缓存之后,重启服务器或者重启服务,让系统识别新加入的字体库。
最后,在Graphics2D调用中,申明宋体字符即可直接调用。
最后,在代码部分进行调用,展示的时候即可正确展示:
package org.activiti.examples.processdefinitions;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int width = 100;
int height = 100;
String text = "爱我中华";
int x = 0;
int y = 0;
BufferedImage processDiagram = new BufferedImage(100, 100,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g = (Graphics2D) processDiagram.createGraphics();
Font font = new Font("宋体", Font.BOLD, 12);
g.setFont(font);
FontMetrics fontMetrics = g.getFontMetrics();
int textX = x + ((width - fontMetrics.stringWidth(text)) / 2);
int textY = y + ((height - fontMetrics.getHeight()) / 2)
+ fontMetrics.getHeight();
g.drawString(text, textX, textY);
File outFile = new File("d:/newfile.png");
try {
ImageIO.write(processDiagram, "png", outFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 写图片
}
}