True type PDFont subclass only supports WinAnsiEncoding (hardcoded!)
--------------------------------------------------------------------

                 Key: PDFBOX-922
                 URL: https://issues.apache.org/jira/browse/PDFBOX-922
             Project: PDFBox
          Issue Type: New Feature
          Components: FontBox, PDModel, Writing
    Affects Versions: 1.3.1
         Environment: JDK 1.6 / OS irrelevant, tried against 1.3.1 and 1.2.0
            Reporter: Thanos Agelatos


PDFBox cannot embed Identity-H or Identity-V type TTF fonts in the PDF it 
creates, making it impossible to create PDFs in any language apart from English 
and ones supported in WinAnsiEncoding. This behaviour is caused because method 
PDTrueTypeFont.loadTTF has hardcoded WinAnsiEncoding inside, and there is no 
Identity-H or Identity-V Encoding classes provided (to set afterwards via 
PDFont.setFont() )

This excludes the following languages plus many others:

- Greek
- Bulgarian
- Swedish
- Baltic languages
- Malteze 

The PDF created contains garbled characters and/or squares.

Simple test case:


                PDDocument doc = null;
                try {
                        doc = new PDDocument();
                        PDPage page = new PDPage();
                        doc.addPage(page);
                        // extract fonts for fields
                        byte[] arialNorm = extractFont("arial.ttf");
                        //byte[] arialBold = extractFont("arialbd.ttf"); 
                        //PDFont font = PDType1Font.HELVETICA;
                        PDFont font = PDTrueTypeFont.loadTTF(doc, new 
ByteArrayInputStream(arialNorm));
                        
                        PDPageContentStream contentStream = new 
PDPageContentStream(doc, page);
                        contentStream.beginText();
                        contentStream.setFont(font, 12);
                        contentStream.moveTextPositionByAmount(100, 700);
                        contentStream.drawString("Hello world from PDFBox 
ελληνικά"); // text here may appear garbled; insert any text in Greek or 
Bulgarian or Malteze
                        contentStream.endText();
                        contentStream.close();
                        doc.save("pdfbox.pdf");
                        System.out.println(" created!");
                } catch (Exception ioe) {
                        ioe.printStackTrace();
                } finally {
                        if (doc != null) {
                                try { doc.close(); } catch (Exception e) {}
                        }
                }


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to