使用字体前请注意版权保护
1. 需求
要求可以使用字体符号显示点,类似于arcmap中的字符标记符号。
2. 实现方式
语法:
ttf://<fontname>#<hexcode>
其中ttf://
不变,<fontname>
是字体名称,#
也不变,<hexcode>
是十六进制编码。
比如,汉字“危”的十六进制编码为0x5371,如果使用宋体显示的话,代码就是ttf://宋体#0x5371
。
前提是geoserver已安装该字体。查看geoserver字体如下图:
完整sld:
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NamedLayer>
<Name>test_font</Name>
<UserStyle>
<Title>azure square point style</Title>
<FeatureTypeStyle>
<Rule>
<Title>azure point</Title>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>ttf://宋体#0x5371</WellKnownName>
<Fill>
<CssParameter name="fill">#cc0000</CssParameter>
</Fill>
</Mark>
<Size>26</Size>
</Graphic>
</PointSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
效果如下:
如果报错not found,应该是没有安装字体,或者该字体没有这个编码。
如果字体已安装,且字体肯定有编码,请检查sld的encoding。
3. 其他效果
如果安装的字体库比较丰富,那么就可以实现各种各样的效果。甚至还可以自己设计符号。
以下是安装了esri字体后的效果。
4.参考
① geoserver官网用户手册
② GeoServer 自定义字体 符号化渲染点
③ ArcMap中设置字体符号 指定某字