Re: Font names using multi-byte strings
"David Law via fop-users" <[email protected]> Fri, 30 Jan 2026 10:14:42 +0100
| Newsgroups | gmane.text.xml.fop.user |
|---|---|
| Message-ID | <[email protected]> |
Hi,
Would it make sense to use:
characters = name.substring((skipFirst ? 1 :
0)).getBytes(StandardCharsets.UTF_8);
...which does not throw an UnsupportedEncodingException?
All the best,
Dave
On 29/01/2026 20:53, Luca Bellonda wrote:
> I was able to get the same name and I suggest this method:
> 1- Translate the string to UTF-8 bytes representation.
> 2- Get the bytes and encode them instead of characters.
>
> This way the UTF-8 statement should be respected.
> In code (beware: not efficient and without error management):
>
> in escapeName of PDFName:
>
> byte[] characters ;
> // get UTF-8 bytes
> try {
> characters = name.substring((skipFirst ? 1 : 0)).getBytes("UTF-8");
> } catch (UnsupportedEncodingException e) {
> throw new RuntimeException("Invalid Name:"+name);
> }
>
> // encode bytes
> for (int i = 0, c = characters.length; i < c; i++) {
> int ch = (0x00FF&characters[i]);
>
> if (ch < 33 || ch > 126 || ESCAPED_NAME_CHARS.indexOf(ch) >= 0)
> {
> sb.append('#');
> toHex(ch, sb);
> } else {
> char cxc = (char)ch ;
> sb.append(cxc);
> }
> }
> return sb.toString();
>
> where toHex() manages an int
>
> Best regards.
>
> Il giorno gio 29 gen 2026 alle ore 01:28 Joao Andre Goncalves <
> [email protected]> ha scritto:
>
>> I tried that earlier but while the PDF is valid, the font name would not
>> match the original PDF. I did find the following on the ISO document:
>>
>> c) Any character that is not a regular character shall be written using
>> its 2-digit hexadecimal code, preceded by the NUMBER SIGN only.
>>
>>
>>