Matterhorn Protocol
A comprehensive framework for PDF/UA validation and accessibility compliance. The Matterhorn Protocol helps identify and resolve accessibility issues in PDF documents.
About the Protocol
The Matterhorn Protocol is a document that provides a set of failure conditions that can be used to determine if a PDF document conforms to PDF/UA (PDF/Universal Accessibility). It was developed by the PDF Association and is used by PDF validation tools to check for accessibility compliance.
Each check in the protocol identifies a specific failure condition that would make a PDF document non-compliant with PDF/UA standards, along with information on how to detect and fix these issues.
Checkpoint 01: Real content tagged
Validation checks related to Checkpoint 01: Real content tagged. Each card below describes a potential failure condition and how it can be detected.
Artifact is tagged as real content.
Artifact is tagged as real content.
How to Detect
Human
Tags affected by this check
Real content is marked as artifact.
Real content is marked as artifact.
How to Detect
Human
Tags affected by this check
Content marked as Artifact is present inside tagged content.
Content marked as Artifact is present inside tagged content.
How to Detect
Machine
Tags affected by this check
Tagged content is present inside content marked as Artifact.
Tagged content is present inside content marked as Artifact.
How to Detect
Machine
Tags affected by this check
Content is neither marked as Artifact nor tagged as real content.
Content is neither marked as Artifact nor tagged as real content.
How to Detect
Machine
The structure type and attributes of a structure element are not semantically appropriate for the structure element. All of the following structure types must be taken into account: Document, Part, Art, Sect, Div, BlockQuote, Caption, TOC, TOCI, Index, NonStruct, Private, P, H, H1, H2, H3, H4, H5, H6, L, LI, Lbl, LBody, Table, TR, TH, TD, THead, TBody, TFoot, Span, Quote, Note, Reference, BibEntry, Code, Link, Annot, Ruby, Warichu, RB, RT, RP, WT, WP, Figure, Formula, Form.
NOTE 1: Structure type is not semantically appropriate if the nature of the content inside the structure element does not match the structure type of the structure element.
NOTE 2: For any non-standard structure types, the standard structure type to which the type is role-mapped shall be used for validation.
NOTE 3: Tables are regular when the number of logical cells is equal in each row after accounting for rowspan and colspan attributes. While PDF/UA-1 does not prohibit irregular tables, irregular tables are almost always a strong indicator of improper table structure. It may be a good idea to raise a warning when such tables are encountered, but it is not required by the Matterhorn Protocol.
NOTE 4: The value of table cell attributes is a function of the cell’s semantic role in the table’s structure. Therefore, a TH cell may not include a Scope attribute with an inappropriate value.
The structure type and attributes of a structure element are not semantically appropriate for the structure element. All of the following structure types must be taken into account: Document, Part, Art, Sect, Div, BlockQuote, Caption, TOC, TOCI, Index, NonStruct, Private, P, H, H1, H2, H3, H4, H5, H6, L, LI, Lbl, LBody, Table, TR, TH, TD, THead, TBody, TFoot, Span, Quote, Note, Reference, BibEntry, Code, Link, Annot, Ruby, Warichu, RB, RT, RP, WT, WP, Figure, Formula, Form.
NOTE 1: Structure type is not semantically appropriate if the nature of the content inside the structure element does not match the structure type of the structure element.
NOTE 2: For any non-standard structure types, the standard structure type to which the type is role-mapped shall be used for validation.
NOTE 3: Tables are regular when the number of logical cells is equal in each row after accounting for rowspan and colspan attributes. While PDF/UA-1 does not prohibit irregular tables, irregular tables are almost always a strong indicator of improper table structure. It may be a good idea to raise a warning when such tables are encountered, but it is not required by the Matterhorn Protocol.
NOTE 4: The value of table cell attributes is a function of the cell’s semantic role in the table’s structure. Therefore, a TH cell may not include a Scope attribute with an inappropriate value.
How to Detect
Human
Checkpoint 02: Role Mapping
Validation checks related to Checkpoint 02: Role Mapping. Each card below describes a potential failure condition and how it can be detected.
One or more non-standard tag’s mapping does not terminate with a standard type.
NOTE: Although PDF/UA defines the nomenclature for heading levels above H6 (Hn), these are not standard structure types (as defined in ISO 32000-1) and therefore Hn tags must (PDF/UA-1 7.1, paragraph 1) be rolemapped to a standard structure type. According to PDF/UA-1, PDF/UA-conforming processors are expected to ignore such mappings and respect the heading level.
One or more non-standard tag’s mapping does not terminate with a standard type.
NOTE: Although PDF/UA defines the nomenclature for heading levels above H6 (Hn), these are not standard structure types (as defined in ISO 32000-1) and therefore Hn tags must (PDF/UA-1 7.1, paragraph 1) be rolemapped to a standard structure type. According to PDF/UA-1, PDF/UA-conforming processors are expected to ignore such mappings and respect the heading level.
The mapping of one or more non-standard types is semantically inappropriate.
The mapping of one or more non-standard types is semantically inappropriate.
A circular mapping exists.
A circular mapping exists.
How to Detect
Machine
One or more standard types are remapped.
One or more standard types are remapped.
How to Detect
Machine
Checkpoint 03: Flickering
Validation checks related to Checkpoint 03: Flickering. Each card below describes a potential failure condition and how it can be detected.
One or more Actions lead to flickering.
One or more Actions lead to flickering.
How to Detect
Human
One or more multimedia objects contain flickering content.
One or more multimedia objects contain flickering content.
How to Detect
Human
One or more JavaScript actions lead to flickering.
One or more JavaScript actions lead to flickering.
How to Detect
Human
Checkpoint 04: Color and Contrast
Validation checks related to Checkpoint 04: Color and Contrast. Each card below describes a potential failure condition and how it can be detected.
Information is conveyed by contrast, color, format or layout, or some combination thereof but the content is not tagged to reflect all meaning conveyed by the use of contrast, color, format or layout, or some combination thereof.
Information is conveyed by contrast, color, format or layout, or some combination thereof but the content is not tagged to reflect all meaning conveyed by the use of contrast, color, format or layout, or some combination thereof.
How to Detect
Human
Checkpoint 05: Sound
Validation checks related to Checkpoint 05: Sound. Each card below describes a potential failure condition and how it can be detected.
Media annotation present, but audio content not available in another form.
NOTE: An example of another form is a transcript.
Media annotation present, but audio content not available in another form.
NOTE: An example of another form is a transcript.
How to Detect
Human
Tags affected by this check
Audio annotation present, but content not available in another form.
NOTE: An example of another form is a transcript.
Audio annotation present, but content not available in another form.
NOTE: An example of another form is a transcript.
How to Detect
Human
Tags affected by this check
JavaScript uses beep function but does not provide another means of notification.
JavaScript uses beep function but does not provide another means of notification.
How to Detect
Human
Checkpoint 06: Metadata
Validation checks related to Checkpoint 06: Metadata. Each card below describes a potential failure condition and how it can be detected.
Document does not contain XMP metadata stream
Document does not contain XMP metadata stream
How to Detect
Machine
The metadata stream in the Catalog dictionary does not include the PDF/UA identifier.
The metadata stream in the Catalog dictionary does not include the PDF/UA identifier.
How to Detect
Machine
Metadata stream does not contain dc:title
Metadata stream does not contain dc:title
How to Detect
Machine
dc:title does not clearly identify the document
dc:title does not clearly identify the document
How to Detect
Human
Checkpoint 07: Dictionary
Validation checks related to Checkpoint 07: Dictionary. Each card below describes a potential failure condition and how it can be detected.
ViewerPreferences dictionary of the Catalog dictionary does not contain DisplayDocTitle key.
ViewerPreferences dictionary of the Catalog dictionary does not contain DisplayDocTitle key.
How to Detect
Machine
ViewerPreferences dictionary of the Catalog dictionary contains DisplayDocTitle key with a value of false.
ViewerPreferences dictionary of the Catalog dictionary contains DisplayDocTitle key with a value of false.
How to Detect
Machine
Checkpoint 08: OCR Validation
Validation checks related to Checkpoint 08: OCR Validation. Each card below describes a potential failure condition and how it can be detected.
OCR-generated text contains significant errors.
OCR-generated text contains significant errors.
How to Detect
Human
OCR-generated text is not tagged
OCR-generated text is not tagged
How to Detect
Human
See Also
01-006
Suspect entry has a value of true.
Suspect entry has a value of true.
How to Detect
Machine
Checkpoint 09: Appropriate Tags
Validation checks related to Checkpoint 09: Appropriate Tags. Each card below describes a potential failure condition and how it can be detected.
Tags are not in logical reading order.
Tags are not in logical reading order.
Structure elements are nested in a semantically inappropriate manner. (e.g. a table inside a heading).
Structure elements are nested in a semantically inappropriate manner. (e.g. a table inside a heading).
The structure type (after applying any role-mapping as necessary) of a structure element is not semantically appropriate.
The structure type (after applying any role-mapping as necessary) of a structure element is not semantically appropriate.
A table-related structure element is used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337.
A table-related structure element is used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337.
A list-related structure element is used in a way that does not conform to Table 336 in ISO 32000-1.
A list-related structure element is used in a way that does not conform to Table 336 in ISO 32000-1.
A TOC-related structure element is used in a way that does not conform to Table 333 in ISO 32000-1.
A TOC-related structure element is used in a way that does not conform to Table 333 in ISO 32000-1.
A Ruby-related structure element is used in a way that does not conform to Table 338 in ISO 32000-1.
A Ruby-related structure element is used in a way that does not conform to Table 338 in ISO 32000-1.
Checkpoint 10: Character Mappings
Validation checks related to Checkpoint 10: Character Mappings. Each card below describes a potential failure condition and how it can be detected.
Character code cannot be mapped to Unicode.
Character code cannot be mapped to Unicode.
How to Detect
Machine
Checkpoint 11: Declared Natural Language
Validation checks related to Checkpoint 11: Declared Natural Language. Each card below describes a potential failure condition and how it can be detected.
Natural language for text in page content cannot be determined.
Natural language for text in page content cannot be determined.
How to Detect
Machine
Natural language for text in “Alt”, “ActualText” and “E” attributes cannot be determined.
Natural language for text in “Alt”, “ActualText” and “E” attributes cannot be determined.
How to Detect
Machine
Natural language in the Outline entries cannot be determined.
Natural language in the Outline entries cannot be determined.
How to Detect
Machine
Natural language in the “Contents” entry for annotations cannot be determined.
Natural language in the “Contents” entry for annotations cannot be determined.
How to Detect
Machine
Natural language in the TU key for form fields cannot be determined.
Natural language in the TU key for form fields cannot be determined.
How to Detect
Machine
Natural language for document metadata cannot be determined.
Natural language for document metadata cannot be determined.
How to Detect
Machine
Natural language is not appropriate.
Natural language is not appropriate.
How to Detect
Human
Checkpoint 12: Stretchable Characters
Validation checks related to Checkpoint 12: Stretchable Characters. Each card below describes a potential failure condition and how it can be detected.
Stretched characters are not represented appropriately.
Stretched characters are not represented appropriately.
How to Detect
Human
Checkpoint 13: Graphics
Validation checks related to Checkpoint 13: Graphics. Each card below describes a potential failure condition and how it can be detected.
Graphics objects other than text objects and artifacts are not tagged with a Figure tag.
Graphics objects other than text objects and artifacts are not tagged with a Figure tag.
How to Detect
Human
Tags affected by this check
A link with a meaningful background does not include alternative text describing both the link and the graphic’s purpose.
A link with a meaningful background does not include alternative text describing both the link and the graphic’s purpose.
How to Detect
Human
Tags affected by this check
A caption is not tagged with a Caption tag.
A caption is not tagged with a Caption tag.
How to Detect
Human
Tags affected by this check
Figure tag alternative or replacement text missing.
Figure tag alternative or replacement text missing.
How to Detect
Machine
Tags affected by this check
Actual text used for a Figure for which Alternative text is more appropriate.
Actual text used for a Figure for which Alternative text is more appropriate.
How to Detect
Human
Tags affected by this check
Graphics objects that possess semantic value only within a group of graphics objects is tagged on its own.
Graphics objects that possess semantic value only within a group of graphics objects is tagged on its own.
How to Detect
Human
Tags affected by this check
A more accessible representation is not used.
A more accessible representation is not used.
How to Detect
Human
Tags affected by this check
Checkpoint 14: Headings
Validation checks related to Checkpoint 14: Headings. Each card below describes a potential failure condition and how it can be detected.
Headings are not tagged.
Headings are not tagged.
Does use numbered headings, but the first heading tag is not H1.
Does use numbered headings, but the first heading tag is not H1.
Numbered heading levels in descending sequence are skipped (Example: H3 follows directly after H1).
Numbered heading levels in descending sequence are skipped (Example: H3 follows directly after H1).
Numbered heading tags do not use Arabic numerals.
Numbered heading tags do not use Arabic numerals.
Content representing a 7th level (or higher) heading does not use an “H7” (or higher) tag.
Content representing a 7th level (or higher) heading does not use an “H7” (or higher) tag.
A node contains more than one H tag.
A node contains more than one H tag.
How to Detect
Machine
Tags affected by this check
Checkpoint 15: Tables
Validation checks related to Checkpoint 15: Tables. Each card below describes a potential failure condition and how it can be detected.
A row has a header cell, but that header cell is not tagged as a header.
A row has a header cell, but that header cell is not tagged as a header.
How to Detect
Human
Tags affected by this check
A column has a header cell, but that header cell is not tagged as a header.
A column has a header cell, but that header cell is not tagged as a header.
How to Detect
Human
Tags affected by this check
In a table not organized with Headers attributes and IDs, a TH cell does not contain a Scope attribute.
In a table not organized with Headers attributes and IDs, a TH cell does not contain a Scope attribute.
How to Detect
Machine
Tags affected by this check
Content is tagged as a table for information that is not organized in rows and columns.
Content is tagged as a table for information that is not organized in rows and columns.
How to Detect
Human
Tags affected by this check
A given cell’s header cannot be unambiguously determined.
A given cell’s header cannot be unambiguously determined.
Checkpoint 16: Lists
Validation checks related to Checkpoint 16: Lists. Each card below describes a potential failure condition and how it can be detected.
List is an ordered list, but no value for the ListNumbering attribute is present.
List is an ordered list, but no value for the ListNumbering attribute is present.
How to Detect
Human
Tags affected by this check
List is an ordered list, but the ListNumbering value is not one of the following: Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha.
List is an ordered list, but the ListNumbering value is not one of the following: Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha.
How to Detect
Human
Tags affected by this check
Content is a list but is not tagged as a list.
Content is a list but is not tagged as a list.
Checkpoint 17: Mathematical Expressions
Validation checks related to Checkpoint 17: Mathematical Expressions. Each card below describes a potential failure condition and how it can be detected.
Content is a mathematical expression but is not tagged with a Formula tag.
Content is a mathematical expression but is not tagged with a Formula tag.
Formula tag is missing an Alt attribute.
Formula tag is missing an Alt attribute.
How to Detect
Machine
Tags affected by this check
Unicode mapping requirements are not met.
Unicode mapping requirements are not met.
Checkpoint 18: Page Headers and Footers
Validation checks related to Checkpoint 18: Page Headers and Footers. Each card below describes a potential failure condition and how it can be detected.
Headers and footers are not marked as pagination artifacts.
Headers and footers are not marked as pagination artifacts.
How to Detect
Human
Tags affected by this check
Header or footer artifacts are not classified as Header or Footer subtypes.
Header or footer artifacts are not classified as Header or Footer subtypes.
How to Detect
Human
Tags affected by this check
Checkpoint 19: Notes and References
Validation checks related to Checkpoint 19: Notes and References. Each card below describes a potential failure condition and how it can be detected.
Footnotes, endnotes, note labels are not tagged as Note.
Footnotes, endnotes, note labels are not tagged as Note.
How to Detect
Human
Tags affected by this check
References are not tagged as Reference.
References are not tagged as Reference.
How to Detect
Human
Tags affected by this check
ID key of the Note tag is not present.
ID key of the Note tag is not present.
How to Detect
Machine
Tags affected by this check
ID key of the Note tag is non-unique.
ID key of the Note tag is non-unique.
How to Detect
Machine
Tags affected by this check
Checkpoint 20: Optional Content
Validation checks related to Checkpoint 20: Optional Content. Each card below describes a potential failure condition and how it can be detected.
Name entry is missing or has an empty string as its value in an Optional Content Configuration Dictionary in the Configs entry in the OCProperties entry in the Catalog dictionary.
Name entry is missing or has an empty string as its value in an Optional Content Configuration Dictionary in the Configs entry in the OCProperties entry in the Catalog dictionary.
How to Detect
Machine
Name entry is missing or has an empty string as its value in an Optional Content Configuration Dictionary that is the value of the D entry in the OCProperties entry in the Catalog dictionary.
Name entry is missing or has an empty string as its value in an Optional Content Configuration Dictionary that is the value of the D entry in the OCProperties entry in the Catalog dictionary.
How to Detect
Machine
The AS key appears in an Optional Content Configuration Dictionary.
The AS key appears in an Optional Content Configuration Dictionary.
How to Detect
Machine
Checkpoint 21: Embedded Files
Validation checks related to Checkpoint 21: Embedded Files. Each card below describes a potential failure condition and how it can be detected.
The file specification dictionary for an embedded file does not contain F and UF keys.
The file specification dictionary for an embedded file does not contain F and UF keys.
How to Detect
Machine
Checkpoint 22: Article Threads
Validation checks related to Checkpoint 22: Article Threads. Each card below describes a potential failure condition and how it can be detected.
Article threads do not reflect logical reading order.
Article threads do not reflect logical reading order.
How to Detect
Human
Tags affected by this check
Checkpoint 23: Digital Signatures
Validation checks related to Checkpoint 23: Digital Signatures. Each card below describes a potential failure condition and how it can be detected.
No test specific to digital signatures is required, however other provisions apply (form fields).
No test specific to digital signatures is required, however other provisions apply (form fields).
How to Detect
--
See Also
01-006
Checkpoint 24: Non-Interactive Forms
Validation checks related to Checkpoint 24: Non-Interactive Forms. Each card below describes a potential failure condition and how it can be detected.
Non-interactive forms are not tagged with the PrintFields attribute.
Non-interactive forms are not tagged with the PrintFields attribute.
How to Detect
Human
Tags affected by this check
Checkpoint 25: XFA
Validation checks related to Checkpoint 25: XFA. Each card below describes a potential failure condition and how it can be detected.
File contains the dynamicRender element with value “required”.
File contains the dynamicRender element with value “required”.
How to Detect
Machine
Checkpoint 26: Navigation
Validation checks related to Checkpoint 26: Navigation. Each card below describes a potential failure condition and how it can be detected.
The file is encrypted but does not contain a P key in its encryption dictionary.
The file is encrypted but does not contain a P key in its encryption dictionary.
How to Detect
Machine
The file is encrypted and does contain a P key but the 10th bit position of the P key is false.
The file is encrypted and does contain a P key but the 10th bit position of the P key is false.
How to Detect
Machine
Checkpoint 27: Annotations
Validation checks related to Checkpoint 27: Annotations. Each card below describes a potential failure condition and how it can be detected.
No tests specific to navigation are required; use appropriate semantics.
No tests specific to navigation are required; use appropriate semantics.
How to Detect
--
See Also
01-006
Checkpoint 28: Security
Validation checks related to Checkpoint 28: Security. Each card below describes a potential failure condition and how it can be detected.
An annotation whose hidden flag is not set and whose rectangle is not outside the crop-box is not in correct reading order.
An annotation whose hidden flag is not set and whose rectangle is not outside the crop-box is not in correct reading order.
How to Detect
Human
Tags affected by this check
An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag.
An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag.
How to Detect
Machine
Tags affected by this check
An annotation whose hidden flag is not set and whose rectangle is not outside the crop-box is used for visual formatting but is not tagged according to its semantic function.
An annotation whose hidden flag is not set and whose rectangle is not outside the crop-box is used for visual formatting but is not tagged according to its semantic function.
How to Detect
Human
Tags affected by this check
An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set and whose rectangle is not outside the crop box and does not have a Contents key does not have an alternative description (in the form of an Alt entry in the enclosing structure element).
An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set and whose rectangle is not outside the crop box and does not have a Contents key does not have an alternative description (in the form of an Alt entry in the enclosing structure element).
How to Detect
Machine
Tags affected by this check
A form field whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a TU key does not have an alternative description (in the form of an Alt entry in the enclosing structure element).
A form field whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a TU key does not have an alternative description (in the form of an Alt entry in the enclosing structure element).
How to Detect
Machine
Tags affected by this check
An annotation with subtype undefined in ISO 32000 does not meet 7.18.1.
An annotation with subtype undefined in ISO 32000 does not meet 7.18.1.
An annotation of subtype TrapNet exists.
An annotation of subtype TrapNet exists.
How to Detect
Machine
A page containing an annotation does not contain a Tabs key.
A page containing an annotation does not contain a Tabs key.
How to Detect
Machine
A page containing an annotation has a Tabs key with a value other than S.
A page containing an annotation has a Tabs key with a value other than S.
How to Detect
Machine
A widget annotation is not nested within a Form tag.
A widget annotation is not nested within a Form tag.
How to Detect
Machine
Tags affected by this check
A link annotation is not nested within a Link tag.
A link annotation is not nested within a Link tag.
How to Detect
Machine
Tags affected by this check
A link annotation does not include an alternate description in the Contents Key.
A link annotation does not include an alternate description in the Contents Key.
How to Detect
Machine
Tags affected by this check
The IsMap key is present with a value of true but the functionality is not provided in some other way.
The IsMap key is present with a value of true but the functionality is not provided in some other way.
How to Detect
Human
Tags affected by this check
CT key is missing from the media clip data dictionary.
CT key is missing from the media clip data dictionary.
How to Detect
Machine
Alt key is missing from the media clip data dictionary.
Alt key is missing from the media clip data dictionary.
How to Detect
Machine
File attachment annotations do not conform to 7.11.
File attachment annotations do not conform to 7.11.
How to Detect
Machine
See Also
21-001
A PrinterMark annotation is included in logical structure.
A PrinterMark annotation is included in logical structure.
How to Detect
Machine
The appearance stream of a PrinterMark annotation is not marked as Artifact.
The appearance stream of a PrinterMark annotation is not marked as Artifact.
Checkpoint 29: Actions
Validation checks related to Checkpoint 29: Actions. Each card below describes a potential failure condition and how it can be detected.
A script requires specific timing for individual keystrokes.
A script requires specific timing for individual keystrokes.
How to Detect
Human
See Also
- Checkpoint 30: XObjects Index Failure Condition Section Type How See
Checkpoint 30: XObjects
Validation checks related to Checkpoint 30: XObjects. Each card below describes a potential failure condition and how it can be detected.
A reference XObject is present.
A reference XObject is present.
How to Detect
Machine
Form XObject contains MCIDs and is referenced more than once.
Form XObject contains MCIDs and is referenced more than once.
How to Detect
Machine
See Also
- Checkpoint 31: Fonts Index Failure Condition Section Type How See
Checkpoint 31: Fonts
Validation checks related to Checkpoint 31: Fonts. Each card below describes a potential failure condition and how it can be detected.
A Type 0 font dictionary with encoding other than Identity-H and Identity-V has values for Registry in both CIDSystemInfo dictionaries that are not identical.
A Type 0 font dictionary with encoding other than Identity-H and Identity-V has values for Registry in both CIDSystemInfo dictionaries that are not identical.
How to Detect
Machine
A Type 0 font dictionary with encoding other than Identity-H and Identity-V has values for Ordering in both CIDSystemInfo dictionaries that are not identical.
A Type 0 font dictionary with encoding other than Identity-H and Identity-V has values for Ordering in both CIDSystemInfo dictionaries that are not identical.
How to Detect
Machine
A Type 0 font dictionary with encoding other than Identity-H and Identity-V has a value for Supplement in the CIDSystemInfo dictionary of the CID font that is less than the value for Supplement in the CIDSystemInfo dictionary of the CMap.
A Type 0 font dictionary with encoding other than Identity-H and Identity-V has a value for Supplement in the CIDSystemInfo dictionary of the CID font that is less than the value for Supplement in the CIDSystemInfo dictionary of the CMap.
How to Detect
Machine
A Type 2 CID font contains neither a stream nor the name Identity as the value of the CIDToGIDMap entry.
A Type 2 CID font contains neither a stream nor the name Identity as the value of the CIDToGIDMap entry.
How to Detect
Machine
A Type 2 CID font does not contain a CIDToGIDMap entry.
A Type 2 CID font does not contain a CIDToGIDMap entry.
How to Detect
Machine
A CMap is neither listed as described in ISO 32000- 1:2008, 9.7.5.2, Table 118 nor is it embedded.
A CMap is neither listed as described in ISO 32000- 1:2008, 9.7.5.2, Table 118 nor is it embedded.
How to Detect
Machine
The WMode entry in a CMap dictionary is not identical to the WMode value in the CMap stream.
The WMode entry in a CMap dictionary is not identical to the WMode value in the CMap stream.
How to Detect
Machine
A CMap references another CMap which is not listed in ISO 32000-1:2008, 9.7.5.2, Table 118.
NOTE: For more information see ISO 32000-1 9.7.5.3, UseCMap entry.
A CMap references another CMap which is not listed in ISO 32000-1:2008, 9.7.5.2, Table 118.
NOTE: For more information see ISO 32000-1 9.7.5.3, UseCMap entry.
How to Detect
Machine
For a font used by text intended to be rendered the font program is not embedded.
NOTE: A glyph is used for rendering if the text render mode is not equal 3 (text render mode 3 is used for invisible text).
For a font used by text intended to be rendered the font program is not embedded.
NOTE: A glyph is used for rendering if the text render mode is not equal 3 (text render mode 3 is used for invisible text).
How to Detect
Machine
A font program is embedded that is not legally embeddable for unlimited, universal rendering.
A font program is embedded that is not legally embeddable for unlimited, universal rendering.
How to Detect
Human
For a font used by text the font program is embedded but it does not contain glyphs for all of the glyphs referenced by the text used for rendering.
NOTE: A glyph is used for rendering if the text render mode is not equal to 3 (text render mode 3 is used for invisible text).
For a font used by text the font program is embedded but it does not contain glyphs for all of the glyphs referenced by the text used for rendering.
NOTE: A glyph is used for rendering if the text render mode is not equal to 3 (text render mode 3 is used for invisible text).
How to Detect
Machine
The FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, but at least one of the glyphs present in the font program is not listed in the CharSet string.
The FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, but at least one of the glyphs present in the font program is not listed in the CharSet string.
How to Detect
Machine
The FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, but at least one of the glyphs listed in the CharSet string is not present in the font program.
The FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, but at least one of the glyphs listed in the CharSet string is not present in the font program.
How to Detect
Machine
The FontDescriptor dictionary of an embedded CID font contains a CIDSet string, but at least one of the glyphs present in the font program is not listed in the CIDSet string.
The FontDescriptor dictionary of an embedded CID font contains a CIDSet string, but at least one of the glyphs present in the font program is not listed in the CIDSet string.
How to Detect
Machine
The FontDescriptor dictionary of an embedded CID font contains a CIDSet string, but at least one of the glyphs listed in the CIDSet string is not present in the font program.
The FontDescriptor dictionary of an embedded CID font contains a CIDSet string, but at least one of the glyphs listed in the CIDSet string is not present in the font program.
How to Detect
Machine
For one or more glyphs, the glyph width information in the font dictionary and in the embedded font program differ by more than 1/1000 unit.
For one or more glyphs, the glyph width information in the font dictionary and in the embedded font program differ by more than 1/1000 unit.
How to Detect
Machine
A non-symbolic TrueType font is used for rendering, but none of the cmap entries in the embedded font program is a non-symbolic cmap.
A non-symbolic TrueType font is used for rendering, but none of the cmap entries in the embedded font program is a non-symbolic cmap.
How to Detect
Machine
A non-symbolic TrueType font is used for rendering, but for at least one glyph to be rendered the glyph cannot be looked up by any of the non-symbolic cmap entries in the embedded font program.
A non-symbolic TrueType font is used for rendering, but for at least one glyph to be rendered the glyph cannot be looked up by any of the non-symbolic cmap entries in the embedded font program.
How to Detect
Machine
The font dictionary for a non-symbolic TrueType font does not contain an Encoding entry.
The font dictionary for a non-symbolic TrueType font does not contain an Encoding entry.
How to Detect
Machine
The font dictionary for a non-symbolic TrueType font contains an Encoding dictionary which does not contain a BaseEncoding entry.
The font dictionary for a non-symbolic TrueType font contains an Encoding dictionary which does not contain a BaseEncoding entry.
How to Detect
Machine
The value for either the Encoding entry or the BaseEncoding entry in the Encoding dictionary in a non-symbolic TrueType font dictionary is neither MacRomanEncoding nor WinAnsiEncoding.
The value for either the Encoding entry or the BaseEncoding entry in the Encoding dictionary in a non-symbolic TrueType font dictionary is neither MacRomanEncoding nor WinAnsiEncoding.
How to Detect
Machine
The Differences array in the Encoding entry in a non-symbolic TrueType font dictionary contains one or more glyph names which are not listed in the Adobe Glyph List.
The Differences array in the Encoding entry in a non-symbolic TrueType font dictionary contains one or more glyph names which are not listed in the Adobe Glyph List.
How to Detect
Machine
The Differences array is present in the Encoding entry in a non-symbolic TrueType font dictionary but the embedded font program does not contain a (3,1) Microsoft Unicode cmap.
The Differences array is present in the Encoding entry in a non-symbolic TrueType font dictionary but the embedded font program does not contain a (3,1) Microsoft Unicode cmap.
How to Detect
Machine
The Encoding entry is present in the font dictionary for a symbolic TrueType font.
The Encoding entry is present in the font dictionary for a symbolic TrueType font.
How to Detect
Machine
The embedded font program for a symbolic TrueType font contains no cmap.
The embedded font program for a symbolic TrueType font contains no cmap.
How to Detect
Machine
The embedded font program for a symbolic TrueType font contains more than one cmap, but none of the cmap entries is a (3,1) Microsoft Symbol cmap.
The embedded font program for a symbolic TrueType font contains more than one cmap, but none of the cmap entries is a (3,1) Microsoft Symbol cmap.
How to Detect
Machine
A font dictionary does not contain the ToUnicode entry and none of the following is true: - the font uses MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding - the font is a Type 1 or Type 3 font and the glyph names of the glyphs referenced are all contained in the Adobe Glyph List or the set of named characters in the Symbol font, as defined in ISO 32000-1:2008, Annex D - the font is a Type 0 font, and its descendant CIDFont uses Adobe-GB1, Adobe-CNS1, AdobeJapan1 or Adobe-Korea1 character collections - the font is a non-symbolic TrueType font
A font dictionary does not contain the ToUnicode entry and none of the following is true: - the font uses MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding - the font is a Type 1 or Type 3 font and the glyph names of the glyphs referenced are all contained in the Adobe Glyph List or the set of named characters in the Symbol font, as defined in ISO 32000-1:2008, Annex D - the font is a Type 0 font, and its descendant CIDFont uses Adobe-GB1, Adobe-CNS1, AdobeJapan1 or Adobe-Korea1 character collections - the font is a non-symbolic TrueType font
How to Detect
Machine
One or more Unicode values specified in the ToUnicode CMap are zero (0).
One or more Unicode values specified in the ToUnicode CMap are zero (0).
How to Detect
Machine
One or more Unicode values specified in the ToUnicode CMap are equal to either U+FEFF or U+FFFE.
One or more Unicode values specified in the ToUnicode CMap are equal to either U+FEFF or U+FFFE.
How to Detect
Machine
One or more characters used in text showing operators reference the .notdef glyph.
One or more characters used in text showing operators reference the .notdef glyph.
How to Detect
Machine