-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathChanges
478 lines (384 loc) · 18.7 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
{{$NEXT}}
0.8.15 2024-12-25T07:56:04+13:00
- Delegate font encoding and hyphen processing from
text box to text style.
- Select either \c[HYPEN] and \c[HYPHEN-MINUS] from fonts
0.8.14 2024-12-24T07:43:50+13:00
- Handle partial and multiple space characters:
\c[EN SPACE] \c[EM SPACE] \c[THIN SPACE] \c[HAIR SPACE]
\c[THREE-PER-EM SPACE] \c[FOUR-PER-EM SPACE] \c[SIX-PER-EM SPACE]
0.8.13 2024-12-23T07:09:50+13:00
- Handle zero width spaces.
- Accept both \c[HYPEN] and \c[HYPHEN-MINUS] as a continuation
hyphen in input text and for font rendering.
0.8.12 2024-12-09T07:07:11+13:00
- Tweak current-point() for #28 and also to more faithfully follow
the spec. Return and undefined list, if there's no current point,
rather than (undef, undef).
0.8.11 2024-12-06T17:19:32+13:00
- Handle "\c[HYPHENATION POINT]" characters in input text. They
may converted to actual hyphens to facilitate line-breaking,
but are otherwise ignored.
- Tweak justification of partial lines. Add `:max-word-gap`
option. Perform text block alignment early to facilitate
introspection. Make line word-gap() into a read/write
assessor to allow adjustments.
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<THead>,
renamed enumeration :TableFooter<TFoot> -> :TableFoot<TFoot>
- 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