[jira] [Commented] (FOP-3143) PDF/A validation error

2023-10-25 Thread zouari (Jira)


[ 
https://issues.apache.org/jira/browse/FOP-3143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17779573#comment-17779573
 ] 

zouari commented on FOP-3143:
-

{code:java}
 fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java       |  5 +
 fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java        |  6 ++
 fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java     |  5 +
 fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java      | 10 +-
 .../src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java  |  5 +
 5 files changed, 30 insertions(+), 1 deletion(-)diff --git 
a/fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java 
b/fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java
index 9d5184b02..b83522ac1 100644
--- a/fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java
+++ b/fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java
@@ -121,6 +121,11 @@ public class CIDFull implements CIDSet {
         initGlyphIndices();
         return glyphIndices;
     }
+    
+    /** {@inheritDoc} */
+    public BitSet getAllGlyphIndices() {
+        return getGlyphIndices();
+    }
 
     /** {@inheritDoc} */
     public int[] getWidths() {
diff --git a/fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java 
b/fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java
index d89c8937b..158cf1675 100644
--- a/fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java
+++ b/fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java
@@ -101,6 +101,12 @@ public interface CIDSet {
      * @return a BitSet indicating available glyph indices
      */
     BitSet getGlyphIndices();
+    
+    /**
+     * Returns a BitSet with bits set for each available glyph index in the 
font.
+     * @return a BitSet indicating available glyph indices
+     */
+    BitSet getAllGlyphIndices();
 
     /**
      * Return the array of widths.
diff --git a/fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java 
b/fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java
index 470e59a37..38fa26293 100644
--- a/fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java
+++ b/fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java
@@ -157,6 +157,11 @@ public class CIDSubset implements CIDSet {
         }
         return bitset;
     }
+    
+    /** {@inheritDoc} */
+    public BitSet getAllGlyphIndices() {
+        return font.getGlyphIndices();
+    }
 
     /** {@inheritDoc} */
     public int[] getWidths() {
diff --git a/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java 
b/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
index aad24cae9..4924b1bdc 100644
--- a/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
+++ b/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
@@ -47,6 +47,8 @@ import org.apache.xmlgraphics.java2d.color.NamedColorSpace;
 import org.apache.xmlgraphics.xmp.Metadata;
 
 import org.apache.fop.fonts.CIDFont;
+import org.apache.fop.fonts.CIDSet;
+import org.apache.fop.fonts.CIDSubset;
 import org.apache.fop.fonts.CodePointMapping;
 import org.apache.fop.fonts.CustomFont;
 import org.apache.fop.fonts.EmbeddingMode;
@@ -1317,7 +1319,13 @@ public class PDFFactory {
     }
 
     private void buildCIDSet(PDFFontDescriptor descriptor, CIDFont cidFont) {
-        BitSet cidSet = cidFont.getCIDSet().getGlyphIndices();
+        CIDSet cidSetObject = cidFont.getCIDSet();
+        BitSet cidSet = null;
+        if (cidSetObject instanceof CIDSubset && 
getDocument().getProfile().isPDFAActive()) {
+            cidSet = cidSetObject.getAllGlyphIndices();
+        } else {
+            cidSet = cidSetObject.getGlyphIndices();
+        }
         PDFStream pdfStream = makeStream(null, true);
         ByteArrayOutputStream baout = new 
ByteArrayOutputStream(cidSet.length() / 8 + 1);
         int value = 0;
diff --git a/fop-core/src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java 
b/fop-core/src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java
index b81964cf8..03ac07fed 100644
--- a/fop-core/src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java
+++ b/fop-core/src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java
@@ -195,4 +195,9 @@ public class CIDSubsetTestCase {
             assertTrue(Arrays.binarySearch(widths, width) >= 0);
         }
     }
+    
+    @Test
+    public void testAllGetGlyphIndices() {
+        assertEquals(bs, cidSub.getAllGlyphIndices());
+    }
 }
 {code}

> PDF/A validation error
> --
>
> Key: FOP-3143
> URL: https://issues.apache.org/jira/browse/FOP-3143
> Project: FOP
>  Issue Type: Bug
>Affects Versions: 2.3, 2.4
>Reporter: zouari
>Priority: Major
> Attachments: error.zip
>
>
> When the PDF/A documents generated by FOP *with the font 
> embedding-mode="subset"* are validated for PDF/A conformance, I get this 
> error:
> "The following font CIDSet data 

[jira] [Commented] (FOP-3143) PDF/A validation error

2023-10-25 Thread zouari (Jira)


[ 
https://issues.apache.org/jira/browse/FOP-3143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17779572#comment-17779572
 ] 

zouari commented on FOP-3143:
-

 fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java       |  5 +
 fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java        |  6 ++
 fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java     |  5 +
 fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java      | 10 +-
 .../src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java  |  5 +
 5 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java 
b/fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java
index 9d5184b02..b83522ac1 100644
--- a/fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java
+++ b/fop-core/src/main/java/org/apache/fop/fonts/CIDFull.java
@@ -121,6 +121,11 @@ public class CIDFull implements CIDSet {
         initGlyphIndices();
         return glyphIndices;
     }
+    
+    /** \{@inheritDoc} */
+    public BitSet getAllGlyphIndices() {
+        return getGlyphIndices();
+    }
 
     /** \{@inheritDoc} */
     public int[] getWidths() {
diff --git a/fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java 
b/fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java
index d89c8937b..158cf1675 100644
--- a/fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java
+++ b/fop-core/src/main/java/org/apache/fop/fonts/CIDSet.java
@@ -101,6 +101,12 @@ public interface CIDSet {
      * @return a BitSet indicating available glyph indices
      */
     BitSet getGlyphIndices();
+    
+    /**
+     * Returns a BitSet with bits set for each available glyph index in the 
font.
+     * @return a BitSet indicating available glyph indices
+     */
+    BitSet getAllGlyphIndices();
 
     /**
      * Return the array of widths.
diff --git a/fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java 
b/fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java
index 470e59a37..38fa26293 100644
--- a/fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java
+++ b/fop-core/src/main/java/org/apache/fop/fonts/CIDSubset.java
@@ -157,6 +157,11 @@ public class CIDSubset implements CIDSet {
         }
         return bitset;
     }
+    
+    /** \{@inheritDoc} */
+    public BitSet getAllGlyphIndices() {
+        return font.getGlyphIndices();
+    }
 
     /** \{@inheritDoc} */
     public int[] getWidths() {
diff --git a/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java 
b/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
index aad24cae9..4924b1bdc 100644
--- a/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
+++ b/fop-core/src/main/java/org/apache/fop/pdf/PDFFactory.java
@@ -47,6 +47,8 @@ import org.apache.xmlgraphics.java2d.color.NamedColorSpace;
 import org.apache.xmlgraphics.xmp.Metadata;
 
 import org.apache.fop.fonts.CIDFont;
+import org.apache.fop.fonts.CIDSet;
+import org.apache.fop.fonts.CIDSubset;
 import org.apache.fop.fonts.CodePointMapping;
 import org.apache.fop.fonts.CustomFont;
 import org.apache.fop.fonts.EmbeddingMode;
@@ -1317,7 +1319,13 @@ public class PDFFactory {
     }
 
     private void buildCIDSet(PDFFontDescriptor descriptor, CIDFont cidFont) {
-        BitSet cidSet = cidFont.getCIDSet().getGlyphIndices();
+        CIDSet cidSetObject = cidFont.getCIDSet();
+        BitSet cidSet = null;
+        if (cidSetObject instanceof CIDSubset && 
getDocument().getProfile().isPDFAActive()) {
+            cidSet = cidSetObject.getAllGlyphIndices();
+        } else {
+            cidSet = cidSetObject.getGlyphIndices();
+        }
         PDFStream pdfStream = makeStream(null, true);
         ByteArrayOutputStream baout = new 
ByteArrayOutputStream(cidSet.length() / 8 + 1);
         int value = 0;
diff --git a/fop-core/src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java 
b/fop-core/src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java
index b81964cf8..03ac07fed 100644
--- a/fop-core/src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java
+++ b/fop-core/src/test/java/org/apache/fop/fonts/CIDSubsetTestCase.java
@@ -195,4 +195,9 @@ public class CIDSubsetTestCase {
             assertTrue(Arrays.binarySearch(widths, width) >= 0);
         }
     }
+    
+    @Test
+    public void testAllGetGlyphIndices() {
+        assertEquals(bs, cidSub.getAllGlyphIndices());
+    }
 }

> PDF/A validation error
> --
>
> Key: FOP-3143
> URL: https://issues.apache.org/jira/browse/FOP-3143
> Project: FOP
>  Issue Type: Bug
>Affects Versions: 2.3, 2.4
>Reporter: zouari
>Priority: Major
> Attachments: error.zip
>
>
> When the PDF/A documents generated by FOP *with the font 
> embedding-mode="subset"* are validated for PDF/A conformance, I get this 
> error:
> "The following font CIDSet data is not 

[jira] [Commented] (FOP-3143) PDF/A validation error

2023-10-25 Thread zouari (Jira)


[ 
https://issues.apache.org/jira/browse/FOP-3143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17779570#comment-17779570
 ] 

zouari commented on FOP-3143:
-

PDF/A does not require all policies to be fully integrated.
It appears that the CIDSet does not correctly identify all glyphs present in 
the subset font.
here is a patch that fixes the problem.

> PDF/A validation error
> --
>
> Key: FOP-3143
> URL: https://issues.apache.org/jira/browse/FOP-3143
> Project: FOP
>  Issue Type: Bug
>Affects Versions: 2.3, 2.4
>Reporter: zouari
>Priority: Major
> Attachments: error.zip
>
>
> When the PDF/A documents generated by FOP *with the font 
> embedding-mode="subset"* are validated for PDF/A conformance, I get this 
> error:
> "The following font CIDSet data is not consistent with embedded font program: 
> EA+ArialMT"
> to test pdf validation I use:
> https://avepdf.com/fr/pdfa-validation



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (FOP-3143) PDF/A validation error

2023-08-22 Thread Chris Bowditch (Jira)


[ 
https://issues.apache.org/jira/browse/FOP-3143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17757371#comment-17757371
 ] 

Chris Bowditch commented on FOP-3143:
-

This isn't a bug! Its a requirement of PDF/A that all fonts are fully embedded. 
FOP allows either embedding mode you just need to configure full embedding when 
generating PDF/A. Please send questions to the mailing list rather than raising 
bugs in future. This will now be closed

> PDF/A validation error
> --
>
> Key: FOP-3143
> URL: https://issues.apache.org/jira/browse/FOP-3143
> Project: FOP
>  Issue Type: Bug
>Affects Versions: 2.3, 2.4
>Reporter: zouari
>Priority: Major
> Attachments: error.zip
>
>
> When the PDF/A documents generated by FOP *with the font 
> embedding-mode="subset"* are validated for PDF/A conformance, I get this 
> error:
> "The following font CIDSet data is not consistent with embedded font program: 
> EA+ArialMT"
> to test pdf validation I use:
> https://avepdf.com/fr/pdfa-validation



--
This message was sent by Atlassian Jira
(v8.20.10#820010)