[ 
https://issues.apache.org/jira/browse/FOP-3143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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 consistent with embedded font program: 
> EAAAAA+ArialMT"
> to test pdf validation I use:
> https://avepdf.com/fr/pdfa-validation



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

Reply via email to