Coder Social home page Coder Social logo

svgcheck's Introduction

SVGCHECK

Release License PyPI - Version PyPI - Status PyPI - Format

Check SVG against RFC schema

This program takes an XML file containing an SVG or an RFC document. It then compares all of the SVG elements with the schema defined in the document with RFC 7996 bis. The program has the option of modifying and writing out a version of the input that passes the defined schema.

Usage

svgcheck accepts a single XML document as input and optionally outputs a modified version of the document.

Basic Usage

svgcheck [options] SOURCE

Options

Short Long Description
-C --clear-cache purge the cache and exit
-h --help show the help message and exit
-N --no-network don't use the network to resolve references
-q --quiet dont print anything
-r --repair repair the SVG so it meets RFC 7966, only emit the new file if repairs are needed
-a --always-emit repair the SVG file if needed, emit the file even if no repairs are needed
-v --verbose print extra information
-V --version display the version number and exit
-d RNG --rng=RNG specify an alternate RNG file
-o FILENAME --out=FILENAME specify an output filename, default to stdout
-g --grey-scale use a grey scale hieristic to determine what is white
--grey-level cut off level between black and white

Dependencies

svgcheck depends on the following packages:

svgcheck's People

Contributors

jimsch avatar kesara avatar ngpixel avatar rjsparks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

svgcheck's Issues

Enhancement: warn when <desc> element is missing

The SVG element allows an author to provide a description of the artwork, and the contents of the element can be read by webpage readers, which makes the artwork more accessible to people who are visually impaired.

It would be nice if svgcheck warned if the element is missing or empty.

Only black and white as colors?

I have a SVG file with multiple different colors. After running svgcheck on the file I get the error:

path\to\file.svg:21921: The attribute 'color' does not allow the value '#00ffff', replaced with 'black'

Is it possible to keep the original color? Or can svgcheck only accept the values for black and white?

Result/version.err is out of sync with release

Having the output of version captured in source-control this way is strange - premise of test needs to be reconsidered.

If we keep this file in source-control, the version of svgcheck itself needs to be updated as part of release.

It would probably be better to compute the desired result at test runtime, given that we have rfctools_common>=0.6.0 in requirements.txt. An update of that package would cause the tests of this one to start failing...

We should also move to using constraints.txt and use that and svgcheck.init.py as the source for the computation for the expected output.

README has older info, should be updated

The README has the following paragraph, which is out of date and can just be deleted:

The RFC Editor is in the process of changing the canonical input format of Internet-Draft and RFC docuemnts. As part of this process, the ability to create artwork which is not ASCII text is being introduced. This is being done with SVG. However, the full set of SVG does not match with the archival nature of RFCs so a subset of the SVG specification is being defined by the RFC Editor that eliminates many capabilities such as animation. Additionally, there is a requirement that the images have the widest possible usage both by printers, monochrome displays and individuals with visual disabilities. Further information on the process can be found on the RFC Editor at the RFC Editor site.

Both RFC 7996 and draft-7996-bis provide sufficient motivating text.

allow / verify embedded CSS in SVG

When using svgcheck on an SVG file that contains embedded CSS, it emits the following error message:

1.svg:9: The element 'style' is not allowed as a child of 'svg'
INFO: File conforms to SVG requirements.

I think this is a contradiction: When 'style' is not allowed, then the file also does not conform to the SVG requirements, right?

Furthermore it would be great when svgcheck also would be able to verify the embedded CSS.

The SVG file basically looks like

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg xmlns="http://www.w3.org/2000/svg"
    width="105mm"
    height="105mm"
    viewBox="0 0 60 80"
    version="1.1">

<style type="text/css">
    <![CDATA[
        .ThickLine {
            fill:none;
            stroke:black;
            stroke-width:2;
        }
        .ThinLine {
            fill:none;
            stroke:black;
            stroke-width:1;
        }
        /* some more styles */
    ]]>
</style>

<g>
    <g class="ThinLine">
        <path d="m 15,35 l 0,35" />
    </g>
    <g class="ThickLine">
        <path d="m 15,35 l 25,0" />
    </g>
</g>

</svg>

