Blog

25 Nov'14

Fonts en documents EPUB (i en especial en iBooks)

Categoria: Programació
 

L'estàndard EPUB 3, internament, consisteix en un conjunt de documents XHTML, CSS i JavaScript. Per tant, l'anàlisi de l'accessibilitat d'un document EPUB és completament equivalent a l'anàlisi d'un lloc web i, igual que en les pàgines web, és important separar el codi d'estil de l'estructura utilitzant Cascade Style Sheets (CSS).

El cas de les tipologies de lletra personalitzades, però, és lleugerament més complicat ja que, a més de definir el font-face i el font-family, cal afegir el fitxer de la tipografia en el <manifest> del document .opf. És a dir, un document CSS que contingui un codi com:

@font-face {
	font-family:Calibri;
	src : url("../font/Calibri.ttf");
}

l'estil aplicat a un paràgraf, per exemple:

p.calibri-paragraph {
	font-family:Calibri, sans-serif;
}

i la inclusió en el <manifest> del document .opf:

<item id="Calibri.ttf" href="font/Calibri.ttf" media-type="application/vnd.ms-opentype" />

Però per als senyors d'Apple això no és suficient, i el seu lector de llibres electrònics iBook aplica la seva pròpia tipologia. Però no de forma homogènia, sinó només en els elements <div>, <p> i <span>. Això fa que, en els elements d'enllaç, blockquote, li, code, etc. es respecti la tipologia definida per l'autor i, en la resta no, portant a un poti-poti de de fonts que és incontrolable i desagradable al lector.

La solució a aquest desgavell passa per incloure un fitxer com.apple.ibooks.display-options.xml dins la carpeta META-INF (no cal declarar aquest fitxer en el <manifest>) amb un codi de l'estil:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<display_options>
<platform name="*">
<option name="specified-fonts">true</option>
</platform>
</display_options>

Més informació en el fantàstic blog Pigs, Gourds, and wikis i en la pregunta de stackexchange: Can I make custom fonts show up in iBooks?