diff options
Diffstat (limited to 'lib/PDF/Builder/Resource/Font')
33 files changed, 166 insertions, 82 deletions
diff --git a/lib/PDF/Builder/Resource/Font/BdFont.pm b/lib/PDF/Builder/Resource/Font/BdFont.pm index bb4c23e..ffb026f 100644 --- a/lib/PDF/Builder/Resource/Font/BdFont.pm +++ b/lib/PDF/Builder/Resource/Font/BdFont.pm @@ -5,8 +5,8 @@ use base 'PDF::Builder::Resource::Font'; use strict; use warnings; -our $VERSION = '3.025'; # VERSION -our $LAST_UPDATE = '3.024'; # manually update whenever code is changed +our $VERSION = '3.026'; # VERSION +our $LAST_UPDATE = '3.026'; # manually update whenever code is changed use PDF::Builder::Util; use PDF::Builder::Basic::PDF::Utils; @@ -40,14 +40,16 @@ for body text! =head1 METHODS -=over 4 +=head2 new -=cut + $font = PDF::Builder::Resource::Font::BdFont->new($pdf, $font, %options) -=item $font = PDF::Builder::Resource::Font::BdFont->new($pdf, $font, %options) +=over Returns a BmpFont object. +=back + =cut #I<encode> @@ -438,8 +440,6 @@ sub filled_circle { __END__ -=back - =head1 AUTHOR Alfred Reibenschuh, extensively rewritten by Phil Perry diff --git a/lib/PDF/Builder/Resource/Font/CoreFont.pm b/lib/PDF/Builder/Resource/Font/CoreFont.pm index f615f9a..4c4da67 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont.pm @@ -5,8 +5,8 @@ use base 'PDF::Builder::Resource::Font'; use strict; use warnings; -our $VERSION = '3.025'; # VERSION -our $LAST_UPDATE = '3.024'; # manually update whenever code is changed +our $VERSION = '3.026'; # VERSION +our $LAST_UPDATE = '3.026'; # manually update whenever code is changed use File::Basename; @@ -38,9 +38,11 @@ PDF::Builder::Resource::Font::CoreFont - Module for using the 14 standard PDF bu =head1 METHODS -=over +=head2 new + + $font = PDF::Builder::Resource::Font::CoreFont->new($pdf, $fontname, %options) -=item $font = PDF::Builder::Resource::Font::CoreFont->new($pdf, $fontname, %options) +=over Returns a corefont object. @@ -48,12 +50,15 @@ Valid %options are: =over -I<encode> -... changes the encoding of the font from its default. +=item encode + +Changes the encoding of the font from its default. See I<perl's Encode> for the supported values. B<Warning:> only single byte encodings are permitted. Multibyte encodings such as 'utf8' are forbidden. -I<pdfname> ... changes the reference-name of the font from its default. +=item pdfname + +Changes the reference-name of the font from its default. The reference-name is normally generated automatically and can be retrieved via C<$pdfname=$font->name()>. @@ -67,23 +72,19 @@ B<standard PDF types> =over -=over - -=item * helvetica helveticaoblique helveticabold helvetiaboldoblique +=item * helvetica, helveticaoblique, helveticabold, helvetiaboldoblique May have Arial substituted on some systems (e.g., Windows) -=item * courier courieroblique courierbold courierboldoblique +=item * courier, courieroblique, courierbold, courierboldoblique Fixed pitch, may have Courier New substituted on some systems (e.g., Windows) -=item * timesroman timesitalic timesbold timesbolditalic +=item * timesroman, timesitalic, timesbold, timesbolditalic May have Times New Roman substituted on some systems (e.g., Windows) -=item * symbol zapfdingbats - -=back +=item * symbol, zapfdingbats =back @@ -91,21 +92,17 @@ B<Primarily Windows typefaces> =over -=over - -=item * georgia georgiaitalic georgiabold georgiabolditalic - -=item * verdana verdanaitalic verdanabold verdanabolditalic +=item * georgia, georgiaitalic, georgiabold, georgiabolditalic -=item * trebuchet trebuchetitalic trebuchetbold trebuchetbolditalic +=item * verdana, verdanaitalic, verdanabold, verdanabolditalic -=item * bankgothic bankgothicitalic bankgothicbold bankgothicitalic +=item * trebuchet, trebuchetitalic, trebuchetbold, trebuchetbolditalic -Free versions of Bank Gothic are often only medium weight. +=item * bankgothic, bankgothicitalic, bankgothicbold, bankgothicitalic -=item * webdings wingdings +Free versions of Bank Gothic are often only medium weight Roman (bankgothic). -=back +=item * webdings, wingdings =back @@ -253,13 +250,17 @@ sub new { return $self; } -=over +=head2 is_standard + + $bool = $class->is_standard($name) -=item $bool = $class->is_standard($name) +=over Returns true if C<$name> is an exact, case-sensitive match for one of the standard font names shown above. +=back + =cut sub is_standard { @@ -288,10 +289,16 @@ sub is_standard { return; } -=item PDF::Builder::Resource::Font::CoreFont->loadallfonts() +=head2 loadallfonts + + PDF::Builder::Resource::Font::CoreFont->loadallfonts() + +=over "Requires in" all fonts available as corefonts. +=back + =cut sub loadallfonts { @@ -426,8 +433,6 @@ BEGIN __END__ -=back - =head1 AUTHOR Alfred Reibenschuh diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/bankgothic.pm b/lib/PDF/Builder/Resource/Font/CoreFont/bankgothic.pm index f27f6ee..38c55d0 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/bankgothic.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/bankgothic.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::bankgothic; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.013'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/courier.pm b/lib/PDF/Builder/Resource/Font/CoreFont/courier.pm index fc4131c..1f51b22 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/courier.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/courier.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::courier; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/courierbold.pm b/lib/PDF/Builder/Resource/Font/CoreFont/courierbold.pm index 4d57b24..0ca600e 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/courierbold.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/courierbold.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::courierbold; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/courierboldoblique.pm b/lib/PDF/Builder/Resource/Font/CoreFont/courierboldoblique.pm index 1d97ebd..dfd06d9 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/courierboldoblique.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/courierboldoblique.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::courierboldoblique; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/courieroblique.pm b/lib/PDF/Builder/Resource/Font/CoreFont/courieroblique.pm index 0817c06..30fa9af 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/courieroblique.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/courieroblique.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::courieroblique; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/georgia.pm b/lib/PDF/Builder/Resource/Font/CoreFont/georgia.pm index 12c16f9..b1993b4 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/georgia.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/georgia.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::georgia; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/georgiabold.pm b/lib/PDF/Builder/Resource/Font/CoreFont/georgiabold.pm index 034514e..006ebeb 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/georgiabold.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/georgiabold.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::georgiabold; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/georgiabolditalic.pm b/lib/PDF/Builder/Resource/Font/CoreFont/georgiabolditalic.pm index f55159b..b2d319d 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/georgiabolditalic.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/georgiabolditalic.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::georgiabolditalic; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/georgiaitalic.pm b/lib/PDF/Builder/Resource/Font/CoreFont/georgiaitalic.pm index 2cef3b3..4cbb3e8 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/georgiaitalic.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/georgiaitalic.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::georgiaitalic; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/helvetica.pm b/lib/PDF/Builder/Resource/Font/CoreFont/helvetica.pm index 23d4825..dee3ec4 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/helvetica.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/helvetica.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::helvetica; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/helveticabold.pm b/lib/PDF/Builder/Resource/Font/CoreFont/helveticabold.pm index 6d73bc0..a4479d9 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/helveticabold.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/helveticabold.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::helveticabold; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/helveticaboldoblique.pm b/lib/PDF/Builder/Resource/Font/CoreFont/helveticaboldoblique.pm index 111137d..3381eed 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/helveticaboldoblique.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/helveticaboldoblique.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::helveticaboldoblique; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/helveticaoblique.pm b/lib/PDF/Builder/Resource/Font/CoreFont/helveticaoblique.pm index f7fd3ac..5158348 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/helveticaoblique.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/helveticaoblique.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::helveticaoblique; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/symbol.pm b/lib/PDF/Builder/Resource/Font/CoreFont/symbol.pm index d010f89..baa9a03 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/symbol.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/symbol.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::symbol; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/timesbold.pm b/lib/PDF/Builder/Resource/Font/CoreFont/timesbold.pm index 88bf02f..138d0ff 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/timesbold.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/timesbold.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::timesbold; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/timesbolditalic.pm b/lib/PDF/Builder/Resource/Font/CoreFont/timesbolditalic.pm index eba4bca..c14edd9 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/timesbolditalic.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/timesbolditalic.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::timesbolditalic; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/timesitalic.pm b/lib/PDF/Builder/Resource/Font/CoreFont/timesitalic.pm index ea4a9d9..6c8b9b4 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/timesitalic.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/timesitalic.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::timesitalic; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/timesroman.pm b/lib/PDF/Builder/Resource/Font/CoreFont/timesroman.pm index 1a162d7..45eacce 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/timesroman.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/timesroman.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::timesroman; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/trebuchet.pm b/lib/PDF/Builder/Resource/Font/CoreFont/trebuchet.pm index 421c8e5..b0f8c43 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/trebuchet.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/trebuchet.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::trebuchet; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetbold.pm b/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetbold.pm index 9f36303..c0d15f7 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetbold.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetbold.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::trebuchetbold; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetbolditalic.pm b/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetbolditalic.pm index dbac4e1..7cd6010 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetbolditalic.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetbolditalic.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::trebuchetbolditalic; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetitalic.pm b/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetitalic.pm index 0898a60..368f921 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetitalic.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/trebuchetitalic.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::trebuchetitalic; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/verdana.pm b/lib/PDF/Builder/Resource/Font/CoreFont/verdana.pm index a89e690..be6a4c0 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/verdana.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/verdana.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::verdana; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/verdanabold.pm b/lib/PDF/Builder/Resource/Font/CoreFont/verdanabold.pm index 4f941ad..3509f2b 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/verdanabold.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/verdanabold.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::verdanabold; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/verdanabolditalic.pm b/lib/PDF/Builder/Resource/Font/CoreFont/verdanabolditalic.pm index a55484a..50019f0 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/verdanabolditalic.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/verdanabolditalic.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::verdanabolditalic; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/verdanaitalic.pm b/lib/PDF/Builder/Resource/Font/CoreFont/verdanaitalic.pm index dc08552..0ac50eb 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/verdanaitalic.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/verdanaitalic.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::verdanaitalic; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.018'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/webdings.pm b/lib/PDF/Builder/Resource/Font/CoreFont/webdings.pm index 58ec60d..df8d45e 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/webdings.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/webdings.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::webdings; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '2.029'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/wingdings.pm b/lib/PDF/Builder/Resource/Font/CoreFont/wingdings.pm index 2aed6b9..5376345 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/wingdings.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/wingdings.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::wingdings; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '2.029'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/CoreFont/zapfdingbats.pm b/lib/PDF/Builder/Resource/Font/CoreFont/zapfdingbats.pm index c39bf82..0547fe9 100644 --- a/lib/PDF/Builder/Resource/Font/CoreFont/zapfdingbats.pm +++ b/lib/PDF/Builder/Resource/Font/CoreFont/zapfdingbats.pm @@ -3,7 +3,7 @@ package PDF::Builder::Resource::Font::CoreFont::zapfdingbats; use strict; use warnings; -our $VERSION = '3.025'; # VERSION +our $VERSION = '3.026'; # VERSION our $LAST_UPDATE = '3.019'; # manually update whenever code is changed =head1 NAME diff --git a/lib/PDF/Builder/Resource/Font/Postscript.pm b/lib/PDF/Builder/Resource/Font/Postscript.pm index d7d98b8..544d7d5 100644 --- a/lib/PDF/Builder/Resource/Font/Postscript.pm +++ b/lib/PDF/Builder/Resource/Font/Postscript.pm @@ -5,8 +5,8 @@ use base 'PDF::Builder::Resource::Font'; use strict; use warnings; -our $VERSION = '3.025'; # VERSION -our $LAST_UPDATE = '3.024'; # manually update whenever code is changed +our $VERSION = '3.026'; # VERSION +our $LAST_UPDATE = '3.026'; # manually update whenever code is changed use Encode qw(:all); use IO::File qw(); @@ -18,6 +18,19 @@ use PDF::Builder::Basic::PDF::Utils; PDF::Builder::Resource::Font::Postscript - support routines for using PostScript fonts. Inherits from L<PDF::Builder::Resource::Font> +=head1 METHODS + +=head2 new + + PDF::Builder::Resource::Font::Postscript->new($pdf, $psfile, %opts) + +=over + +Create an object for a PostScript font. Handles ASCII (.pfa), binary (.pfb), and +T1 (.t1) font files, as well as ASCII (.afm) and binary (.pfm) metrics files. + +=back + =cut sub new { @@ -95,17 +108,29 @@ sub readPFAPFB { die "Cannot find PFA/PFB font file '$file' ..." unless -f $file; my $l = -s $file; + $l1 = $l2 = $l3 = 0; + $head = $body = $tail = ''; + + my $type = 'pfa'; + if ($file =~ m/\.pfb$/i) { + $type = 'pfb'; + } elsif ($file =~ m/\.t1$/i) { + $type = 't1'; + } open(my $inf, "<", $file) or die "$!: $file"; binmode($inf,':raw'); - read($inf, $line, 2); + read($inf, $line, 2); # read 2 bytes to check header @lines = unpack('C*', $line); - if ($lines[0] == 0x80 && $lines[1] == 1) { + + if ($lines[0] == 0x80 && $lines[1] == 1) { # .pfb + # first 6 bytes are 80 01, 4 byte LSB $l1 head length read($inf, $line, 4); - $l1 = unpack('V', $line); + $l1 = unpack('V', $line); # length of head seek($inf, $l1, 1); read($inf, $line, 2); @lines = unpack('C*', $line); + # at start of binary body, 6 bytes 80 01, 4 byte LSB $l2 body length if ($lines[0] == 0x80 && $lines[1] == 2) { read($inf, $line, 4); $l2 = unpack('V', $line); @@ -115,6 +140,7 @@ sub readPFAPFB { seek($inf, $l2, 1); read($inf, $line, 2); @lines = unpack('C*', $line); + # after body, 6 bytes 80 01, 4 byte LSB $l3 tail length if ($lines[0] == 0x80 && $lines[1] == 1) { read($inf, $line, 4); $l3 = unpack('V', $line); @@ -124,33 +150,84 @@ sub readPFAPFB { seek($inf, 0, 0); @lines = <$inf>; $stream = join('', @lines); + # each section, skip over 80 01, length; read in length of section $t1stream = substr($stream, 6, $l1); $t1stream .= substr($stream, 12+$l1, $l2); $t1stream .= substr($stream, 18+$l1+$l2, $l3); - } elsif ($line eq '%!') { + + } elsif ($line eq '%!' && $type eq 'pfa') { seek($inf, 0, 0); while ($line = <$inf>) { - if (!$l1) { - $head .= $line; + if (!$l1) { # $head empty or not complete yet? + $head .= $line; # up through and including currentfile eexec if ($line=~/eexec$/) { chomp($head); $head .= "\x0d"; $l1 = length($head); } - } elsif (!$l2) { - if ($line =~ /^0+$/) { + } elsif (!$l2) { # $body empty or not complete yet? + if ($line =~ /^0+$/) { # at block of 0's, marking end of body $l2 = length($body); $tail = $line; } else { chomp($line); - $body .= pack('H*', $line); + $body .= pack('H*', $line); # binary form of hex codes } - } else { + } else { # rest goes into the $tail $tail .= $line; } } $l3 = length($tail); + # head = individual lines (^M terminated) with settings list + # body = one long string of bytes (binary) + # tail = 8 lines x 64 0's ^M terminated, cleartomark (no ^M) + $t1stream = "$head$body$tail"; + + } elsif ($line eq '%!' && $type eq 't1') { + # .t1 + my $pos; + seek($inf, 0, 0); + while (1) { # head + read($inf, $line, 200); + $head .= $line; + $pos = index($head, "currentfile eexec\x0D"); + if ($pos > 0) { + # found end of head, so split there + $body = substr($head, $pos+18); + $head = substr($head, 0, $pos+18); + $l1 = length($head); + last; + } + } + while (1) { # body + read($inf, $line, 200); + $body .= $line; + # 1111111111222222222233333333334444444444555555555566666 + # 1234567890123456789012345678901234567890123456789012345678901234 + $pos = index($body, "0000000000000000000000000000000000000000000000000000000000000000"); + if ($pos > 0) { + # found end of body, so split there + $tail = substr($body, $pos); + $body = substr($body, 0, $pos); + $l2 = length($body); + last; + } + } + while (1) { # remainder into tail + read($inf, $line, 200); + $tail .= $line; + if (length($line) == 0) { + # found end of tail + $l3 = length($tail); + last; + } + } + + # head = individual lines (^M terminated) with settings list + # body = one long string of bytes (binary) + # tail = 8 lines x 64 0's ^M terminated, cleartomark (no ^M) $t1stream = "$head$body$tail"; + } else { die "Unsupported font-format in file '$file' at marker='1'."; } diff --git a/lib/PDF/Builder/Resource/Font/SynFont.pm b/lib/PDF/Builder/Resource/Font/SynFont.pm index 47a9712..906a7d9 100644 --- a/lib/PDF/Builder/Resource/Font/SynFont.pm +++ b/lib/PDF/Builder/Resource/Font/SynFont.pm @@ -5,8 +5,8 @@ use base 'PDF::Builder::Resource::Font'; use strict; use warnings; -our $VERSION = '3.025'; # VERSION -our $LAST_UPDATE = '3.024'; # manually update whenever code is changed +our $VERSION = '3.026'; # VERSION +our $LAST_UPDATE = '3.026'; # manually update whenever code is changed use Math::Trig; # CAUTION: deg2rad(0) = deg2rad(360) = 0! use Unicode::UCD 'charinfo'; @@ -49,9 +49,11 @@ This is for compatibility with recent changes to PDF::API2. =head1 METHODS -=over +=head2 new + + $font = PDF::Builder::Resource::Font::SynFont->new($pdf, $fontobj, %opts) -=item $font = PDF::Builder::Resource::Font::SynFont->new($pdf, $fontobj, %opts) +=over Returns a synfont object. C<$fontobj> is a normal font object read in from a file, and C<$font> is the modified output. |