What does the error "File does not conform to SVG requirements" when running repair means?

Running

python -m svgcheck.run .\logo3_plain.svg --repair

yielding this:

ERROR: File does not conform to SVG requirements

Does that mean the repair is not successful? Why is that?
Here is the file

..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:20: The element 'filter' is not allowed as a child of 'defs'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:31: The element 'filter' is not allowed as a child of 'defs'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:42: The element 'filter' is not allowed as a child of 'defs'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:51: Style property 'display' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:51: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:51: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:51: The attribute 'stroke' does not allow the value '#000f96', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: Style property 'stroke-miterlimit' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: Style property 'stroke-dasharray' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: Style property 'stroke-dashoffset' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:55: The attribute 'stroke' does not allow the value '#000f96', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:59: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:59: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:59: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:59: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:59: Style property 'stroke-dasharray' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:59: Style property 'stroke-dashoffset' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:59: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:59: The attribute 'stroke' does not allow the value '#000f96', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:63: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:63: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:63: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:63: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:63: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:63: The attribute 'stroke' does not allow the value '#000f96', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:68: Style property 'display' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:68: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:68: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:68: The attribute 'fill' does not allow the value '#870096', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:74: Style property 'opacity' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:74: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:74: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:74: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:74: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:74: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:74: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:74: The attribute 'fill' does not allow the value '#870096', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:74: The attribute 'stroke' does not allow the value '#8b0b18', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:79: Style property 'display' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:79: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:79: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:79: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:79: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:79: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:79: Style property 'filter' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:79: The attribute 'fill' does not allow the value '#77008f', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:79: The attribute 'stroke' does not allow the value '#ff0000', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: Style property 'display' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: Style property 'mix-blend-mode' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: Style property 'filter' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: The attribute 'fill' does not allow the value '#590082', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:84: The attribute 'stroke' does not allow the value '#ff0000', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:91: Style property 'display' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:91: Style property 'mix-blend-mode' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:91: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:91: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:91: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:91: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:91: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:91: Style property 'filter' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:91: The attribute 'stroke' does not allow the value '#ff0000', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:96: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:96: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:96: The attribute 'stroke' does not allow the value '#000f96', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:100: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:100: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:100: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:100: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:100: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:100: Style property 'stroke-miterlimit' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:100: Style property 'stroke-dasharray' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:100: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:100: The attribute 'stroke' does not allow the value '#000f96', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:104: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:104: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:104: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:104: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:104: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:104: Style property 'stroke-miterlimit' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:104: Style property 'stroke-dasharray' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:104: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:104: The attribute 'stroke' does not allow the value '#000f96', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:108: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:108: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:108: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:108: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:108: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:108: Style property 'stroke-miterlimit' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:108: Style property 'stroke-dasharray' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:108: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:108: The attribute 'stroke' does not allow the value '#000f96', replaced with 'black'
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: Style property 'display' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: Style property 'fill' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: Style property 'fill-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: Style property 'fill-rule' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: Style property 'stroke' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: Style property 'stroke-width' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: Style property 'stroke-miterlimit' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: Style property 'stroke-dasharray' removed
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: Style property 'stroke-opacity' promoted to attribute
..\..\..\QC%20supplements\Design\C%20Obsidian,%20qu%E1%BA%A3n%20l%C3%BD%20d%E1%BB%B1%20%C3%A1n%20v%C3%A0%20c%C3%B4ng%20c%E1%BB%A5%20ngh%C4%A9\logo3_plain.svg:115: The attribute 'stroke' does not allow the value '#000f96', replaced with 'black'
<?xml version='1.0' encoding='utf-8'?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" width="99.997658mm" height="99.644173mm" viewBox="0 0 99.997659 99.644173" version="1.1" id="svg844">
  <defs id="defs841">
    </defs>
  <g id="layer2" transform="translate(-73.88041,-89.021674)" stroke="black" stroke-opacity="1">
    <path d="M 74.233963,188.31229 103.33813,159.20813" id="path5002" fill="none" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="1" stroke-opacity="1"/>
    <path id="rect4407" d="m 104.35518,89.331666 v 69.522894 h 69.52289" fill="none" fill-rule="evenodd" stroke="black" stroke-width="1.327" stroke-opacity="1"/>
    <path id="path4894" d="M 172.86104,159.20811 V 89.685219 h -69.52289" fill="none" fill-rule="evenodd" stroke="black" stroke-width="1.32709" stroke-opacity="1"/>
  </g>
  <g id="layer1" transform="translate(-73.88041,-89.021674)" fill="black" fill-opacity="1">
    <circle id="circle1937" cx="124.34782" cy="140.19275" r="31.473658" fill="black" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="0" stroke-opacity="1"/>
    <path id="rect1763" d="m 491.95117,490.34961 c -32.08117,77.92572 -95.05455,128.82076 -169.59375,169.5957 14.7953,15.79914 33.58845,27.30232 54.38867,33.29102 L 525.28516,544.69727 c -6.00754,-20.7902 -17.52541,-39.5689 -33.33399,-54.34766 z" transform="matrix(0.26228047,0,0,0.26228047,16.812805,-11.405376)" fill="black" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="0"/>
    <path id="path1422" d="m 525.28516,544.69727 c -13.25996,40.49213 -21.12168,86.68713 -45.30666,112.22924 -24.18209,25.53906 -64.68593,30.4273 -103.23241,36.30982 10.80644,3.13925 22.00074,4.74285 33.25391,4.76367 66.27417,0 120,-53.72583 120,-120 -3.7e-4,-11.26721 -1.58757,-22.47822 -4.71484,-33.30273 z" transform="matrix(0.26228047,0,0,0.26228047,16.812805,-11.405376)" fill="black" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="0"/>
    <circle id="path3230" cx="97.366669" cy="141.02292" r="6.8791666" transform="matrix(0.99129633,0,0,0.99129633,16.812805,-11.405376)" fill="#ffffff" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="0"/>
  </g>
  <g id="layer3" transform="translate(-73.88041,-89.021674)" stroke="black" stroke-opacity="1">
    <path d="M 74.233962,118.78938 103.33813,89.685219" id="path4522" fill="none" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="1" stroke-opacity="1"/>
    <path d="m 143.75687,188.31229 29.10417,-29.10416" id="path4524" fill="none" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="1" stroke-opacity="1"/>
    <path d="M 143.75687,118.78938 172.86104,89.685219" id="path4526" fill="none" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="1" stroke-opacity="1"/>
    <rect id="rect3872" width="69.522911" height="69.522911" x="74.233963" y="118.78938" fill="none" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="1.32709" stroke-opacity="1"/>
  </g>
