場景:採用JasperReport生成報表時,若將模版中的字體配置成宋體時。部署在不同的系統上時,可能會出現中文亂碼的情況,也可以適用於其他任何需要單獨配置字體的第三方庫。
首先,你可以給部署的服務器,添加“宋體”字體庫,但這中方法治標不治本。意味着,你每每部署一個系統,最好都要去添加一次字體庫。不利於維護,也不利於實施。
另外一種方法,將字體集成到項目中,在部署的時候,就可以不去理會服務器是否包含“宋體”。
注意:“宋體”可換成其他任意的字體
下面以宋體爲例:
在項目的resources下新建fonts目錄,並在windows字體庫中將宋體複製到fonts目錄下
package com.uxsino.commons.utils;
import java.awt.Font;
import java.awt.FontFormatException;
import java.io.IOException;
import java.io.InputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 字體工具類
* @author jane
*
*/
public class FontsUtil {
private static final Logger logger = LoggerFactory.getLogger(FontsUtil.class);
/**
* 宋體
* @param style
* @param size
*/
public static Font getSIMSUN(int style, float size) {
Font font = null;
//獲取字體流
InputStream simsunFontFile = FontsUtil.class.getResourceAsStream("/fonts/SIMSUN.TTC");
try {
//創建字體
font = Font.createFont(Font.PLAIN, simsunFontFile).deriveFont(style, size);
} catch (FontFormatException e) {
logger.error("",e);
} catch (IOException e) {
font = new Font("宋體", Font.BOLD, 6);
logger.error("",e);
}
return font;
}
}