Blame lib/Font/TTF/PCLT.pm

Packit 5d935b
package Font::TTF::PCLT;
Packit 5d935b
Packit 5d935b
=head1 NAME
Packit 5d935b
Packit 5d935b
Font::TTF::PCLT - PCLT TrueType font table
Packit 5d935b
Packit 5d935b
=head1 DESCRIPTION
Packit 5d935b
Packit 5d935b
The PCLT table holds various pieces HP-PCL specific information. Information
Packit 5d935b
here is generally not used by other software, except for the xHeight and
Packit 5d935b
CapHeight which are stored here (if the table exists in a font).
Packit 5d935b
Packit 5d935b
=head1 INSTANCE VARIABLES
Packit 5d935b
Packit 5d935b
Only from table and the standard:
Packit 5d935b
Packit 5d935b
    version
Packit 5d935b
    FontNumber
Packit 5d935b
    Pitch
Packit 5d935b
    xHeight
Packit 5d935b
    Style
Packit 5d935b
    TypeFamily
Packit 5d935b
    CapHeight
Packit 5d935b
    SymbolSet
Packit 5d935b
    Typeface
Packit 5d935b
    CharacterComplement
Packit 5d935b
    FileName
Packit 5d935b
    StrokeWeight
Packit 5d935b
    WidthType
Packit 5d935b
    SerifStyle
Packit 5d935b
Packit 5d935b
Notice that C<Typeface>, C<CharacterComplement> and C<FileName> return arrays
Packit 5d935b
of unsigned characters of the appropriate length
Packit 5d935b
Packit 5d935b
=head1 METHODS
Packit 5d935b
Packit 5d935b
=cut
Packit 5d935b
Packit 5d935b
use strict;
Packit 5d935b
use vars qw(@ISA %fields @field_info);
Packit 5d935b
Packit 5d935b
require Font::TTF::Table;
Packit 5d935b
use Font::TTF::Utils;
Packit 5d935b
Packit 5d935b
@ISA = qw(Font::TTF::Table);
Packit 5d935b
@field_info = (
Packit 5d935b
    'version' => 'v',
Packit 5d935b
    'FontNumber' => 'L',
Packit 5d935b
    'Pitch' => 'S',
Packit 5d935b
    'xHeight' => 'S',
Packit 5d935b
    'Style' => 'S',
Packit 5d935b
    'TypeFamily' => 'S',
Packit 5d935b
    'CapHeight' => 'S',
Packit 5d935b
    'SymbolSet' => 'S',
Packit 5d935b
    'Typeface' => 'C16',
Packit 5d935b
    'CharacterComplement' => 'C8',
Packit 5d935b
    'FileName' => 'C6',
Packit 5d935b
    'StrokeWeight' => 'C',
Packit 5d935b
    'WidthType' => 'C',
Packit 5d935b
    'SerifStyle' => 'c');
Packit 5d935b
Packit 5d935b
sub init
Packit 5d935b
{
Packit 5d935b
    my ($k, $v, $c, $i);
Packit 5d935b
    for ($i = 0; $i < $#field_info; $i += 2)
Packit 5d935b
    {
Packit 5d935b
        ($k, $v, $c) = TTF_Init_Fields($field_info[$i], $c, $field_info[$i + 1]);
Packit 5d935b
        next unless defined $k && $k ne "";
Packit 5d935b
        $fields{$k} = $v;
Packit 5d935b
    }
Packit 5d935b
}
Packit 5d935b
Packit 5d935b
Packit 5d935b
=head2 $t->read
Packit 5d935b
Packit 5d935b
Reads the table into memory thanks to some utility functions
Packit 5d935b
Packit 5d935b
=cut
Packit 5d935b
Packit 5d935b
sub read
Packit 5d935b
{
Packit 5d935b
    my ($self) = @_;
Packit 5d935b
    my ($dat);
Packit 5d935b
Packit 5d935b
    $self->SUPER::read || return $self;
Packit 5d935b
Packit 5d935b
    init unless defined $fields{'xHeight'};
Packit 5d935b
    $self->{' INFILE'}->read($dat, 54);
Packit 5d935b
Packit 5d935b
    TTF_Read_Fields($self, $dat, \%fields);
Packit 5d935b
    $self;
Packit 5d935b
}
Packit 5d935b
Packit 5d935b
Packit 5d935b
=head2 $t->out($fh)
Packit 5d935b
Packit 5d935b
Writes the table to a file either from memory or by copying.
Packit 5d935b
Packit 5d935b
=cut
Packit 5d935b
Packit 5d935b
sub out
Packit 5d935b
{
Packit 5d935b
    my ($self, $fh) = @_;
Packit 5d935b
Packit 5d935b
    return $self->SUPER::out($fh) unless $self->{' read'};
Packit 5d935b
    $fh->print(TTF_Out_Fields($self, \%fields, 54));
Packit 5d935b
}
Packit 5d935b
Packit 5d935b
=head2 $t->minsize()
Packit 5d935b
Packit 5d935b
Returns the minimum size this table can be. If it is smaller than this, then the table
Packit 5d935b
must be bad and should be deleted or whatever.
Packit 5d935b
Packit 5d935b
=cut
Packit 5d935b
Packit 5d935b
sub minsize
Packit 5d935b
{
Packit 5d935b
    return 54;
Packit 5d935b
}
Packit 5d935b
Packit 5d935b
1;
Packit 5d935b
Packit 5d935b
=head1 BUGS
Packit 5d935b
Packit 5d935b
None known
Packit 5d935b
Packit 5d935b
=head1 AUTHOR
Packit 5d935b
Packit 5d935b
Martin Hosken L<http://scripts.sil.org/FontUtils>. 
Packit 5d935b
Packit 5d935b
Packit 5d935b
=head1 LICENSING
Packit 5d935b
Packit 5d935b
Copyright (c) 1998-2016, SIL International (http://www.sil.org) 
Packit 5d935b
Packit 5d935b
This module is released under the terms of the Artistic License 2.0. 
Packit 5d935b
For details, see the full text of the license in the file LICENSE.
Packit 5d935b
Packit 5d935b
Packit 5d935b
Packit 5d935b
=cut
Packit 5d935b
Packit 5d935b