Skip to content

Fonts with form fields cannot be subset even after after flatten #70

Description

@jekh

For PDFs with form fields, _usedInForm on embedded fonts is set to true, which permanently blocks subsetting, causing flattened PDFs to embed full fonts. Since flattened PDFs don't have form fields anymore, I believe their embedded fonts should be subsettable.

I'm using this hacky work-around:

form.flatten()

for (const font of Object.values(embeddedFonts)) {
      if (font && (font as unknown as { _usedInForm: boolean })._usedInForm) {
        ;(font as unknown as { _usedInForm: boolean })._usedInForm = false
      }
    }

But I'm guessing the cleaner solution is to clear the _usedInForm field in flatten() itself.

I'm happy to put together a PR if this is the right approach.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions