Hoppa till innehållet

Favicon

den lilla bild som en webbläsare visar bredvid en sida

Vad det är

En favicon är den ikon som en webbplats anger som sin egen, så att webbläsaren kan visa den i fliken, i adressfältet, bredvid ett bokmärke och i historiken. Ordet är en förkortning av engelskans favorites icon, efter bokmärkesmenyn Favoriter i Internet Explorer, den första webbläsaren som letade efter en sådan ikon. Den kallas också webbplatsikon eller flikikon. I HTML anges den med ett link-element vars rel är icon; äldre kod skriver shortcut icon, en stavning som standarden fortfarande godtar av historiska skäl.

En sida kan ange flera ikoner på en gång, var och en med en type, ett värde för sizes och en valfri media-fråga, och webbläsaren väljer den som passar det ställe där den ska rita. Storlekarna anges i enhetspixlar, så 32x32 betyder trettiotvå fysiska bildpunkter i varje led, och nyckelordet any är reserverat för ett skalbart format som SVG. När två kandidater passar lika bra vinner den som angavs sist. När en sida inte anger någon ikon alls får en webbläsare som hämtar sidan över HTTP eller HTTPS ändå fråga efter /favicon.ico i webbplatsens rot: en vana från slutet av 1990-talet som HTML-standarden numera skriver ned som tillåtet beteende.

Filen .ico bakom den vanan är en behållare snarare än en enda bild. En fil kan rymma flera bitmappar i olika storlekar, och webbläsaren tar den ram som passar; den registrerade mediatypen är image/vnd.microsoft.icon. I dag är PNG och SVG de vanliga alternativen, och i princip är varje format som webbläsaren kan avkoda tillåtet: en av den här webbplatsens egna sidor anger en WebP.

Faviconen är den minsta medlemmen i en familj av ikoner som lätt flyter ihop. Hemskärmsikonen från Apple, apple-touch-icon, är en separat PNG som iOS letar efter under sitt eget namn. En installerad webbapp hämtar oftast sina ikoner från webbappsmanifestet, bl.a. en så kallad maskable-variant som ritas med en säker marginal så att plattformen kan beskära den till en cirkel eller en kvadrat med rundade hörn. Den stora bild som en chattapp visar när någon klistrar in en länk är en delningsbild, som anges med helt annan kod, och ingen webbläsare använder den i en flik.

Varför det spelar roll

Valet gäller hur många ikonfiler som ska levereras, ur vilken källa och vem som håller dem i takt med varandra. Det ser ut som en designdetalj. I praktiken är det en liten bit infrastruktur som berör varje plattform där webbplatsen syns.

Igenkänningen är den del som en köpare ser först. Vid sexton CSS-pixlar i en rad med tjugo flikar är faviconen den enda delen av varumärket som läsaren tittar på medan hen arbetar någon annanstans, och en allmän sidsymbol på den platsen ser ut som en webbplats som ingen gjorde klar. Samma ikon märker bokmärket, posten i historiken och, hos flera sökmotorer, själva sökträffen.

Kostnad och korrekthet är den del som en utvecklare ser. Varje yta har sin egen konvention: en ICO eller PNG för fliken, en PNG på 180 pixlar för hemskärmen hos Apple, en uppsättning kvadratiska PNG-filer i manifestet för installationer, och en mörk flikrad där ett mörkt märke försvinner. Den snabba vägen är en favicongenerator som skriver trettio filer och ett kodblock att klistra in. Det fungerar, men inklistrad kod bär med sig inklistrade påståenden, och ett värde i sizes som beskriver någon annans filer är fel från första dagen.

Cachningen är den del som ingen planerar för. Webbläsare behåller ikoner mycket längre än sidor, och standarden säger uttryckligen att de inte är skyldiga att uppdatera en ikon när listan över angivna ikoner ändras. Ett nytt varumärke når därför återkommande besökare enligt webbläsarens schema snarare än webbplatsens. Gissningen i roten har också ett eget pris: varje första besök frågar efter /favicon.ico, så en webbplats som saknar filen skriver en 404 i sina loggar för varje ny läsare, och en webbplats bakom en inloggning kan svara på gissningen med en fråga om lösenord.

