seek(fonts[i].charstringsOffset); fonts[i].nglyphs = getCard16(); seek(stringIndexOffset); fonts[i].nstrings = getCard16() + standardStrings.length; fonts[i].charstringsOffsets = getIndex(fonts[i].charstringsOffset); readFDSelect(i); BuildFDArrayUsed(i); ReadFDArray(i); fonts[i].CharsetLength = CountCharset(fonts[i].charsetOffset, fonts[i].nglyphs);
GBias = CalcBias(gsubrIndexOffset, j); BuildNewCharString(j); BuildNewLGSubrs(j); return BuildNewFile(j); } catch (java.io.IOException e) { throw new IOException(IOException.IoException, e);
/** * Function uses BuildNewIndex to create the new index of the subset charstrings * * @param FontIndex the font * @throws java.io.IOException */ protected void BuildNewCharString(int FontIndex) throws java.io.IOException { NewCharStringsIndex = BuildNewIndex(fonts[FontIndex].charstringsOffsets, GlyphsUsed, ENDCHAR_OP); }
CopyHeader(); BuildIndexHeader(1, 1, 1); OutputList.addLast(new UInt8Item((char) (1 + fonts[Font].name.length()))); OutputList.addLast(new StringItem(fonts[Font].name)); BuildIndexHeader(1, 2, 1); OffsetItem topdictIndex1Ref = new IndexOffsetItem(2); OutputList.addLast(topdictIndex1Ref); seek(topdictOffsets[Font]); while (getPosition() < topdictOffsets[Font + 1]) { int p1 = getPosition(); getDictItem(); int p2 = getPosition(); CreateKeys(fdarrayRef, fdselectRef, charsetRef, charstringsRef); OutputList.addLast(getEntireIndexRange(stringIndexOffset)); CreateNewStringIndex(Font); CreateFDSelect(fdselectRef, fonts[Font].nglyphs); Reconstruct(Font); } else CreateFDArray(fdarrayRef, privateRef, Font);
BuildFDSubrsOffsets(Font, FD); BuildSubrUsed(Font, FD, fonts[Font].PrivateSubrsOffset[FD], fonts[Font].PrivateSubrsOffsetsArray[FD], hSubrsUsed.get(FD), lSubrsUsed.get(FD)); NewLSubrsIndex[FD] = BuildNewIndex(fonts[Font].PrivateSubrsOffsetsArray[FD], hSubrsUsed.get(FD), RETURN_OP); fonts[Font].SubrsOffsets = getIndex(fonts[Font].privateSubrs); BuildSubrUsed(Font, -1, fonts[Font].privateSubrs, fonts[Font].SubrsOffsets, hSubrsUsedNonCID, lSubrsUsedNonCID); BuildGSubrsUsed(Font); if (fonts[Font].privateSubrs >= 0) NewSubrsIndexNonCID = BuildNewIndex(fonts[Font].SubrsOffsets, hSubrsUsedNonCID, RETURN_OP); NewGSubrsIndex = BuildNewIndexAndCopyAllGSubrs(gsubrOffsets, RETURN_OP);
BuildIndexHeader(fonts[Font].FDArrayCount, fonts[Font].FDArrayOffsize, 1); seek(fonts[Font].FDArrayOffsets[k]); while (getPosition() < fonts[Font].FDArrayOffsets[k + 1]) { int p1 = getPosition(); getDictItem(); int p2 = getPosition(); int OrgSubrsOffsetSize = CalcSubrOffsetSize(fonts[Font].fdprivateOffsets[k], fonts[Font].fdprivateLengths[k]); OutputList.addLast(new UInt8Item((char) 18)); // Private seek(p2);
byte[] cffBytes = ttf.getFontStreamBytes(); if (subset || subsetRanges != null) { CFFFontSubset cff = new CFFFontSubset(ttf.getFontStreamBytes(), longTag); cffBytes = cff.Process(cff.getNames()[0]);
OutputList.addLast(new MarkerItem(fdarrayRef)); BuildIndexHeader(1, 1, 1); int OrgSubrsOffsetSize = CalcSubrOffsetSize(fonts[Font].privateOffset, fonts[Font].privateLength);
return AssembleIndex(NewOffsets, NewObjects);
CopyHeader(); BuildIndexHeader(1, 1, 1); OutputList.addLast(new UInt8Item((char) (1 + fonts[Font].name.length()))); OutputList.addLast(new StringItem(fonts[Font].name)); BuildIndexHeader(1, 2, 1); OffsetItem topdictIndex1Ref = new IndexOffsetItem(2); OutputList.addLast(topdictIndex1Ref); seek(topdictOffsets[Font]); while (getPosition() < topdictOffsets[Font + 1]) { int p1 = getPosition(); getDictItem(); int p2 = getPosition(); CreateKeys(fdarrayRef, fdselectRef, charsetRef, charstringsRef); OutputList.addLast(getEntireIndexRange(stringIndexOffset)); CreateNewStringIndex(Font); CreateFDSelect(fdselectRef, fonts[Font].nglyphs); Reconstruct(Font); } else CreateFDArray(fdarrayRef, privateRef, Font);
BuildFDSubrsOffsets(Font, FD); BuildSubrUsed(Font, FD, fonts[Font].PrivateSubrsOffset[FD], fonts[Font].PrivateSubrsOffsetsArray[FD], hSubrsUsed.get(FD), lSubrsUsed.get(FD)); NewLSubrsIndex[FD] = BuildNewIndex(fonts[Font].PrivateSubrsOffsetsArray[FD], hSubrsUsed.get(FD), RETURN_OP); fonts[Font].SubrsOffsets = getIndex(fonts[Font].privateSubrs); BuildSubrUsed(Font, -1, fonts[Font].privateSubrs, fonts[Font].SubrsOffsets, hSubrsUsedNonCID, lSubrsUsedNonCID); BuildGSubrsUsed(Font); if (fonts[Font].privateSubrs >= 0) NewSubrsIndexNonCID = BuildNewIndex(fonts[Font].SubrsOffsets, hSubrsUsedNonCID, RETURN_OP); NewGSubrsIndex = BuildNewIndexAndCopyAllGSubrs(gsubrOffsets, RETURN_OP);
BuildIndexHeader(fonts[Font].FDArrayCount, fonts[Font].FDArrayOffsize, 1); seek(fonts[Font].FDArrayOffsets[k]); while (getPosition() < fonts[Font].FDArrayOffsets[k + 1]) { int p1 = getPosition(); getDictItem(); int p2 = getPosition(); int OrgSubrsOffsetSize = CalcSubrOffsetSize(fonts[Font].fdprivateOffsets[k], fonts[Font].fdprivateLengths[k]); OutputList.addLast(new UInt8Item((char) 18)); // Private seek(p2);
OutputList.addLast(new MarkerItem(fdarrayRef)); BuildIndexHeader(1, 1, 1); int OrgSubrsOffsetSize = CalcSubrOffsetSize(fonts[Font].privateOffset, fonts[Font].privateLength);
return AssembleIndex(NewOffsets, NewObjects);
seek(fonts[i].charstringsOffset); fonts[i].nglyphs = getCard16(); seek(stringIndexOffset); fonts[i].nstrings = getCard16() + standardStrings.length; fonts[i].charstringsOffsets = getIndex(fonts[i].charstringsOffset); readFDSelect(i); BuildFDArrayUsed(i); ReadFDArray(i); fonts[i].CharsetLength = CountCharset(fonts[i].charsetOffset, fonts[i].nglyphs);
GBias = CalcBias(gsubrIndexOffset, j); BuildNewCharString(j); BuildNewLGSubrs(j); return BuildNewFile(j); } catch (java.io.IOException e) { throw new IOException(IOException.IoException, e);
return AssembleIndex(NewOffsets, NewObjects);
/** * Function uses BuildNewIndex to create the new index of the subset charstrings * * @param FontIndex the font * @throws java.io.IOException */ protected void BuildNewCharString(int FontIndex) throws java.io.IOException { NewCharStringsIndex = BuildNewIndex(fonts[FontIndex].charstringsOffsets, GlyphsUsed, ENDCHAR_OP); }
return AssembleIndex(NewOffsets, NewObjects);