问题背景

在 GeoServer 中使用 SLD 样式渲染中文标注时,如果样式里指定的字体(例如 SimSun)在服务器上并不存在,中文就会显示为方块或乱码。Ubuntu 服务器默认通常不安装中文字体,因此需要先安装字体,再让 GeoServer 使用正确的字体名称。

针对 Ubuntu 的解决步骤

1. 安装中文字体(文泉驿)

在终端执行以下命令,安装开源且兼容性好的文泉驿字体:

sudo apt update
sudo apt install -y fonts-wqy-microhei fonts-wqy-zenhei

2. 刷新字体缓存

安装后让系统识别新字体:

sudo fc-cache -fv

可以用下面的命令确认是否列出了中文字体:

fc-list :lang=zh

3. 修改 SLD 中的字体名称(关键)

你原来的 SLD 里写的是 SimSun,但 Ubuntu 上通常没有这个字体。请将 SLD 中 <CssParameter name="font-family"> 的值改为刚刚安装的字体名,例如:

<CssParameter name="font-family">WenQuanYi Micro Hei</CssParameter>

4. 重启 GeoServer

让 Java 重新加载字体列表。如果你是用 Tomcat 部署的,重启 Tomcat 即可。

小结

核心思路是:先让操作系统具备中文字体,再让 SLD 中的 font-family 与系统实际字体名保持一致,最后重启服务使 Java 重新加载字体。三步缺一不可,其中字体名称的匹配往往是最容易被忽略的关键点。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