visa hela sajten visa mobil version
Improove på Twitter:
"improove: Idag hade vi finbesök på KUSen. Andreas Ehn från Wrapp kom och pratade kring deras spännande startup. Vad tycker... http://t.co/DFGJnLOz"
Sagt om oss på Twitter:
"@kjwatts Telia kommer att sälja dem. Oklart om kvalitetsproblemen. Vi har fått in ett par för test på @Improove."

Typeface.js – Embedda fonter på dina webbsidor

23 Dec 2008 Övrigt

Ett av de största begräsningarna i webbläsare sedan dag ett har varit typsnitt. Man har varit begränsad till ett mindre antal fonter som fungerar i samliga webbläsare. Man kan ju tycka att det vid det här laget borde finnas metoder för att embedda fonter i webbsidor men så är icke fallet. Det finns olika typer av work arounds till detta problem. Den vanligaste är att använda Flash för att rendera fonter i rubriker genom plugins som t.ex. WordPress Flash Titles. Ett annat alternativ är att använda serverside script som genererar GIF-bilder för rubriker. Jag förespråkar den senare då den belastar klienten minst men det kan vara lite bökigt att uppnå. Flash är betydlig enklare men båda har sina nackdelar. Framför allt är väl problemet Google-optimering. Texter som är genererade av flash är svåra att indexera och även om man lyckas är det långt ifrån optimala lösningar som luktar lite för mycket fulhack.

Just där för är Typface.js ett av de intressantaste kodbiblioteken som släppts på mycket länge. Det använder sig av Canvas-klasserna för att rita ut pixelgrafik genom Javascript. Detta fungerar numera i de flesta webbläsare. Och genom att först konvertera TrueType-fonter till kurvor i en Javascript-fil kan man rita upp vilka fonter som helst i canvasytor. Detta görs som vanligt genom CSS och sedan körs bara ett script som byter ut alla element med klassen: typeface-js. Man CSS-style’ar bara html-koden som vanligt och sedan lägger man in en script-fil och font-scriptfil och sätter helt enkelt bara font-family enligt nedan.
 

<script type="text/javascript" src="typeface-0.11.js"></script>
<script type="text/javascript" src="helvetica_regular.typeface.js"></script>
<div class="myclass typeface-js" style="font-family: Helvetiker">
	Text here in Helvetiker font...
</div>

Det enda kruxet med det här tillvägagångssättet är hur man konverterar TrueType-fonter till Javascript-kurvor. På Typeface-sidan finns ett verktyg för att göra just detta men de allra flesta kommersiella fonter är kodade med ett attribut som säger att de just inte får embeddas. Jag är inte säker på juridiken här men OM man faktiskt har köpt fonten kan jag tycka att man borde få embedda den på webbsidor. Så för att ändå konvertera fonten kan du ladda ned programmet Font Creator från High Logic. Genom att öppna fonten i det programmet kan du gå in i menyn på: Format -> Settings ->General -> Font Embedding och där klicka bort alla boxar. Sedan sparar du ned fonten och laddar upp den igen på Typeface-sidan. Då kan du konvertera fonten och lägga in den på din sida. 

Exempel:

Så här kan det se ut med Helvetica som typsnitt

4 svar to “Typeface.js – Embedda fonter på dina webbsidor”

  1. HjalleNo Gravatar

    Det är väl snarare tvärt om när det gäller Google-indexeringen. Flashlösningen ändrar ju i DOM:en på klientsidan, så Google-spindeln ser ju bara en vanlig h2:a eller div. Däremot om man genererar gifar server side lägger man ju oftast in bilderna direkt i html-koden och då blir det inte indexerad text. Det går ju visserligen att göra en kombination av javascript och backend, men då blir det ännu krångligare.

    Det enda (förutom den jobbiga konverteringen) problemet jag ser med Typeface.js är att det inte går att markera texten ordentligt.

  2. pmNo Gravatar

    Du det har du iofs rätt i om man lägger upp det på det sättet. WP-pluginen till WordPress utgår dock från att man lägger in ett javascript som skriver ut en flash snarare än att den ändrar DOM-trädet men det finns kanske flera plugins. Och vad gäller bilder så stämmer det ju helt och fullt. 

    Jag håller med om att enda felet med Typeface inte går att markera. Det vore ju skönt om man kunde lösa det här felet på riktigt och inte bara fullösa det. Jag vill kunna embedda fonter i alla webbläsare. Någon som har koll på om detta kommer i HTML 5? 
    Sen har jag hittat några andra problem med Typeface. Den verkar rita ut fonten lite olika beroende på webbläsare. Skjuter in fonten 1 pixel i Explorer och håller på. Även några pixlars fel på höjden. Inget som inte går att fixa med några if-satser men ändå. Lite trist att behöva ta hänsyn till. 
  3. FreddeNo Gravatar

    Ja, alltså det där med extra pixlar här och där låter inte kul ur en designers synvinkel. Sen saknar jag den fina sub-pixelrenderingen som vi får med dagens plattskärmar. Hoppas på officiellt stöd iomed css3… Alla ”fulhack” luktar lite reklambyrå som bara MÅSTE ha corporatefonten :-)

  4. antonNo Gravatar

    Installerade detta tidigare idag och såg din post om det nu. Problemet med inbäddningen är ju att det möjliggör för andra att stjäla typsnittet, som nu t.ex. har jag snott ditt javascript med det konverterade helvetica. Tack för det, nu slapp jag göra det själv ;)

Kommentera inlägget