[
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)