Author: tilman Date: Fri Mar 15 14:25:06 2024 New Revision: 1916342 URL: http://svn.apache.org/viewvc?rev=1916342&view=rev Log: PDFBOX-5660: reorder strings for optimization, as suggested by Guillaume Maillrd
Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java?rev=1916342&r1=1916341&r2=1916342&view=diff ============================================================================== --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java Fri Mar 15 14:25:06 2024 @@ -661,11 +661,35 @@ public class AFMParser String nextCommand = metricsTokenizer.nextToken(); switch (nextCommand) { + // top 5 most used first case CHARMETRICS_C: String charCodeC = metricsTokenizer.nextToken(); charMetric.setCharacterCode(parseInt(charCodeC)); verifySemicolon(metricsTokenizer); break; + case CHARMETRICS_WX: + charMetric.setWx(parseFloat(metricsTokenizer.nextToken())); + verifySemicolon(metricsTokenizer); + break; + case CHARMETRICS_N: + charMetric.setName(metricsTokenizer.nextToken()); + verifySemicolon(metricsTokenizer); + break; + case CHARMETRICS_B: + BoundingBox box = new BoundingBox(); + box.setLowerLeftX(parseFloat(metricsTokenizer.nextToken())); + box.setLowerLeftY(parseFloat(metricsTokenizer.nextToken())); + box.setUpperRightX(parseFloat(metricsTokenizer.nextToken())); + box.setUpperRightY(parseFloat(metricsTokenizer.nextToken())); + charMetric.setBoundingBox(box); + verifySemicolon(metricsTokenizer); + break; + case CHARMETRICS_L: + Ligature lig = new Ligature(metricsTokenizer.nextToken(), + metricsTokenizer.nextToken()); + charMetric.addLigature(lig); + verifySemicolon(metricsTokenizer); + break; case CHARMETRICS_CH: // Is the hex string <FF> or FF, the spec is a little // unclear, wait and see if it breaks anything. @@ -673,10 +697,6 @@ public class AFMParser charMetric.setCharacterCode(parseInt(charCodeCH, BITS_IN_HEX)); verifySemicolon(metricsTokenizer); break; - case CHARMETRICS_WX: - charMetric.setWx(parseFloat(metricsTokenizer.nextToken())); - verifySemicolon(metricsTokenizer); - break; case CHARMETRICS_W0X: charMetric.setW0x(parseFloat(metricsTokenizer.nextToken())); verifySemicolon(metricsTokenizer); @@ -725,25 +745,6 @@ public class AFMParser charMetric.setVv(vv); verifySemicolon(metricsTokenizer); break; - case CHARMETRICS_N: - charMetric.setName(metricsTokenizer.nextToken()); - verifySemicolon(metricsTokenizer); - break; - case CHARMETRICS_B: - BoundingBox box = new BoundingBox(); - box.setLowerLeftX(parseFloat(metricsTokenizer.nextToken())); - box.setLowerLeftY(parseFloat(metricsTokenizer.nextToken())); - box.setUpperRightX(parseFloat(metricsTokenizer.nextToken())); - box.setUpperRightY(parseFloat(metricsTokenizer.nextToken())); - charMetric.setBoundingBox(box); - verifySemicolon(metricsTokenizer); - break; - case CHARMETRICS_L: - Ligature lig = new Ligature(metricsTokenizer.nextToken(), - metricsTokenizer.nextToken()); - charMetric.addLigature(lig); - verifySemicolon(metricsTokenizer); - break; default: throw new IOException("Unknown CharMetrics command '" + nextCommand + "'"); }