You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2015/02/01 01:57:14 UTC

svn commit: r1656260 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java

Author: jahewson
Date: Sun Feb  1 00:57:14 2015
New Revision: 1656260

URL: http://svn.apache.org/r1656260
Log:
PDFBOX-2649: encode string only once

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java?rev=1656260&r1=1656259&r2=1656260&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java Sun Feb  1 00:57:14 2015
@@ -294,22 +294,16 @@ public abstract class PDFont implements
      */
     public float getStringWidth(String text) throws IOException
     {
+        byte[] bytes = encode(text);
+        ByteArrayInputStream in = new ByteArrayInputStream(bytes);
+        
         float width = 0;
-        int offset = 0, length = text.length();
-        while (offset < length)
+        while (in.available() > 0)
         {
-            int codePoint = text.codePointAt(offset);
-            offset += Character.charCount(codePoint);
-            
-            byte[] bytes = encode(text);
-            ByteArrayInputStream in = new ByteArrayInputStream(bytes);
-            while (in.available() > 0)
-            {
-                int code = readCode(in);
-                width += getWidth(code);
-            }
-            
+            int code = readCode(in);
+            width += getWidth(code);
         }
+        
         return width;
     }