Author: ssteiner
Date: Tue Feb 9 14:53:48 2016
New Revision: 1729397
URL: http://svn.apache.org/viewvc?rev=1729397&view=rev
Log:
FOP-2575: Merge unicode cmap
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/FOPPDFSingleByteFont.java
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/FOPPDFSingleByteFont.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/FOPPDFSingleByteFont.java?rev=1729397&r1=1729396&r2=1729397&view=diff
==============================================================================
---
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/FOPPDFSingleByteFont.java
(original)
+++
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/FOPPDFSingleByteFont.java
Tue Feb 9 14:53:48 2016
@@ -179,11 +179,11 @@ public class FOPPDFSingleByteFont extend
for (CMAPEncodingEntry c : cmapList) {
MergeTTFonts.Cmap tempCmap = getNewCmap(c.getPlatformId(),
c.getPlatformEncodingId());
for (int i = 0; i < 256 * 256; i++) {
- if (c.getGlyphId(i) != 0) {
- tempCmap.glyphIdToCharacterCode.put(i,
c.getGlyphId(i));
+ int gid = c.getGlyphId(i);
+ if (gid != 0) {
+ tempCmap.glyphIdToCharacterCode.put(i, gid);
}
}
- newCmap.add(tempCmap);
}
FOPPDFMultiByteFont.mergeMaxp(ttfont, mergeTTFonts.maxp);
}
@@ -195,7 +195,9 @@ public class FOPPDFSingleByteFont extend
return cmap;
}
}
- return new MergeTTFonts.Cmap(platformID, platformEncodingID);
+ MergeTTFonts.Cmap cmap = new MergeTTFonts.Cmap(platformID,
platformEncodingID);
+ newCmap.add(cmap);
+ return cmap;
}
@Override
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java?rev=1729397&r1=1729396&r2=1729397&view=diff
==============================================================================
---
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java
(original)
+++
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java
Tue Feb 9 14:53:48 2016
@@ -211,6 +211,12 @@ public class MergeFontsPDFWriter extends
if
(cs.getClass().getName().equals("org.apache.fontbox.cff.CFFParser$Format1Charset"))
{
extra += "f1cs";
}
+ if (font.getFontEncoding() != null) {
+ String enc = font.getFontEncoding().getClass().getSimpleName();
+ if (!"DictionaryEncoding".equals(enc)) {
+ extra += enc;
+ }
+ }
return name + extra;
}
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java?rev=1729397&r1=1729396&r2=1729397&view=diff
==============================================================================
---
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java
(original)
+++
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java
Tue Feb 9 14:53:48 2016
@@ -322,6 +322,8 @@ public class MergeTTFonts extends TTFSub
}
private void writeCMAP(List<Cmap> cmaps) {
+ mergeUniCmap(cmaps);
+
int checksum = currentPos;
pad4();
int cmapPos = currentPos;
@@ -388,6 +390,20 @@ public class MergeTTFonts extends TTFSub
realSize += currentPos - cmapPos;
}
+ private void mergeUniCmap(List<Cmap> cmaps) {
+ Cmap uniCmap = null;
+ for (Cmap cmap : cmaps) {
+ if (cmap.platformId == 3 && cmap.platformEncodingId == 1) {
+ uniCmap = cmap;
+ }
+ }
+ if (uniCmap != null) {
+ for (Cmap cmap : cmaps) {
+
uniCmap.glyphIdToCharacterCode.putAll(cmap.glyphIdToCharacterCode);
+ }
+ }
+ }
+
private int getCmapOffset(List<Cmap> cmaps, int index) {
int result = 0;
for (int i = 0; i < index; i++) {
Modified:
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java?rev=1729397&r1=1729396&r2=1729397&view=diff
==============================================================================
---
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
(original)
+++
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
Tue Feb 9 14:53:48 2016
@@ -285,7 +285,7 @@ public class PDFBoxAdapterTestCase {
Assert.assertEquals(name, "TimesNewRomanPSMT_TrueType");
Assert.assertEquals(mbfont.getFontName(),
"TimesNewRomanPSMT_TrueType");
byte[] is = IOUtils.toByteArray(mbfont.getInputStream());
- Assert.assertEquals(is.length, 41352);
+ Assert.assertEquals(is.length, 41112);
doc.close();
doc2.close();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]