Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

package Khonsu::Font;
sub attributes {
my $a = shift;
return (
colour => {$a->RW, $a->STR, default => sub { '#000' }},
size => {$a->RW, $a->NUM, default => sub { 9 }},
family => {$a->RW, $a->STR, default => sub { 'Times' }},
loaded => {$a->RW, $a->DHR},
line_height => {$a->RW, $a->NUM, default => sub { $_[0]->size }},
);
}
sub load {
my ($self, $file, %attributes) = @_;
$self->set_attributes(%attributes);
if (!$attributes{line_height} && $self->size > $self->line_height) {
$self->line_height($self->size);
}
return $self->find($file, $self->family);
}
sub find {
my ($self, $file, $family, $enc) = @_;
my $loaded = $self->loaded;
unless ($loaded->{$family}) {
$loaded->{$family} = $file->pdf->corefont($family, -encoding => $enc || 'latin1');
$self->loaded($loaded);
}
return $loaded->{$family};
}
1;