diff options
author | Deri James <deri@chuzzlewit.myzen.co.uk> | 2024-01-14 13:57:30 +0000 |
---|---|---|
committer | Deri James <deri@chuzzlewit.myzen.co.uk> | 2024-01-14 13:57:30 +0000 |
commit | e62b188aacb0669bf45628796dd543992e440047 (patch) | |
tree | 872346e4918a08c07a43203c436329891e34bd63 | |
parent | 2b13d7e6683b915100addd4aacf4b74c5d9df12a (diff) |
* src/devices/gropdf/gropdf.pl: Do not use hexed label unless
necessary.
Restores the ability for some pdf viewers to accept "#label" as
suffix to filename.
-rw-r--r-- | src/devices/gropdf/gropdf.pl | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl index 870eca5e8..f0b04909a 100644 --- a/src/devices/gropdf/gropdf.pl +++ b/src/devices/gropdf/gropdf.pl @@ -2002,6 +2002,7 @@ sub Clean sub utf16 { my $p=Clean(shift); + my $label=shift; $p=~s/\\\[(.*?)\]/FindChr($1,0)/eg; $p=~s/\\C($parcln)/FindChr($1,1)/eg; @@ -2014,6 +2015,8 @@ sub utf16 unpack "C*", encode('utf16', $p); } + return($p) if $label; + $p=~s/(?<!\\)\(/\\\(/g; $p=~s/(?<!\\)\)/\\\)/g; @@ -2059,14 +2062,19 @@ sub UTFName my $r=''; $s=substr($s,1); - return '/'.join '', map { MakeLabel($_) } unpack('C*',$s); + my $s1=$s; + $s1=~s/([[:xdigit:]]{2})/chr(hex($1))/eg; + my $s2=utf16($s1,1); +# return "/".MakeLabel((substr($s2,0,1) eq '/')?$s:$s2); + my $s3='/'.join '', map { MakeLabel($_) } unpack('C*',(substr($s2,0,1) eq '\\')?$s:$s2); + return $s3; } sub MakeLabel { my $c=chr(shift); - return($c) if $c=~m/[\w:]/; + return($c) if ($c=~m/[\w\d:]/); return(sprintf("#%02x",ord($c))); } |