@Override public float getWidth(String name) throws IOException { return getType1CharString(name).getWidth(); }
@Override public Type1CharString getType1CharString(String name) throws IOException { Type1CharString type1 = charStringCache.get(name); if (type1 == null) { byte[] bytes = charstrings.get(name); if (bytes == null) { bytes = charstrings.get(".notdef"); } Type1CharStringParser parser = new Type1CharStringParser(fontName, name); List<Object> sequence = parser.parse(bytes, subrs); type1 = new Type1CharString(this, fontName, name, sequence); charStringCache.put(name, type1); } return type1; }
rmoveTo(numbers.get(0), numbers.get(1)); rmoveTo(0, numbers.get(0)); rmoveTo(numbers.get(0), 0); rlineTo(numbers.get(0), numbers.get(1)); rlineTo(numbers.get(0), 0); rlineTo(0, numbers.get(0)); rrcurveTo(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4), numbers.get(5)); closepath(); rrcurveTo(0, numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), 0); rrcurveTo(numbers.get(0), 0, numbers.get(1), numbers.get(2), 0, numbers.get(3)); seac(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4)); setcurrentpoint(numbers.get(0), numbers.get(1)); callothersubr(numbers.get(0).intValue());
@Override public GeneralPath getPath(String name) throws IOException { return getType1CharString(name).getPath(); }
/** * Returns the advance width of the glyph. * @return the width */ public int getWidth() { synchronized(LOG) { if (path == null) { render(); } } return width; }
@Override public float getHeight(int code) throws IOException { String name = codeToName(code); float height = 0; if (!glyphHeights.containsKey(name)) { height = (float)cffFont.getType1CharString(name).getBounds().getHeight(); // todo: cffFont could be null glyphHeights.put(name, height); } return height; }
rrcurveTo(flexPoints.get(1).getX(), flexPoints.get(1).getY(), flexPoints.get(2).getX(), flexPoints.get(2).getY(), flexPoints.get(3).getX(), flexPoints.get(3).getY()); rrcurveTo(flexPoints.get(4).getX(), flexPoints.get(4).getY(), flexPoints.get(5).getX(), flexPoints.get(5).getY(), flexPoints.get(6).getX(), flexPoints.get(6).getY());
@Override public GeneralPath getPath(String name) throws IOException { return getType1CharString(name).getPath(); }
/** * Returns the path of the character. * @return the path */ public GeneralPath getPath() { synchronized(LOG) { if (path == null) { render(); } } return path; }
@Override public float getHeight(int code) throws IOException { String name = codeToName(code); float height = 0; if (!glyphHeights.containsKey(name)) { height = (float)cffFont.getType1CharString(name).getBounds().getHeight(); // todo: cffFont could be null glyphHeights.put(name, height); } return height; }
rrcurveTo(flexPoints.get(1).getX(), flexPoints.get(1).getY(), flexPoints.get(2).getX(), flexPoints.get(2).getY(), flexPoints.get(3).getX(), flexPoints.get(3).getY()); rrcurveTo(flexPoints.get(4).getX(), flexPoints.get(4).getY(), flexPoints.get(5).getX(), flexPoints.get(5).getY(), flexPoints.get(6).getX(), flexPoints.get(6).getY());
rmoveTo(numbers.get(0), numbers.get(1)); rmoveTo(0, numbers.get(0)); rmoveTo(numbers.get(0), 0); rlineTo(numbers.get(0), numbers.get(1)); rlineTo(numbers.get(0), 0); rlineTo(0, numbers.get(0)); rrcurveTo(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4), numbers.get(5)); closepath(); rrcurveTo(0, numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), 0); rrcurveTo(numbers.get(0), 0, numbers.get(1), numbers.get(2), 0, numbers.get(3)); seac(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4)); setcurrentpoint(numbers.get(0), numbers.get(1)); callothersubr(numbers.get(0).intValue());
@Override public float getWidth(String name) throws IOException { return getType1CharString(name).getWidth(); }
/** * Returns the bounds of the renderer path. * @return the bounds as Rectangle2D */ public Rectangle2D getBounds() { synchronized(LOG) { if (path == null) { render(); } } return path.getBounds2D(); }
@Override public float getHeight(int code) throws IOException { String name = codeToName(code); float height = 0; if (!glyphHeights.containsKey(name)) { height = (float)cffFont.getType1CharString(name).getBounds().getHeight(); // todo: cffFont could be null glyphHeights.put(name, height); } return height; }
@Override public Type1CharString getType1CharString(String name) throws IOException { Type1CharString type1 = charStringCache.get(name); if (type1 == null) { byte[] bytes = charstrings.get(name); if (bytes == null) { bytes = charstrings.get(".notdef"); } Type1CharStringParser parser = new Type1CharStringParser(fontName, name); List<Object> sequence = parser.parse(bytes, subrs); type1 = new Type1CharString(this, fontName, name, sequence); charStringCache.put(name, type1); } return type1; }
rrcurveTo(flexPoints.get(1).getX(), flexPoints.get(1).getY(), flexPoints.get(2).getX(), flexPoints.get(2).getY(), flexPoints.get(3).getX(), flexPoints.get(3).getY()); rrcurveTo(flexPoints.get(4).getX(), flexPoints.get(4).getY(), flexPoints.get(5).getX(), flexPoints.get(5).getY(), flexPoints.get(6).getX(), flexPoints.get(6).getY());
rmoveTo(numbers.get(0), numbers.get(1)); rmoveTo(0, numbers.get(0)); rmoveTo(numbers.get(0), 0); rlineTo(numbers.get(0), numbers.get(1)); rlineTo(numbers.get(0), 0); rlineTo(0, numbers.get(0)); rrcurveTo(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4), numbers.get(5)); closepath(); rrcurveTo(0, numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), 0); rrcurveTo(numbers.get(0), 0, numbers.get(1), numbers.get(2), 0, numbers.get(3)); seac(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4)); setcurrentpoint(numbers.get(0), numbers.get(1)); callothersubr(numbers.get(0).intValue());
@Override public float getStringWidth(String string) throws IOException { float width = 0; for (int i = 0; i < string.length(); i++) { int codePoint = string.codePointAt(i); String name = getGlyphList().codePointToName(codePoint); width += cffFont.getType1CharString(name).getWidth(); } return width; }