You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2018/02/23 15:48:35 UTC
svn commit: r1825135 -
/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java
Author: msahyoun
Date: Fri Feb 23 15:48:35 2018
New Revision: 1825135
URL: http://svn.apache.org/viewvc?rev=1825135&view=rev
Log:
PDFBOX-4124: get result of read and skip - LOG.debug if result differs from intented number of bytes
Modified:
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java
Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java?rev=1825135&r1=1825134&r2=1825135&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java Fri Feb 23 15:48:35 2018
@@ -489,15 +489,33 @@ public final class TTFSubsetter
Set<Integer> glyphIdsToAdd = null;
try
{
- is.skip(g.getOffset());
+ long isResult = is.skip(g.getOffset());
+
+ if (Long.compare(isResult, g.getOffset()) != 0)
+ {
+ LOG.debug("Tried skipping " + g.getOffset() + " bytes but skipped only " + isResult + " bytes");
+ }
+
long lastOff = 0L;
for (Integer glyphId : glyphIds)
{
long offset = offsets[glyphId];
long len = offsets[glyphId + 1] - offset;
- is.skip(offset - lastOff);
+ isResult = is.skip(offset - lastOff);
+
+ if (Long.compare(isResult, offset - lastOff) != 0)
+ {
+ LOG.debug("Tried skipping " + (offset - lastOff) + " bytes but skipped only " + isResult + " bytes");
+ }
+
byte[] buf = new byte[(int)len];
- is.read(buf);
+ isResult = is.read(buf);
+
+ if (Long.compare(isResult, len) != 0)
+ {
+ LOG.debug("Tried reading " + len + " bytes but only " + isResult + " bytes read");
+ }
+
// rewrite glyphIds for compound glyphs
if (buf.length >= 2 && buf[0] == -1 && buf[1] == -1)
{
@@ -570,7 +588,12 @@ public final class TTFSubsetter
long[] offsets = ttf.getIndexToLocation().getOffsets();
try (InputStream is = ttf.getOriginalData())
{
- is.skip(g.getOffset());
+ long isResult = is.skip(g.getOffset());
+
+ if (Long.compare(isResult, g.getOffset()) != 0)
+ {
+ LOG.debug("Tried skipping " + g.getOffset() + " bytes but skipped only " + isResult + " bytes");
+ }
long prevEnd = 0; // previously read glyph offset
long newOffset = 0; // new offset for the glyph in the subset font
@@ -583,10 +606,20 @@ public final class TTFSubsetter
long length = offsets[gid + 1] - offset;
newOffsets[newGid++] = newOffset;
- is.skip(offset - prevEnd);
+ isResult = is.skip(offset - prevEnd);
+
+ if (Long.compare(isResult, offset - prevEnd) != 0)
+ {
+ LOG.debug("Tried skipping " + (offset - prevEnd) + " bytes but skipped only " + isResult + " bytes");
+ }
byte[] buf = new byte[(int)length];
- is.read(buf);
+ isResult = is.read(buf);
+
+ if (Long.compare(isResult, length) != 0)
+ {
+ LOG.debug("Tried reading " + length + " bytes but only " + isResult + " bytes read");
+ }
// detect glyph type
if (buf.length >= 2 && buf[0] == -1 && buf[1] == -1)
@@ -885,7 +918,13 @@ public final class TTFSubsetter
try
{
- is.skip(hm.getOffset());
+ long isResult = is.skip(hm.getOffset());
+
+ if (Long.compare(isResult, hm.getOffset()) != 0)
+ {
+ LOG.debug("Tried skipping " + hm.getOffset() + " bytes but only " + isResult + " bytes skipped");
+ }
+
long lastOffset = 0;
for (Integer glyphId : glyphIds)
{