what the heck!! that is so wild, mind blowing, i thought the main difference between raster graphics and vector graphics was the quality but i didn’t think about it too deeply.

i had no idea svg files actually used html code and pretty much could be modified using only text and amazing code woa!!! this opens up the possibility for so many things on linux i think.

for example, on a linux distro, we could modify the desktop environment and make it waaaaay lighter by getting rid of jpg or png icons and just using pure svg on it.

svg can be given a lot of attributes like movement, mouse hovering, change color, change anything. and most svg files are still under a megabyte. wow… please let me know other fun facts about svg or eps files. i really like doing graphic design on linux and inkscape.

  • Arthur Besse@lemmy.ml
    shield
    M
    link
    fedilink
    English
    arrow-up
    30
    ·
    edit-2
    29 days ago

    No, SVG files are not HTML.

    Please change this post title (currently “today i learned: svg files are literally just html code”), to avoid spreading this incorrect factoid!

    I suggest you change it to “today i learned: svg files are just text in an html-like language” or something like that.

    SVG is a dialect of XML.

    XML and HTML have many similarities, because they both are descendants of SGML. But, as others have noted in this thread, HTML is also not XML. (Except for when it’s XHTML…)

    Like HTML, SVG also can use CSS, and, in some environments (eg, in browsers, but not in Inkscape) also JavaScript. But, the styles you can specify with CSS in SVG are quite different than those you can specify with CSS in HTML.

    Lastly, you can embed SVG in HTML and it will work in (modern) browsers. You cannot embed HTML in SVG, however.

  • StorageB@lemmy.one
    link
    fedilink
    English
    arrow-up
    3
    ·
    29 days ago

    for example, on a linux distro, we could modify the desktop environment and make it waaaaay lighter by getting rid of jpg or png icons and just using pure svg on it.

    Isn’t that how it already works? GNOME system icons are all SVG - that’s what allows them to change colors when you change themes or switch between light and dark mode.

    • BCsven@lemmy.ca
      link
      fedilink
      arrow-up
      3
      ·
      29 days ago

      There are both, PNG as standard sizes and the SVGs. I believe the DE pulls the 32 48 256 pixel pngs so no addition rendering is needed.

      • ReversalHatchery@beehaw.org
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        29 days ago

        hard to tell, but you can check it:

        find / -type f -name *.svg
        

        maybe also include -xdev if you have an external drive that doesn’t hold any system files.

  • BCsven@lemmy.ca
    link
    fedilink
    arrow-up
    4
    arrow-down
    1
    ·
    29 days ago

    I don’t think it would be lighter, SVGs need a rendering tool to read the code and draw the artwork for the vector based images. This has always been slower than just displaying a bmp, jpg, or PNG.

    • ReversalHatchery@beehaw.org
      link
      fedilink
      English
      arrow-up
      1
      ·
      29 days ago

      It’s lighter in memory. on android (development) it has been said for a few years now that it’s better to use them for most cases, because android apps tend to use a ton of icons and this way they are small, themable, scaleable (the other option is to include multiple versions with diff resolutions), and can even have animations. it can basically save a lot of space.

      but of course that will make no difference when the apps are 180 MB, partly because of the same 30 MB native libs being bundled for 4 different CPU architectures, because wasteful the dev didn’t bother to produce different APKs for the different kinds of CPUs. and similar project mismanagement things.

  • gomp@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    29 days ago

    Ommigod, these kids :)

    SVG comes XML (a more coherent/simple version of the SGML that is behind HTML), and specifically from a time where people took XML and made it hyper-complicated with a flurry of extensions and specifications (look up “xml namespaces” “xslt” “xml schema”).

    The most apparent difference between SGML and XML is than in the former you write tags like <br> without a corresponding </br>, and in the latter you have to close them like <br/> (which is shorthand for <br></br>).

    So… today you learned that what you learned earlier today was close to truth, but not true :)

    PS: A lot of document formats are undercover/zipped XML (eg. the libre office documents, IIRC microsoft’s .xlsx and .docx). This is not dissimilar to how json/yaml are widely used today.

  • Arthur Besse@lemmy.mlM
    link
    fedilink
    English
    arrow-up
    0
    ·
    29 days ago

    for example, on a linux distro, we could modify the desktop environment and make it waaaaay lighter by getting rid of jpg or png icons and just using pure svg on it.

    this has largely happened; if you’re on a dpkg-based distro try running this command:

    dpkg -S svg | grep svg$ | sort

    …and you’ll see that your distro includes thousands of SVG files :)

    explanation of that pipeline:
    • dpkg -S svg - this searches for files installed by the package manager which contain “svg” in their path
    • grep svg$ - this filters the output to only show paths which end with svg; that is, the actual svg files. the argument to grep is a regular expression, where $ means “end of line”. you can invert the match (to see the paths dpkg -S svg found which only contain “svg” in the middle of the path) by writing grep -v svg$ instead.
    • the sort command does what it says on the tin, and makes the output easier to read

    you can run man dpkg, man grep, and man sort to read more about each of these commands.

  • mina86@lemmy.wtf
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    30 days ago

    Another interesting part is that HTML5 supports embedding SVG. That is, you can put SVG code directly in your HTML5 document and it’s going to render correctly. You can also style it through your website’s CSS file and manipulate the elements via JavaScript.

    Though as others pointed out, it’s technically not HTML but XML. For example, you have to close all the elements and quote all the attribute values. But when you embed it inside a HTML document, those rules get relaxed to adhere with HTML. (I.e., you cannot write <circle r=5> in SVG (it must be <circle r="5" />) but you can when you embed it in HTML).

    • adrianhooves@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      30 days ago

      woww that is crazy, thanks, does that mean that instead of using exported pngs, i can just use the svg code on html and it’ll be a much lighter file??

      • phr@discuss.tchncs.de
        link
        fedilink
        arrow-up
        0
        ·
        30 days ago

        litghter, as in smaller, yess. but keep in mind, that vector graphics need to be rendered, wich depending on circumstance and graphic might become inefficient.

        i never crunched the numbers, but basically youre outsourcing the generation of a rastergraphic to those who open up your website.

        • FooBarrington@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          29 days ago

          Though this also has advantages - not only will they be drawn at an appropriate resolution, they can also be styled & modified by the user. If I’m using Dark Reader and your icons are SVGs using currentColor, they’ll render with the same color as other text. The best you can do for raster graphics is inverting them.