Rand Stats


0.7.2  2023-10-17T06:40:11+13:00
   - Fix local-glyph-name return value. Was causing regressions
     in PDF::To::Cairo

0.7.1  2023-09-17T08:37:57+12:00
   - Fix Canvas `has-pre-gfx()` return value. Was causing regressions
     in PDF::Font::Loader.
   - Refactor text-box text positioning calculations

0.7.0  2023-09-11T08:09:51+12:00
   - Tone down text-box :valign to only affect the text flow of multi-
     line text boxes. This removes the overlap with :baseline-shift.
     They no longer combine to allow shifting of Text boxes by up to
     two lines #16

0.6.16  2023-09-08T08:29:55+12:00
   - Make text-box text() method a rw accessor
   - Fix text box rendering x, y returned position
   - Fix text flow with horizontal and vertical alignment

0.6.15  2023-08-26T07:00:47+12:00
   - Breakup README.md add source-level POD. Add Makefile with 'doc'
     target to build markdown under 'docs/' directory
   - Add return constraints to methods/subs (mostly to improve POD)

0.6.14  2023-08-02T15:25:37+12:00
   - Exclude invisible text from text-flow calculations

0.6.13  2023-08-02T13:02:41+12:00
   - Fixes to return positional values of Graphics .print and .say methods:
     my ($x0, $y0, $x1, $y1) = $gfx.print("text");
     -- Track and take account of current text flow in computing $x0, $x1:
        This is only an issue if the text is continuing the current line
     -- Add any :$baseline offset to $y0, $y1.

0.6.12  2023-06-30T07:17:24+12:00
   - Export PDF::Content::Font::Enc::Type1 :Type1EncodingScheme
   - Fix over-generalised caching of fonts

0.6.11  2023-06-29T08:23:35+12:00
   - Add PDF::Content user-coords() method. This is the inverse of
     the existing base-coords() method.
   - Added automatic font object loading from the content stream. See
     tests in t/text-box.t. Also requires PDF::Font::Loader.
   - Added type() and encoding() methods to core fonts for improved
     compatibility with PDF::Font::Loader::FontObj objects.

0.6.10  2023-03-15T07:04:53+13:00
   - Add PDF::Content::API role. A set of base methods for
     content APIs (PDF::Class, PDF::Lite).
   - Make to-landscape() available as an exportable sub

0.6.9  2022-11-28T07:27:39+13:00
   - Fix font over-encoding of glyphs not actually present in
     particular core fonts,
   - Restore backwards compatibility to Rakudo 2011.12

0.6.8  2022-11-24T09:55:04+13:00
   - Handle /ReversedChars tags in content stream.
   - Fix setting text-position, when only X is specified.

0.6.7  2022-08-03T08:36:45+12:00
   - Added MiterLimit and BlendMode graphics variables

0.6.6  2022-07-26T16:44:19+12:00
   - Fix page to-object() form construction

0.6.5  2022-07-03T07:54:38+12:00
   - Protect a potential race in setting font encoding
   - Revert loading of tag dictionaries from 0.6.4 release

0.6.4  2022-06-09T09:35:37+12:00
   - Convert ops to PDF 0.5.8+ :lite AST

0.6.3  2022-06-07T16:49:54+12:00
   - Adjust tests for PDF 0.5.8. Use PDF::COS::Util from-ast()
     sub in PDF::Content::Ops for proper encapsulation

0.6.2  2022-05-26T15:12:29+12:00
   - Fix PDF::Content::PageTree add-pages() method

0.6.1  2022-05-11T07:50:18+12:00
   - Fix PDF::Class regression in 0.6.0
   - Add Cache subclass to PDF::Font::CoreFont. Use it in
     PDFTiny test class for PDF level caching #15

0.6.0  2022-05-10T11:01:38+12:00
   This release targets parallel thread-safe page construction
   - Bump dependents PDF and Font::AFM to thread-safe versions
   - Add PDF::Content::PageTree page-fragment() and pages-fragment() methods.
     These are individual pages or page-trees for concurrent composition.
     They can be built in parallel and in any order before being added
     sequentially using the add-page() method.
   - Make core-fonts and 'require' of classes thread safe. These seem to
     be the main internal areas of thread-safety contention

0.5.17  2022-03-25T08:53:53+13:00
   - Add text box Str() method
   - Add final TextNewLine (T*) Op on text overflow. This sets the text
     position to the bottom of the rendered text. Also assists PDF::Tags::Reader
     to accurately detect new-lines.
   - Suppress actual-test collection in content marked as 'Artifact'
   - move module from CPAN to zef

0.5.16  2021-12-29T08:09:53+13:00
    - Fix text-box overflow handling.

0.5.15  2021-12-20T12:38:25+13:00
   - Fix PDF::Font::Loader regression in 0.5.14 release

0.5.14  2021-12-20T09:19:19+13:00
   - Fixed duplication in ExtGState graphics resources. For example
     `$gfx.FillAlpha = 0.5; $gfx.FillAlpha = 0.5` was resulting in
     two separate resource entries.

0.5.13  2021-12-16T09:14:53+13:00
   - Replaced $*ActualText with PDF::Content.actual-text() attribute
   - Treat trailing space as significant in print() method
   - Performance tweaks in PDF::Content and PDF::Content::ResourceDict

0.5.12  2021-12-11T08:23:28+13:00
   - Add underline-position() and underline-thickness() methods. Unscaled in
     PDF::Content::FontObj and scaled in PDF::Content::Text::Box. Available
     also in PDF::Font::Loader::FontObj v0.5.16+.
   - Add iterate-pages() method

0.5.11  2021-12-03T12:10:07+13:00
   - Renamed PDF::Content::Tag enumeration InlineElemTags::Code ->
     InlineElemTags::CODE; to avoid clashes with standard Raku classes.
   - Fixes to newly introduced text-box verbatim mode
   - Add missing tag enumeration :TableHead,
     renamed enumeration :TableFooter -> :TableFoot
   - Implement PDF::Context::Text::Box clone() method

0.5.10  2021-11-20T17:02:59+13:00
  - Added PDF::Content:Text::Box option/attributes:
    -- indent: similar to CSS text-indent property; indents the first line.
    -- verbatim: similar to Latex /verbatim mode: disables kerning, breaks on
       newlines and preserves spaces
  - Fixes to PDF::Content::CoreFont load-font() method

0.5.9  2021-10-12T17:38:03+13:00
  - Deprecate PDF::Content::Tags owner() in favour of canvas()

0.5.8  2021-10-08T14:36:22+13:00
  - Deprecate canvas(&code) for drawing to an HTML::Canvas in favour
    of html-canvas(&code).
  - canvas() method now returns the PDF::Content::Canvas containing
    object, either a Page, XObject Form or Pattern.

0.5.7  2021-10-02T08:19:46+13:00
  - Use PDF::Content v0.5.7+ PDF::Content::Canvas role for composing
    XObject Forms and Tiling Pattern classes

0.5.6  2021-09-14T09:24:28+12:00
   - Fix PDF::Content do() positioning for XObject Forms
   - Changed PDF::Context::Text::Style handling of :$baseline option. Use
     font.ascender as top point, rather than font.bbox.y

0.5.5  2021-07-16T14:26:05+12:00
   - Added block form of paint() method. $gfx.paint(&code, |c)) is equivalent to
     $gfx.Save; code(gfx); $gfx.paint(|c); $gfx.Restore;
   - make page bbox() method order from bottom left corner. So a page with
     /MediaBox [ 0 0 612 -792 ] is returned as [0, -792, 612, 0]

0.5.4  2021-07-07T11:28:02+12:00
   PDF::Font::Loader v0.5.5+ compatibility:
   - Font decoding now has three stages decode($bytes, :cids), decode($bytes, :ords) and
     decode() [text-string, default].
   - Font encoding has two stages encode($text, :cids), encode($text) [byte-string, default].
   - type-check text-box() arguments. Make sure we've got a font dictionary
     or a font object

0.5.3  2021-07-02T13:37:20+12:00
  - Add cid-map-glyph() callback for PDF::Font::Loader

0.5.2  2021-06-23T13:43:44+12:00
  - Fix PDF::Content::Font cb-finish() method and invocation

0.5.1  2021-04-29T12:03:00+12:00
  - Declare additional content tags: /OC /TagSuspect /ReversedChars /Clip
  - Pass through parameters in PDF::Content draw() method

0.5.0  2021-03-25T09:36:34+13:00
  - Add PDF::Content::FontObj - interface role for font manipulation
  - core-font() method now returns the font-object of type
    PDF::Content::FontObj, rather than font dictionary. This is for
    consistency with PDF::Font::Loader. This allows type-checking.
    Also, a font object is more likely to be useful to an end user.

0.4.13  2021-03-13T14:33:18+13:00
  - Fix :WordSpacing option in text boxes #13

0.4.12  2021-03-11T11:35:37+13:00
  - Fix use-font() method to simply check for uniqueness of the font
    dictionary. The former (deep) equivalence check is incompatible
    with PDF::Font::Loader 0.4.0+, which builds font dictionaries lazily.
  - Add a current-point() accessor; valid during path construction

0.4.11  2021-02-08T16:42:42+13:00
  - Add matrix reflection method. Put its order to be applied
    after rotation and before skew.
  - Add requirement for Font::AFM version 1.24.4+.
  - Add tests for the new method.
  - Deprecate PDF::Content::Text::Block class in favor of
    PDF::Content::Text::Box and text-block() method in favour of
    text-block(). "Text blocks" already commonly refers to BeginText ..
    EndText regions in a content stream. Call them "text boxes" instead.

0.4.10  2021-01-21T14:04:44+13:00
  - Fix paint() method use of ClosePath op
  - Fix nesting of text blocks in :trace output
  - Refactor Ops class. Remove track-graphics method.

0.4.9  2021-01-12T06:12:47+13:00
  - Support IS0-32000 MacExpertEncoding (mac-extra). This is a supplement
    to MacRomanEncoding that includes various additional characters

Release 0.4.8
- Fixed missing renaming of PDF::Writer to PDF::IO::Writer in test suite.

Release 0.4.7
- Update to PDF 0.4.5. PDF::Writer has been renamed to PDF::IO::Writer
  to free up PDF::Writer for ecosystem usage.

Release 0.4.6
- Allow unknown operations in 'BX' .. 'EX' extension blocks
- Fix accidental error suppression in resource cb-finish() invocations
- Added encode %.charset accessor; used for font subsetting
- Fix array flattening issue in SetDashPattern.

Release 0.4.5
- Fix for PDF::API6 #8 - truncation of large JPEG images
- Renamed github project/Rep
- Text blocks now preserve multi spaces by default. :squish option
  gives old behaviour - collapse multiple spaces to a single space;
  Thanks Tom Browder

Release 0.4.4
- Remove PDF::Content::Tag::* sub-classes. Strip back to content
  related tags only. Functionality exported to PDF::Tags (under
- PDF::Content.print() method now aggregates printed text in $*ActualText
  if this variable is present in the lexpad. Utilized by the .mark()
  method in PDF::TAGS::Elem.
Release 0.4.3
- withdrew implicit content tagging in .print() and .do() methods
- replaced with new PDF::Content::Tag::Elem .mark() and .do() methods
- add PDF::Content::Tag::Root - explicit struct tree root
- remove FakeGfxParent role from test suite. Just use PDFTiny.
- fixed building of Structured Parent Tree

Release 0.4.2
- rename class PDF::Content::Tag::Marked -> PDF::Content::Tag::Mark
- remove tag-name check on marked content tags. Anything is allowed (it's
  only struct elem nodes that need to be named correctly).
- also remove BBox attribute from Marked content and rename tags to /Text
  and /Image respectively.

Release 0.4.1
- .print() and .say() methods now always return block coordinates
- .tag() returns the return value of the executed block
- the .do() method now accepts a :position argument; compatible with .print()
- text blocks now bind the TextRender and Font graphics settings.
- allow color(r, g, b) instead of color([r, g, b]), etc

Release 0.4.0
- Rename modules *.pm -> *.rakumod

Release 0.3.2
- [PDF::Content::Graphics]
  - remove $.gfx(:render, ...) option
  - $.render() method now only renders once

Release 0.3.1
- [PDF::Content] Add $.tag method. Deprecate $.marked-content()
- [PDF::Content::Interface] new role for PDF implementations
- [t/ops.t] fix text for PDF v0.3.8- (issue #3)

Release 0.3.0
- [PDF::Content::Ops] Added graphics-state :delta option:
  -- rename :comment-ops option to :comment
  -- rename :debug option to :trace
  -- .graphics-state(:delta) returns variables updated since last Save('q')
  -- .gsave(:delta) returns an array that summarizes updated variables on the
     graphics stack. The final entry is the same as .graphics-state(:delta)
  -- improved !debug() method. Uses .graphics-state(:delta) and dumps JSON.
  -- Setting both :comment and :trace now causes tracing to be written as
     comments to PDF content streams
- [PDF::Content::Text::{Block|Line|Style}]
  -- Defer font encoding until rendering
  -- Add comments displaying original text when $gfx :comment option is True

Release 0.2.9
- Add $gfx(:debug) option
- Fix handling of 'std' encoding in PDF::Content::Font::Enc::Glyphic

Release 0.2.8
- Allow named page sizes: $page.media-box = 'Letter';
- Add type-checking/coercement to Type1 encoder differences array

Release 0.2.7
- Added $page.bleed() method. Convenience method for getting
  or setting bleed as a gutter around the crop box.
- Fix tests for Rakudo 2018.12+ blead

Release 0.2.6
- $gfx.do() and $text-block.print() now return rectangles
  representing the display coordinates
- Added method user-default-coords() to convert coordinates or
  rectangles from transformed user-space to default user-space.

Release 0.2.5
- Streamline Save(q) and Restore(Q) methods in PDF::Content::Ops
- Fixed Extended Graphics State Smoothness method. Renamed BlackGenerationFunction
  -> BlackGeneration and UnderColorRemovalFunction -> UnderColorRemoval

Release 0.2.4
- Added PDF::Content::Tag and $.marked-content method for tag extraction
- Added PDF::Content::Font::Enc::Glyphic role
- Keep space characters when rendering text blocks. Conform with
  [PDF 32000 - Identifying Word Breaks]

Release 0.2.3
- open() method moved from PDF::Content::Image to PDF::Content::XObject
- fix spelling of rendering intent 'RelativeColorimetric'

Release 0.2.2
- Changed $.gfx method to not render by default
- Added some structured exceptions to PDF::Content::Ops
- Add $gfx.char-width, .char-height and .char-bbox attributes.
- Track operators d0 (SetCharWidth) and d1 (SetCharWidthBBox)

Release 0.2.1
- Tweak handling of BX .. EX compatibility blocks
- Fix BDC op (BeginMarkedContentDict) to allow dict or name as second argument
- Correct sequencing checks on 'sh' (ShFill) operator

Release 0.2.0
- Adjust to PDF ver 0.2.8. PDF::DAO classes have been
  renamed to PDF::COS.

Release 0.1.2
- Withdrew PDF::Content::Text::Reserved.
- Fix PDF::Content::Image.data-uri encoding.

Release 0.1.1
- $gfx.FillColor, $gfx.StrokeColor now register unknown colors in
  the graphics parent's resource dictionary.

Release 0.1.0
- Changed structure of PDF::Content::XObject[Image] to match
  PDF::Content::Font. It now has a $.image-obj handler object,
  similar to the PDF::Content::Font $.font-obj attribute.
- Fixed assignment to page boxes, e.g.: $page.art-box
- Work-around PDF WordSpacing restrictions in multiple-byte
  encoded fonts (issue #2)
- Add 'std' (StandardEncoding) encoding table

Release 0.0.9
- PDF::Content::Font::Enc::Type1 - Optimised encoding to always
  handle subsets up to a maximum of 255 characters. Glyphs are
  mapped as they are encountered:
    -- firstly, as defined by the requested encoding scheme
    -- secondly to unmapped codes in the encoding scheme
    -- thirdly to mapped, but unused character encodings
- PDF::Content::Graphics - fixed graphics update bug

Release 0.0.8
- Replace PDF::Content::Util::Font module with class

Release 0.0.7
- Replaced $gfx.TextMove() with $gfx.text-position

Release 0.0.6
- Initial release