服务器安装字体库解决出现xx问题

以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();
        }// 写图片
    }

}




你可能感兴趣的:(服务器,服务器)