our
$VERSION
=
'3.027'
;
our
$LAST_UPDATE
=
'3.027'
;
our
$wf
= {};
$Registry
->Delimiter(
'/'
);
my
$fontdir
=
$Registry
->{
'HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders/Fonts'
};
my
$subKey
=
$Registry
->Open(
'LMachine'
, {
Access
=>KEY_READ(),
Delimiter
=>
'/'
}) or
die
"error opening LMachine: $^E\n"
;
$subKey
=
$subKey
->Open(
'SOFTWARE/Microsoft/Windows NT/CurrentVersion/Fonts/'
) or
die
"error accessing Fonts entry: $^E\n"
;
foreach
my
$k
(
sort
keys
%{
$subKey
}) {
next
unless
$subKey
->{
$k
} =~ /\.[ot]tf$/i;
my
$kk
=
lc
(
$k
);
$kk
=~ s|^/||;
$kk
=~ s|\s+\(truetype\).*$||g;
$kk
=~ s|\s+\(opentype\).*$||g;
$kk
=~ s/[^a-z0-9]+//g;
$wf
->{
$kk
} = {};
$wf
->{
$kk
}->{
'display'
} =
$k
;
$wf
->{
$kk
}->{
'display'
} =~ s|^/||;
if
(-e
"$fontdir/$subKey->{$k}"
) {
$wf
->{
$kk
}->{
'ttfile'
} =
"$fontdir/$subKey->{$k}"
;
}
else
{
$wf
->{
$kk
}->{
'ttfile'
} =
$subKey
->{
$k
};
}
}
$subKey
=
$Registry
->Open(
'LMachine'
, {
Access
=>KEY_READ(),
Delimiter
=>
'/'
}) or
die
"error opening LMachine for T1 fonts: $^E\n"
;
$subKey
=
$subKey
->Open(
'SOFTWARE/Microsoft/Windows NT/CurrentVersion/Type 1 Installer/Type 1 Fonts/'
) or
die
"error accessing T1 Fonts entry: $^E\n"
;
foreach
my
$k
(
sort
keys
%{
$subKey
}) {
my
$kk
=
lc
(
$k
);
$kk
=~ s|^/||;
$kk
=~ s/[^a-z0-9]+//g;
$wf
->{
$kk
} = {};
$wf
->{
$kk
}->{
'display'
} =
$k
;
$wf
->{
$kk
}->{
'display'
} =~ s|^/||;
my
$t
;
(
$t
,
$wf
->{
$kk
}->{
'pfmfile'
},
$wf
->{
$kk
}->{
'pfbfile'
}) =
split
(/\0/,
$subKey
->{
$k
});
if
(-e
"$fontdir/"
.
$wf
->{
$kk
}->{
'pfmfile'
}) {
$wf
->{
$kk
}->{
'pfmfile'
} =
"$fontdir/"
.
$wf
->{
$kk
}->{
'pfmfile'
};
$wf
->{
$kk
}->{
'pfbfile'
} =
"$fontdir/"
.
$wf
->{
$kk
}->{
'pfbfile'
};
}
}
sub
enumwinfonts {
my
$self
=
shift
;
return
map
{
$_
=>
$wf
->{
$_
}->{
'display'
} }
keys
%$wf
;
}
sub
winfont {
my
$self
=
shift
;
my
$key
=
lc
(
shift
());
my
%opts
=
@_
;
$key
=~ s/[^a-z0-9]+//g;
return
unless
defined
$wf
and
defined
$wf
->{
$key
};
if
(
defined
$wf
->{
$key
}->{
'ttfile'
}) {
return
$self
->ttfont(
$wf
->{
$key
}->{
'ttfile'
},
@_
);
}
else
{
return
$self
->psfont(
$wf
->{
$key
}->{
'pfbfile'
},
-pfmfile
=>
$wf
->{
$key
}->{
'pfmfile'
},
@_
);
}
}
1;