</svg>
ERROR: File does not conform to SVG requirements

Have an article explain why conforming to SVG requirements is necessary

Not an issue but a suggestion. Perhaps you want to have an article explain:

  • Why conforming to SVG requirements is necessary,
  • What common mistakes leading to it,
  • How to prevent it to happen, and
  • What to do when you have one

For most people they won't know about this. My malformed file is still readable by image viewers and browsers. Only when I run script that it breaks. I try to repair with this tool but it doesn't work.

Capture coverage results

  • allow testing of contents of pypi tarball using unittest discover
  • rework use of coverage to capture results

Enhancement: Checking that text in SVG is searchable

It would be nice if svgcheck warned about strings that are not searchable. For example, said something like "Warning: SVG appears to contain a text string that has been separated into letters. Ability to select text or search for text within the image may be affected." These usability issues can then be addressed by authors and editors (SVG updated or alt text provided, etc.).

Some background

Some examples:

The workaround is to manually search for strings that are used in the SVG diagram and to use a mouse cursor to see if text in an SVG diagram can be selected.

Please make a new release of svgcheck

Thanks for all the work you've done recently getting svgcheck moved into git and cleaning up the project metadata and CI!

It would be great to make a new release, superceding 0.6.0, but pointing back to the updated project information.

I'm looking at putting svgcheck into debian to make it easier for folks to develop RFCs from debian and its derived operating systems, and having an updated release (even one that doesn't change much functionally) would be useful for that.

When you make the new release, please consider including the test data, because (as with ietf-tools/rfctools-common#1) running standard tests on the current 0.6.0 module fails due to missing data.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.