Per prima cosa è necessario trasformare il file del font da TTF a SVG con batik's ttf2svg, una volta ottenuto il file convertito, è necessario aggiungere un riferimento nella sezione "defs" del documento SVG. questo è come ho fatto:
Element defs = doc.createElementNS(svgNS, "defs");
Element fontface = doc.createElementNS(svgNS, "font-face");
fontface.setAttributeNS(null, "font-family", "DroidSansRegular");
Element fontfacesrc = doc.createElementNS(svgNS, "font-face-src");
Element fontfaceuri = doc.createElementNS(svgNS, "font-face-uri");
fontfaceuri.setAttributeNS(svgNS, "xlink:href", "fonts/DroidSans-webfont.svg#DroidSansRegular");
Element fontfaceformat = doc.createElementNS(svgNS, "font-face-format");
fontfaceformat.setAttributeNS(svgNS, "string", "svg");
fontfaceuri.appendChild(fontfaceformat);
fontfacesrc.appendChild(fontfaceuri);
fontface.appendChild(fontfacesrc);
defs.appendChild(fontface);
svgRoot.appendChild(defs);
quando si crea l'elemento di testo impostare la famiglia di caratteri proprio come qualsiasi altro tipo di carattere
Element txtElem = doc.createElementNS(svgNS, "text");
txtElem.setAttributeNS(svgNS, "style", "font-family:DroidSansRegular;font-size:" + fontsize + ";stroke:#000000;#fill:#00ff00;");
txtElem.setTextContent("some text");
svgRoot.appendChild(txtElem);
ho ottenuto le informazioni da questo articolo: http://frabru.de/c.php/article/SVGFonts-usage Speranza che aiuta.
fonte
2012-08-28 21:43:28
Non c'è bisogno di convertire il tipo di carattere per SVG. Batik può operare esplicitamente con i font TrueType. Basta aggiungere una dichiarazione CSS simile a questa: @ font-face {font-family: 'Your Font Family'; src: url ('fonts/yourfontfile.ttf') format ('truetype'); } –
@ Jiří Vypědřík: Potresti approfondire come usare css per aggiungere un font personalizzato a SVG in Batik? Non riesco a trovare un esempio su google. (in realtà l'aggiunta di qualsiasi css a Batik è quasi inesistente) –
Se ho tutti i caratteri * .ttf in una singola cartella, posso registrarli globalmente in modo che siano disponibili sia per PNGTranscoder che PDFTranscoder? Ho giocato per giorni e non sono ancora riuscito a far funzionare nulla se non aggiungendo un 'font-face-uri' a un file locale nel SVG stesso. Finora, http://wiki.apache.org/xmlgraphics-fop/SvgNotes/PdfTranscoderTrueTypeEmbedding non ha funzionato con me quando si utilizzava '' anche se la stessa configurazione con solo la FOP funzionava. –