我在使用波斯语文本作为标签时遇到了一些问题。我正在使用C#mapscript。我在运行时设置以下内容:(如按钮点击)
private void addLayer(String layerName)
{
if (layer == null)
{
//create a layer
layer = new layerObj(mapInstance);
layer.type = MS_LAYER_TYPE.MS_LAYER_POINT;
layer.status = mapscript.MS_ON;
layer.connectiontype = MS_CONNECTION_TYPE.MS_INLINE;
}
// Create a classObj
OSGeo.MapServer.classObj classobj = new OSGeo.MapServer.classObj(layer);
//create Label
labelObj label = new labelObj();
label.font = "sc";
label.type = MS_FONT_TYPE.MS_TRUETYPE;
label.encoding = "utf-8";
classobj.addLabel(label);
//add user data
//create feature
shapeObj feature = new shapeObj(mapscript.MS_SHAPEFILE_POINT);
lineObj line = new lineObj();
pointObj point = new pointObj(50,50, 0, 0);
line.add(point);
feature.add(line);
feature.text = "این متن فارسی است :گژپچ";
layer.addFeature(feature);
}
但标签显示为' ?????'。 我怎样才能解决这个问题?在设置文本值之前是否需要进行任何转换?
感谢任何帮助
答案 0 :(得分:-1)
尝试使用其他字体文件:label.font = "sc";
当'{''找不到.ttf
文件中的字母时,就会出现'□'。(可能是它没有映射到ttf或映射到不同的Unicode字符)。您可以进入.ttf
文件并更改字体几何图形,也可以安装不同的字体文件以获得正确的字体文件。