[ https://issues.apache.org/jira/browse/PDFBOX-922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14015718#comment-14015718 ]
Antti Lankila commented on PDFBOX-922: -------------------------------------- Well it makes the difference that when you construct a COSString, the default approach is to either render it as unicode or ascii. So UTF-16BE seems like the path of least resistance, not to mention that I like it for the reason that it's a defined standard and should follow the principle of least astonishment. As I mention above, I'm not very happy about COSString. I think it should be based on some character abstraction, rather than byte stream. > 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: Writing > Affects Versions: 1.3.1 > Environment: JDK 1.6 / OS irrelevant, tried against 1.3.1 and 1.2.0 > Reporter: Thanos Agelatos > Assignee: Andreas Lehmkühler > > 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 was sent by Atlassian JIRA (v6.2#6252)