mapscript:使用波斯文本将Label添加到Layer

时间:2014-06-17 11:49:45

标签: c# encoding persian mapserver

我在使用波斯语文本作为标签时遇到了一些问题。我正在使用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);      

    }

但标签显示为' ?????'。 我怎样才能解决这个问题?在设置文本值之前是否需要进行任何转换?

感谢任何帮助

1 个答案:

答案 0 :(得分:-1)

尝试使用其他字体文件:label.font = "sc"; 当'{''找不到.ttf文件中的字母时,就会出现'□'。(可能是它没有映射到ttf或映射到不同的Unicode字符)。您可以进入.ttf文件并更改字体几何图形,也可以安装不同的字体文件以获得正确的字体文件。