X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/e9aeedc51047d8d5e9e45c5253c776f8994da965..3a0c83394d5783715fab2be29fa1a9cfc3574e28:/src/librarian/font-optimizer/ext/Font-TTF/lib/Font/TTF/Glyf.pm diff --git a/src/librarian/font-optimizer/ext/Font-TTF/lib/Font/TTF/Glyf.pm b/src/librarian/font-optimizer/ext/Font-TTF/lib/Font/TTF/Glyf.pm deleted file mode 100644 index e0268f3..0000000 --- a/src/librarian/font-optimizer/ext/Font-TTF/lib/Font/TTF/Glyf.pm +++ /dev/null @@ -1,158 +0,0 @@ -package Font::TTF::Glyf; - -=head1 NAME - -Font::TTF::Glyf - The Glyf data table - -=head1 DESCRIPTION - -This is a stub table. The real data is held in the loca table. If you want to get a glyf -look it up in the loca table as C<$f->{'loca'}{'glyphs'}[$num]>. It won't be here! - -The difference between reading this table as opposed to the loca table is that -reading this table will cause updated glyphs to be written out rather than just -copying the glyph information from the input file. This causes font writing to be -slower. So read the glyf as opposed to the loca table if you want to change glyf -data. Read the loca table only if you are just wanting to read the glyf information. - -This class is used when writing the glyphs though. - -=head1 METHODS - -=cut - - -use strict; -use vars qw(@ISA); -@ISA = qw(Font::TTF::Table); - -=head2 $t->read - -Reads the C table instead! - -=cut - -sub read -{ - my ($self) = @_; - - $self->{' PARENT'}{'loca'}->read; - $self->{' read'} = 1; - $self; -} - - -=head2 $t->out($fh) - -Writes out all the glyphs in the parent's location table, calculating a new -output location for each one. - -=cut - -sub out -{ - my ($self, $fh) = @_; - my ($i, $loca, $offset, $numGlyphs); - - return $self->SUPER::out($fh) unless $self->{' read'}; - - $loca = $self->{' PARENT'}{'loca'}{'glyphs'}; - $numGlyphs = $self->{' PARENT'}{'maxp'}{'numGlyphs'}; - - $offset = 0; - for ($i = 0; $i < $numGlyphs; $i++) - { - next unless defined $loca->[$i]; - $loca->[$i]->update; - $loca->[$i]{' OUTLOC'} = $offset; - $loca->[$i]->out($fh); - $offset += $loca->[$i]{' OUTLEN'}; - } - $self->{' PARENT'}{'head'}{'indexToLocFormat'} = ($offset >= 0x20000); - $self; -} - - -=head2 $t->out_xml($context, $depth) - -Outputs all the glyphs in the glyph table just where they are supposed to be output! - -=cut - -sub out_xml -{ - my ($self, $context, $depth) = @_; - my ($fh) = $context->{'fh'}; - my ($loca, $i, $numGlyphs); - - $loca = $self->{' PARENT'}{'loca'}{'glyphs'}; - $numGlyphs = $self->{' PARENT'}{'maxp'}{'numGlyphs'}; - - for ($i = 0; $i < $numGlyphs; $i++) - { - $context->{'gid'} = $i; - $loca->[$i]->out_xml($context, $depth) if (defined $loca->[$i]); - } - - $self; -} - - -=head2 $t->XML_start($context, $tag, %attrs) - -Pass control to glyphs as they occur - -=cut - -sub XML_start -{ - my ($self) = shift; - my ($context, $tag, %attrs) = @_; - - if ($tag eq 'glyph') - { - $context->{'tree'}[-1] = Font::TTF::Glyph->new(read => 2, PARENT => $self->{' PARENT'}); - $context->{'receiver'} = $context->{'tree'}[-1]; - } -} - - -=head2 $t->XML_end($context, $tag, %attrs) - -Collect up glyphs and put them into the loca table - -=cut - -sub XML_end -{ - my ($self) = shift; - my ($context, $tag, %attrs) = @_; - - if ($tag eq 'glyph') - { - unless (defined $context->{'glyphs'}) - { - if (defined $self->{' PARENT'}{'loca'}) - { $context->{'glyphs'} = $self->{' PARENT'}{'loca'}{'glyphs'}; } - else - { $context->{'glyphs'} = []; } - } - $context->{'glyphs'}[$attrs{'gid'}] = $context->{'tree'}[-1]; - return $context; - } else - { return $self->SUPER::XML_end(@_); } -} - -1; - -=head1 BUGS - -None known - -=head1 AUTHOR - -Martin Hosken Martin_Hosken@sil.org. See L for copyright and -licensing. - -=cut -