2014-06-17 10 views
0

페르시아어 텍스트를 라벨로 사용하는 데 문제가 있습니다. 나는 C# mapscript를 사용하고있다. 런타임시 다음을 설정합니다. (버튼 클릭과 같이)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);  

    } 

레이블은 '?????'로 표시됩니다. 어떻게 해결할 수 있습니까? 텍스트 값을 설정하기 전에해야 할 변환이 있습니까? label.font = "sc"; :

는 다른 글꼴 파일을 사용하여 도움을

+0

텍스트 값을 설정하기 전에 데이터를 유니 코드에서 uft-8로 변환하려고했습니다. 일부 문자는 여전히 정확하게 표시되지 않거나 '□'가 표시됩니다. 다음 코드를 사용했습니다. byte [] bytes = Encoding.Convert (Encoding.Unicode, Encoding.GetEncoding ("utf-8"), Encoding.Unicode.GetBytes ("일부 사용자는 다음 코드를 사용했습니다. StringBuilder s = 새 StringBuilder(); (int i = 0; i

답변

-1

시도를 주셔서 감사합니다.
.ttf 파일에서 문자를 찾을 수없는 경우 '□'가 나타납니다 (ttf에 매핑되지 않았거나 다른 유니 코드 문자로 매핑되었을 수 있음). .ttf 파일로 이동하여 글꼴 지오메트리를 변경하거나 다른 글꼴 파일을 설치하여 올바른 글꼴을 얻을 수 있습니다.

+0

다른 글꼴 파일을 시도했지만 여전히 같은 오류가 발생합니다. –