2016-04-15 5 views
2

Dies ist ein Follow-up zu dieser Frage How to export fonts in Gujarati-Indian Language to pdf?, @amedee-van-gasse, QA Engineer bei iText asked me, um eine Frage spezifisch für ITEXT mit relevanten MCVE.Warum wird der Gujarati-Indian-Text nicht korrekt mit Arial Unicode MS gerendert?

Warum wird diese Unicode-Sequenz \u0ab9\u0abf\u0aaa\u0acd\u0ab8 nicht korrekt gerendert?

Es sollte wie folgt wiedergegeben werden: mit unicode-converter

jedoch dieser Code (Beispiel angepasster Form iText: Chapter 11: Choosing the right font)

હિપ્સ, auch getestet

public class FontTest { 

    /** The resulting PDF file. */ 
    public static final String RESULT = "fontTest.pdf"; 
    /** the text to render. */ 
    public static final String TEST = "\u0ab9\u0abf\u0aaa\u0acd\u0ab8"; 

    public void createPdf(String filename) throws IOException, DocumentException { 
     Document document = new Document(); 
     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); 
     document.open(); 
     BaseFont bf = BaseFont.createFont(
      "ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
     Font font = new Font(bf, 20); 
     ColumnText column = new ColumnText(writer.getDirectContent()); 
     column.setSimpleColumn(36, 730, 569, 36); 
     column.addElement(new Paragraph(TEST, font)); 
     column.go(); 
     document.close(); 
     System.out.println("DONE"); 
    } 

    public static void main(String[] args) throws IOException, DocumentException { 
     new FontTest().createPdf(RESULT); 
    } 
} 

Generiert dieses Ergebnis:

Das sieht anders aus von

હિપ્સ

Ich habe Test mit itextpdf-5.5.4.jar, itextpdf-5.5.9.jar und auch itext-2.1.7.js3.jar (verteilt mit Jaspis-Berichte)

Die Schriftart es verwendete ein verteilt mit MS Office ARIALUNI.TTF und es kann von hier Arial Unicode MSherunterladen werden* Vielleicht gibt es einige rechtliche Probleme Download siehe Mike 'Pomax' Kamermans Kommentar

+1

Beachten Sie, dass Ihr Download-Link ist ... nicht zu 100% legal. Arial Unicode wird kostenlos mit Microsoft Office geliefert, aber das macht die Schriftart nicht frei. Wenn man sich http://www.fonts.com/font/monotype/artical-unicode anschaut, ist es ziemlich klar, dass dies eine * sehr teure Schrift * ist (370 US $ für die beiden Familien, wenn man nicht Office gekauft hat). . –

+1

Eine andere Frage ist, wer ist das Problem hier - auf was Text Shaper iText verlassen, und haben Sie versucht zu sehen, was * es * tut, wenn mit der Unicode-Sequenz und Font-Ressource präsentiert? Dies könnte iText sein, aber es könnte auch der Java Shaper sein, auf den iText angewiesen ist. –

+1

Nur zur Information: Guajarati erfordert eine Neuanordnung der Glyphen * bevor * die eigenen OpenType-Funktionen der Schriftart angewendet werden.In dieser Schriftartdatei ist kein Code zum Neuordnen vorhanden. Es ist der Renderer-Software überlassen, die Zeichenfolge zuerst vorzuverarbeiten. Siehe auch [Hinweise von Microsoft zu Gujarati] (https://www.microsoft.com/typography/OpenTypeDev/gujarati/intro.htm#reor). – usr2564301

Antwort

7

Weder iText5 noch iText2 (die eine sehr veraltete Version übrigens ist) unterstützen Rendern von indischen Skripten, egal welche Schriftart Sie auswählen.

Rendern von indizierten Skripten ist nicht mit lateinischen Skripten vergleichbar, da eine lange Reihe zusätzlicher Aktionen durchgeführt werden sollte, um das richtige Ergebnis zu erzielen, z. Einige Zeichen müssen zuerst nach den Sprachregeln neu geordnet werden.

Dies ist ein bekanntes Problem für iText Unternehmen.

Es gibt eine Stub-Implementierung für Gujaranti in iText5 namens GujaratiLigaturizer, aber die Implementierung ist wirklich schlecht und Sie können nicht erwarten, damit korrekte Ergebnisse zu erhalten.

Sie können versuchen, die Zeichenfolge mit diesem ligaturizer zu verarbeiten und dann gibt das resultierende Zeichenfolge in folgenden Weise:

IndicLigaturizer g = new GujaratiLigaturizer(); 
String processed = g.process(inputString); 
// proceed with the processed string 
+0

Danke für Ihre Antwort, ich werde es testen, wissen Sie von einer besseren Implementierungen, FYI die ältere Version (itext2), weil dies mit der neuesten Jaspis-Bericht Verteilung verteilt ist (ich denke, sie hatten ein Problem mit PDF/A oder rechtlichen Problem) . –

Verwandte Themen