sub
canon {
my
(
$line
)=
@_
;
$line
=~s/[^a-z0-9]+//gi;
return
lc
(
$line
);
}
sub
new {
my
$class
=
shift
(
@_
);
my
$this
={};
bless
(
$this
);
$this
->{
'_ALIAS'
}={};
%{
$this
->{
'_ALIAS'
}}=(
canon(
'Adobe'
) =>
'AdobeStandard'
,
canon(
'AdobeStandard'
) =>
'AdobeStandard'
,
canon(
'AdobeSymbol'
) =>
'AdobeSymbol'
,
canon(
'ZapfDingbats'
) =>
'AdobeZapfDingbats'
,
canon(
'AdobeZapfDingbats'
) =>
'AdobeZapfDingbats'
,
canon(
'ISO-Latin-1'
) =>
'ISOLatin1'
,
canon(
'ISO-8859-1'
) =>
'ISOLatin1'
,
canon(
'Latin1'
) =>
'ISOLatin1'
,
canon(
'L1'
) =>
'ISOLatin1'
,
canon(
'MicrosoftAnsi'
) =>
'MicrosoftAnsi'
,
canon(
'WinAnsi'
) =>
'MicrosoftAnsi'
,
canon(
'MsCP1250'
) =>
'MicrosoftAnsi'
,
canon(
'CP1250'
) =>
'MicrosoftAnsi'
,
canon(
'MS-Latin-1'
) =>
'MicrosoftAnsi'
,
canon(
'MicrosoftSymbol'
) =>
'MicrosoftSymbol'
,
canon(
'WinSymbol'
) =>
'MicrosoftSymbol'
,
canon(
'MS-Symbol'
) =>
'MicrosoftSymbol'
,
canon(
'Symbol'
) =>
'MicrosoftSymbol'
,
canon(
'Mac'
) =>
'MacRoman'
,
canon(
'MacRoman'
) =>
'MacRoman'
,
canon(
'Mac-Latin-1'
) =>
'MacRoman'
,
);
return
$this
;
}
sub
addalias {
my
$this
=
shift
(
@_
);
my
(
$benc
,
$enc
)=
@_
;
if
(!
$this
->{
'_ALIAS'
}) {
$this
->{
'_ALIAS'
}=();
}
$this
->{
'_ALIAS'
}{
$enc
}=
$benc
;
}
sub
add {
my
$this
=
shift
(
@_
);
my
@encs
=
@_
;
my
(
$benc
,
$x
,
@ret
)=();
foreach
my
$enc
(
@encs
) {
$enc
=~s/[^a-z0-9]+//gi;
$enc
=
lc
(
$enc
);
if
(
$benc
=
$this
->{
'_ALIAS'
}{
$enc
}) {
if
(!
$this
->{
$benc
}) {
eval
("
\
$this
->{\
$benc
}=Text::PDF::API::Encoding::
$benc
->new;
");
push
(
@ret
,
$benc
);
}
else
{
push
(
@ret
,
$benc
);
}
}
else
{
print
STDERR
""
;
push
(
@ret
,
undef
);
}
}
return
@ret
;
}
sub
newEncoding {
my
$this
=
shift
(
@_
);
my
(
$benc
,
$map
)=
@_
;
$this
->{
'_ALIAS'
}{canon(
$benc
)}=
$benc
;
if
(
ref
(
$map
) EQ
'HASH'
) {
$this
->{
$benc
}=Text::PDF::API::Encoding::Generic->new(
%$map
);
}
elsif
(
$this
->{
$this
->{
'_ALIAS'
}{canon(
$map
)}}) {
$this
->{
$benc
}=Text::PDF::API::Encoding::Generic->new(%{
$this
->{
$this
->{
'_ALIAS'
}{canon(
$map
)}}{
'e2u'
}});
}
else
{
$this
->{
$benc
}=Text::PDF::API::Encoding::Generic->new();
}
}
sub
addEncoding {
my
$this
=
shift
(
@_
);
my
(
$benc
,
%map
)=
@_
;
if
((
ref
(
$map
) EQ
'HASH'
) && (
ref
(
$this
->{canon(
$benc
)}) EQ
'Text::PDF::API::Encoding::Generic'
)) {
$this
->{
$benc
}->add(
%$map
);
}
else
{
}
}
sub
lookUp {
my
(
$this
,
$enc
,
$code
)=
@_
;
if
(!
$this
->{
$this
->{
'_ALIAS'
}{canon(
$enc
)}}) {
die
"cannot add encoding named '$enc', either unsupported or unknown"
unless
$this
->add(
$enc
);
}
return
$this
->{
$this
->{
'_ALIAS'
}{canon(
$enc
)}}{
'e2u'
}{
$code
};
}
1;