private CharDef parseChar(final String line) throws Exception { CharDef def = new CharDef(); StringTokenizer tokens = new StringTokenizer(line, " ="); tokens.nextToken(); tokens.nextToken(); def.id = Short.parseShort(tokens.nextToken()); if (def.id < 0) { return null; } if (def.id > DEFAULT_MAX_CHAR) { throw new Exception(def.id + " > " + DEFAULT_MAX_CHAR); } tokens.nextToken(); def.tx = Short.parseShort(tokens.nextToken()); tokens.nextToken(); def.ty = Short.parseShort(tokens.nextToken()); tokens.nextToken(); def.width = Short.parseShort(tokens.nextToken()); tokens.nextToken(); def.height = Short.parseShort(tokens.nextToken()); tokens.nextToken(); def.xoffset = Short.parseShort(tokens.nextToken()); tokens.nextToken(); def.yoffset = Short.parseShort(tokens.nextToken()); tokens.nextToken(); def.advance = Short.parseShort(tokens.nextToken()); if (def.id != (short) ' ') { lineHeight = MathUtils.max(def.height + def.yoffset, lineHeight); } return def; }
/** * Parse a single character line from the definition * * @param line The line to be parsed * @return The character definition from the line * @throws SlickException Indicates a given character is not valid in an angel code font */ private CharDef parseChar(String line) throws SlickException { CharDef def = new CharDef(); StringTokenizer tokens = new StringTokenizer(line, " ="); tokens.nextToken(); // char tokens.nextToken(); // id def.id = Short.parseShort(tokens.nextToken()); // id value if (def.id < 0) { return null; } if (def.id > MAX_CHAR) { throw new SlickException( "Invalid character '" + def.id + "': AngelCodeFont does not support characters above " + MAX_CHAR); } tokens.nextToken(); // x def.x = Short.parseShort(tokens.nextToken()); // x value tokens.nextToken(); // y def.y = Short.parseShort(tokens.nextToken()); // y value tokens.nextToken(); // width def.width = Short.parseShort(tokens.nextToken()); // width value tokens.nextToken(); // height def.height = Short.parseShort(tokens.nextToken()); // height value tokens.nextToken(); // x offset def.xoffset = Short.parseShort(tokens.nextToken()); // xoffset value tokens.nextToken(); // y offset def.yoffset = Short.parseShort(tokens.nextToken()); // yoffset value tokens.nextToken(); // xadvance def.xadvance = Short.parseShort(tokens.nextToken()); // xadvance def.init(); if (def.id != ' ') { lineHeight = Math.max(def.height + def.yoffset, lineHeight); } return def; }