135 votes

Faire fonctionner les polices Adobe avec CSS3 @font-face dans IE9

Je suis en train de construire une petite application intranet et j'essaie, sans succès, d'utiliser Police Adobe J'ai acheté récemment. Comme on me l'a dit, dans notre cas, il ne s'agit pas d'une violation de licence.

J'ai converti les versions .ttf/.otf de la police en .woff, .eot et .svg, afin de cibler tous les principaux navigateurs. La syntaxe @font-face que j'ai utilisée est essentiellement la syntaxe éprouvée de Police Spring :

@font-face {
    font-family: 'MyFontFamily';
    src: url('myfont-webfont.eot');
    src: url('myfont-webfont.eot?#iehack') format('eot'), 
         url('myfont-webfont.woff') format('woff'), 
         url('myfont-webfont.ttf')  format('truetype'),
         url('myfont-webfont.svg#svgFontName') format('svg');
    }

J'ai modifié les en-têtes HTTP (ajouté Access-Control-Allow-Origin = "*") pour permettre les références inter-domaines. Dans FF et Chrome, cela fonctionne parfaitement, mais dans IE9 j'obtiens :

CSS3111: @font-face encountered unknown error.  
myfont-webfont.woff
CSS3114: @font-face failed OpenType embedding permission check. Permission must be Installable. 
myfont-webfont.ttf

J'ai remarqué que lors de la conversion d'une police de .ttf/.otf en .woff, j'obtiens également un message d'erreur. .afm mais je n'ai pas la moindre idée si c'est important ou non...

Des idées pour résoudre ce problème ?

[Modifier] - J'héberge mes sites web (y compris les polices de caractères, mais dans un répertoire et un sous-domaine distincts pour le contenu statique) à l'adresse suivante IIS 7.5

17 votes

+1 pour une question fine, intelligente, bien formulée, avec tous les devoirs faits. Nous en avons trop rarement de nos jours !

0 votes

Il s'agit en effet d'une question bien posée, mais malheureusement, d'un doublon.

1 votes

Non, il ne s'agit sûrement pas d'un doublon, car pour les polices non-Adobe, les solutions que j'ai trouvées fonctionnent parfaitement. Ce qui diffère, c'est que ce n'est pas le cas avec le référencement des polices inter-domaines, je suppose - j'obtiens "@font-face encountered unknown error" avec la police .woff par opposition à "@font-face failed cross-origin request" dans les autres cas mentionnés.

98voto

Knu Points 8385

Je peux seulement vous expliquer comment corriger l'erreur "CSS3114".
Vous devez modifier le niveau d'intégration de votre fichier TTF.

En utilisant les outil vous pouvez le régler sur encastrement autorisé .
Pour une version 64 bits, consultez le site de @user22600. respuesta .

0 votes

Merci pour l'outil, je l'essaierai dans la journée. En attendant, j'ai lu à ce sujet et je suppose que vous avez raison ! Il semble que le problème soit causé par des informations DRM intégrées. Je vous tiens au courant.

2 votes

Malheureusement, l'outil que vous avez fourni ne peut pas être exécuté facilement sous les systèmes x64 (il est en 16 bits). J'ai trouvé un autre outil qui sert le même objectif et il a fonctionné comme un charme ! Je vais marquer votre réponse comme acceptée, car vous m'avez orienté dans la bonne direction - merci !

11 votes

Comme note pour ttfpatch, utilisez fsType=0.

33voto

stefannh Points 231

Vous devez définir le format de la police ie sur "embedded-opentype" et non "eot". Par exemple :

src: url('fontname.eot?#iefix') format('embedded-opentype')

0 votes

Merci, mais ce n'était pas le cas. Il s'agissait d'intégrer les autorisations dans la police elle-même.

0 votes

Cela a fonctionné pour Firefox et Chrome (IE fonctionnait de toute façon). Merci !

12voto

Renjith Points 29

J'ai obtenu l'erreur suivante :

CSS3114 : La vérification de l'autorisation d'intégration d'OpenType a échoué pour @font-face. L'autorisation doit être Installable.
nom de la police.ttf

Après avoir utilisé le code ci-dessous, mon problème a été résolu.....

src: url('fontname.ttf') format('embedded-opentype')

Merci de m'avoir aidé !
A la vôtre,
Renjith.

0 votes

Je pense que votre solution fonctionne pour certaines familles de polices mais pas pour d'autres. Cela dépend du niveau d'autorisation d'intégration de la police. Par exemple, cela ne fonctionnera pas pour la police Abadi

0 votes

Oui, cela n'a fait aucune différence avec mes fichiers .ttf, je recevais toujours l'erreur "Permission must be Installable". Ce qui a résolu ce problème, c'est l'exécution du .exe de Christian (ailleurs sur cette page) pour modifier les fichiers .ttf. Après avoir fait cela, IE11 serait afficher correctement les polices .ttf sur ma page web.

9voto

Dan Points 41

Essayez ceci, ajoutez ces lignes dans le web.config.

<system.webServer>
  <staticContent>
     <mimeMap fileExtension=".woff" mimeType="application/octet-stream" />
  </staticContent>
</system.webServer>

0 votes

Je ne pense pas que ce soit la même erreur que celle qu'il a signalée, mais cela sera nécessaire si vous servez des .woffs depuis IIS, oui. Vous pouvez également ajouter une clé de registre pour .woff dans HKLM \Software\Classes et y définir la valeur "Content Type". Cependant, Wikipedia dit le type correct est application/font-woff .

0 votes

En effet, c'est une chose différente. J'ai eu cette entrée - le problème était avec une déjà téléchargé une police qui ne pouvait pas être ouverte dans IE en raison de permissions intégrées.

0 votes

Je développais dans un environnement Apache, et lorsque j'ai déplacé mes fichiers de polices sur un serveur Windows IIS, cela a réglé mon problème.

7voto

Font Squirrel Points 1346

Il est vrai qu'IE9 exige que les polices TTF aient les bits d'incorporation définis sur Installable. Le générateur le fait automatiquement, mais nous bloquons actuellement les polices Adobe pour d'autres raisons. Nous pourrions lever cette restriction dans un avenir proche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X