Geoserver迁移至Tomcat后自定义字体字符无法正常加载问题
解决方案与排查步骤
1. 检查Tomcat用户的字体目录权限
Tomcat运行用户可能没有读取系统字体目录的权限,执行以下命令确认:
# 查看Tomcat运行用户 ps aux | grep tomcat9 # 检查字体目录及文件权限 ls -ld /usr/share/fonts/truetype/folder_name ls -l /usr/share/fonts/truetype/folder_name/*.ttf
若权限不足,执行命令修改:
sudo chmod -R 644 /usr/share/fonts/truetype/folder_name/*.ttf sudo chmod 755 /usr/share/fonts/truetype/folder_name
修改后重启Tomcat。
2. 在SLD中明确指定字体完整名称
系统字体的文件名和实际字体名称可能不一致,通过fc-list命令获取字体的正式名称:
fc-list | grep "你的字体关键词"
在SLD的<TextSymbolizer>中指定该名称:
<Font> <CssParameter name="font-family">字体正式名称</CssParameter> <CssParameter name="font-size">12</CssParameter> </Font>
3. 配置JDK字体加载路径
编辑OpenJDK的字体配置文件/usr/lib/jvm/java-1.11.0-openjdk-amd64/jre/lib/fontconfig.properties(若不存在则创建),添加以下内容(替换为你的字体名称):
allfonts.1=你的字体正式名称 sequence.allfonts=default,1
保存后重启Tomcat。
4. 将字体直接放入GeoServer资源目录
将.ttf字体文件复制到/var/lib/tomcat9/webapps/geoserver/WEB-INF/fonts(无此文件夹则创建),然后修改GeoServer的web.xml文件(位于/var/lib/tomcat9/webapps/geoserver/WEB-INF/),添加字体目录配置:
<context-param> <param-name>GEOSERVER_FONT_DIR</param-name> <param-value>WEB-INF/fonts</param-value> </context-param>
重启Tomcat后,在GeoServer管理界面的字体列表中确认字体已加载,再测试渲染效果。
5. 设置Tomcat JVM字体路径参数
编辑/etc/default/tomcat9文件,添加JVM参数指定字体路径:
JAVA_OPTS="${JAVA_OPTS} -Dsun.java2d.fontpath=/usr/share/fonts/truetype/folder_name"
保存后重启Tomcat。
内容的提问来源于stack exchange,提问作者Luis García
相关产品推荐
相关产品推荐

