Author: lehmi
Date: Sun May 4 10:16:38 2025
New Revision: 1925391
URL: http://svn.apache.org/viewvc?rev=1925391&view=rev
Log:
PDFBOX-6000: avoid StringBuilder creation based on a proposal of Axel Howind
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java?rev=1925391&r1=1925390&r2=1925391&view=diff
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
(original)
+++
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
Sun May 4 10:16:38 2025
@@ -231,38 +231,14 @@ public final class GlyphList
{
unicode = toUnicode(name.substring(0, name.indexOf('.')));
}
- else if (name.startsWith("uni") && name.length() == 7)
+ else if ((name.length() == 7 && name.startsWith("uni"))
+ || (name.length() == 5 && name.startsWith("u")))
{
// test for Unicode name in the format uniXXXX where X is hex
- int nameLength = name.length();
- StringBuilder uniStr = new StringBuilder();
+ int start = name.startsWith("uni") ? 3 : 1;
try
{
- for (int chPos = 3; chPos + 4 <= nameLength; chPos += 4)
- {
- int codePoint = Integer.parseInt(name.substring(chPos,
chPos + 4), 16);
- if (codePoint > 0xD7FF && codePoint < 0xE000)
- {
- LOG.warn("Unicode character name with disallowed
code area: " + name);
- }
- else
- {
- uniStr.append((char) codePoint);
- }
- }
- unicode = uniStr.toString();
- }
- catch (NumberFormatException nfe)
- {
- LOG.warn("Not a number in Unicode character name: " +
name);
- }
- }
- else if (name.startsWith("u") && name.length() == 5)
- {
- // test for an alternate Unicode name representation uXXXX
- try
- {
- int codePoint = Integer.parseInt(name.substring(1), 16);
+ int codePoint = Integer.parseInt(name.substring(start),
16);
if (codePoint > 0xD7FF && codePoint < 0xE000)
{
LOG.warn("Unicode character name with disallowed code
area: " + name);