Font-TTF-Scripts
view release on metacpan or search on metacpan
lib/Font/Fret.pm view on Meta::CPAN
@rowt = $package->row2hdr($font);
@roww = widths(8, \@rowt);
push (@row2, [[@rowt], [@roww], $maxy - 85, 8]);
# if (0)
for ($pnum = 1; $pnum <= $nump; $pnum++)
{
my ($rtext, $ybase, $xcentre, $row, $yorg);
my ($glyph, $xorg, $xadv, $gxorg, $gyorg, @rowm, @xorg, @parms, $gcol);
print STDERR "." unless ($opt{q} || $^O eq "MacOS");
$ppage = Text::PDF::Page->new($pdf, $root);
$ppage->add($hdrlft . $pcpy . $hdrbox . $ftrleft);
$rpos = $maxx - ($hdrrw + $pdf_helvb->width($pnum) * 9.6) - 36;
$rtext = $hdrright;
$rtext =~ s/\%x/$rpos/oi;
$rtext =~ s/\%p/$pnum/oi;
$ppage->add($rtext);
@row1 = ($row1[0]);
@row2 = ($row2[0]);
$ybase = $maxy - 153;
for ($row = 0; $row < $maxg / $numperow; $row++)
{
$ppage->add(".5 w 36 $ybase " . ($numperow * 54) . " 64 re S ");
for ($i = 0; $i < $numperow - 1; $i++)
{
my ($x) = 90 + $i * 54;
$ppage->add("$x $ybase m $x " . ($ybase + 64) . " l S ");
}
unless ($opt{'r'})
{
$ppage->add(" $dots 264 " . ($ybase + 65.5) . " m " . ($maxx - 36) . " "
. ($ybase + 65.5) . " l s [] 0 d\n");
}
$yorg = $ybase + 32 - ($font->{'head'}{'yMax'} + $font->{'head'}{'yMin'}) * $tsize / $upem / 2;
$ppage->add(sprintf("%s 36 %.4f m %d %.4f l S [] 0 d\n", $dots, $yorg, 36 + $numperow * 54, $yorg)) if ($yorg > $ybase);
$xcentre = 63;
for ($i = 0; $i < $numperow; $i++, $xcentre += 54)
{
next if ($gcount + $i >= $numc);
$gcol = "";
$gid = $package->cid_gid($cids[$gcount + $i], $font);
$gid =~ s/^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\|//oi
&& ($gcol = sprintf("%.2f %.2f %.2f rg",
hex($1), hex($2), hex($3)));
$glyph = $font->{'loca'}{'glyphs'}[$gid];
my @parms = ($cids[$gcount + $i], $gid, $glyph, $rev[$gid], $font);
if ($glyph && $glyph->{' LEN'} != 0)
{
my (@instr, $in);
$glyph->read;
$xorg = ($glyph->{'xMax'} + $glyph->{'xMin'}) * $tsize / $upem;
$xorg = $xcentre - $xorg / 2;
$xadv = $xorg + $font->{'hmtx'}{'advance'}[$gid] * $tsize / $upem;
$ppage->add(sprintf("%s %.4f %d m %.4f %d l S [] 0 d\n", $dots, $xadv, $ybase + 7, $xadv,$ybase + 57)) if ($xadv < $xcentre + 27);
$ppage->add(sprintf("%s %.4f %d m %.4f %d l S [] 0 d\n", $dots, $xorg, $ybase + 7, $xorg, $ybase + 57)) if ($xorg > $xcentre - 27 && $xorg < $xcentre + 27);
$ppage->add(sprintf("BT 1 0 0 1 %.4f %.4f Tm /T$id $tsize Tf 100 Tz $gcol <%04X> Tj %s ET\n", $xorg, $yorg, $gid, ($gcol ? "0 g " : "")));
@instr = $package->overlay(@parms);
if (@instr)
{
$ppage->add("q ");
foreach $in (@instr)
{
if (defined $transformingops{$in->[0]})
{
for (my $j = 1; $j < @{$in}; $j++)
{ $in->[$j] = $in->[$j] * $tsize / $upem + ($j % 2 ? $xorg : $yorg); }
}
$ppage->add(join(' ', map {sprintf("%.4f", $_)} @{$in}[1..$#{$in}]) . " $in->[0] ");
}
$ppage->add("Q\n");
}
unless ($opt{'r'})
{
$gxorg = ($glyph->{'xMax'} + $glyph->{'xMin'}) * $gsize / $upem / 2;
$gxorg = 274 - $gxorg;
$gyorg = $ybase + (3 - $i) * 16 + 8 - ($font->{'head'}{'yMax'} +
$font->{'head'}{'yMin'}) * $gsize / $upem / 2;;
$ppage->add(sprintf("BT 1 0 0 1 %.4f %.4f Tm /T$id $gsize Tf 100 Tz <%04X> Tj ET\n", $gxorg, $gyorg, $gid));
}
}
@rowt = $package->topdat(@parms);
@roww = widths(6, \@rowt);
@xorg = ([$xcentre - 26, $xcentre + 24 - $roww[1]],
[$xcentre + 25 - $roww[1], $xcentre + 26]);
$ppage->add(out_row($pdf, 6, $ybase + 58, \@xorg, \@rowt));
@rowt = $package->lowdat(@parms);
@roww = widths(6, \@rowt);
@xorg = ([$xcentre - 26, $xcentre + 24 - $roww[1]],
[$xcentre + 25 - $roww[1], $xcentre + 26]);
$ppage->add(out_row($pdf, 6, $ybase + 2, \@xorg, \@rowt));
unless ($opt{'r'})
{
@rowt = $package->row1(@parms);
@roww = widths(8, \@rowt);
push (@row1, [[@rowt], [@roww], $ybase + (3-$i) * 16 + 8.75, 8]);
@rowt = $package->row2(@parms);
@roww = widths(8, \@rowt);
push (@row2, [[@rowt], [@roww], $ybase + (3-$i) * 16 + .75, 8]);
$glyph->empty if ($glyph && $numg > 1000 && !$opt{f});
}
}
$gcount += $numperow;
last if ($gcount >= $numc);
$ybase -= 67;
}
unless ($opt{'r'})
{
@rowm = maxwidth(\@row1, $maxx - 330);
putrows($pdf, \@row1, \@rowm, 294, $ppage);
@rowm = maxwidth(\@row2, $maxx - 348);
putrows($pdf, \@row2, \@rowm, 312, $ppage);
}
$ppage->{' curstrm'}{'Filter'} = PDFArray(PDFName('FlateDecode'));
$ppage->ship_out($pdf);
$ppage->empty;
}
lib/Font/Fret.pm view on Meta::CPAN
$rsb >= 0 ? "r|$rsb" : "r,b,0000FF|$rsb",
"r,b|$aw", "r,i|$glyph->{'xMax'}",
"r,i|$glyph->{'xMin'}", "r,i|$glyph->{'yMax'}",
"r,i|$glyph->{'yMin'}");
}
=head2 row2
As per row 1 for row 2
=cut
sub row2
{
my ($class, $cid, $gid, $glyph, $uid, $font) = @_;
return (",,008000|$font->{'post'}{'VAL'}[$gid]");
}
=head2 label
Given:
Glyph
Point number
[x, y] point co-ordinates
path number
on or off point
font
Returns a simple string for the label for the point
=cut
sub label
{
my ($class, $glyph, $pnum, $x, $y, $path, $onoff, $font) = @_;
if ($glyph->{'numberOfContours'} > 0 && $onoff)
{ return sprintf("%d.%d(%d,%d)", $pnum, $path, $x, $y); }
return '';
}
=head2 extra_points
Returns an array of arrays for a list of extra points to display on the glyph page.
Each sub array consists of [x, y, label]
=cut
sub extra_points
{
my ($class, $font, $gid, $glyph) = @_;
return [];
}
=head2 overlay
Returns an array of arrays, each is an operator string followed by the parameters that will precede
the operator. If the operator is a contour forming op, then the positions will be transformed
from glyph space for rendering.
=cut
sub overlay
{
my ($class, $cid, $gid, $glyph, $uid, $font) = @_;
return [];
}
=head2 final
Called at the very end to tidy things up in the package
=cut
sub final
{ }
=head1 AUTHOR
Martin Hosken L<http://scripts.sil.org/FontUtils>.
=head1 LICENSING
Copyright (c) 1998-2016, SIL International (http://www.sil.org)
This module is released under the terms of the Artistic License 2.0.
For details, see the full text of the license in the file LICENSE.
=cut
1;
( run in 1.543 second using v1.01-cache-2.11-cpan-2398b32b56e )