Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions RELEASENOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,26 @@
Version 1.28.2 (July 15, 2025)
=================================

### Applications
- updated vulnerable dependencies ([commit](https://github.com/veraPDF/veraPDF-library/commit/b75a016))

### Validation
- (PDF/UA-2, WTPDF-1) disabled rule about multiple link annotations that target the same location ([commit](https://github.com/veraPDF/veraPDF-library/commit/3c05a38))
- (PDF/UA-2, WTPDF-1) fixed structure destination validation ([commit](https://github.com/veraPDF/veraPDF-validation/commit/7fe5283))
- fixed validation of Unicode for several flavours ([commit](https://github.com/veraPDF/veraPDF-validation/commit/7d143de))

### PDF Parser
- fixed width calculation in an edge case of Type2CharString ([commit](https://github.com/veraPDF/veraPDF-parser/commit/ea6ba8b))
- fixed COSPredictorDecode (commits [1](https://github.com/veraPDF/veraPDF-parser/commit/e8f9024) [2](https://github.com/veraPDF/veraPDF-parser/commit/703fe86))
- fixed RDF parsing with no attributes in metadata ([commit](https://github.com/veraPDF/veraPDF-library/commit/be2f0fb))
- fixed exceptions in case of malformed PDFs


### Maintenance
- moved Maven publication from the decommissioned Sonatype service to Maven central publication
- added the new maven-central-publication plugin to veraPDF-parent POM for publication for all projects ([commit](https://github.com/veraPDF/veraPDF-parent-pom/commit/16c02dd))
- updated the Maven plugins used to the latest versions ([commit](https://github.com/veraPDF/veraPDF-parent-pom/commit/07e58ea))

Version 1.28 (April 30, 2025)
=================================

Expand Down
2 changes: 1 addition & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.0</version>
<version>2.15.0</version>
</dependency>

<dependency>
Expand Down
18 changes: 18 additions & 0 deletions core/src/main/java/org/verapdf/pdfa/flavours/PDFFlavours.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,15 @@

public class PDFFlavours {

public static boolean isOnlyPDFUARelatedFlavour(List<PDFAFlavour> flavours) {
for (PDFAFlavour flavour : flavours) {
if (!isPDFUARelatedFlavour(flavour)) {
return false;
}
}
return true;
}

public static boolean isPDFUARelatedFlavour(List<PDFAFlavour> flavours) {
for (PDFAFlavour flavour : flavours) {
if (isPDFUARelatedFlavour(flavour)) {
Expand Down Expand Up @@ -89,6 +98,15 @@ public static boolean isFlavour(List<PDFAFlavour> flavours, PDFAFlavour checkedF
}
return false;
}

public static boolean isOnlyFlavour(List<PDFAFlavour> flavours, PDFAFlavour checkedFlavour) {
for (PDFAFlavour flavour : flavours) {
if (!isFlavour(flavour, checkedFlavour)) {
return false;
}
}
return true;
}

public static boolean isFlavour(PDFAFlavour currentFlavour, PDFAFlavour checkedFlavour) {
return currentFlavour == checkedFlavour;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10563,10 +10563,10 @@
</rule>
<rule object="AColorSpaceMapEntry">
<id specification="PDF_1_2" clause="ColorSpaceMapEntry-Name" testNumber="6"/>
<description>Entry with type Name in ColorSpaceMap shall have one of values: DeviceGray, DeviceRGB, DeviceCMYK</description>
<test>HasTypeName != true || NameValue == "DeviceCMYK" || NameValue == "DeviceRGB" || NameValue == "DeviceGray"</test>
<description>Entry with type Name in ColorSpaceMap shall have one of values: Pattern, DeviceGray, DeviceRGB, DeviceCMYK</description>
<test>HasTypeName != true || NameValue == "DeviceCMYK" || NameValue == "DeviceRGB" || NameValue == "DeviceGray" || NameValue == "Pattern"</test>
<error>
<message>Entry %keyName% with type Name in ColorSpaceMap has incorrect value %1 instead of DeviceGray, DeviceRGB, DeviceCMYK</message>
<message>Entry %keyName% with type Name in ColorSpaceMap has incorrect value %1 instead of Pattern, DeviceGray, DeviceRGB, DeviceCMYK</message>
<arguments>
<argument>NameValue</argument>
<argument name="keyName">keyName</argument>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16649,10 +16649,10 @@
</rule>
<rule object="AColorSpaceMapEntry">
<id specification="PDF_1_3" clause="ColorSpaceMapEntry-Name" testNumber="6"/>
<description>Entry with type Name in ColorSpaceMap shall have one of values: DeviceGray, DeviceRGB, DeviceCMYK</description>
<test>HasTypeName != true || NameValue == "DeviceCMYK" || NameValue == "DeviceRGB" || NameValue == "DeviceGray"</test>
<description>Entry with type Name in ColorSpaceMap shall have one of values: Pattern, DeviceGray, DeviceRGB, DeviceCMYK</description>
<test>HasTypeName != true || NameValue == "DeviceCMYK" || NameValue == "DeviceRGB" || NameValue == "DeviceGray" || NameValue == "Pattern"</test>
<error>
<message>Entry %keyName% with type Name in ColorSpaceMap has incorrect value %1 instead of DeviceGray, DeviceRGB, DeviceCMYK</message>
<message>Entry %keyName% with type Name in ColorSpaceMap has incorrect value %1 instead of Pattern, DeviceGray, DeviceRGB, DeviceCMYK</message>
<arguments>
<argument>NameValue</argument>
<argument name="keyName">keyName</argument>
Expand Down Expand Up @@ -39423,23 +39423,23 @@
<rule object="AStructureAttributesDict">
<id specification="PDF_1_3" clause="StructureAttributesDict" testNumber="1"/>
<description>StructureAttributesDict shall not contain entries except O</description>
<test>keysString == '' || keysString.split('&amp;').filter(elem =&gt; elem != 'BBox' &amp;&amp; elem != 'BackgroundColor' &amp;&amp; elem != 'BaselineShift' &amp;&amp; elem != 'BlockAlign' &amp;&amp; elem != 'BorderColor' &amp;&amp; elem != 'BorderStyle' &amp;&amp; elem != 'BorderThickness' &amp;&amp; elem != 'Checked' &amp;&amp; elem != 'ColSpan' &amp;&amp; elem != 'Color' &amp;&amp; elem != 'ColumnCount' &amp;&amp; elem != 'ColumnGap' &amp;&amp; elem != 'ColumnWidths' &amp;&amp; elem != 'Contents' &amp;&amp; elem != 'ContinuedForm' &amp;&amp; elem != 'ContinuedList' &amp;&amp; elem != 'Desc' &amp;&amp; elem != 'EndIndent' &amp;&amp; elem != 'GlyphOrientationVertical' &amp;&amp; elem != 'Headers' &amp;&amp; elem != 'Height' &amp;&amp; elem != 'InlineAlign' &amp;&amp; elem != 'LineHeight' &amp;&amp; elem != 'ListNumbering' &amp;&amp; elem != 'NS' &amp;&amp; elem != 'NoteType' &amp;&amp; elem != 'O' &amp;&amp; elem != 'P' &amp;&amp; elem != 'Padding' &amp;&amp; elem != 'Placement' &amp;&amp; elem != 'Role' &amp;&amp; elem != 'RowSpan' &amp;&amp; elem != 'RubyAlign' &amp;&amp; elem != 'RubyPosition' &amp;&amp; elem != 'Scope' &amp;&amp; elem != 'Short' &amp;&amp; elem != 'SpaceAfter' &amp;&amp; elem != 'SpaceBefore' &amp;&amp; elem != 'StartIndent' &amp;&amp; elem != 'Subtype' &amp;&amp; elem != 'Summary' &amp;&amp; elem != 'TBorderStyle' &amp;&amp; elem != 'TPadding' &amp;&amp; elem != 'TextAlign' &amp;&amp; elem != 'TextDecorationColor' &amp;&amp; elem != 'TextDecorationThickness' &amp;&amp; elem != 'TextDecorationType' &amp;&amp; elem != 'TextIndent' &amp;&amp; elem != 'TextPosition' &amp;&amp; elem != 'Type' &amp;&amp; elem != 'Width' &amp;&amp; elem != 'WritingMode' &amp;&amp; elem != 'checked' &amp;&amp; /^(XX|(.{4}[_:]))/.test(elem) == false).length == 0</test>
<test>keysString == '' || keysString.split('&amp;').filter(elem =&gt; elem != 'BBox' &amp;&amp; elem != 'BackgroundColor' &amp;&amp; elem != 'BaselineShift' &amp;&amp; elem != 'BlockAlign' &amp;&amp; elem != 'BorderColor' &amp;&amp; elem != 'BorderStyle' &amp;&amp; elem != 'BorderThickness' &amp;&amp; elem != 'Checked' &amp;&amp; elem != 'ColSpan' &amp;&amp; elem != 'Color' &amp;&amp; elem != 'ColumnCount' &amp;&amp; elem != 'ColumnGap' &amp;&amp; elem != 'ColumnWidths' &amp;&amp; elem != 'Contents' &amp;&amp; elem != 'ContinuedFrom' &amp;&amp; elem != 'ContinuedList' &amp;&amp; elem != 'Desc' &amp;&amp; elem != 'EndIndent' &amp;&amp; elem != 'GlyphOrientationVertical' &amp;&amp; elem != 'Headers' &amp;&amp; elem != 'Height' &amp;&amp; elem != 'InlineAlign' &amp;&amp; elem != 'LineHeight' &amp;&amp; elem != 'ListNumbering' &amp;&amp; elem != 'NS' &amp;&amp; elem != 'NoteType' &amp;&amp; elem != 'O' &amp;&amp; elem != 'P' &amp;&amp; elem != 'Padding' &amp;&amp; elem != 'Placement' &amp;&amp; elem != 'Role' &amp;&amp; elem != 'RowSpan' &amp;&amp; elem != 'RubyAlign' &amp;&amp; elem != 'RubyPosition' &amp;&amp; elem != 'Scope' &amp;&amp; elem != 'Short' &amp;&amp; elem != 'SpaceAfter' &amp;&amp; elem != 'SpaceBefore' &amp;&amp; elem != 'StartIndent' &amp;&amp; elem != 'Subtype' &amp;&amp; elem != 'Summary' &amp;&amp; elem != 'TBorderStyle' &amp;&amp; elem != 'TPadding' &amp;&amp; elem != 'TextAlign' &amp;&amp; elem != 'TextDecorationColor' &amp;&amp; elem != 'TextDecorationThickness' &amp;&amp; elem != 'TextDecorationType' &amp;&amp; elem != 'TextIndent' &amp;&amp; elem != 'TextPosition' &amp;&amp; elem != 'Type' &amp;&amp; elem != 'Width' &amp;&amp; elem != 'WritingMode' &amp;&amp; elem != 'checked' &amp;&amp; /^(XX|(.{4}[_:]))/.test(elem) == false).length == 0</test>
<error>
<message>StructureAttributesDict contains entry(ies) %1</message>
<arguments>
<argument>keysString.split('&amp;').filter(elem =&gt; elem != 'BBox' &amp;&amp; elem != 'BackgroundColor' &amp;&amp; elem != 'BaselineShift' &amp;&amp; elem != 'BlockAlign' &amp;&amp; elem != 'BorderColor' &amp;&amp; elem != 'BorderStyle' &amp;&amp; elem != 'BorderThickness' &amp;&amp; elem != 'Checked' &amp;&amp; elem != 'ColSpan' &amp;&amp; elem != 'Color' &amp;&amp; elem != 'ColumnCount' &amp;&amp; elem != 'ColumnGap' &amp;&amp; elem != 'ColumnWidths' &amp;&amp; elem != 'Contents' &amp;&amp; elem != 'ContinuedForm' &amp;&amp; elem != 'ContinuedList' &amp;&amp; elem != 'Desc' &amp;&amp; elem != 'EndIndent' &amp;&amp; elem != 'GlyphOrientationVertical' &amp;&amp; elem != 'Headers' &amp;&amp; elem != 'Height' &amp;&amp; elem != 'InlineAlign' &amp;&amp; elem != 'LineHeight' &amp;&amp; elem != 'ListNumbering' &amp;&amp; elem != 'NS' &amp;&amp; elem != 'NoteType' &amp;&amp; elem != 'O' &amp;&amp; elem != 'P' &amp;&amp; elem != 'Padding' &amp;&amp; elem != 'Placement' &amp;&amp; elem != 'Role' &amp;&amp; elem != 'RowSpan' &amp;&amp; elem != 'RubyAlign' &amp;&amp; elem != 'RubyPosition' &amp;&amp; elem != 'Scope' &amp;&amp; elem != 'Short' &amp;&amp; elem != 'SpaceAfter' &amp;&amp; elem != 'SpaceBefore' &amp;&amp; elem != 'StartIndent' &amp;&amp; elem != 'Subtype' &amp;&amp; elem != 'Summary' &amp;&amp; elem != 'TBorderStyle' &amp;&amp; elem != 'TPadding' &amp;&amp; elem != 'TextAlign' &amp;&amp; elem != 'TextDecorationColor' &amp;&amp; elem != 'TextDecorationThickness' &amp;&amp; elem != 'TextDecorationType' &amp;&amp; elem != 'TextIndent' &amp;&amp; elem != 'TextPosition' &amp;&amp; elem != 'Type' &amp;&amp; elem != 'Width' &amp;&amp; elem != 'WritingMode' &amp;&amp; elem != 'checked' &amp;&amp; /^(XX|(.{4}[_:]))/.test(elem) == false).toString()</argument>
<argument>keysString.split('&amp;').filter(elem =&gt; elem != 'BBox' &amp;&amp; elem != 'BackgroundColor' &amp;&amp; elem != 'BaselineShift' &amp;&amp; elem != 'BlockAlign' &amp;&amp; elem != 'BorderColor' &amp;&amp; elem != 'BorderStyle' &amp;&amp; elem != 'BorderThickness' &amp;&amp; elem != 'Checked' &amp;&amp; elem != 'ColSpan' &amp;&amp; elem != 'Color' &amp;&amp; elem != 'ColumnCount' &amp;&amp; elem != 'ColumnGap' &amp;&amp; elem != 'ColumnWidths' &amp;&amp; elem != 'Contents' &amp;&amp; elem != 'ContinuedFrom' &amp;&amp; elem != 'ContinuedList' &amp;&amp; elem != 'Desc' &amp;&amp; elem != 'EndIndent' &amp;&amp; elem != 'GlyphOrientationVertical' &amp;&amp; elem != 'Headers' &amp;&amp; elem != 'Height' &amp;&amp; elem != 'InlineAlign' &amp;&amp; elem != 'LineHeight' &amp;&amp; elem != 'ListNumbering' &amp;&amp; elem != 'NS' &amp;&amp; elem != 'NoteType' &amp;&amp; elem != 'O' &amp;&amp; elem != 'P' &amp;&amp; elem != 'Padding' &amp;&amp; elem != 'Placement' &amp;&amp; elem != 'Role' &amp;&amp; elem != 'RowSpan' &amp;&amp; elem != 'RubyAlign' &amp;&amp; elem != 'RubyPosition' &amp;&amp; elem != 'Scope' &amp;&amp; elem != 'Short' &amp;&amp; elem != 'SpaceAfter' &amp;&amp; elem != 'SpaceBefore' &amp;&amp; elem != 'StartIndent' &amp;&amp; elem != 'Subtype' &amp;&amp; elem != 'Summary' &amp;&amp; elem != 'TBorderStyle' &amp;&amp; elem != 'TPadding' &amp;&amp; elem != 'TextAlign' &amp;&amp; elem != 'TextDecorationColor' &amp;&amp; elem != 'TextDecorationThickness' &amp;&amp; elem != 'TextDecorationType' &amp;&amp; elem != 'TextIndent' &amp;&amp; elem != 'TextPosition' &amp;&amp; elem != 'Type' &amp;&amp; elem != 'Width' &amp;&amp; elem != 'WritingMode' &amp;&amp; elem != 'checked' &amp;&amp; /^(XX|(.{4}[_:]))/.test(elem) == false).toString()</argument>
</arguments>
</error>
<references/>
</rule>
<rule object="AStructureAttributesDict">
<id specification="PDF_1_3" clause="StructureAttributesDict" testNumber="22"/>
<description>StructureAttributesDict shall not contain entries BBox, BackgroundColor, BaselineShift, BlockAlign, BorderColor, BorderStyle, BorderThickness, Checked, ColSpan, Color, ColumnCount, ColumnGap, ColumnWidths, Contents, ContinuedForm, ContinuedList, Desc, EndIndent, GlyphOrientationVertical, Headers, Height, InlineAlign, LineHeight, ListNumbering, NS, NoteType, P, Padding, Placement, Role, RowSpan, RubyAlign, RubyPosition, Scope, Short, SpaceAfter, SpaceBefore, StartIndent, Subtype, Summary, TBorderStyle, TPadding, TextAlign, TextDecorationColor, TextDecorationThickness, TextDecorationType, TextIndent, TextPosition, Type, Width, WritingMode, checked in PDF 1.3. These entries appear in later pdf versions</description>
<test>keysString == '' || keysString.split('&amp;').filter(elem =&gt; elem == 'BBox' || elem == 'BackgroundColor' || elem == 'BaselineShift' || elem == 'BlockAlign' || elem == 'BorderColor' || elem == 'BorderStyle' || elem == 'BorderThickness' || elem == 'Checked' || elem == 'ColSpan' || elem == 'Color' || elem == 'ColumnCount' || elem == 'ColumnGap' || elem == 'ColumnWidths' || elem == 'Contents' || elem == 'ContinuedForm' || elem == 'ContinuedList' || elem == 'Desc' || elem == 'EndIndent' || elem == 'GlyphOrientationVertical' || elem == 'Headers' || elem == 'Height' || elem == 'InlineAlign' || elem == 'LineHeight' || elem == 'ListNumbering' || elem == 'NS' || elem == 'NoteType' || elem == 'P' || elem == 'Padding' || elem == 'Placement' || elem == 'Role' || elem == 'RowSpan' || elem == 'RubyAlign' || elem == 'RubyPosition' || elem == 'Scope' || elem == 'Short' || elem == 'SpaceAfter' || elem == 'SpaceBefore' || elem == 'StartIndent' || elem == 'Subtype' || elem == 'Summary' || elem == 'TBorderStyle' || elem == 'TPadding' || elem == 'TextAlign' || elem == 'TextDecorationColor' || elem == 'TextDecorationThickness' || elem == 'TextDecorationType' || elem == 'TextIndent' || elem == 'TextPosition' || elem == 'Type' || elem == 'Width' || elem == 'WritingMode' || elem == 'checked').length == 0</test>
<description>StructureAttributesDict shall not contain entries BBox, BackgroundColor, BaselineShift, BlockAlign, BorderColor, BorderStyle, BorderThickness, Checked, ColSpan, Color, ColumnCount, ColumnGap, ColumnWidths, Contents, ContinuedFrom, ContinuedList, Desc, EndIndent, GlyphOrientationVertical, Headers, Height, InlineAlign, LineHeight, ListNumbering, NS, NoteType, P, Padding, Placement, Role, RowSpan, RubyAlign, RubyPosition, Scope, Short, SpaceAfter, SpaceBefore, StartIndent, Subtype, Summary, TBorderStyle, TPadding, TextAlign, TextDecorationColor, TextDecorationThickness, TextDecorationType, TextIndent, TextPosition, Type, Width, WritingMode, checked in PDF 1.3. These entries appear in later pdf versions</description>
<test>keysString == '' || keysString.split('&amp;').filter(elem =&gt; elem == 'BBox' || elem == 'BackgroundColor' || elem == 'BaselineShift' || elem == 'BlockAlign' || elem == 'BorderColor' || elem == 'BorderStyle' || elem == 'BorderThickness' || elem == 'Checked' || elem == 'ColSpan' || elem == 'Color' || elem == 'ColumnCount' || elem == 'ColumnGap' || elem == 'ColumnWidths' || elem == 'Contents' || elem == 'ContinuedFrom' || elem == 'ContinuedList' || elem == 'Desc' || elem == 'EndIndent' || elem == 'GlyphOrientationVertical' || elem == 'Headers' || elem == 'Height' || elem == 'InlineAlign' || elem == 'LineHeight' || elem == 'ListNumbering' || elem == 'NS' || elem == 'NoteType' || elem == 'P' || elem == 'Padding' || elem == 'Placement' || elem == 'Role' || elem == 'RowSpan' || elem == 'RubyAlign' || elem == 'RubyPosition' || elem == 'Scope' || elem == 'Short' || elem == 'SpaceAfter' || elem == 'SpaceBefore' || elem == 'StartIndent' || elem == 'Subtype' || elem == 'Summary' || elem == 'TBorderStyle' || elem == 'TPadding' || elem == 'TextAlign' || elem == 'TextDecorationColor' || elem == 'TextDecorationThickness' || elem == 'TextDecorationType' || elem == 'TextIndent' || elem == 'TextPosition' || elem == 'Type' || elem == 'Width' || elem == 'WritingMode' || elem == 'checked').length == 0</test>
<error>
<message>StructureAttributesDict contains entry(ies) %1</message>
<arguments>
<argument>keysString.split('&amp;').filter(elem =&gt; elem == 'BBox' || elem == 'BackgroundColor' || elem == 'BaselineShift' || elem == 'BlockAlign' || elem == 'BorderColor' || elem == 'BorderStyle' || elem == 'BorderThickness' || elem == 'Checked' || elem == 'ColSpan' || elem == 'Color' || elem == 'ColumnCount' || elem == 'ColumnGap' || elem == 'ColumnWidths' || elem == 'Contents' || elem == 'ContinuedForm' || elem == 'ContinuedList' || elem == 'Desc' || elem == 'EndIndent' || elem == 'GlyphOrientationVertical' || elem == 'Headers' || elem == 'Height' || elem == 'InlineAlign' || elem == 'LineHeight' || elem == 'ListNumbering' || elem == 'NS' || elem == 'NoteType' || elem == 'P' || elem == 'Padding' || elem == 'Placement' || elem == 'Role' || elem == 'RowSpan' || elem == 'RubyAlign' || elem == 'RubyPosition' || elem == 'Scope' || elem == 'Short' || elem == 'SpaceAfter' || elem == 'SpaceBefore' || elem == 'StartIndent' || elem == 'Subtype' || elem == 'Summary' || elem == 'TBorderStyle' || elem == 'TPadding' || elem == 'TextAlign' || elem == 'TextDecorationColor' || elem == 'TextDecorationThickness' || elem == 'TextDecorationType' || elem == 'TextIndent' || elem == 'TextPosition' || elem == 'Type' || elem == 'Width' || elem == 'WritingMode' || elem == 'checked').toString()</argument>
<argument>keysString.split('&amp;').filter(elem =&gt; elem == 'BBox' || elem == 'BackgroundColor' || elem == 'BaselineShift' || elem == 'BlockAlign' || elem == 'BorderColor' || elem == 'BorderStyle' || elem == 'BorderThickness' || elem == 'Checked' || elem == 'ColSpan' || elem == 'Color' || elem == 'ColumnCount' || elem == 'ColumnGap' || elem == 'ColumnWidths' || elem == 'Contents' || elem == 'ContinuedFrom' || elem == 'ContinuedList' || elem == 'Desc' || elem == 'EndIndent' || elem == 'GlyphOrientationVertical' || elem == 'Headers' || elem == 'Height' || elem == 'InlineAlign' || elem == 'LineHeight' || elem == 'ListNumbering' || elem == 'NS' || elem == 'NoteType' || elem == 'P' || elem == 'Padding' || elem == 'Placement' || elem == 'Role' || elem == 'RowSpan' || elem == 'RubyAlign' || elem == 'RubyPosition' || elem == 'Scope' || elem == 'Short' || elem == 'SpaceAfter' || elem == 'SpaceBefore' || elem == 'StartIndent' || elem == 'Subtype' || elem == 'Summary' || elem == 'TBorderStyle' || elem == 'TPadding' || elem == 'TextAlign' || elem == 'TextDecorationColor' || elem == 'TextDecorationThickness' || elem == 'TextDecorationType' || elem == 'TextIndent' || elem == 'TextPosition' || elem == 'Type' || elem == 'Width' || elem == 'WritingMode' || elem == 'checked').toString()</argument>
</arguments>
</error>
<references/>
Expand Down
Loading
Loading