WD-SVGReq-19981029
51.1 KB
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe PageMill 3.0 Win">
<META NAME="POST-GENERATOR" CONTENT="hand working and validator tool">
<TITLE>Scalable Vector Graphics (SVG) Requirements</TITLE>
<meta name="RCS-Id"
content="$Id: WD-SVGReq-19981029.html,v 1.3 1998/11/03 23:41:19 renaudb Exp $">
<LINK rel="stylesheet" href="http://www.w3.org/StyleSheets/TR/WD.css" type="text/css">
<STYLE type="text/css">
<!--
.DESIGNGOALS { list-style-type: upper-alpha }
.REQT-LEVEL0 { list-style-type: decimal; font-weight: bold }
.REQT-LEVEL1 { list-style-type: lower-alpha; font-weight: normal }
.REQT-LEVEL2 { list-style-type: lower-roman; font-weight: normal }
.COMMENTS { font-weight: bold; color: red } /* visual check to ensure no comments left */
-->
</STYLE>
</HEAD>
<BODY>
<h4 align="right"><a href="http://www.w3.org/"><img align="left"
alt="W3C" border="0" height="48" src="http://www.w3.org/Icons/WWW/w3c_home"
width="72"></a>WD-SVGReq-19981029</h4><br clear="all">
<H1 style="text-align: center; margin-top: 1em">Scalable Vector Graphics (SVG) Requirements</H1>
<H3 style="text-align: center">W3C Working Draft, 29 Oct 1998</H3>
<DL>
<DT>This version:
<DD><a href="http://www.w3.org/TR/1998/WD-SVGReq-19981029">http://www.w3.org/TR/1998/WD-SVGReq-19981029</a>
<DT>Latest version:
<DD><a href="http://www.w3.org/TR/WD-SVGReq">http://www.w3.org/TR/WD-SVGReq</a>
<DT>Previous (member only) version:
<DD><a href="http://www.w3.org/Graphics/SVG/Group/1998/10/SVGReq-981027"
class="member">http://www.w3.org/Graphics/SVG/Group/1998/10/SVGReq-981019</a>
<DT>Editor:
<DD><A HREF="mailto:jferraio@adobe.com">Jon Ferraiolo</A>, Adobe
Systems Incorporated
</DL>
<H2>Status of this document</H2>
<P>This document is a work in progress representing the current consensus of the W3C Scalable
Vector Graphics Working Group. This draft of the SVG Requirements document
has been approved by the SVG working group to be posted for review by W3C members and
other interested parties. It is the first public review draft of this document.
Publication as a working draft does not imply
endorsement by the W3C membership.</p>
<P>Review comments from the public should be sent to <A HREF="mailto:www-svg@w3.org">www-svg@w3.org</A>,
which is an automatically <a href="http://lists.w3.org/Archives/Public/www-svg/">archived</a>
email list. Information on how to subscribe
to public W3C email lists can be found at <A HREF="http://www.w3.org/Mail/Lists">http://www.w3.org/Mail/Request</A>.</P>
<H2>Introduction</H2>
<P>The W3C has chartered a Scalable Vector Graphics working group
to produce a specification for an SVG format,
written as a modular XML tagset and usable as an XML namespace,
which can be widely implemented in browsers and authoring tools
and which is suitable for widespread adoption
by the content authoring community
as a replacement for many current uses of raster graphics.</P>
<P>This will mean that the graphics in Web documents will be
smaller, faster, more interactive, and
be displayable on a wider range of device resolutions
from small mobile devices through office computer monitors
to high resolution printers. This will be a significant advance
in Web functionality. Interoperability, both in multiple browsers
across multiple platforms and in multiple authoring tools (both read and write),
is a prime focus.</P>
<P>The SVG working group decided to solicit public review and
feedback at the earliest possible point to best ensure that SVG
meets the Web community's needs for a vector graphics language
specification. This document reflects early SVG working group
discussions on what SVG should and should
not be. The working group has not reached consensus on all topics,
so the document below sometimes describes particular features
as open issues that are still under discussion.</P>
<P>This document lists both SVG Design Goals and SVG Detailed Requirements.
The SVG Design Goals describe the high-level objectives which
SVG should attempt to achieve. These design goals should also
act as the criteria by which proposed features are judged. The
SVG Detailed Requirements contains the actual list of proposed
features.</P>
<P>A first draft of the detailed specification for SVG will be made available a couple
of months after the posting of this requirements document for public review. The
specification will be developed largely by looking at:</P>
<UL>
<LI>the design goals and detailed requirements that are contained
in this document
<LI>review comments on this document from public feedback, invited experts
and working group members
</UL>
<P>The home page for the W3C graphics activity is
<A HREF="http://www.w3.org/Graphics/Activity">http://www.w3.org/Graphics/Activity</A>.</P>
<hr>
<H2>Table of Contents</H2>
<H3><A HREF="#SVGDesignGoals">SVG Design Goals</A></H3>
<DIV class="DESIGNGOALS">
<H4><A href="#DGOpenSpecification">Open specification</A></H4>
<H4><A href="#DGWidelyImplemented">Widely implemented and supported</A></H4>
<H4><A href="#DGRelationshipOther">Relationship to other Web standards efforts</A></H4>
<H4><A href="#DGGraphicFeatures">Graphics features</A></H4>
<H4><A href="#DGInteractivityDynamism">Interactivity and Dynamic Behaviors</A></H4>
<H4><A href="#DGInterchangeFeatures">Interchange features</A></H4>
</DIV>
<H3><A HREF="#SVGDetailedRequirements">SVG Detailed Requirements</A></H3>
<H4><A href="#DRGeneralRequirements">General requirements</A></H4>
<OL class="REQT-LEVEL0">
<LI><A href="#DRConsistent">Consistent visual results and behaviors across implementations</A>
<LI><A href="#DRElegant">Elegant, uniform, complete and consistent</A>
<LI><A href="#DRPackaging">Packaging</A>
<LI><A href="#DRPerformance">Performance</A>
<LI><A href="#DRAlternateRepresentations">Alternate representations</A>
<LI><A href="#DRBackwardCompatibility">Backward compatibility</A>
<LI><A href="#DRInternational">Well internationalized</A>
<LI><A href="#DRAccessibility">Accessibility features</A>
</ol>
<H4><A href="#DRGraphicalFacilities">Graphical facilities</A></H4>
<OL class="REQT-LEVEL0">
<LI value="9"><A href="#DRShapes">Vector graphics shapes</A>
<LI><A href="#DRText">Text data</A>
<LI><A href="#DRImages">Image data</A>
<LI><A href="#DRColor">Color support</A>
<LI><A href="#DRTransparency">Transparency support</A>
<LI><A href="#DRLayeringGrouping">Grouping and layering</A>
<LI><A href="#DRTemplateObjects">Template objects/symbols</A>
<LI><A href="#DRFillOptions">Fill options</A>
<LI><A href="#DRStrokeOptions">Stroke options</A>
<LI><A href="#DRTransformations">Transformations</A>
<LI><A href="#DRCoordinateSystems">Coordinate systems, relationship to CSS positioning</A>
<LI><A href="#DRAntialiasing">Antialiasing</A>
<LI><A href="#DRStencilingAndMasking">Stenciling and masking</A>
<LI><A href="#DRFilterEffects">Client-side filter effects such as shadowing</A>
<LI><A href="#DRCompositing">Compositing</A>
<LI><A href="#DRCSSSupport">CSS support</A>
<LI><A href="#DRReferencePoints">Connectable reference points</A>
<LI><A href="#DRParameterization">Parameter substitution and formulas</A>
<LI><A href="#DRPrintControl">Print control</A>
</ol>
<H4><A href="#DRInteraction">Interaction</A></H4>
<OL class="REQT-LEVEL0">
<LI value="28"><A href="#DRZoomAndPan">Zoom and pan</A>
<LI><A href="#DRLinks">Links</A>
<LI><A href="#DREventHandling">Event handling</A>
<LI><A href="#DRSelection">Object selection, clipboard</A>
<LI><A href="#DRDOMAccess">DOM access</A>
<LI><A href="#DRAnimation">Animation</A>
</ol>
<H4><A href="#DRMiscellaneous">Miscellaneous</A></H4>
<OL class="REQT-LEVEL0">
<LI value="34"><A href="#DRPrivateData">Inclusion of private data (metadata)</A>
<LI><A href="#DRExtensibility">Extensibility</A>
<LI><A href="#DREmbedded">Embedded fonts and images</A>
</OL>
<hr>
<h1><A NAME="SVGDesignGoals"></A>SVG Design Goals</h1>
<P>The following are the Design Goals for SVG. Besides providing
a set of high-level objectives for SVG, these goals act as the
criteria by which proposed features are judged. Thus, the features
list shown below under SVG Detailed Requirements should reflect
the higher-level goals listed here.</P>
<P>These SVG Design Goals are not listed in any particular order.
It is recognized that some of the goals might conflict or be unachievable
and that tradeoffs will need to be made.</P>
<A NAME="DGOpenSpecification"> </A>
<H2>Open specification</H2>
<OL class="DESIGNGOALS">
<LI>The specification should be controlled by the members in the
W3C, not by a single vendor. Thus, the specification should not
subject to sudden change by a single vendor.
<LI>The specification
should be vendor neutral and thus should not contain features
biased towards a particular vendor.
</ol>
<A NAME="DGWidelyImplemented"> </A>
<H2>Widely implemented and supported</H2>
<OL class="DESIGNGOALS">
<LI value="3">SVG should be a standard feature in Web browsers
<LI>Implementations of SVG should be consistent so that the same
visual results and behaviors exist in all conforming SVG processors.
<LI>There should not be subset problems and incompatible generator/reader
sets. Thus, there should be a single language specification,
not a set of layered language specifications.
<LI>There should be widespread support in authoring applications and related tools
<LI>To promote widespread adoption and support, SVG should be specified to be
as basic and simple as possible while still providing necessary features
to satisfy the needs of graphics on the Web.
While the chief goal is to aim at the middle ground,
a basic and simple feature set will allow it to be used on devices
with a wide range of resolutions and capabilities,
from small mobile devices through office computer monitors to high resolution printers.
<LI>Straightforward generation via hand-authoring with a text editor
or server-side scripts (e.g., CGI)
<LI>SVG should be as self-contained as possible.
While SVG should leverage and be compatible with other W3C work,
it should attempt to do so without introducing
excessive dependencies on other specifications.
<LI>Ready availability to the casual implementor is desirable
<LI>Reference source code is desirable
</ol>
<A NAME="DGRelationshipOther"></A>
<H2>Relationship to other Web standards efforts</H2>
<OL class="DESIGNGOALS">
<LI value="12">Defined as an application of XML
<LI>Compatible with and/or leverages other relevant standards
efforts, including XML namespaces, XML links (XLink), DOM, CSS, XSL and
metadata.For example:
<UL>
<LI>the elements and attributes of an SVG
drawing should be scriptable via the DOM
<LI>text should be expressed
as XML character data so that it can be found by search engines
<LI>attributes which make
sense to be part of a style should be expressed in CSS
</UL>
The SVG working group will need to coordinate proactively
with other working groups when it is more appropriate to meet the SVG
requirements through modifications to other Recommendations.
</ol>
<A NAME="DGGraphicFeatures"></A>
<H2>Graphics features</H2>
<OL class="DESIGNGOALS">
<LI value="14">Complete, general-purpose Web vector graphics format that
satisfactorily meets the graphics delivery needs for all creators
and consumers of Web vector graphics
<LI>Sufficiently powerful and precise to meet the needs of professional
Web graphic designers such that they will utilize SVG instead
of raster formats in those cases where vector graphics is a more
natural or appropriate format
<LI>Sufficiently powerful to meet the needs of
business presentation and diagramming applications such that
these drawings will be published on the Web using SVG instead of raster formats
<LI>Feature set is rich enough such that a reasonable conversion of
most existing standard static graphics files into SVG is possible
<LI>Sufficiently compatible with the graphics design and
publishing industries' feature sets and file formats
such that there is (as lossless as possible) a straightforward mapping
from these applications and file formats
into SVG. The goals are to facilitate
conversion of existing artwork into SVG, promote the creation of lots
of compelling new SVG artwork, make it as easy as possible for the graphics design
and publishing industries to adapt existing authoring tools, and provide for
new SVG authoring tools.
<LI>Compatible with the needs of non-technical persons who want
a straightforward way to generate relatively simple graphics
either by hand-editing or via server-based graphics generation
(e.g., CGI scripts).
<LI>Compatible with high-quality, efficient printing at full
printer resolution and with reliable color
<LI>Focused on basic foundation, presentation-level graphics
facilities, with a critical eye toward higher-level (model-level) constructs which
might be better suited to a higher-level standard which would sit
on top of SVG
<LI>The working group is investigating whether other Web standards
(e.g., CSS, XSL, MathML, Web Schematics) could use SVG as its
low-level rendering specification.
(This goal has significant dependencies on other W3C initiatives such as the
W3C Formatting Model and might change accordingly.)
<LI>The specification for SVG should take into account the possibility of
building a future 3D graphics specification which either sits on top of SVG
or which is entirely independent but with a similar syntax; however, the
SVG working group should not let itself be slowed down or constrained by 3D
upgrade path issues.
</ol>
<A NAME="DGInteractivityDynamism"></A>
<H2>Interactivity and Dynamic Behaviors</H2>
<OL class="DESIGNGOALS">
<LI value="24">Allows for interactive and dynamic Web pages
</ol>
<A NAME="DGInterchangeFeatures"></A>
<H2>Interchange features</H2>
<OL class="DESIGNGOALS">
<LI value="25">Suitable as a platform-independent graphics exchange format
<LI>Mechanisms for inclusion of application-specific (or industry
specific) private data which would facilitate use of SVG as a
application-specific (or industry-specific) native file format
for authoring applications
<LI>Capable of use as a print metafile: sufficiently expressive
such that a higher-level print metafile XML grammar could use
SVG for its page imaging operators
</OL>
<HR ALIGN=LEFT>
<h1><A NAME="SVGDetailedRequirements"></A>SVG Detailed
Requirements</h1>
<P>The following is the detailed list of required features and
capabilities in SVG. Items which are already listed as a Design
Goal are not repeated here. It is recognized that some of these
requirements might conflict or may not be possible.</P>
<A NAME="DRGeneralRequirements"></A>
<H2>General requirements</H2>
<OL class="REQT-LEVEL0">
<LI><A NAME="DRConsistent"></A>Consistent visual results and behaviors across implementations
<OL class="REQT-LEVEL1">
<LI>The specification needs to be complete and unambiguous
<LI>The goal is to have at least two independent implementations
each of SVG viewers and SVG generators under development as the
specification is defined to help find and remove ambiguities
from the specification.
<LI>An extensive conformance test suite needs to be delivered
in conjunction with the final specification.
</OL>
<LI><A NAME="DRElegant"></A>Elegant, uniform, complete and consistent
<OL class="REQT-LEVEL1">
<LI>Wherever possible, all graphical attributes and
operations should be available to all object types. For example,
if 2x3 transformation matrices are available for shape objects, then
2x3 transformation matrices should also be available for
text and image objects.
</OL>
<LI> <A NAME="DRPackaging"></A>Packaging
<OL class="REQT-LEVEL1">
<LI>Stand-alone packaging: Compatible with the need of stand-alone
graphics authoring packages. It should be possible
for a graphics authoring application to save a stand-alone SVG
file. ("Stand-alone packaging" means that an SVG file
is saved as a separate, self-contained file, probably with a
.svg extension on platforms where the extension is important.)
<LI>Fragment packaging: Compatible with the need of consolidated
full-page Web authoring packages which would like to author/deliver
full pages of XML with optional vector graphics elements
interspersed as isolated components within the page. ("Fragment
packaging" means that snippets of SVG would appear inside
the content of a parent XML grammar. For example, a picture
of an arrow expressed in SVG might appear inline within an XML
file. The expected way this would be achieved would be by referencing
the SVG namespace within the XML file.)
</OL>
<LI><A NAME="DRPerformance"></A>Performance
<OL class="REQT-LEVEL1">
<LI>Reasonable display performance on commonly used end-user
machines
<LI>Highly efficient representation to minimize download times
<OL class="REQT-LEVEL2">
<LI>The working group should investigate abbreviation schemes
(particularly for path data) to minimize file sizes
<LI>The working group should also collaborate with other
working groups, such as the XML working group.
on binary compression alternatives.
</OL>
<LI>Streamable (i.e., support progressive rendering)
<LI>Simple primitives (e.g., lines) should exhibit fast performance
</OL>
<LI><A NAME="DRAlternateRepresentations"></A>Alternate representations
<OL class="REQT-LEVEL1">
<LI>The working group should investigate
the issue of alternative representations in the form of text strings
or image data. Alternate representations as text or images
might provide a good answer for backwards compatibility in some cases
or provide for a faster display option for some drawings.
Alternate text strings would be particularly
valuable to visually impaired users.</ol>
<LI><A NAME="DRBackwardCompatibility"></A>Backward compatibility
<OL class="REQT-LEVEL1">
<LI>The working group should develop a reasonable
backward compatibility strategy for when a user attempts to view
an SVG drawing in a browser which doesn't yet support SVG.</ol>
<LI><A NAME="DRInternational"></A>Well internationalized
<OL class="REQT-LEVEL1">
<LI>By virtue of being written in XML, SVG will already have
baseline internationalisation capability (Unicode characters,
language tagging). The working group will collaborate with
the I18N working group to ensure that SVG is suitable for
worldwide Web graphics.</ol>
<LI><A NAME="DRAccessibility"></A>Accessibility
<OL class="REQT-LEVEL1">
<LI>The working group should ensure that
adaptive interfaces for
people with disabilities are fully supported, and that mapping
SVG content to these contexts is easy and graceful.
</ol>
</ol>
<H2><A NAME="DRGraphicalFacilities"></A>Graphical facilities</H2>
<OL class="REQT-LEVEL0">
<LI value="9"><A NAME="DRShapes"></A>Vector graphics shapes
<P style="font-weight: normal">
(Note: in the remainder of this document,
the terms "vector graphic shape" will be abbreviated to
"shape" or "shape objects")</P>
<OL class="REQT-LEVEL1">
<LI>Path data
<OL class="REQT-LEVEL2">
<LI>Paths can be made up of any combination of the following:
<UL>
<LI>Straight line segments
<LI>Cubic bezier curved segments
<LI>Quadratic bezier curved segments
<LI>Elliptical and circular arcs
<LI>No other curve types (Other curve types such as
splines or nurbs are either technically
very difficult, industry-specific and/or
have not established themselves
as industry standards as much as beziers.)
</UL>
<LI>Compound paths (i.e., paths with donut holes) should be supported. Both
the non-zero winding and even-odd fill rules should
be supported in both fill and clip operations to ensure
compatibility with the design and publishing industries' existing
file formats and authoring applications. (Also, it is much easier to implement
these fill rules inside a renderer than it is in a file format converter.)
</OL>
<LI>A set of predefined shape types such as rectangles, rounded rectangles,
circles and ellipses should
be available so that simple objects can be defined without having
to learn bezier mathematics. The exact list of predefined object types
has not been decided yet.
<LI>Any shape can be filled, stroked or used as a clipping path and/or mask.
(See <A href="#DRFillOptions">Fill options</A>,
<A href="#DRStrokeOptions">Stroke options</A> and
<A href="#DRStencilingAndMasking">Stenciling and masking</A>, below.)
</OL>
<LI><A NAME="DRText"></A>Text data
<OL class="REQT-LEVEL1">
<LI>Text strings should be expressed as XML character data
which could be marked up with arbitrary XML name spaces. (Text strings
as XML character data allow search engines to find the strings.)
<LI>All text/font attributes from CSS should be supported. Complete support for
CSS is what the Web community will expect.
(See <A href="#DRCSSSupport">CSS support</A>, below)
<LI>It is clear that precise text sizing/positioning is a requirement for the
graphics design community.
Thus, SVG should allow for precise control of text sizing, positioning,
rotation, and skewing on a character-by-character basis. In particular,
the working group should look to see if this feature could be packaged as
to provide for precise text on a path.
<LI>It is clear that precise control of fonts and glyphs is a requirement for the
graphics design community.
It should be possible to achieve precise control of the exact font and the exact glyphs
within a given font to use for a given character sequence so that
graphic artists have a way to ensure that the end user sees what was
intended
<LI>The same fill/stroke/clip/mask capabilities that can be used with
vector data should also be available to text data. For example,
it should be possible to fill a text string with a gradient or
stroke it with a dashed line pattern. This is a widely used
feature in the graphics design world and is required for compatibility
with existing graphics content.
<LI>The working group hasn't investigated yet whether it is advisable to
provide a capability to automatically position a text string relative
to another graphical element (e.g., automatically centering a text string
within a rectangle). It is clear that such a feature would be a great
convenience for hand-coders of certain types of drawings, such as diagrams.
The working group
should investigate whether there is an easy-to-use (for a hand-coder)
yet robust and elegant way of achieving this.
<LI>Having a text string determine the dimensions of a parent graphical object
(e.g., a box is drawn to fit around a text string) is too high-level of
a construct and is not planned for version 1 of SVG.
<LI>Adding a text-on-a-path capability to SVG is still under consideration.
The working group recognizes that there are many
technical complexities which make it difficult to design the
feature in such a way that it will be both sufficiently powerful and
sufficiently compatible with the needs of various authoring scenarios.
</OL>
<LI> <A NAME="DRImages"></A>Image data
<OL class="REQT-LEVEL1">
<LI>The same image formats available to HTML should be available to SVG
<LI>The working group hasn't had time yet to address the issue of color
management on image data. The goals will be to:
<OL class="REQT-LEVEL2">
<LI>achieve compatibility with how other specifications (e.g., HTML) perform
color management on image data
<LI>(just like the rest of SVG) take full advantage of color management systems
when supported by the browser and/or the platform operating system
(see <A href="#DRColor">Color support</A> below)
<LI>if different ICC profile are specified both as an attribute on an image
and embedded within the image, the attribute should win
</OL>
</OL>
<LI><A NAME="DRColor"></A>Color support
<OL class="REQT-LEVEL1">
<LI>All colors need to be specified in the sRGB color space for compatibility
with other Web standards.
<LI>It is clear that reliable color is important to both end users and
Web content creators.
sRGB does not answer all precise color needs, and most desktop platforms
support the more complete ICC-based color management system.
Thus, an alternative ICC-based color representation should be available for all
color attributes. If the SVG processor supports color management, then
the ICC color takes precedence over the sRGB color.
<LI>There has been little discussion so far on sport color support. Spot
colors might be possible by specifying then using ICC profiles (perhaps via
a Named Color profile), or by storing spot color information as private
data (metadata) in the SVG file.
</OL>
<LI><A NAME="DRTransparency"></A>Transparency support
<p style="font-weight: normal">Transparency support is becoming
commonplace in authoring applications and
is widely used today in Web animations.
<OL class="REQT-LEVEL1">
<LI>Many existing authoring applications achieve transparency by adding an
opacity property wherever a color property is allowed.
For compatibility with these
applications, and because this represents a good technical solution
to many transparency needs, wherever a color property is allowed,
there will be a corresponding opacity property which indicates how
transparent a given object/component/attribute
should be when blended into its background
<LI>In group opacity, the collection
of objects that makes up a group is (in effect) drawn into a
temporary area in memory, and then the temporary area is blended
as a single unit into the background graphics.
Group opacity is necessary when you have an aggregate object such as a automobile
which is drawn as a collection of overlapping, opaque components
(e.g., the hubcap might be an opaque circle that is drawn on top of
an opaque tire) and you want to blend that object as a unit into
the background. Group opacity is a requirement for many animation
applications and has utility with static graphics also.
It is straightforward to implement, particularly once you have
support for transparent image objects, which is needed for GIF and PNG.
It is infeasible to achieve these effects without this feature.
Thus, group opacity should be supported in SVG.
<LI>The working group decided that identification of
a transparency/blue-screen/chromaKey
color will not be supported for shapes and text because the opacity
features are sufficient. However, the transparency color feature
that exists in image file formats such as GIF and PNG will be supported.
<LI>See <A href="#DRCompositing">Compositing</A>, below.
</OL>
<LI> <A NAME="DRLayeringGrouping"></A>Grouping and layering
<OL class="REQT-LEVEL1">
<LI>There needs to be an ability to define groups (i.e., collections) of objects
to allow for convenient access for scripting applications.
Groups should have the following attributes (among others), all of
which are accessible and/or controllable via scripting:
<OL class="REQT-LEVEL2">
<LI>Unique ID
<LI>z-index for explicit layering
<LI>visibility
<LI>transformations
<LI>opacity
</OL>
<LI>Implicit layering: unless an explicit z-index value is provided,
objects will be drawn
bottom-to-top in the order which they appear in the input stream.
This strategy is compatible with most popular graphics
file formats.
<LI>Explicit layering: objects or collections of objects can be
assigned an explicit z-index value, which takes precedence over
the implicit bottom-to-top drawing order. (The bottom-to-top drawing order of
objects with the
same z-index relative to each other is the the order in which they
appear in the input stream.) This explicit layering is a requirement
for achieving certain types of animation effects.
</OL>
<LI><A NAME="DRTemplateObjects"></A>Template objects/symbols
<OL class="REQT-LEVEL1">
<LI>There should be a capability for defining template objects that can
be instantiated multiple times with different attributes.
<LI>The template objects should be able to establish a full set of
default attributes, and the instantiated objects should be
able to override any of these default attriubutes.
</OL>
<LI><A NAME="DRFillOptions"></A>Fill options (i.e., painting the interior of a shape or text object)
<P style="font-weight: normal">
The following fill options should be available:
</P>
<OL class="REQT-LEVEL1">
<LI>Solid-color fill (see <A href="#DRColor">Color support</A> above)
<LI>Gradients
<OL class="REQT-LEVEL2">
<LI>Multiple gradient stops will be supported (not just two)
<LI>Both linear and radial gradients will be supported
<LI>It is still an open issue within the working group
whether additional gradient types should be supported.
Examples: conical, elliptical, square, rectangular,
Gouraud shaded triangle and rectangular meshes.
<LI>Gradients should allow for both a linear ramp between
gradient stops and a well-defined sigma function for
the calculation of the intermediate colors between the
stops.
<LI>For all gradients, the specification should provide details
for the exact behavior of the gradient ramp. If there is
a disagreement about what the gradient ramps should be,
priority should be given to: (1) making sure the gradient
ramp rules are consistent with real-world lighting effects,
(2) retaining compatibility with as much existing content
as possible (with a bias towards existing content whose
users really care about how their gradients look)
<LI>The suggestion has been made to allow for substitution of
a different color table for use with a given gradient.
(The color stop positions stay the same, but the colors
used change.) This suggestion hasn't been discussed yet
in the working group.
</OL>
<LI>Patterns (i.e., tiled object fill)
<OL class="REQT-LEVEL2">
<LI>Any objects (i.e., shapes, images, text) can be
used to fill any other objects
<LI>When objects are used to fill other objects, parameters
can be set to achieve tiling effects.
<LI>The tiling options
should be at least as capable as those found in the file
formats used by the design and publishing industries to
ensure compatibility
with existing artwork and authoring applications.
</OL>
<LI>Other fill styles - The working group hasn't decided yet whether other fill styles
such as fractal patterns are appropriate.
<LI>Custom fill styles - See <A href="#DRExtensibility">Extensibility</A>, below.
</OL>
<LI><A NAME="DRStrokeOptions"></A>Stroke options (i.e., drawing the outline of a shape or text object)
<OL class="REQT-LEVEL1">
<LI>The same attributes available for filling an object
(see <A href="#DRFillOptions">Fill options</A>, above)
should be available to stroke an object. For example,
you should be allowed to stroke with a pattern.
<LI>The set of stroke options should be at least as capable as the stroke options in
the file formats used by the design and publishing industries
<OL class="REQT-LEVEL2">
<LI>Arbitrary, continuous values for line width
<LI>The working group hasn't reached consensus yet on whether SVG should
support hairlines
(i.e., instructing the device to draw the thinnest possible line)
<LI>User-defined dash patterns and initial phase offset
<LI>Caps, joins and miterlimits
</OL>
<LI>Arrowheads and polymarkers
<OL class="REQT-LEVEL2">
<LI>There should be a small set of predefined arrowheads
<LI>Arrowheads are optional and can be placed at the start and/or end of path objects
<LI>The working group should investigate the possibility of providing
for custom "arrowheads" at the start and/or end of a path object
which are defined by referencing a different graphical object or group.
This capability would solve the following needs:
<UL>
<LI>Diagramming applications might use arrowheads extensively, but the
predefined arrowheads might not be satisfactory
<LI>Graphic designers who want to attach arrowheads to drawings will want
complete control of the visual characteristics of their arrowheads
<LI>This feature can be leveraged to provide a polymarker capability for
applications such as scatter diagrams
</UL>
</OL>
</OL>
<LI> <A NAME="DRTransformations"></A>Transformations
<OL class="REQT-LEVEL1">
<LI>Arbitrarily nested 2x3 matrix transformations should be available.
This facility is necessary to ensure compatibility with existing
artwork and authoring tools.
<OL class="REQT-LEVEL2">
<LI>2x3 matrices are sufficient to achieve any types of translation,
scaling, rotation and skewing
<LI>Transformation matrices can be nested to an arbitrary depth. A
given transformation matrix is concatenated with the transformation
matrices of all parent objects.
</OL>
<LI>In the spirit of making SVG reasonably easy to use for content
creators who would have difficulty constructing 2x3 matrices,
SVG should offer an alternative set of simpler transformation attributes
(e.g., rotation=, scale=). The SVG specification, however, needs to
defined unambiguously what should happen if both the simpler
transformation attributes and a 2x3 transformation matrix is provided.
<LI>These transformations should apply to all object types (shapes,
images and text) in a uniform and consistent manner
<LI>Transformed objects should have the option of exhibiting true scalability
(where all attributes should scale uniformly, and linewidths, images and
text should scale along with the sizes of the shapes). Additionally,
transformed objects should also have the option of selective
scalability such that certain attributes (e.g., stroke size and textsize)
are invariant.
</OL>
<LI><A NAME="DRCoordinateSystems"></A>Coordinate systems, relationship
to CSS positioning
<OL class="REQT-LEVEL1">
<LI>SVG should use CSS positioning for establishing a viewport for an
outermost SVG element, such as an <svg>...</svg>
complete drawing or an SVG fragment within an XML Web page.
<LI>SVG will support local user coordinates
<LI>Real number values (i.e., an integer followed by a possible
decimal fractional component) should be possible for all
appropriate attributes and coordinates.
The language definition itself should not inhibit infinite precision.
</OL>
<LI><A NAME="DRAntialiasing"></A>Antialiasing
<OL class="REQT-LEVEL1">
<LI>It is clear that the graphics design community not only wants
antialiasing to be available, but also wants to have the ability to turn
antialiasing on/off on an object basis in order to achieve precise
control of the rendering and possibly to control drawing speed.
Thus, there will be an antialias control attribute on each graphics
object in SVG.
<LI>Antialiasing adds a significant burden to the casual implementor
and isn't a requirement for all potential applications of SVG, such
as viewing CAD drawings. Thus, antialiasing control will be regarded as
a hint to the SVG processor, which can choose whether or not to honor
it. Major general-purpose implementations of SVG processors
such as commercial Web browsers should
honor and implement the antialiasing control hint.
</OL>
<LI> <A NAME="DRStencilingAndMasking"></A>Stenciling and masking
<OL class="REQT-LEVEL1">
<LI>Clipping paths
<P style="font-weight:normal">
Clipping paths are a commonly used feature in existing artwork and
an integral part of all authoring products used by graphic designers.
Clipping paths are as fundamental to the design and publishing industries'
existing file formats and authoring tools as are nested transformation matrices.
Clipping is relatively easy to implement in viewers using a
raster mask approach in device space if you have code for drawing a
filled path into an offscreen buffer. Nested clipping paths are easy to
achieve on top of an unnested clipping path implementation by just looping
through each parent clipping path one after another.
The performance overhead with nested clipping paths in animation scenarios
is probably small relative to other necessary computations (e.g, filling and stroking)
and can be overcome on the user end by simply avoiding/minimizing the use of the feature.
Without nested clipping paths, converters from the design and publishing industries'
existing file formats will have a significant burden in determining how to flatten
the nested clipping paths they encounter.
Nested clipping paths are necessary to prevent lossless translation
from the design and publishing industries' existing file formats.
</P>
<OL class="REQT-LEVEL2">
<LI>Any shape or text object can be used as a hard-edge clipping path
<LI>Clipping paths can be nested arbitrarily to ensure compatibility with
existing artwork and authoring tools.
</OL>
<LI>Masks
<P style="font-weight:normal">
8-bit masking is a fundamental feature on all operating
systems, and a key feature for both static and dynamic Web pages.
</P>
<OL class="REQT-LEVEL2">
<LI>Any graphics object (i.e., shape, text, or image)
can be used as an 8-bit alpha mask to control the alpha-compositing
of a different object (or group/collection of objects) into other objects
</OL>
</OL>
<LI><A NAME="DRFilterEffects"></A>Client-side filter effects such as shadowing
<P style="font-weight:normal">
Client-side filters provide for the possibility of significant
file size and download time savings in many applications.
An example is text drawn with a glow effect and a drop shadow.
If client-side glow and drop shadow filters were available,
then only the text string and the names of the filters would need to
be downloaded, instead of today, where the text needs to be
converted to a raster by the author.
</P>
<OL class="REQT-LEVEL1">
<LI>SVG should include a set of built-in client-side filter effects for
commonly used effects such as shadowing. The definitions of these
effects should be unambiguous so that all implementations produce
the same visual results.
<LI>Additionally, the working group should investigate the feasibility
of a general filter mechanism which would allow for custom filter
effects to be downloaded and applied to a given graphical object
(see <A href="#DRExtensibility">Extensibility</A>, below)
</OL>
<LI><A NAME="DRCompositing"></A>Compositing
<P style="font-weight:normal">
Compositing means the rules by which a foreground object's colors are
blended into a background object's colors. There are many different
approaches to compositing. Alpha compositing (where each pixel has
an 8-bit alpha channel which determines how opaque that pixel is)
is the most common, but even this method has multiple variations.
</P>
<OL class="REQT-LEVEL1">
<LI>The working group needs to define standard rules for
how alpha compositing should work. Which color space (sRGB? Lab?)?
What are the exact formulas?
<LI>The working group needs to decide whether SVG should offer
multiple compositing options
as standard features. Should SVG support all of the Porter/Duff
compositing options? Additionally, Photoshop offers many
Adjustment Layer options. Should these be supported?
<LI>See <A href="#DRExtensibility">Extensibility</A>, below.
</OL>
<LI><A NAME="DRCSSSupport"></A>CSS support
<OL class="REQT-LEVEL1">
<LI>All CSS text/font attributes from the most recently approved CSS recommendation
should be honored by all conforming SVG processors.
<LI>The issue of CSS inheritance is still open. It is unclear that the
standards world will have addressed how a parent XML/HTML grammar passes
its current style table to a child grammar. Until this issue is addressed,
the SVG working group cannot promise that version 1 of SVG will support
the inheritance of CSS styles from a parent grammar. The working group
should work towards achieving this highly desirable capability, however.
Representatives from the CSS and XSL have requested working with
the SVG working on style sheet issues. They would like to discuss:
<OL class="REQT-LEVEL2">
<LI>use either XSL or CSS stylesheets within SVG
<LI>use stylesheets to apply properties to both the text AND graphic
objects/assemblies within an embedded SVG component (to provide/enforce
"house style" or common properties across all illustrations in a document).
</OL>
</OL>
<LI><A NAME="DRReferencePoints"></A>Connectable reference points
<P style="font-weight:normal">
Connectable reference points are useful constructs for many applications.
In particular, diagramming applications could use connectable reference
points to define the start and end points for lines that connect
two different objects. The difficulty with connectable reference points
is that they might introduce a large degree of complexity into the
specification and the various implementations. It might be better
to leave connectable reference points to a higher-level XML grammar which
sits on top of SVG.
</P>
<OL class="REQT-LEVEL1">
<LI>It is not a requirement for version 1 of SVG to provide for a mechanism
for defining connectable reference points. This is a complex issue
which might be better served by a higher-level XML grammar.
<LI>However, the working group should not exclude this as an option for
version 1 of SVG. If one of the working group members can come up with
a good proposal, then the working group should consider the proposal seriously.
<LI>See <A href="#DRDOMAccess">DOM access</A>, below, for more on connectable reference points.
</OL>
<LI><A NAME="DRParameterization"></A>Parameter substitution and formulas on coordinates
<P style="font-weight:normal">
Parameterized graphic objects, possibly built using a set of formulas
to define how the object grows and stretches based on the values of
its parameters and other aspects of the graphics, would provide for
a powerful "intelligent graphics" capability. However, such as feature
opens up many complex issues which might be better off in
a higher-level XML grammar which
sits on top of SVG.
</P>
<OL class="REQT-LEVEL1">
<LI>Parameter substitution and formulas on coordinates are not requirements
for version 1 of SVG.
<LI>A simple parameter substitution strategy, however, might be easy to define,
simple to implement, and provide lots of value. In other words,
a simple parameter substitution strategy might provide 90% of the value
at 10% of the effort.
If one of the working group members can come up with
a good proposal, then the working group should consider the proposal seriously.
<LI>It is harder to conceive of a simple formula-based coordinate capability.
However, if someone of the working group members can come up with
a good proposal, then the working group should consider the proposal seriously.
</OL>
<LI><A NAME="DRPrintControl"></A>Ability to control whether a given object is printed.
<OL class="REQT-LEVEL1">
<LI>When the working group considers this feature, it should see whether
CSS's print control features are adequate.
</OL>
</ol>
<H2><A NAME="DRInteraction"></A>Interaction</H2>
<OL class="REQT-LEVEL0">
<LI value="28"><A NAME="DRZoomAndPan"></A>Zoom and pan
<OL class="REQT-LEVEL1">
<LI>An SVG processor should support zoom and pan on graphics, with true
scalability. Thus, all objects and attributes (including such things
as text and linewidths) should grow/shrink uniformly with the
zoom level.
</LI>
</OL>
<LI><A NAME="DRLinks"></A>Links
<OL class="REQT-LEVEL1">
<LI>It should be possible to assign a link to any graphic object or group.
<LI>SVG should support all of the kinds of links into and out of a drawing as
would be appropriate. For example, it should provide for links to other views in the same file
or links to external media (i.e., a URL). Also, it should be possible
to link into a particular view within an SVG drawing.
<LI>As much as is appropriate, SVG should be compatible with XLink.
<LI>The working group discussed briefly the concept of linking into a moment
of time within an animation application. This should be investigated
by the working group as the specification is developed.
</OL>
<LI><A NAME="DREventHandling"></A>Event handling
<OL class="REQT-LEVEL1">
<LI>It should be possible to assign event handlers to an individual
graphic object or group.
<LI>The list of event handlers should at least be as extensive as
what is available for HTML (e.g., mouseovers, mouseclicks).
<LI>Additional event handlers might prove to be valuable. For example,
an onzoom event handler might prove very useful to control what
content appears based on zoom level. The working group should
investigate onzoom and other possible event handlers.
</OL>
<LI><A NAME="DRSelection"></A>Object selection, copying/pasting to clipboard
<OL class="REQT-LEVEL1">
<LI>It is highly desirable but not required that SVG viewing processors
have the ability to selectively copy/paste graphical elements,
particularly from the browser to the desktop environment.
<LI>The working group has not investigated yet whether it makes sense
to specify an object selection mechanism in SVG. However, it is
clear that the ability to select part of a drawing is a requirement
for clipboard/exchange purposes.
<LI>A particular detail is selecting text for the purposes of copying
to the clipboard. The working group hasn't discussed yet whether
it should be possible to select text strings (complete or partial)
from within an SVG processor.
</OL>
<LI><A NAME="DRDOMAccess"></A>DOM access
<OL class="REQT-LEVEL1">
<LI>SVG should provide for complete DOM support for all attributes and
elements.
<LI>To provide robust hooks for animation applications, the DOM should
expose graphic objects down to the individual point.
<LI>Supplemental utility methods (e.g., query an object's bounds, its center,
its perimeter as expressed as a path, access to "connectable"
points for callouts or connection lines) would
be very helpful to people writing scripts that drive SVG drawings or
to higher level grammars (e.g., Web Schematics or MathML) which
might want to perform layout based on the bounds of a given
graphics object.
The SVG working group should collaborate with the DOM working group
to investigate whether it is possible within the constraints of DOM
to provide such utility methods.
</OL>
<LI><A NAME="DRAnimation"></A>Animation
<P style="font-weight:normal">
Built-in animation primitives will not be part of SVG. Animation
will only be possible via the DOM or a different specification,
which might sit on top of SVG.</P>
</ol>
<H2><A NAME="DRMiscellaneous"></A>Miscellaneous</H2>
<OL class="REQT-LEVEL0">
<LI value="34"><A NAME="DRPrivateData"></A>Inclusion of private data (metadata)
<P style="font-weight: normal">
To promote the use of SVG as an interchange format or as a
component of higher-level graphics languages, there needs
to be a provision for inclusion of application-specific or
industry-specific private data within an SVG drawing.
</P>
<LI><A NAME="DRExtensibility"></A>Extensibility
<P style="font-weight: normal">
It is highly desirable that SVG be extensible to cope with changing
requirements and for providing many valuable hooks to allow for
creation of more efficient and compelling Web pages. A well-designed
extensibility mechanism can allow for tomorrow's innovations to
be available in today's browsers (i.e., no need to wait for a new version
of the standard to be defined an implemented in browsers). A well-designed
extensibility mechanism could be the best solution for many valuable
features such as client-side filters on graphics data. Possible
extensibility facilities are custom paint servers (for filling
and stroking), custom object types, custom filters, custom
compositing engines and custom color spaces.
However, defining a useful and workable extensibility mechanism is
very difficult and frought with many obstacles, such as deficiencies in
cross-platform language standards. Thus, the working group should
look into an extensibility mechanism as a highly desirable feature and
review proposals from the members,
but an extensibility mechanism is not an absolute requirement for version 1
of SVG.
</P>
<LI><A NAME="DREmbedded"></A>Embedded components to achieve
self-contained graphics files
<OL class="REQT-LEVEL1">
<LI>Images - There has been some strong initial feedback has been that SVG should
provide for embedded images. The working group should collaborate
with other working groups (e.g., XML) to investigate the feasibility of
allowing for embedded images within an SVG drawing.
<LI>Fonts - There has been some strong initial feedback has been that SVG should
provide for embedded fonts. The working group has yet to
make decisions on this issue. The working group should collaborate
with other working groups (e.g., XML) to investigate the feasibility of
allowing for embedded fonts within an SVG drawing.
</OL>
</OL>
<p><hr>
<address>Chris Lilley <<a href="mailto:chris@w3.org">chris@w3.org</a>><br>
Chair, W3C SVG Working Group<br>
Last modified: $Date: 1998/11/03 23:41:19 $
</address>
<P><A HREF="http://validator.w3.org/"><IMG BORDER="0"
SRC="http://validator.w3.org/images/vh40.gif"
ALT="Valid HTML 4.0!" HEIGHT="31" WIDTH="88"></A>
<A HREF="http://www.w3.org/Style/CSS/Buttons">
<IMG ALT="Made with CSS" BORDER="0" WIDTH="88" HEIGHT="31"
SRC="http://www.w3.org/Style/CSS/Buttons/mwcos"></A></p>
</BODY>
</HTML>