Le conteneur ICO, et pourquoi les entrées PNG fonctionnent
Un fichier .ico est l'un des formats de conteneur les plus simples encore utilisés au quotidien : un en-tête ICONDIR de 6 octets (mot réservé, type 1 pour les icônes, nombre d'entrées), puis une ICONDIRENTRY de 16 octets par image consignant sa largeur et sa hauteur (sur un seul octet, où 0 signifie 256), sa profondeur de bits, sa longueur en octets et son décalage, suivies des données d'image brutes mises bout à bout. À l'origine, ces données devaient être un BMP sans en-tête accompagné d'un masque de transparence AND ; depuis Windows Vista, les données peuvent être un flux PNG complet, que le système détecte grâce à ses octets de signature. C'est ce seul changement qui rend possible un générateur côté client aussi compact : l'encodeur PNG de canvas.toBlob du navigateur fait le travail sur les pixels, et la couche ICO ne représente que 6 + 16 × n octets de comptabilité en petit-boutiste écrits avec un DataView.