-
Notifications
You must be signed in to change notification settings - Fork 142
/
CHANGES
1729 lines (1365 loc) · 68 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
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Change Log
==========
The following log records some of the most important changes.
Bug fixing is an ongoing task, so it is implied in all sub-releases.
1.18
----
BATIK-1225: PNG transcoder references nonexistent class
BATIK-1285: Set offset to 0 if missing in stop tag
BATIK-1318: Validate throws NPE
BATIK-1355: Missing arabic characters
BATIK-1361: Animated rotate tranform ignores y-origin at exactly 270 degrees
BATIK-1362: Set an automatic module name
BATIK-1363: Ignore inkscape properties
BATIK-1364: Switch to spotbugs
FOP-3135: Allow source and target resolution configuration
1.17
----
BATIK-1346: Allow configuration of rhino whitelist
BATIK-1347: Switch to empty whitelist for rhino
BATIK-1349: Block loading external resource by default
1.16
----
Java 8 or later is minimum runtime required
BATIK-1338: Block loading jar inside svg
BATIK-1345: Restrict what java classes can be run thru rhino
1.14 -> 1.15
------------
BATIK-1260: Java 11 module error
BATIK-1321: Remove Xerces
BATIK-1299: Batik-all jar has all classes so should not pull other jars also
BATIK-1329: Remove xalan
BATIK-1331: Jar url should be blocked by DefaultExternalResourceSecurity
BATIK-1333: Block external resource before calling fop
BATIK-1335: Jar url should be blocked by DefaultScriptSecurity
1.13 -> 1.14
------------
BATIK-1284: Dont load DTDs in NodePickerPanel
BATIK-1292: Remove console message "About to transcoder source of type: ..."
1.12 -> 1.13
------------
BATIK-1276: Allow blocking of external resources
BATIK-1275: Refactor shared resources.
BATIK-1274: Add .gitignore
1.11 -> 1.12
------------
Java 7 or later is minimum runtime required
BATIK-1203: ImageTagRegistry forgets to reinitialize cache
BATIK-1251: Correct policy file in Squiggle
BATIK-1253: build.sh referenced from build.xml
BATIK-1257: Rasterizer - insufficient permissions when transcoding to PDF
BATIK-1272: Update Xerces to 2.12
1.10 -> 1.11
------------
BATIK-1232: Zip release should use mvn jars
BATIK-1233: Add policy file for batik-rasterizer
BATIK-1234: Tools cannot be run using java -jar xxx.jar when built with Maven
BATIK-1240: Java 11 compile error
BATIK-1249: Fix Java 11 module error
1.9 -> 1.10
-----------
BATIK-906: Should never use Error to report runtime errors
BATIK-1123: Missing import of ImportInfo class
BATIK-1125: Rasterizer fails with base64 embedded png
BATIK-1140: Show line numbers on exception
BATIK-1142: Remove e.printStackTrace for BridgeException in SVGAbstractTranscoder
BATIK-1157: Wrong value for default JPEG quality in documentation
BATIK-1170: Incorrect ColorConvertOp alpha handling breaks masking
BATIK-1196: Run batik tests from junit
BATIK-1197: Make jython and rhino optional
BATIK-1198: TIFF transcoder looks for invalid class name for its WriteAdapter
BATIK-1200: ImagingOpException: Unable to transform src image
BATIK-1204: Remove hashtable
BATIK-1212: Show real error on URL failure
BATIK-1216: Compile error on Java 10
BATIK-1222: Only call DOMImplementation in deserialization
1.8 -> 1.9
----------
- Maven build support
- Java 6 or later is minimum runtime required
- FOP-2489: An SVG file using markers is not rendered by FOP 2.0
1.7 -> 1.8
----------
1. Bugzilla problem reports fixed:
42408, 43411, 43847, 43950, 44553, 44590, 44919, 44936, 44966,
45112, 45114, 45117, 45397, 45520, 45883, 45958, 46072, 46124,
46202, 46227, 46430, 46431, 46513, 46855, 46871, 47201, 47202,
48182, 48411, 49889, 49968, 50006, 50100, 51908, 42395
2. New features
* Support for the printNode() script function.
* Support for the Window and Location interface subsets from
SVG Tiny 1.2.
3. Improvements
* DocumentType nodes are now created for XML documents where one was
supplied in the markup (although only the name, publicId and systemId
properties of the DocumentType object are filled in).
* Dynamically created <script> elements inserted into the document are
now executed (at most once, as with HTML).
* The location bar in Squiggle is now updated if the requested document
followed an HTTP redirect.
* Improve Batik's Rhino class shutter so that it works with Rhino 1.6R7.
* Allow SVGGenerator2D to embed fonts that weren't obtained from the
standard AWT font lookup mechanism.
* ttf2svg no longer outputs hkern elements outside user-provided glyph range.
* Batik now tries to access content in HTTP error responses (for example, one
is able to setup custom content for missing - HTTP code 404 - and/or other
erroneous situations).
* Internally registers not only font families but also makes font available
through their font names.
* All CSS font weights are now handled for font selection
* Compatibility with GNU Classpath, OpenJDK and other open JVM was improved
(image I/O is now used by default, over the Sun proprietary classes).
4. Bug fixes
* Better DOM serialization code.
* The prompt() script function now returns a proper ECMAScript String
value instead of an object.
* Changes to a CDATA section in a <style> element are now detected.
* Fixed tight bounds calculation for Quadradic Bezier curves.
* Now uses float for Document Dimensions.
* Ensure motion animations that are removed from a document don't
cause an NPE.
* Animations that become frozen are now not incorrectly deprioritised
compared to other animations on the same attribute.
* Avoid canvas repaint problems that occur in some circumstances when
it is being resized.
* Exceptions are now thrown if an invalid QName is passed to
DOMImplementation.createDocumentType().
* DocumentType.getName() now returns the correct value.
* Fixed SVGLocatable.farthestViewportElement to return null when
called on the outermost <svg> element.
* JavaScript fragments using different types within the one document
(such as text/javascript and application/ecmascript) now share the
same script interpreter.
* Exporting 256 color indexed PNG files in Squiggle now works.
* Avoid an NPE in ttf2svg when resolving substitutions for Arabic script.
* ttf2svg now correctly writes out kerning pairs for characters that have
no name.
* SVGGraphics2D now serializes font-size values in style="" attributes
with a unit.
* Avoid an NPE when disposing a document that had animations targetting
CSS properties on elements that subsequently became display:none.
* The startOffset="" attribute on textPath elements now allows negative
percentages.
* Correctly handle individual missing <view> attributes by looking at
the closest ancestor SVG element.
* Fixed HeadlessExceptions related to WMF transcoding.
* Font families containing numbers (like "Univers 45 Light") no longer
cause errors.
* Compiling on Oracle JDK 7 and JDK 8 now works.
* On Windows, spaces within environment variables like JAVA_HOME no longer
cause errors (JDK 6 and above default install location were moved from
the system drive root to a Java folder inside Program Files).
* Fixed a manifest issue affecting several Jars which prevented proper
integration with NetBeans and other third-party IDEs and tools.
* Several fixes for Rasterizer Task contribution (which was not building
in Linux nor Cygwin and more).
5. Misc
* Minimum required Java version was raised to 1.5.
1.7beta1 -> 1.7
---------------
1. Bugzilla problem reports fixed:
26815, 28344, 35165, 36570, 37496, 38498, 40163, 40727, 41205,
41820, 41947, 41955, 41988, 42014, 42021, 42032, 42075, 42118,
42137, 42168, 42169, 42196, 42209, 42210, 42212, 42221, 42228,
42255, 42258, 42311, 42312, 42333, 42381, 42386, 42479, 42504,
42505, 42543, 42645, 42651, 42697, 42698, 42807, 42961, 42963,
442968, 3022, 43043, 43045, 43165, 43194, 43195, 43370, 43418,
443446, 3638, 43657, 43744, 43760, 43764, 43787, 43854, 43871,
443904, 3953, 44029, 44054, 44092, 44146
2. New features
* xml:id support (http://www.w3.org/TR/xml-id/).
* ElementTraversal support (http://www.w3.org/TR/ElementTraversal/).
* Enhanced DOM Viewer window, contributed from Ivan Andjelkovic,
a Google Summer of Code student.
3. Improvements
* Support for cursor="move" on OS X, and cursor="help" on all
platforms.
* Improved conversion to/from WMF.
* data: URIs now supported as external stylesheets, scripts, filters.
* SVG 1.1 feature strings now reported.
* The viewBox="" attribute on <svg> is now animatable.
* Implemented SVGSVGelement.getViewBox().
* A document's document element can now be replaced.
* Performing animation hyperlinking backwards is now supported, as
well as using <a> elements to hyperlink to animations.
* Updated pdf-transcoder.jar to one built from FOP 0.94.
* Squiggle's View Source window is now syntax highlighted.
4. Bug fixes
* XPath interface objects now exposed to ECMAScript.
* The three other MIME types for ECMAScript are now really supported
(text/javascript, application/javascript, application/ecmascript).
* Pseudo-elements now parsed properly in CSS selectors.
* Avoid null pointer exception when event-base timing specifiers
in animations reference an element by ID within a <use> shadow tree.
* Invalid min="" and max="" values on animation elements now ignored.
* Corrected CSS cascade order for rules of equal specificity.
* Fixed CSS :lang() processing so that it matches case insenstiviely,
using xml:lang="" as well as lang="", and using proper hyphen-
separated tokens.
* Gradients with gradientUnits="objectBoundingBox" disabled when the
bounding box has zero width or height.
* Avoid an array index exception for certain degenerate motion path
animations.
* Fixed mouse event button reporting.
* Avoid null pointer exception when cloning <symbol> and <image>
elements.
* Make empty <filter> elements result in no rendering for the
filtered element.
* SVGStylable.getPresentationAttribute() now returns null if the given
presentation attribute is not specified on the element.
* Specifying textLength="" on text elements that have non-text nodes
as their first children now works.
* Avoid numerical accuracy issues when sampling frozen animations.
* Event listeners are now removed when <text> elements are removed
from the document.
* Invalid SVG 1.0 feature string removed.
* Ensure animation elements are properly deinitialised when they are
removed from the document.
* Allowed animations in <use> element shadow trees to have syncbase
timing specifiers that refer to elements outside the shadow tree.
* Fixed bug in DOM event removal/dispatch.
* Ensure the animation engine is resumed if it is sleeping when a
beginElement() call is made.
* Avoid a null pointer exception in JSVGScrollPane if the document
doesn't return a bounds.
* Avoid a null pointer exception when painting a GraphicsNode on to an
SVGGraphics2D.
* Rasterizer -cssUser command line argument now resolved against
current working directory.
* Fixed bug in key event dispatching code.
* Decrease memory required for storing animation elements' previous
intervals (used for hyperlinking).
* Avoid infinite loop for animations with multiple, identical begin
(or end) instance times.
* Ensure TIFF and JPEG codecs really aren't compiled unless the relevant
Sun classes are present.
* Avoid null pointer exception when accessing animated marker orient
values.
* Patched Rhino so that the ECMAScript debugger runs on OS X.
* Ensure the animation engine is initialised before the SVGLoad event
is dispatched.
* Restored exception throwing from bridge classes when required
length attributes are missing.
* Duplicated codec classes removed from awt-util jar.
* Avoid null pointer exceptions in DOMMouseEvent objects.
* Motion animation transforms are now applied after the transform=""
attribute.
* Fixed bug in DOM event default action invocation in SVG 1.2 documents.
* Fixed bug in CSS class name matching, which occured only when an
element was declared to be a member of multiple classes, where one
is a prefix of another.
* Fixed bug on OS X where the zoom interactor overlay was not shown.
5. Misc
* Official maven artifacts are now supplied.
1.6 -> 1.7beta1
---------------
1. Bugzilla problem reports fixed:
22260, 25428, 28337, 29417, 29552, 32415, 34217, 34234, 34364,
34847, 34938, 35349, 35480, 35549, 35655, 35661, 35683, 35722,
35727, 35773, 35878, 35976, 35977, 36165, 36253, 36278, 36309,
36455, 36483, 36485, 36493, 36511, 36613, 36614, 36615, 36743,
36745, 36746, 36747, 36769, 36889, 36924, 36933, 37276, 37497,
37890, 37891, 37892, 37986, 37989, 38045, 38158, 38176, 38178,
38183, 38379, 38475, 38497, 38549, 38558, 38568, 38750, 38775,
38782, 38785, 38831, 38872, 38930, 38932, 38933, 38990, 39032,
39058, 39202, 39297, 39303, 39318, 39361, 39751, 39755, 39784,
39831, 39838, 40098, 40167, 40336, 40368, 40392, 40393, 40397,
40403, 40405, 40594, 40605, 40631, 40681, 40686, 40857, 40898,
40927, 40994, 41079, 41165, 41216, 41234, 41288, 41329, 41331,
41336, 41473, 43954
2. New features
* DOM Level 3 Core/Events/XPath support.
* Improved WMF transcoder support.
* Override style declaration support.
* Near complete SMIL Animation support.
* SVG 1.2 features:
* resource documents
* shapechange and RenderedBBoxChange events
* SVGGlobal startMouseCapture/stopMouseCapture methods
* handler elements
3. Improvements
* The SVG namespace declaration is now not assumed for the document element
when an SVG declaration is not present. Certain non-conformant content
will now be identified as being in error.
* New MacRenderer implementation that avoids 10x slowdown on
Tiger.
* Mutations to flowText contents now cause the rendering to update, and
flowRegion objects are now rendered.
* Support for normalized path segments on SVGAnimatedPathData, thanks to
Andres Toussaint.
* Updated pdf-transcoder.jar to one built from FOP 0.9alpha1:
* This fixes text being drawn as text in PDF.
* JPEG streams being embedded as JPEG.
* Default bitmap dpi is 300.
* Most gradients and patterns are now correct (pattern overflow isn't
handled properly although most of the code is present), and
gradients with complex repeats are rasterized due to difficulties
expressing them in PDF.
* Transcoders with the KEY_EXECUTE_ONLOAD hint set force the document
to be dynamic.
* Added JIIO codecs to Batik (not enabled by default)
* Support for finding XML Parser through JAXP.
* Enhancements to ArabicTextHandler.
* Update Manager's MIN_REPAINT time is now adjustable.
* GraphicsUtil warning about Graphics from BufferedImage
w/o BUFFERED_IMAGE hint is now controllable with property.
* JSVGScrollPane now has 'scrollbarAlwaysVisible' mode.
* Improved Path parser so it is more conformant.
* Updated Rhino to 1.6R5.
* Documents in Squiggle's Go menu now have the full URI as a tooltip.
* Better version number reporting from org.apache.batik.Version.
* Implemented SVGPathElement.getPathSegAtLength.
* Implemented 'getFunctionName' for built in CSS functions.
* Exposed SAXDocumentFactory's parser to subclasses.
* Added a -snapshotTime option to the rasteriser.
* Now using Apache XML Commons External, for SAC, DOM 3 Core, SMIL Animation
and SVG 1.1 DOM bindings.
* Encoding as specified in a Content-Type header's charset parameter is now
honoured when scripts are loaded.
* Changed InterpreterFactory so that multiple MIME types can be associated
with a given Interpreter.
* text/javascript, text/ecmascript, application/javascript and
application/ecmascript are now all supported as script types for Rhino.
Processing of application/ecmascript is as specified in RFC 4329.
* Improved integration when running under Mac OS X: Squiggle's menu bar
is now at the top of the screen, the application window has a proper
name and functional About/Preferences/Quit menu items, and a Squiggle.app
application bundle can now be created.
* JAR files now have Implementation-* attributes.
* Added an interface for all ImageRenderers to get/set RenderingHints.
3. Bug fixes
* SVGMatrix.rotate now takes deg rather than radians.
* Fixed mouseout/mouseover tracking, which regressed some time between
1.5beta5 and 1.6.
* Fixed misplaced glyph for mixed LTR and RTL text.
* Fixed handling of tooltips from title elements.
* Fixed rendering error (bug 36511).
* Fix for broken event propagation across 'use' element shadow tree boundary.
* Fixed a bug in the handling of 'x', 'y', 'width', 'height',
on feImage elements.
* Fixed bug in EventTarget.{add,remove}EventListenerNS wrapper
for Rhino.
* Fixed memory leak with dynamically added title tooltips.
* Fixed bug with update regions and filters.
* Fixed a problem with feSpotLight and feSpecular lighting (bug 36745).
* Fixed bug with event removal for multiple events and the same target
(thanks Andreas).
* Fixed problem with lowercase 'European' vowels (accented vowels).
* Fixed duplicated fragment identifier bug.
* Fix to allow transcoders that execute onload to work with SVG 1.2
documents.
* Fix incorrect reporting of modifier key states in DOM UI event objects.
* The broken link image works again now.
* Convert "" to null for namespace URIs given to public DOM interfaces.
* Gradient scaleback is now 0.999 rather than 0.97.
* ttf2svg now emits a document with an SVG namespace declaration.
* Include the o.a.b.ext.awt.image.spi.{ImageWriter,RegistryEntry} service
resource files in the codec jar. (Fixes problems with data: URIs for
images when Squiggle is run from the jars.)
* Fixed problem with ZoomAndPan handling overriding user disabling of
interactors.
* More sensible handling of source 'URLs' in svgrasterizer.
* Greyscale sources are now treated as if they have sRGB Gamma.
* Fixed SVGTextContentElement.getExtentOfChar to use glyph metrics rather
than the glyph shape bounding box.
* Changed Errors to UnsupportedOperationExceptions for unimplemented methods.
* JSVGViewerFrame uses reflection for the Rhino debugger to enable
compilation without Rhino.
* Fixed phantom 'double click' bug.
* Handle 'style' elements added and removed from the document when they are
not at the root of the addition/removal.
* Make CSS engine not throw an NPE for extension elements that don't expose
an OverrideStyleProvider.
* Fixes for text-on-a-path with glyphs who's geometry doesn't "start" at 0.
* Various deadlock fixes.
* Fixed bug where writing TIFF with JPEG compression fails.
* Fixed significant performance bug in creating geometry (it was
parsing the entire path for each entry in the path, O(N^2)).
* Fixed SVGTextContent interfaces on FlowRoot elements.
* Fixed NPE when reloading an SVG 1.2 document quickly.
* Fixed bug where mousing over 'a' elements would result in exceptions.
* Avoid NPEs when loading scripts from file: URIs.
* Fixed flowText regression by rebasing off SVGOMTextPositioningElement.
* radialGradient has a default value of "50%" for 'r' (thanks Tonny).
* Fixed bug in key event dispatching when compiled under JDK 1.3.
* Avoid precision errors in stringification of transform list values
(thanks Nick).
* Unmaximize Squiggle window if the "Automatically resize window when
loading documents" option is turned on.
* Fixed improper rendering of the batik70.svg sample under OS X.
* Fixed synchronization bug in the SVG generator.
4. Misc
* Code now compiles under Java 1.5 and 1.6.
* Lots of code/javadoc cleanups.
* New Forrest-based website for Batik.
* New about box/splash screen.
* Visual refresh for Squiggle's toolbar icons and Preferences window.
1.5.1 -> 1.6
------------
1. Bugzilla problem reports fixed:
28035, 28188, 28429, 28432, 28487, 29110, 29891, 30580, 30584,
30739, 30923, 30925, 30948, 31603, 32108, 32435, 32872, 32951,
33242, 33733, 33890, 33923, 33986, 34030, 34041, 34115
2. SVG 1.2 Features:
* All SVG 1.2 elements/features have been moved from
the Batik namespace into the SVG 1.2 namespace (except for
flowText which remains, due to some loss of functionality
with the current flowRoot and potential spec instability).
* Implementation of SVG 1.2 flowRoot element (text flow into
arbitrary regions with bidi support).
* There is now an SVG12CSSEngine which has support for new
properties in SVG 1.2
3. Improvements:
* Massive performance improvement (>10X) for drawing on Mac OS X.
* Document.getElementById now uses a Hashtable to speedup lookups.
* JavaScript can now be used in an Applet out of the box.
* Added support for 'font' shorthand property.
* Added support for 'deselectAll' SVG DOM call.
* getEncolsureList and getIntersectionList are implemented.
* Added support for get[Screen]PixelUnitToMillimeterX/Y
* SVG DOM getTotalLength, and getPointAtLength are now implemented.
* Support for preserveAspectRatio DOM methods.
* Squiggle browser now has a 'Save As' menu item.
* Can toggle if xml:base should be added to saved SVG.
* Can 'pretty print' saved XML for readability.
* ExtensibleSVGDOMImplementation no longer exists,
the SVGDOMImplementation is now extensible. There is a
new baseclass ExtensibleDOMImplementation that provides
extension capabilities to any DOMImplementation subclass.
As a result the name of the services meta-file has moved to:
'org.apache.batik.dom.DomExtension'
from:
'org.apache.batik.dom.svg.DomExtension'.
People with DOM extension will have to update the service file
accordingly.
* ExtensibleDOMImplementation now allows 'extension' elements in
the SVG Namespace (they are always lower priority than 'buit ins').
* When a new Document is loaded a new BridgeContext is created for it.
As a result each document now get's it's own CSS engine.
* ttf2svg now supports 'auto ranging' so it looks at the font
to decide what to output.
* DOM will now detect when the child passed to insert/remove
* AbstractParentNode will now throw a DOM Hierarchy exception
if you try to append a node as a child of it's self (PR 34030)
* Anti-aliased clips (hqClip patch). This can be disabled by setting
the transcoding hint to vector or print (so content doesn't get
rasterized). PR 29110.
* Control of tiled image rendering based on rendering hint.
Using this hint may greatly increase the amount of memory used.
* The Marker interface now has a 'getCharIndex()' method to
get the index of the character the Mark is associated with.
node is not the child of the node insert/remove is called on.
* DrawImage now defaults color model to sRGB_Unpre if the destination
doesn't include alpha.
* The pattern element now shares one rendering tree across all
references.
* Some improvements for Kerning in SVG Font (faster)
* Arabic diacritics are now positioned relative to the right edge
of the base glyph. Bug 28429
* Basic DocumentType implementation, if present DOMUtilities will
now emit a proper doctype specification
* GVT Tree walker can now be given any node in the GVT tree and it
walk just that subtree.
* Many places now use getResource as Stream instead of Resource
bundles where localization is not wanted/needed.
* Tweaked UpdateManager repaint scheduling alg.
It now tracks when the rendering goes 'out of date'
with the document and runs runnables until it is out of
them or MIN_REPAINT_TIME is exceeded.
* Arc2D now translated to path with elliptical arc commands
in SVGGraphics2D interface.
* JSVGScrollPane now uses bbox of geometry if no viewBox is provided.
* Refactored the text and flow bridges so make things cleaner.
* Implemented textLength to return the value of
getComputedTextLength when the textLength attribute is not
set.
* Potentially large optimization in BBox generation
* The DOM tree viewer now has an option to hide text nodes that
only contain whitespace.
* The DOM tree viewer now includes the id of an element in the
tree view if it has one.
* Improvements to empty bounds handling, should decrease update areas.
* GVT Render requests are now compressed. This helps when doing
live resize of large documents.
* Some refactoring/restructuring of svggen.XmlWriter to potentially
make it a pretty printing DOM serializer.
* Latest pdf-transcoder from FOP which supports '-dpi' switch.
* ScrollPane now should do a better job of fitting document w/o
scrollbars
* title and desc changes are now dynamically tracked.
* ScriptFactorys now loaded via Services interface.
* Made the JDK image loading Mediatracker static
(so others could use it easier).
* ParsedURL now uses the current Batik version as it's default
UserAgent
* Rationalized Text Selection code. Copy to clipboard is now done
by JGVTComponent only if 'unix style' text selection is requested
(default).
4. Bug Fixes:
* Fixed all known memory leaks with loading images.
* Changing documents in JSVGScrollPane now works properly.
* Fixed a small memory leak when changing xlink:href on a
use referencing a local element.
* No longer uses Thread.interrupt. On some JVM's this can confuse the
class loader.
* Adding elements in the 'null' namespace nolonger causes a NPE exception.
* Fixed colorspace error in ColorMatrixRed.
* Line element no longer has a fill associated with it.
* Fixed bug #29416 - problem with empty quotes in CSS.
* Fixed bug #34210 - element selectors are now case sensitive
* Index out of bounds error fixed in linear gradient.
* AOI problem in PrintTranscoder now fixed.
* Null Pointer exception when PrintingTranscoding documents
using SVG fonts is fixed (the BridgeContext was being
disposed of too early).
* PrintTranscoder now uses UserAgent to report exceptions
rather than silently swallowing them.
* Fixed some minor bugs in the GlyphLayout code for flow regions.
* Very minor tweaks in JSVGScrollPane.
* Applied patch 28188, fixed tooltip text & title text, thanks Glen
* Applied patch 28487, fixed enabled/disabled state for
toolbar buttons, thanks Glen
* Fixed bug in text selection (programatically selected text wouldn't
clear properly.
* Fixed bug 23035 - Xlink attributes initialized with wrong values.
* Fixed Bug 28785 - 'a' element not clickable with namespace prefix.
* Bug 30584 - Concurrent Modification believed fixed (couldn't get
test case to fail after fix).
* Bug 29891 - Rasterizer problem if w/h == viewBox w/h
* No more 'flicker' when panning a dynamic document.
* CmapFormat4 now clips charCode 0->65534.
* All Object.wait calls are now in while loops to prevent spurious wakeups.
* DOM keypress events will now be generated for so called
Java 'action' keyEvents (previously only keydown/up were
generated).
* Fixed a bug in the PNG Encoder for some 1,2 or 4 bit/pixel images.
* Fixed bug in PackBits TIFF files with multiple IFD's
* The 'debug' messages are now synced with GUI messages. Also they
are localizable.
* Tweaked the way we generate paths to avoid a bug
in the Mac OS X Java implemention where a close
followed by a moveto didn't join the path properly.
* Fixed width/height change onload bug in transcoders submitted
by Simon Mieth. Thanks!
* Fixed a bug with CSS shorthand properties not being set by presentation
attributes.
* DOMImplementations now return empty documents if
qualifiedName in createDocument is null (PR 32108)
* Fixed 'flashing' with JSVGScrollPane.
* Fixed PR: 30923. Text children now respect display and
visibility properties (including dynamic changes).
* Fixed visibility update bug reported by George Armhold.
* Fixed visibility bug on image elements.
* getBBox should now work per the specification.
a) fill="none" will still give bbox
b) It is now the tight bounds of the geometry
c) It does not include the stroke anymore.
d) When called on 'undisplayed' elements returns null (not sure
what the spec really says about this).
* Modification of use element's width/height now works.
* Fixed potential interrupted bug in the RunnableQueue class.
* The document loader cache now uses soft references to avoid
being a memory leak.
* Improved the xml:space support.
* textPath no longer supports 'position attributes' on it's self
* textPath now supports progression position attributes provided
by parent/child tspan/text nodes.
* systemLanguage, requiredFeatures, requiredExtensions now all fail
to match when given an empty string (as specified by the SVG
specification). Bug #33242 (thanks Rick Graham).
* Fixed potential synchronization issues in JavaScript intervals.
* Small optimization in Event dispatch.
* Removed debug print from SVGOMAnimatedPreserveAspectRatio.java
* Synchronization fix in SoftReferenceCache.
* SAXParser now includes 'ignorableWhitespace' when building the
DOM tree. I also tweaked the way text and CDATA sections are
created.
* UpdateManager is now always the 'source' of UpdateManagerEvents
previously in some cases it was an inner class.
* Fix for masks when using Alpha Premultiplied (Mac OS X).
* Improved consistency of events from the RunnableQueue.
Calling suspend/resumeExecution should now always generate
a runHandler event (although the events may be "compressed"
so suspend/resume may only generate one resume event).
* Fixed bug in handling kerning elements with multiple glyph entries
in g/u 1or2.
* Removed use of 'getTagName' to use 'getLocalName' to avoid issues with
prefixed svg elements.
* Fixed a mistake in the generation of SVG fonts that include
arabic forms (PR 33733)
* Fixed handling of complex paint types (base types with
fallbacks).
* Fixed CSS SVG DOM interfaces for complex paint types
(see bug 33923). Added new test for same.
* Text Selection events are now generated even when the
done event is not over a graphics node.
* The double '#' bug is gone in the SVG Pretty Printer. PR 33890
* The worst of the 'extra spaces' problem with the pretty printer
is solved.
* Fixed updates to SVG Font based text (PR 34041)
* Bug fix in NumberParser (thanks dvholten)
* Fixed bug 34115 - CSSStyleDecl doesn't collapse properties.
* JSVGCanvas no longer holds cached viewBox so it responds
properly when viewBox is updated in SVG content.
5. Misc:
Documentation updates
JavaDoc will now reference W3 and JDK docs
Updated MAINTAIN file
Splash/startup screen now embed font (a little simpler SVG as well).
Some Rhino improvements.
New Tests for bugs.
Thanks to everyone on batik-dev/users for reporting problems and
working on finding solutions.
1.5 -> 1.5.1
------------
1. Security:
A script security issue was reported in the Batik Squiggle
browser. Squiggle uses the Rhino scripting engine and some features
of that engine can be leveraged by malicious scripts to gain access
to otherwise protected resources (like the file system).
The Batik team has worked with the Rhino team to fix the isssue
that was reported and the Batik 1.5.1 patch release addresses the
issue.
2. Features:
Rhino JavaScript Debugger now integrated with Squiggle.
Better line numbers in error messages.
Zachary DelProposto's Scroll pane class is added. Allows for
scrollbars on SVG documents.
Cool solitaire examples in SVG.
3. Performance fixes:
Parents who have children added/removed no longer invalidate
their entire area.
When a element is removed or CSS properties changed all next
siblings are not repainted unless CSS rules change them.
First event dispatch is much quicker than the past.
Switched to Xerces 2.5.0 to improve performance of data protocol.
Changes to paint properties on text is now _much_ faster.
When using many objects from an external file the file will only
be loaded/parsed once.
Modifying x/y and some viewBox changes on SVG elements is now much
faster.
Better JPEG embedding in PDF.
4. Conformance:
Batik now passes all non SMIL-Animation tests from the SVG Working
Group beSuite.
@font-face CSS property and font-face elements are now compliant
with SVG specification.
Changes to the 'class' attribute now update rendering tree
correctly.
selectSubString now implemented.
Dynamic modification of display, and marker properties supported.
SVG 'a' element respects 'preventDefault' on event object.
Pattern element no longer applies object bounding box transform
if viewBox is specified.
5. Bugs:
Fullscreen mode (F11) works again.
getExtentOfChar() returns bbox in text elements coordinate system.
SVGPoint now supports matrixTransform in more cases
clientX/Y now correct when target is a text element.
Bugfix in parsing some TrueType fonts fixed.
Now applies the 'all' media type to all content.
Image transcoders default to 400x400 rather than issuing an error
(consistent with viewer).
The properties opacity/filter/masking/pointer-events now work
on SVG elements.
Clearing text selection now works
Zero width/height image elements now work properly.
BBox info is correct for zero width/height items.
Fills/strokes text when text-rendering is set to geometricPrecision
rather than using drawGlyphVector.
getCssText() returns the relative version of URI's
SVG Graphics2D outputs correct rendering hints for text.
TextNodes returns the correct bounds.
Proper text child set as 'target' of events.
Events handled correctly for documents that reference the same
image multiple times.
Image are displayed as 'broken links' instead of being an error.
FeColorMatrix now respects color-interpolation-filters property.
elem.style.setProperty now works for shorthand properties.
Fixed race condition in JSVGComponent.set[SVG]Document.
Fixed several memory leaks dealing with use element.
Glyph element's 'd' attribute uses inherited winding-rule.
SVG 'style' element no longer generates multiple 'xml:space' attrs.
SAXDocumentFactory now generates only one CData node for each
CData section in source document.
Memory leak with addEventListener and objects that ref event target fixed.
Click events now allow a small amount of 'slop'.
Fixed bug in rendering with Double Buffering.
Clicking on the Canvas no longer clears the system clipboard.
No longer recascades elements in use tree from foreign documents
Now supports CSS properties with the max negative 32bit int value
Now supports more JPEG image types.
No longer throws a Class Cast exception when using named colors
as the fallback for icc-colors
clearTimeout, clearInterval no longer throw exceptions for null
objects.
clipPath now respects clip-rule when using 'use' element.
Bug PRs: 12536, 23030, 23038, 23079, 23177, 24919, 25251, 25463
1.5beta5 -> 1.5
---------------
1. Features:
- With JDK 1.4 text-rendering="optimizeSpeed" will render
non-anti-aliased hinted text (for axially aligned text).
- The pointer-events property is now handled correctly for elements
without fill or stroke paint.
- Improved stroke accuracy when shape-rendering="geometricPrecision"
- JSVGComponent.setSVGDocument with 'null' now releases all
heavy resources and makes the Canvas display only Background.
- Many memory leaks fixed.
- Transcoders and JSVGComponent will now accept any Document
and convert to a Batik SVG Document if needed.
- Script interpreters are loaded lazily. This means that unless you
use them (by having event attributes or script elements) you
don't need any script engines.
Performance Improvements:
- Image drawing is now 5-10x faster, for most raster images.
- Significant performance improvement for patterns that are
filtered or have filters applied to them (take Batik70 for
example).
- AbstractParentNode insertNode, removeNode, replaceNode are
now much faster for Parents with many children.
Library changes:
- Updated to the Rhino 1.5R41 library
Others:
- Added control of floating point precision used in SVGGraphics2D
(see the org.apache.batik.svggen.SVGGeneratorContext class)
- Batik now almost never opens image URL's twice.
- JSVGComponent/BridgeContext now has three levels of interactivity.
STATIC, INTERACTIVE, DYNAMIC. With increasing memory overhead
and build time requirements.
- Improved test environment with automated memory leak, performance,
threading and interactivity tests. There are now over 1000 tests
in the regard regression test suite.
- Window.parseXML now returns a Document when no 'host'
Document provided.
2. Bugs:
See: http://nagoya.apache.org/bugzilla for details on each bug.
- 6526 pointer-events does not work for fill="none" stroke="none"
- 6683 JSVGCanvas - Problem adding to JScrollPane
- 6951 see samples/tests/spec/paints/linearGradientLine.svg
- 8854 Fix feImage implementation according to latest SVG 1.0/1.1 c
- 9981 Improve Documentation on Scripting with Java
- 9994 text-decoration:underline is incorrect with tspan elements.
- 12013 Squiggle renders jagged curves/paths 12079 transcoder.wmf
- 13870 Language Code errors
- 14011 problem using rasterizer with the headless option
- 14673 not-so-pretty text rendering
- 14788 TranscoderInput(XMLReader reader) does not seem to be implem
- 14789 TranscoderInput(Document document) is incorrect
- 15348 SVGGraphics2D should not export scientific notation on CSS p
- 17168 SVGGraphics2D has package level protected on DOMGroupManager
- 17863 API to get Version info
- 17965 SVGGraphics2D adds 'font-size' attribute to 'line' and 'circ
- 18143 Removing attribute using Element.removeAttributeNode doesn't
- 18566 JSVGComponent packs its parent window
- 18640 Problem with setSVGDocument
- 18840 A few issues with the Batik source
- 18841 Problems with imports in Batik source
- 19017 error when attempting SVG to PDF conversion
- 19363 zero width on rect element causes error
- 19392 Bug in "org.apache.batik.dom.util.DOMUtilities.java"
- 19865 Exception rendering linked PNG file.
- 20147 JSVGCanvas doesn't function with JInternalFrame
- 20201 incorrect gAMA chunk for sRGB
- 20331 bug on batik SVG DOM implementation on the SVGPathSegArcAbs
- 20332 bug on batik SVG DOM implementation on the SVGPathSegCurveto
- 20811 A rect disabled because of zero width or height doesn't get
- 21125 XML comment cause css parser to abort parsing
- 21259 Drawing on an SVGGraphics2D and then using JPEGTranscoder pr
- 21352 XML comments inside script elements treated as script code
- 21358 Dynamic Update of content referenced by a <use> does not wor
- 21361 Bug on SVGPaint implementation
- 21362 Bug on CSSStyleDeclaration on URI reference
- 21374 Implement conformant Java Handler code
- Viewer now properly displays w/h x/y locations in
'viewbox' coordinates.
- Fixed dirty regions for nodes that change size then
position in the rendering tree (where the new position
has a different rendering transform).
- Fixed handling Fragment URL's with colon's in them.
- Batik no longer considers all @font-face rules a syntax error.
Batik now just ignores them.
- Fixed use elements in Documents with no base url.
- Runs of RTL Text now work with JDK 1.4.
Nested embed and bidi-override properties should now work.
- Fixed bug setting viewBox on outermost SVG element as
described in:
http://koala.ilog.fr/batik/mlists/batik-users/archives/msg03513.html
- JSVGComponent/Canvas now repaints when it changes size
(even when no viewBox).
- Modifying zero W/H rect, circle, ellipse now works properly.
- Fixed the handling of kerning attribute.
- JSVGComponent.setSVGDocument with a Document that has been
previously viewed in the Canvas now works
- 'style' and 'script' elements no longer include the contents
of XML Comments (unless inside a CDATA block).
- Fixed a with absolute x/y attributes in non-text
progression direction.
- Fixed JSVGComponent when it's working threads are
interrupted.
- RhinoInterpreter once again binds the Global Object
as 'window'
3. Extensions:
- Updated multiImage element to match WD.
4. Documentation:
- Updated the FAQ with frequent questions on UpdateManager, DOM
updates and visual updates.
- Updated the implementation status page and the home page.
1.5beta4b -> 1.5beta5
---------------------
1. Features:
Library changes:
- Xerces 2.3 is now the default parser. The parser can still be controlled
through the org.apache.batik.util.XMLResourceDescriptor class.
** NOTE **
While the general performance of the Xerces 2.3 parser seems equivalent
to those of the Crimson parser used previously, there is a notable exception
in the handling of long attributes. This makes a very visible difference
for SVG content that uses embeded images through the 'data:' protocol which
can be extremely slow with Xerces 2.3. The bookOfKells.svgz example, which
used the data: protocol for rather long images has been removed from the
distribution as it does not load in a reasonable amount of time when using
Xerces.
- Rhino version has been updated from 1.5R3 to 1.5R4 allowing to fix
BR #11968 (DOM access functions should return ECMAScript strings).
- Removed SAX and DOM sources from the Batik project. Now use xml-apis.jar
from xml-commons.
Others:
- currentScale/Translate now implemented (get and set).
- Implemented getScreenCTM, fixed getCTM (SVGLocatable)
- onzoom, onscroll, onresize events are now implemented.
- Integrated pdf-transcoder from FOP.
- Ctrl-K/L work in fullscreen mode.
- initial support for SVGList ( provided for SVGPointList in
<polygon> and <polyline>, SVGPathSegList in <path>, SVGLengthList
in textual elements, SVGTransformList in graphical elements )
- RFE #12735 : added support for dynamic modifications of 'xlink:href' in image element
- Now skips reading the SVG DTD unless validation
is turned on (improves load times for small docs).
- glyph-orientation-horizontal now works.
- linearGradient's can now be anti-aliased (radial gradient
anti-aliasing also improved).
- PNG Transcoder can now produce 1,2,4 & 8 bit indexed PNG's.
- rasterizer can now be used in headless mode (JDK 1.4)
- JPEG files now have X/YDensity set according to -dpi option.
- Batik Docs now include a dependency graph for the jar files.
- In ECMAScript, add the ability to pass an Object instead of a
Function to the Window.getURL() method in which case the
operationComplete method is called once the URL is retrieved.
- SVGUserAgent now controls the default font-family
- Added max-width and max-height support in the rasterizer infrastructure
(contribution by Henri Ruini, [email protected])
- Improvements to the WMFTranscoder by Luan O'Caroll