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 )