Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-1844

[PATCH] Parser for Type 1 Fonts

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      This patch adds a parser for Type 1 fonts to FontBox and makes use of it in PDFBox for rendering Type 1 glyphs. This should fix various issues with the JVM crashing and rendering fonts incorrectly.

      It was necessary to modify Type1CharStringParser to handle the `callothersubr` command and correctly handle subroutines. Likewise, Type1CharString was modified to support "flex".

      This patch does not remove the AWT fallback for non-embedded and standard 14 fonts because an entirely new fallback system is needed and suitable fonts will need to be shipped as part of PDFBox. This needs to be discussed on the mailing list and/or in follow-on issue.

      Note: To keep this patch small I have not replaced any of the existing ad-hoc Type 1 parsing code in PDType1Font and preflight. Those classes retain their original code which can be replaced in subsequent patches/refactoring. I can open follow-on issues for these.

      ~~~

      As well as the patch, the these files were added:
      + /pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/font/Type1Glyph2D.java
      + /fontbox/src/main/java/org/apache/fontbox/encoding/CustomEncoding.java
      + /fontbox/src/main/java/org/apache/fontbox/type1/Token.java
      + /fontbox/src/main/java/org/apache/fontbox/type1/Type1CharStringReader.java
      + /fontbox/src/main/java/org/apache/fontbox/type1/Type1Font.java
      + /fontbox/src/main/java/org/apache/fontbox/type1/Type1Lexer.java
      + /fontbox/src/main/java/org/apache/fontbox/type1/Type1Mapping.java
      + /fontbox/src/main/java/org/apache/fontbox/type1/Type1Parser.java

      And this file was removed:

      • /pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/font/CFFGlyph2D.java

      Attachments

        1. Token.java
          3 kB
          John Hewson
        2. Type1CharStringReader.java
          1 kB
          John Hewson
        3. Type1Font.java
          10 kB
          John Hewson
        4. Type1Mapping.java
          2 kB
          John Hewson
        5. CustomEncoding.java
          1 kB
          John Hewson
        6. Type1Glyph2D.java
          4 kB
          John Hewson
        7. latexdemo.pdf
          25 kB
          John Hewson
        8. test.pdf
          11 kB
          John Hewson
        9. redp4581.pdf
          540 kB
          Tilman Hausherr
        10. Type1Lexer.java
          11 kB
          John Hewson
        11. Type1Parser.java
          22 kB
          John Hewson
        12. type1-v5.patch
          50 kB
          John Hewson

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            lehmi Andreas Lehmkühler
            jahewson John Hewson
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment