0.8.10 2024-10-15T07:18:16+13:00
- Fix X::PDF::Content::Image subclassing
- Implement core-font-name(), is-embedded(), is-subset() and
is-core-font() methods in PDF::Content::FontObj role
- Add target-class() to PDFTiny::Loader
0.8.9 2024-09-29T06:36:58+13:00
- Add replace ad-hoc "Illegal nesting of marked content" with
specific X::PDF::Content::OP::BadNesting::MarkedContent exception
- Rename exceptions X::PDF::Image:: to X::PDF::Content::Image::
- Create a compilation unit for X::PDF::Content exceptions
0.8.8 2024-09-22T10:10:22+12:00
- Add Page-Tree global-resources-scope() rw accessor #24
0.8.7 2024-09-17T07:31:52+12:00
- Allow canvas resource-key() method to be used as a setter. See t/do.t
0.8.6 2024-09-06T07:49:22+12:00
- Fix off-by-one bug in 'Unexpected Operator' warnings
- Rework matrix inverse() function
0.8.5 2024-07-31T06:33:26+12:00
- Add a PDF::Native v0.1.8+ fast-path for parsing and serializing
graphics content.
0.8.4 2024-07-28T09:42:57+12:00
- Handle potential 2-dimensional kerning from PDF::Font::Loader
shaping.
0.8.3 2024-07-23T05:41:11+12:00
- Fix inline-content() method, broken in 0.8.2
0.8.2 2024-07-23T05:12:02+12:00
- Support PDF 2.0 mandated /L (length) entry in inline XObject Images
- Revised inline image handling for latest PDF and PDF::Grammar.
0.8.1 2024-02-27T08:11:19+13:00
- Support text box :shape, :!kern option combination. I.e. shaping,
but without horizontal kerning.
0.8.0 2024-02-15T13:09:07+13:00
- Add text-box :$direction and :$bidi options. These require
installation of the optional Text::FriBidi Raku module.
0.7.7 2024-02-07T08:26:57+13:00
- Store original text atoms in text lines @!decoded attribute.
Fix text() method to return these rejoined, rather than
encoded byte-strings.
0.7.6 2024-01-31T11:16:39+13:00
- Handle missing Ascender, Descender metric values in height
calculations for ZapfDingbats & Symbol core fonts.
0.7.5 2024-01-28T12:02:11+13:00
- Implicitly set baseline to match valign so that the entire
text box and, in particular, a single line of text is aligned
as expected - see https://github.com/pdf-raku/PDF-API6/issues/17
0.7.4 2024-01-21T10:47:12+13:00
- Add encoding allocate-cid() method - for PDF::Font::Loader
v0.8.0+ shaping.
0.7.3 2024-01-02T07:45:29+13:00
- Add core-font shape method with ligatures and kerning.
- Add PDF::Content::Font::Encoder interface role
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
objects.
- 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
construction).
- 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 - 14.8.2.5: 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
PDF::Content::Font::CoreFont
Release 0.0.7
- Replaced $gfx.TextMove() with $gfx.text-position
Release 0.0.6
- Initial release