Blame lib/Font/TTF/Fpgm.pm

Packit 5d935b
package Font::TTF::Fpgm;
Packit 5d935b
Packit 5d935b
=head1 NAME
Packit 5d935b
Packit 5d935b
Font::TTF::Fpgm - Font program in a TrueType font. Called when a font is loaded
Packit 5d935b
Packit 5d935b
=head1 DESCRIPTION
Packit 5d935b
Packit 5d935b
This is a minimal class adding nothing beyond a table, but is a repository
Packit 5d935b
for fpgm type information for those processes brave enough to address hinting.
Packit 5d935b
Packit 5d935b
=cut
Packit 5d935b
Packit 5d935b
use strict;
Packit 5d935b
use vars qw(@ISA $VERSION);
Packit 5d935b
Packit 5d935b
@ISA = qw(Font::TTF::Table);
Packit 5d935b
Packit 5d935b
$VERSION = 0.0001;
Packit 5d935b
Packit 5d935b
=head2 $t->read
Packit 5d935b
Packit 5d935b
Reading this table is simply a process of reading all the data into the RAM
Packit 5d935b
copy. Nothing more is done with it.
Packit 5d935b
Packit 5d935b
=cut
Packit 5d935b
Packit 5d935b
sub read
Packit 5d935b
{
Packit 5d935b
    $_[0]->read_dat;
Packit 5d935b
    $_[0]->{' read'} = 1;
Packit 5d935b
}
Packit 5d935b
Packit 5d935b
=head2 $t->out_xml($context, $depth)
Packit 5d935b
Packit 5d935b
Outputs Fpgm program as XML
Packit 5d935b
Packit 5d935b
=cut
Packit 5d935b
Packit 5d935b
sub out_xml
Packit 5d935b
{
Packit 5d935b
    my ($self, $context, $depth) = @_;
Packit 5d935b
    my ($fh) = $context->{'fh'};
Packit 5d935b
    my ($dat);
Packit 5d935b
Packit 5d935b
    $self->read;
Packit 5d935b
    $dat = Font::TTF::Utils::XML_binhint($self->{' dat'});
Packit 5d935b
    $dat =~ s/\n(?!$)/\n$depth$context->{'indent'}/omg;
Packit 5d935b
    $fh->print("$depth\n");
Packit 5d935b
    $fh->print("$depth$context->{'indent'}$dat");
Packit 5d935b
    $fh->print("$depth\n");
Packit 5d935b
    $self;
Packit 5d935b
}
Packit 5d935b
Packit 5d935b
Packit 5d935b
=head2 $t->XML_end($context, $tag, %attrs)
Packit 5d935b
Packit 5d935b
Parse all that hinting code
Packit 5d935b
Packit 5d935b
=cut
Packit 5d935b
Packit 5d935b
sub XML_end
Packit 5d935b
{
Packit 5d935b
    my ($self) = shift;
Packit 5d935b
    my ($context, $tag, %attrs) = @_;
Packit 5d935b
Packit 5d935b
    if ($tag eq 'code')
Packit 5d935b
    {
Packit 5d935b
        $self->{' dat'} = Font::TTF::Utils::XML_hintbin($context->{'text'});
Packit 5d935b
        return $context;
Packit 5d935b
    } else
Packit 5d935b
    { return $self->SUPER::XML_end(@_); }
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