See also INFO/Changes-ver_2 for changes released for PDF::API2, and incorporated into PDF::Builder. See also INFO/Changes_2019 for earlier version 3 release logs. 3.019 2020-07-27 lib/PDF/Builder/Content/Text.pm Per [CTS 31], expand documentation of textlabel() call to emphasize that it is a standalone call, and doesn't play nicely with other text-output calls (such as not leaving a current position for the next write). It is intended for one-off labels, etc. lib/PDF/Builder/Content.pm, examples/HarfBuzz.pl, examples/resources/HarfBuzz_example.pdf Support TTB (top to bottom) and BTT (bottom to top) vertical text in textHS(), now that HarfBuzz::Shaper supports these modes. Requires HarfBuzz::Shaper 0.23 or higher for TTB and BTT support, 0.21 for just LTR and RTL support. The "example" PDF is provided in case you don't yet have HarfBuzz::Shaper installed, and want to see what it does. TTB is recommended for both normally RTL (bidirectional) and LTR languages. Vertical writing is most often used with East Asian languages. .perl-version, Makefile.PL, README New minimum Perl version 5.20, which is already 6 years old, so we don't waste a lot of time chasing down bugs due to ancient Perl versions. PDF::Builder will likely work with older Perl versions, but your installer (e.g., cpan or cpanm) might refuse to install it. examples/042_links, examples/README, examples/examples_output, tools/3_examples.pl, lib/PDF/Builder/Annotation.pm, MANIFEST Improved documentation of annotation-based links: PDF links and targets. lib/PDF/Builder/Content.pm, lib/PDF/Builder/Resource/XObject/Image/PNM.pm image() and form_image() calls default x,y to 0,0, so can call without lower left corner x,y. PNM processing [RT 132844] fix routine forgetting where it is in the PNM file and failing to read part of it. Note that 132844 is still open, as PNM handling has not yet been thoroughly checked. lib/PDF/Builder/Resource/XObject/Image/PNG-PNG_IPL.pm ref PR #25 for PDF::API2. Some have reported that apparently there can be some cases where the deletion of some streams may cause errors in the vec() calls. This may be dependent on the Perl version, use of nonstandard flags (such as -e), or other unusual usage. lib/PDF/Builder/Resource/Font/CoreFont/courier-courierbold-courieroblique- courierboldoblique-helvetica-helveticabold-helveticaoblique- helveticaboldoblique-timesroman-timesbold-timesitalic-timesbolditalic- symbol-zapfdingbats.pm, t/text.t In 3.018, the Core Font metrics (in particular, the 'wx' character widths) were changed to use the values in the TTF files actually used (at least, on Windows systems). Per [CTS 27] et al., I received complaints about 3.018 not using the exact Adobe font metrics for Core Fonts as before. I have gone back to using the canonical Adobe metrics, even though (for core fonts) this is likely to result in a small mismatch between the indicated glyph width and the actual glyph displayed. In most cases it's just one glyph grid unit wider (e.g., 667 instead of 666), which should have no visible effect in any real document. However, there were a handful of (rather esoteric) glyphs where the difference was considerable. I compared the claimed widths for both Adobe metrics and the TTF metrics, and picked one or the other, or even devised a new width. These are documented in the .pm files under 'wx' (widths). Note that these are only the base 14 core fonts. The 15 Windows fonts were not changed, as there is no Adobe AFM standard for them. INFO/CONVERSION, MANIFEST, README add conversion info for going from PDF::API2 to PDF::Builder. INFO/RoadMap minor updates 3.018 2020-04-24 lib/PDF/Builder/Content.pm-Page.pm [RT 132403] clarify documentation on the two different rotate() methods. lib/PDF/Builder/Content/Hyphenate_basic.pm, lib/PDF/Builder/Content.pm- Docs.pm, lib/PDF/Builder/Resource/BaseFont.pm, examples/HarfBuzz.pl, examples/resources/HarfBuzz_example.pdf, examples/examples.output, examples/README, tools/3_examples.pl, INFO/old/examples.bat, Makefile.PL, README, MANIFEST Implement support for use of HarfBuzz::Shaper (to shape chunks of text). [RT 113700] This is an optional installation (manually done). examples/HarfBuzz.pl will not run if you do not have HarfBuzz::Shaper installed. HarfBuzz_example.pdf is provided in examples/resources/ in case you can't (yet) run HarfBuzz.pl. It demonstrates the use of HarfBuzz::Shaper for a variety of Western (ligatures and kerning), Middle Eastern (script and RTL), and South and Southeast Asian scripts. lib/PDF/Builder/Content.pm Add 'none' option to text underline and strikethrough options. This was added to permit the option (underline or strikethrough) to be given in the code, but allow a 'none' value in those cases where drawing an underline or strikethrough is not desired. This is still the default. examples/021_synfonts, examples/examples.output, examples/README The synthetic font example only showed for regular BankGothic font. Added bold, bold-italic, and italic cases. Note that there is something a bit odd about Bank Gothic -- it looks like it may only have regular weight (no bold) and the italic is questionable. tools/TTFdump.pl, MANIFEST, lib/PDF/Builder/Resource/Font/CoreFont.pm, lib/PDF/Builder/Resource/BaseFont.pm, examples/022_truefonts, lib/PDF/Builder/Resource/Font/CoreFont/courier*.pm- helvetica*.pm-times*.pm-georgia*.pm-trebuchet*.pm-verdana*.pm Add full set of glyph widths to core font metrics files [RT 57248]. This is intended to allow correct rendering of non-Latin-1 single byte fonts, by expanding the width listing beyond Latin-1. A utility is provided to read a TTF/OTF font and return glyph lists in a format that can be dropped into a [typeface].pm file. Only glyph widths table was changed (no other metrics). Arial was used for Helvetica metrics, BankGothic could not be found (not sure what's being substituted for it), and various symbology fonts were not changed. Courier "missing width" updated to reflect the character used to indicate a missing glyph. INFO/RoadMap Update some items. Mention other packages PDF::Table, Text::Layout, and HarfBuzz::Shaper that may be useful. lib/PDF/Builder/Resource/CIDFont.pm For TTF (ttfont) fix improper ToUnicode cmap so that a PDF may be searched (was broken in 3.016). lib/PDF/Builder/Content.pm Add example of using add() function to cancel Chrome browser scaling and Y-axis flip before new content is added to an existing PDF. lib/PDF/Builder/Content.pm, lib/PDF/Builder/Content/Text.pm Remind users not to use charspace() when working with a connected (script) font such as Arabic, Devanagari, cursive handwriting, etc. Add -nocs option to text line fill (justified) routines to not use any charspace() values when expanding or shrinking text content to fit. lib/PDF/Builder/Basic/PDF/File.pm. The earlier fix for corrupted xref table only ran under diagnostics. Now only the warning message is under the diagnostics flag (-diags), and the fixup attempt is always run. INFO/Changes_2019, Changes, MANIFEST, lib/PDF/Builder.pm, README, Makefile.PL, INFO/KNOWN_INCOMP 3.017 build/release, 2020 copyright, archive 2019 changes. (see INFO/Changes_2019 for earlier changes) (see INFO/Changes-ver_2 for changes to PDF::API2 up through 2.033)