index: release v1.18 with only altgr index linked
[sheet.git] / codec-image.inc.pl
index f9a544c55ef9251b29f1981b9232887a3d6edc4f..6c138abcd5a34ebe548541a7024fe821ba52684e 100644 (file)
@@ -1,5 +1,7 @@
 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>',
@@ -49,7 +51,7 @@ codec => {
 },
 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)',
@@ -64,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,
@@ -122,7 +139,7 @@ feature => {
                        jp2k => 4,
                        webp => 3,
                        heic => 3,
-                       avif => 3,
+                       avif => 2,
                        jxl  => 5,
                },
        },
@@ -343,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',
@@ -375,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',
@@ -480,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 => {