index: release v1.18 with only altgr index linked
[sheet.git] / codec-image.inc.pl
index 92e17d5911cf9890641b1e9a32883f3a7c72053f..6c138abcd5a34ebe548541a7024fe821ba52684e 100644 (file)
@@ -1,46 +1,57 @@
 use utf8;
 +{
+intro => 'Comparison of image encoding formats, based on <a href="https://cloudinary.com/blog/one_pixel_is_worth_three_thousand_words">Cloudinary</a> research.',
+keywords => [qw( image picture codec encoder encoding decode compression file format type mime )],
 codec => {
        jpeg => {
                name => '<abbr title="Joint Photographic Experts Group">JPEG</abbr>',
                available => 1992,
+               generation => 0,
        },
        gif => {
                name => '<abbr title="Graphics Interchange Format">GIF</abbr>',
                available => 1987,
+               generation => 0,
        },
        png => {
                name => '<abbr title="Portable Network Graphics">PNG</abbr>',
                available => 1996,
+               generation => 1,
        },
        jp2k => {
                name => 'JPEG 2000',
                available => 2000,
+               generation => 1,
        },
        webp => {
                name => 'WebP',
                available => 2010,
+               generation => 1,
        },
        heic => {
                name => '<abbr title="High Efficiency Image Container (HEVC in HEIF)">HEIC</abbr>',
                available => 2015,
+               generation => 2,
        },
        avif => {
                name => '<abbr title="AV1 Image File Format">AVIF</abbr>',
                available => 2019,
+               generation => 2,
        },
        jxl => {
                name => 'JPEG XL',
                available => 2021,
+               generation => 2,
        },
        pnm => {
                name => '<abbr title="Portable aNyMap">PNM</abbr>',
                available => 1988,
+               generation => 0,
        },
 },
 feature => {
        default => {
-               children => [qw( quality_photo quality_art speed limits features royalties overhead support )],
+               children => [qw( quality_photo quality_art speed limits features royalties overhead support web )],
        },
        quality_photo => {
                name => 'compression (photo)',
@@ -55,11 +66,26 @@ feature => {
                        avif => 5,
                        jxl  => 5,
                },
-               children => [qw( quality_photo_1 quality_photo_2 quality_photo_3 quality_photo_ll )],
+               children => [qw( quality_photo_ll quality_photo_3 quality_photo_2 quality_photo_1 quality_thumbs )],
        },
-       quality_photo_1 => {
+       quality_thumbs => {
                parent => 'quality_photo',
                name => 'thumbnails',
+               score => {
+                       jpeg => 1,
+                       pnm  => 1,
+                       gif  => 2,
+                       png  => 3,
+                       jp2k => 1,
+                       webp => 2,
+                       heic => 4,
+                       avif => 4,
+                       jxl  => 3,
+               },
+       },
+       quality_photo_1 => {
+               parent => 'quality_photo',
+               name => 'low fidelity',
                score => {
                        jpeg => 2,
                        pnm  => 1,
@@ -113,7 +139,7 @@ feature => {
                        jp2k => 4,
                        webp => 3,
                        heic => 3,
-                       avif => 3,
+                       avif => 2,
                        jxl  => 5,
                },
        },
@@ -334,7 +360,7 @@ feature => {
                        avif => 4,
                        jxl  => 5,
                },
-               children => [qw( animation progressive alpha depthmap overlays authoring reencode compat_jpeg )],
+               children => [qw( animation progressive alpha depthmap overlays vector authoring reencode compat_jpeg )],
        },
        animation => {
                parent => 'features',
@@ -366,6 +392,21 @@ feature => {
                        jxl  => 5,
                },
        },
+       vector => {
+               parent => 'features',
+               name => 'vector drawing',
+               score => {
+                       jpeg => 'n',
+                       pnm => 'n',
+                       gif => 'n',
+                       png => 'n',
+                       jp2k => 'n',
+                       webp => 'n',
+                       heic => 'n',
+                       avif => 'n',
+                       jxl => [2, undef, 'splines'],
+               },
+       },
        alpha => {
                parent => 'features',
                name => 'alpha transparency',
@@ -471,17 +512,33 @@ feature => {
                },
                children => [],
        },
+       web => {
+               name => 'browser support',
+               score => {
+                       jpeg => [5, undef, 'ubiquitous since first inline images (1993)'],
+                       pnm  => [1, undef, 'rarely by (unix) systems'],
+                       xbm  => [2, undef, 'common before 200X'],
+                       gif  => [5, undef, 'predates the web, but unrestricted since 2004'],
+                       png  => [5, undef, 'problematic prior to IE7, currently ubiquitous'],
+                       jp2k => [2, undef, 'just Safari'],
+                       webp => [4, undef, 'widespread since 2020'],
+                       heic => [1, undef, 'no browser support'],
+                       avif => [3, undef, 'significant since 2021 (Safari 2023, no Edge yet)'],
+                       jxl  => [2, undef, 'experimental, blocked by chrome'],
+               },
+       },
        support => {
+               name => 'adoption',
                score => {
-                       jpeg => 5,
-                       pnm  => [2, undef],
-                       gif  => 5,
-                       png  => 5,
-                       jp2k => [2, undef, 'Apple only'],
-                       webp => [4, undef, 'modern browsers'],
-                       heic => [1, undef, 'stored by latest cameras, no browser support'],
-                       avif => [3, undef, 'all modern browsers except Safari and Edge'],
-                       jxl  => [2, undef, 'upcoming in most browsers'],
+                       jpeg => [5, undef, 'standard photography'],
+                       pnm  => [2, undef, 'uncomplicated bitmap interchange'],
+                       gif  => [4, undef, 'declining due to limitations'],
+                       png  => [5, undef, 'standard illustrations'],
+                       jp2k => [3, undef, 'limited beyond Apple'],
+                       webp => [4, undef, 'mostly online'],
+                       heic => [2, undef, 'stored by latest cameras, interchange unlikely'],
+                       avif => [3, undef, 'upcoming'],
+                       jxl  => [2, undef, 'ongoing'],
                },
        },
        overhead => {