Vilket format ska det då vara? En SVG är en enda liten fil som skalar till varje storlek och kan byta färger med prefers-color-scheme. En detaljerad teckning klarar sig däremot bättre som raster, med ICO-filen kvar för program som inte läser något annat. De flesta webbplatser behöver både en favicon och en apple-touch-ikon, eftersom varje plattform bara läser sin egen.

Så ser det ut i praktiken

Den här webbplatsens ikoner kommer från teckningar, inte från en generator. Den visuella identiteten byggdes ur två handgjorda teckningar, och skript framställer allt som härleds ur dem: favicon-uppsättningen i de storlekar som krävs, touch-ikonerna och startbilderna i varje enhetsstorlek. Genereringen är en task som vem som helst kan köra. En kontroll av föråldrade filer jämför commitdatumet för varje härledd fil med källans och fallerar när en härledd fil har committats först, och härledda filer redigeras aldrig för hand. Sidan anger priset: ett hårt beroende av verktygskedjan för genereringen.

Kolofonen namnger verktygen bakom den kedjan: Python, som styr ImageMagick och genererar ikonuppsättningen ur en teckning av märket.

Webbplatsens egna mallar visar de val som följde. Varje sida anger en PNG på 180 pixlar och en ICO med tre ramar på 16, 32 och 48 pixlar. Märket i fliken var tidigare ett kraftigt kugghjul, enligt teorin att en enkel siluett klarar sexton pixlar bättre än en detaljerad teckning. Renderade sida vid sida över en ljus och en mörk flikrad höll den detaljerade teckningen men inte kugghjulet, så fliken visar nu en rasterrendering av den teckning av en hjärna som är företagets märke. Manifestet listar samma två filer i roten, och dess ikonuppsättning läses från disken ur de mappar som generatorn skriver, med varje storlek tagen ur filnamnet, så en ny storlek dyker upp i listan utan att någon skriver in den.

Var det går fel

Den gamla ikonen överlever ett nytt varumärke. Webbplatsen levererar en ny fil under samma namn, och återkommande besökare ser det gamla märket i flera veckor, eftersom webbläsaren behåller sin egen kopia och inte är skyldig sidan någon uppdatering. Publicera den nya ikonen under ett nytt filnamn, uppdatera link-elementen och behandla /favicon.ico i roten som en reserv som ändras sist.

De angivna storlekarna beskriver en annan fil. Kod som har kopierats från ett exempel listar storlekar som filen aldrig har innehållit, och webbläsaren väljer en kandidat på falska grunder och skalar fel ram. Den här webbplatsens manifest påstod en gång att dess ICO hade sju ramar när generatorn skrev tre, och listade en SVG med tre pixelstorlekar, något som en vektorfil inte har. Skriv sizes utifrån själva filen, eller härled värdet ur det som generatorn har skrivit.

En gissad sökväg ger något annat än en ikon. iOS frågar efter /apple-touch-icon.png i roten av en webbplats när en sida inte anger någon ikon för Apple, och webbläsare gör samma sak med /favicon.ico. På en server där okända sökvägar faller igenom till en annan applikation får gissningen en omdirigering, en inloggningssida eller, på en av den här webbplatsens sidor som serveras från en andra värddator, en 401. Att ange ikonen uttryckligen gör gissningen till en begäran om en fil som finns.

Märket försvinner mot en mörk flikrad. En svart logotyp på genomskinlig bakgrund försvinner när webbläsaren ritar sina flikar i mörkgrått. Rendera ikonen över både en ljus och en mörk flikrad innan du väljer den, och ge en SVG-favicon en regel för prefers-color-scheme eller rastret en egen bakgrund.

Detaljerna blir sörja vid sexton pixlar. En hel logotyp med ordbild som skalas ned till en flikplats blir en fläck. Testa den verkliga storleken i en verklig flik i stället för designfilen förstorad till 800 %, och välj den del av märket som fortfarande går att läsa där.

Läs mer

Ordlista