以ubuntu服务器为示例:
首先,先安装字体库所需要的控件
apt-get install xfonts-utils apt-get install fontconfig apt-get install ttf-dejavu-core
将下载好的字体复制到/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(); }// 写图片 } }