多言語画像用のBatikでプロジェクトを書いています。したがって、「シグマ」や「アルファ」などの記号が必要です。ポリゴンやグリフではなく、テキストとして文字を作成する必要があります。これは、プロジェクトで再度作成する必要があるためです。
SVGDocumentにUnicode文字を書き込むと、デバッガーに正しく表示されますが、SVGに書き込むと、結果として常に、または?
通常の文字(など)が表示されます。A
?A
私の作家からの問題だと思いますが、それを修正する方法がわかりません。&#XXX
またはでユニコードを使用するようなSVGの解決策があることは知っていますがσ
、ノードにその文字列を指定することはできず、正しい形式で記述されます。
これは短く、うまくいけば理解できるコード例です:
enter code here
import java.io.File;
import java.io.FileWriter;
import java.net.URI;
import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
import org.apache.batik.dom.util.DOMUtilities;
import org.apache.batik.util.XMLResourceDescriptor;
import org.w3c.dom.Document;
import org.w3c.dom.Text;
public static void main(String args[]) throws Exception
{
/* Read Document
*/
URI source = new URI("file:D:/foo.svg");
//If there is no Parser:'parser' = null
String parser = XMLResourceDescriptor.getXMLParserClassName();
//for right interpretation
SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
String sourceUri = source.toString();
/* add Textnode
*/
Document doc = f.createSVGDocument(sourceUri);
String textWithUni = "\u0041";
Text textNode = doc.createTextNode(textWithUni);
doc.appendChild(textNode);
/*write
*/
File output = new File("newFoo.svg");
FileWriter fw = new FileWriter(output);
DOMUtilities.writeDocument(doc, fw);
fw.flush();
fw.close();
}