项目场景:
由于业务需求,需要判断字符串像素宽度
问题描述
使用FontMetrics.stringWidth(“对应字符串”):
public static void main(String[] args) {
Font f = new Font("仿宋", Font.PLAIN, 17);
FontMetrics fm = sun.font.FontDesignMetrics.getMetrics(f);
System.out.println(fm.stringWidth("这是一条简简单单是数据1231231数字dslkfjaslkdf字母......中文标点,,,,,,,,英文标点"));
}
输出结果:
但部署在linux上后输出结果与本地不一致
原因分析:
由于限定了字体,所以首先考虑linux是否安装了‘仿宋’字体:
但部署在linux上后输出结果与本地不一致
查询系统所安装的中文字体:fc-list :lang=zh
解决方案:
在linux端安装对应字体:
将ttf文件上传到 /usr/share/fonts 目录下
刷新字体:fc-cache -fv
再次测试:
结果正确