Author: tilman Date: Tue Jun 25 12:25:51 2024 New Revision: 1918588 URL: http://svn.apache.org/viewvc?rev=1918588&view=rev Log: PDFBOX-5660: refactor for future PR by Mykola Bohdiuk
Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java?rev=1918588&r1=1918587&r2=1918588&view=diff ============================================================================== --- pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java (original) +++ pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java Tue Jun 25 12:25:51 2024 @@ -81,41 +81,21 @@ public class NamingTable extends TTFTabl } data.seek(getOffset() + (2*3L)+numberOfNameRecords*2*6+nr.getStringOffset()); - int platform = nr.getPlatformId(); - int encoding = nr.getPlatformEncodingId(); - Charset charset = Charsets.ISO_8859_1; - if (platform == NameRecord.PLATFORM_WINDOWS && (encoding == NameRecord.ENCODING_WINDOWS_SYMBOL || encoding == NameRecord.ENCODING_WINDOWS_UNICODE_BMP)) - { - charset = Charsets.UTF_16; - } - else if (platform == NameRecord.PLATFORM_UNICODE) - { - charset = Charsets.UTF_16; - } - else if (platform == NameRecord.PLATFORM_ISO) - { - switch (encoding) - { - case 0: - charset = Charsets.US_ASCII; - break; - case 1: - //not sure is this is correct?? - charset = Charsets.ISO_10646; - break; - case 2: - charset = Charsets.ISO_8859_1; - break; - default: - break; - } - } + Charset charset = getCharset(nr); String string = data.readString(nr.getStringLength(), charset); nr.setString(string); } - // build multi-dimensional lookup table lookupTable = new HashMap<Integer, Map<Integer, Map<Integer, Map<Integer, String>>>>(nameRecords.size()); + fillLookupTable(); + readInterestingStrings(); + + initialized = true; + } + + private void fillLookupTable() + { + // build multi-dimensional lookup table for (NameRecord nr : nameRecords) { // name id @@ -142,29 +122,63 @@ public class NamingTable extends TTFTabl // language id / string languageLookup.put(nr.getLanguageId(), nr.getString()); } + } + + private Charset getCharset(NameRecord nr) + { + int platform = nr.getPlatformId(); + int encoding = nr.getPlatformEncodingId(); + Charset charset = Charsets.ISO_8859_1; + if (platform == NameRecord.PLATFORM_WINDOWS && (encoding == NameRecord.ENCODING_WINDOWS_SYMBOL || encoding == NameRecord.ENCODING_WINDOWS_UNICODE_BMP)) + { + charset = Charsets.UTF_16; + } + else if (platform == NameRecord.PLATFORM_UNICODE) + { + charset = Charsets.UTF_16; + } + else if (platform == NameRecord.PLATFORM_ISO) + { + switch (encoding) + { + case 0: + charset = Charsets.US_ASCII; + break; + case 1: + //not sure is this is correct?? + charset = Charsets.ISO_10646; + break; + case 2: + charset = Charsets.ISO_8859_1; + break; + default: + break; + } + } + return charset; + } - // extract strings of interest + private void readInterestingStrings() + { fontFamily = getEnglishName(NameRecord.NAME_FONT_FAMILY_NAME); fontSubFamily = getEnglishName(NameRecord.NAME_FONT_SUB_FAMILY_NAME); // extract PostScript name, only these two formats are valid psName = getName(NameRecord.NAME_POSTSCRIPT_NAME, - NameRecord.PLATFORM_MACINTOSH, - NameRecord.ENCODING_MACINTOSH_ROMAN, - NameRecord.LANGUAGE_MACINTOSH_ENGLISH); + NameRecord.PLATFORM_MACINTOSH, + NameRecord.ENCODING_MACINTOSH_ROMAN, + NameRecord.LANGUAGE_MACINTOSH_ENGLISH); if (psName == null) { psName = getName(NameRecord.NAME_POSTSCRIPT_NAME, - NameRecord.PLATFORM_WINDOWS, - NameRecord.ENCODING_WINDOWS_UNICODE_BMP, - NameRecord.LANGUAGE_WINDOWS_EN_US); + NameRecord.PLATFORM_WINDOWS, + NameRecord.ENCODING_WINDOWS_UNICODE_BMP, + NameRecord.LANGUAGE_WINDOWS_EN_US); } if (psName != null) { psName = psName.trim(); } - - initialized = true; } /** @@ -205,7 +219,7 @@ public class NamingTable extends TTFTabl } /** - * Returns a name from the table, or null it it does not exist. + * Returns a name from the table, or null if it does not exist. * * @param nameId Name ID from NameRecord constants. * @param platformId Platform ID from NameRecord constants.