From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../developer_guide/svg_guidelines/index.html | 198 +++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 files/ja/mozilla/developer_guide/svg_guidelines/index.html (limited to 'files/ja/mozilla/developer_guide/svg_guidelines') diff --git a/files/ja/mozilla/developer_guide/svg_guidelines/index.html b/files/ja/mozilla/developer_guide/svg_guidelines/index.html new file mode 100644 index 0000000000..358d2da811 --- /dev/null +++ b/files/ja/mozilla/developer_guide/svg_guidelines/index.html @@ -0,0 +1,198 @@ +--- +title: SVG ガイドライン +slug: Mozilla/Developer_Guide/SVG_Guidelines +translation_of: Mozilla/Developer_guide/SVG_Guidelines +--- +

The SVG format has the advantage of being able to describe complex images while being lightweight and to scaling them very well at all resolutions. Unfortunately, a lot of SVG files (often generated by SVG editors) ship without being cleaned up, so the benefit of them being lightweight is gone. Here are some best pratices to keep SVGs lightweight. These rules are based on some real examples seen in Mozilla's code.

+ +

Basics

+ + + +

Whitespace and line breaks

+ +
+

Whitespace

+ +

In addition to trailing whitespace at the end of lines, there are a few more cases more specific to SVGs:

+ + + +

Examples

+ +

This path:

+ +
<path d=" M5,5    L1,1z ">
+ +

can be cut down to this:

+ +
<path d="M5,5 L1,1z">
+ +

Similarly, this polygon:

+ +
<polygon points="  0,0   4,4  4,0  "/>
+ +

can be cut down to this:

+ +
<polygon points="0,0 4,4 4,0"/>
+ +

Line breaks

+ +

You should only use line breaks for logical separation or if they help make the file readable. You should avoid line breaks between every single element or within attribute values. It's recommended to put the attributes on the same line as their tagnames if possible. You should also put the shortest attributes first so they are easier to spot.

+ +

Unused tags and attributes

+
+ +

Editor metadata

+ +

Vector editors (Inkscape, Adobe Illustrator, Sketch, ) usually add a bunch of metadata in SVG files when saving them. Metadata can mean many things, including:

+ + + +

Other metadata

+ +

In addition to non-standard editor metadata, standard compliant metadata also exists. Common examples of this are <title> and <desc> tags. Although this kind of data is supported by the browser, it can only be displayed when the SVG is opened in a new tab. Plus, the filename is descriptive enough most of the time. So it's recommended to remove that kind of metadata, since it doesn't bring much value.

+ +

You shouldn't include DOCTYPEs in your SVGs either, they are source of many issues and the SVG WG recommends not to include them. See SVG Authoring guidelines.

+ +

Avoid the use of CDATA sections

+ +

CDATA sections are used to avoid parsing some text as HTML. Most of time, CDATA isn't needed, for example, the content in <style> tags doesn't need to be wrapped in a CDATA section as the content inside the tag is already properly parsed as CSS.

+ +

Invisible shapes

+ +

There are 2 kinds of invisible shapes: the offscreen ones and the uncolored ones.

+ +

The offscreen shapes are hard to spot, even with an automated tool, and are usually context aware. Those kind of shapes are visible, but off the SVG view box. Here's an example of a file with offscreen shapes.

+ +

On the other hand, the uncolored ones are easier to spot, since they usually come with styles making them invisible. They must meet 2 conditions: they must have no fill (or a transparent one) and no stroke.

+ +

Unused attributes on root <svg> element

+ +

The root <svg> element can also host many useless attributes. Here's an example taking into account the list below:

+ + + +

Other

+ + + +

Styling

+ +

Basics

+ + + +

Examples

+ +

Here are some examples for excessive number precision:

+ + + +

As for descriptive IDs:

+ + + +

Use of class names

+ + + +

Default style values

+ +

There's usually no need to set the default style value unless you're overriding a style. Here are some commonly seen examples:

+ + + +

SVG grouping

+ +

Style grouping

+ +

Group similarly styled shapes under one <g> tag, this avoids having to set the same class/styles on many shapes.

+ +

Avoid excessive grouping

+ +

Editors can sometimes do excessive grouping when exporting SVGs. This is due to the way editors work.

+ +

Nested groups

+ +

Avoid multiple-level nesting of groups, these make the SVG less readable.

+ +

Nested transforms

+ +

Some editors use <g> tags to do nested transforms, which is usually not needed. You can avoid this by doing basic algebra, for example:

+ +
<g transform="translate(-62, -310)"><shape transform="translate(60, 308)"/></g>
+ +

can be cut down to:

+ +
<shape transform="translate(-2,-2)"/>
+ +

because: -62+60 = -310+308 = -2

+ +

Performance tips

+ +

These rules are optional, but they help speeding up the SVG.

+ + + +

Tools

+ +

Tools can help clean SVG files. Note however that some of the rules stated above can be hard to detect with automated tools since they require too much context-awereness.
+ To this date, there doesn't seem to be a tool that handles all of the above. However, there are some existing utilities that cover some parts of this document:

+ + -- cgit v1.2.3-54-g00ecf