writeFixed(out, h.getVersion()); writeSInt16(out, h.getAscender()); writeSInt16(out, h.getDescender()); writeSInt16(out, h.getLineGap()); writeUint16(out, h.getAdvanceWidthMax()); writeSInt16(out, h.getMinLeftSideBearing()); writeSInt16(out, h.getMinRightSideBearing()); writeSInt16(out, h.getXMaxExtent()); writeSInt16(out, h.getCaretSlopeRise()); writeSInt16(out, h.getCaretSlopeRun()); writeSInt16(out, h.getReserved1()); // caretOffset writeSInt16(out, h.getReserved2()); writeSInt16(out, h.getReserved3()); writeSInt16(out, h.getReserved4()); writeSInt16(out, h.getReserved5()); writeSInt16(out, h.getMetricDataFormat()); int hmetrics = glyphIds.subSet(0, h.getNumberOfHMetrics()).size(); if (glyphIds.last() >= h.getNumberOfHMetrics() && !glyphIds.contains(h.getNumberOfHMetrics()-1))
@Override public float getHeight(int code) throws IOException { // todo: really we want the BBox, (for text extraction:) return (ttf.getHorizontalHeader().getAscender() + -ttf.getHorizontalHeader().getDescender()) / ttf.getUnitsPerEm(); // todo: shouldn't this be the yMax/yMin? }
ttf.getHorizontalHeader().getNumberOfHMetrics() == 1); fd.setAscent(hHeader.getAscender() * scaling); fd.setDescent(hHeader.getDescender() * scaling);
int lastgid = h.getNumberOfHMetrics() - 1; offset = h.getNumberOfHMetrics() * 4 + (glyphId - h.getNumberOfHMetrics()) * 2; lastOffset = copyBytes(is, bos, offset, lastOffset, 2);
break; case HorizontalHeaderTable.TAG: table = new HorizontalHeaderTable(font); break; case HorizontalMetricsTable.TAG:
ttf.getHorizontalHeader().getNumberOfHMetrics() == 1); fd.setAscent(hHeader.getAscender() * scaling); fd.setDescent(hHeader.getDescender() * scaling);
@Override public float getHeight(int code) throws IOException { // todo: really we want the BBox, (for text extraction:) return (ttf.getHorizontalHeader().getAscender() + -ttf.getHorizontalHeader().getDescender()) / ttf.getUnitsPerEm(); // todo: shouldn't this be the yMax/yMin? }
numHMetrics = hHeader.getNumberOfHMetrics(); int numGlyphs = ttf.getNumberOfGlyphs();
table = new HorizontalHeaderTable(font);
writeFixed(out, h.getVersion()); writeSInt16(out, h.getAscender()); writeSInt16(out, h.getDescender()); writeSInt16(out, h.getLineGap()); writeUint16(out, h.getAdvanceWidthMax()); writeSInt16(out, h.getMinLeftSideBearing()); writeSInt16(out, h.getMinRightSideBearing()); writeSInt16(out, h.getXMaxExtent()); writeSInt16(out, h.getCaretSlopeRise()); writeSInt16(out, h.getCaretSlopeRun()); writeSInt16(out, h.getReserved1()); // caretOffset writeSInt16(out, h.getReserved2()); writeSInt16(out, h.getReserved3()); writeSInt16(out, h.getReserved4()); writeSInt16(out, h.getReserved5()); writeSInt16(out, h.getMetricDataFormat()); int hmetrics = glyphIds.subSet(0, h.getNumberOfHMetrics()).size(); if (glyphIds.last() >= h.getNumberOfHMetrics() && !glyphIds.contains(h.getNumberOfHMetrics()-1))
ttf.getHorizontalHeader().getNumberOfHMetrics() == 1); fd.setAscent(hHeader.getAscender() * scaling); fd.setDescent(hHeader.getDescender() * scaling);
@Override public float getHeight(int code) throws IOException { // todo: really we want the BBox, (for text extraction:) return (ttf.getHorizontalHeader().getAscender() + -ttf.getHorizontalHeader().getDescender()) / ttf.getUnitsPerEm(); // todo: shouldn't this be the yMax/yMin? }
int lastgid = h.getNumberOfHMetrics() - 1; offset = h.getNumberOfHMetrics() * 4 + (glyphId - h.getNumberOfHMetrics()) * 2; lastOffset = copyBytes(is, bos, offset, lastOffset, 2);
break; case HorizontalHeaderTable.TAG: table = new HorizontalHeaderTable(font); break; case HorizontalMetricsTable.TAG:
writeFixed(out, h.getVersion()); writeSInt16(out, h.getAscender()); writeSInt16(out, h.getDescender()); writeSInt16(out, h.getLineGap()); writeUint16(out, h.getAdvanceWidthMax()); writeSInt16(out, h.getMinLeftSideBearing()); writeSInt16(out, h.getMinRightSideBearing()); writeSInt16(out, h.getXMaxExtent()); writeSInt16(out, h.getCaretSlopeRise()); writeSInt16(out, h.getCaretSlopeRun()); writeSInt16(out, h.getReserved1()); // caretOffset writeSInt16(out, h.getReserved2()); writeSInt16(out, h.getReserved3()); writeSInt16(out, h.getReserved4()); writeSInt16(out, h.getReserved5()); writeSInt16(out, h.getMetricDataFormat()); int hmetrics = glyphIds.subSet(0, h.getNumberOfHMetrics()).size(); if (glyphIds.last() >= h.getNumberOfHMetrics() && !glyphIds.contains(h.getNumberOfHMetrics()-1))
int lastgid = h.getNumberOfHMetrics() - 1; offset = h.getNumberOfHMetrics() * 4 + (glyphId - h.getNumberOfHMetrics()) * 2; lastOffset = copyBytes(is, bos, offset, lastOffset, 2);
numHMetrics = hHeader.getNumberOfHMetrics(); int numGlyphs = ttf.getNumberOfGlyphs();
numHMetrics = hHeader.getNumberOfHMetrics(); int numGlyphs = ttf.getNumberOfGlyphs();