You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2024/03/15 14:25:06 UTC
svn commit: r1916342 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/afm/AFMParser.java
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 + "'");
}