Impossibile decodificare il font scaricato, errore di analisi OTS: tag versione non valido + rotaie 4


136

Sto eseguendo la pre-compilazione di risorse ed eseguendo l'applicazione in modalità di produzione. Dopo la compilazione quando carico la mia pagina indice ho ricevuto i seguenti avvisi nella console di Chrome:

Failed to decode downloaded font: http://localhost:3000/fonts/ionicons.ttf?v=2.0.0
prospects:1 OTS parsing error: invalid version tag
Failed to decode downloaded font: http://localhost:3000/fonts/ionicons.woff?v=2.0.0
prospects:1 OTS parsing error: invalid version tag

Il problema è che non sta caricando le icone invece di quelle che mostrano i quadrati .

abbiamo usato i caratteri personalizzati e il codice è:

@font-face {
  font-family: 'icomoon';
  src: font-url('icomoon.eot');
  src: font-url('icomoon.eot?#iefix') format('embedded-opentype'),
       font-url('icomoon.ttf') format('truetype'),
       font-url('icomoon.woff') format('woff'),
       font-url('icomoon.svg#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
}

Non so cosa mi manchi. Ho cercato molto e ho anche provato la soluzione, ma non ho avuto alcun successo. Nella modalità di sviluppo funziona benissimo ma non so perché sia ​​quadrata nella modalità di produzione.


2
Potrebbe essere una serie di cose: la codifica dei caratteri potrebbe essere errata o il carattere stesso potrebbe essere danneggiato. Puoi aprire il carattere in Font Book o simili? Un rapido Google rivela un bug nella versione 45 del browser Chromium: code.google.com/p/chromium/issues/detail?id=545924
Craig

sei riuscito a risolvere il problema?
coder

1
Nel mio caso, devo eliminare la cache di cloudflare e attendere alcuni minuti per lasciare che il tempo risolva il problema!
Hosein Ghanbari,

Ho avuto lo stesso problema e ho scoperto che ho bisogno del font woff2 prima di woff per Chrome.
jcubic,

Risposte:


138

Ho avuto lo stesso errore esatto, e nel mio caso si è rivelato essere a causa di un percorso sbagliato per la @font-facedichiarazione. L'ispettore web non si è mai lamentato di un 404 poiché il server di sviluppo che stiamo utilizzando (live-server) è stato configurato per servire index.html predefinito su qualsiasi 404: s. Senza conoscere alcun dettaglio sulla configurazione, questo potrebbe essere un probabile colpevole.


1
Se questo è il motivo del reindirizzamento puoi filtrarlo per estensione RewriteRule! \. (Js | gif | css | jpg | otf | eot | png) $ / redirect [R = 301, L]
fearis

Nel mio caso, il raggruppamento e la minificazione ASP.NET MVC hanno sostanzialmente modificato la posizione del CSS senza modificarne i relativi percorsi. Ho dovuto eliminare il file già minimizzato e utilizzare un CssRewriteUrlTransformin BundleConfig.
Sinjai,

22

Se in esecuzione su IIS come server e .net 4 / 4.5, potrebbero mancare le definizioni di estensione mime / file in Web.config - in questo modo:

<system.webServer>
	<staticContent>
      <remove fileExtension=".eot" />
      <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
      <remove fileExtension=".ttf" />
      <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
      <remove fileExtension=".svg" />
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
      <remove fileExtension=".woff" />
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
    </staticContent>
</system.webServer>


16

Stavo avendo lo stesso problema., OTS parsing error: Failed to convert WOFF 2.0 font to SFNT (index):1 Failed to decode downloaded font: http://dev.xyz/themes/custom/xyz_theme/fonts/xyz_rock/rocksansbold/Rock-SansBold.woff2

Se viene visualizzato questo messaggio di errore durante il tentativo di commit del font, si tratta di un problema con .gitattributes " warning: CRLF will be replaced by LF"

La soluzione per questo è l'aggiunta di qualsiasi tipo di carattere con cui stai riscontrando il problema in .gitattributes

*.ttf     -text diff
*.eot     -text diff
*.woff    -text diff
*.woff2   -text diff

Quindi ho eliminato i file di font corrotti e riapplicato i nuovi file di font e funziona alla grande.


dove vive quel file? il browser saprà anche che esiste? Come?
Omar,

@Omar Quel file dovrebbe trovarsi nella directory principale e non ha nulla a che fare con il browser. Descrive come git gestirà le terminazioni di linea in diversi formati di file. Git può corrompere alcuni tipi di file provando a cambiare i finali di linea.
elliottregan,

5

provare

@font-face {
  font-family: 'icomoon';
  src: asset-url('icomoon.eot');
  src: asset-url('icomoon.eot?#iefix') format('embedded-opentype'),
       asset-url('icomoon.ttf') format('truetype'),
       asset-url('icomoon.woff') format('woff'),
       asset-url('icomoon.svg#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
}

e rinominare il file in application.css.scss


4

Avevo un font corrotto, anche se sembrava caricarsi senza problemi e sotto Sorgenti in Chrome apparivano i devtools, il conteggio dei byte non era corretto, quindi l'ho scaricato di nuovo e l'ho risolto.


Se si utilizza woff2, ho riscontrato questo problema dopo aver utilizzato i convertitori online. Necessario utilizzare il convertitore di riga di comando woff2 (disponibile tramite homebrew)
rob-gordon

4

Basta indicare il formato su @ font-face come segue:

@font-face {
  font-family: 'Some Family';
  src: url('/fonts/fontname.ttf') format('ttf'); /* and this for every font */
}


3

Ho avuto lo stesso problema e questo è dovuto al fatto che git tratta questi file come testo. Pertanto, durante il checkout dei file negli agenti di compilazione, il binario non è stato mantenuto.

Aggiungi questo al tuo .gitattributesfile e prova.

*.eot binary
*.ttf binary
*.woff binary
*.woff2 binary

2

Durante l'utilizzo angular-cli, questo è ciò che funziona per me:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <remove fileExtension=".eot" />
            <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
            <remove fileExtension=".ttf" />
            <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
            <remove fileExtension=".svg" />
            <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
            <remove fileExtension=".woff" />
            <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
            <remove fileExtension=".woff2" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
            <remove fileExtension=".json" />
            <mimeMap fileExtension=".json" mimeType="application/json" />
        </staticContent>
        <rewrite>
            <rules>
                <rule name="AngularJS" stopProcessing="true">
                    <match url="^(?!.*(.bundle.js|.bundle.js.map|.bundle.js.gz|.bundle.css|.bundle.css.gz|.chunk.js|.chunk.js.map|.png|.jpg|.ico|.eot|.svg|.woff|.woff2|.ttf|.html)).*$" />
                    <conditions logicalGrouping="MatchAll">
                    </conditions>
                    <action type="Rewrite" url="/"  appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Sarebbe bello se potessi dire, per quale file devi aggiungere questi?
Saiyaff Farouk,

1
Modifica web.config
Skorunka František

Non sono riuscito a presentare un file web.config nel progetto angular-cli. Utilizzando la versione 1.3.0. Qualche idea?
Saiyaff Farouk,

Web.config viene usato solo quando si ospita l'app client su IIS (incl. Servizi Web di Azure).
Skorunka František,

2

Stavo ottenendo i seguenti errori:

Failed to decode downloaded font: [...]/fonts/glyphicons-halflings-regular.woff2
OTS parsing error: invalid version tag

che è stato corretto dopo aver scaricato il file non elaborato direttamente da:
https://github.com/twbs/bootstrap/blob/master/fonts/glyphicons-halflings-regular.woff2

Il problema era che si era verificato un errore proxy durante il download del file (conteneva il messaggio di errore HTML).


Non pensavo di controllare il file stesso .. assicurati anche di non scaricare questo link direttamente ("salva link come"), ma inseriscilo e usa il pulsante "download".
omadawn,

2

Vai all'indirizzo sotto su GitHub e scarica ciascuno dei file FontAwesome.

https://github.com/FortAwesome/font-awesome-sass/tree/master/assets/fonts/font-awesome

... ma invece di fare clic con il pulsante destro del mouse e salvare il collegamento come, fare clic su ciascuno dei file e utilizzare il pulsante "Download" per salvarli.

Ho scoperto che salvando il link scaricato una pagina HTML e non il file binario FontAwesome stesso.

Una volta che avevo tutti i binari ha funzionato per me.


1

Il mio problema era che stavo dichiarando due caratteri e scss sembra aspettarsi che tu dichiari il nome del carattere.

dopo il @font-face{} tuo devi dichiarare $my-font: "OpenSans3.0 or whatever";

e questo per ogni tipo di carattere.

:-)


Stai parlando di font-family?
Nadav B,

non ricordo ora, scusa :-)
Antoine,

1

Per gli utenti di angular -cli e webpack sospettavo che ci fosse qualche problema durante l'importazione dei caratteri nel file css, quindi fornisci anche la posizione dell'URL codificata con virgolette singole come segue:

@font-face {
font-family: 'some_family';
src: url('./assets/fonts/folder/some_family-regular-webfont.woff2') format('woff2'),
     url('./assets/fonts/folder/some_family-regular-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}

Questo post potrebbe essere vecchio, ma questa è la soluzione che ha funzionato per me.


1

Ho avuto lo stesso problema.

L'aggiunta della versione del font (ad es. ?v=1.101) All'URL del font dovrebbe fare il trucco;)

@font-face {
    font-family: 'Open Sans';
    font-style: normal;
    font-weight: 600;
    src: url('../fonts/open-sans-v15-latin-600.eot?v=1.101'); /* IE9 Compat Modes */
    src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'),
    url('../fonts/open-sans-v15-latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
    url('../fonts/open-sans-v15-latin-600.woff2?v=1.101') format('woff2'), /* Super Modern Browsers */
    url('../fonts/open-sans-v15-latin-600.woff?v=1.101') format('woff'), /* Modern Browsers */
    url('../fonts/open-sans-v15-latin-600.ttf') format('truetype'), /* Safari, Android, iOS */
    url('../fonts/open-sans-v15-latin-600.svg#OpenSans') format('svg'); /* Legacy iOS */
}

Cliccando (tasto destro del mouse) sulla versione TTF del font e selezionando "Ottieni informazioni" (Mac OSX) "Proprietà" (Windows) nel menu contestuale dovrebbe essere sufficiente per accedere alla versione del font.


0

Se stai utilizzando Chrome, prova ad aggiungere una versione opentype (OTF) del carattere come mostrato di seguito:

    ...
     url('icomoon.otf') format('opentype'),
    ...

Saluti!


0

Se usi bootstrap, aggiorna il bootstrap.min.cssfile css ( ) e i file di font bootstrap . Ho risolto il mio problema con questa soluzione.


0

Sto usando ASP.NET con IIS e risulta che avevo solo bisogno di aggiungere il tipo MIME a IIS: '.woff2' / 'application / font-woff'


0

Dopo aver provato molti altri approcci e molte reinstallazioni e controlli, ho appena risolto il problema cancellando i dati di navigazione da Chrome (immagini e file memorizzati nella cache) e quindi aggiornando la pagina.


0

Ho avuto lo stesso problema quando ho aperto e salvato .woffe. woff2file tramite Sublime Text con EditorConfigopzione end_of_line = lf. Ho appena copiato i file nella cartella dei caratteri senza aprirli in Sublime e il problema è stato risolto.


0

Se le altre risposte non hanno funzionato, prova:

  1. controlla il file .htaccess

    # Fonts
    # Add correct content-type for fonts

    AddType application/vnd.ms-fontobject .eot
    AddType application/x-font-ttf .ttf
    AddType application/x-font-opentype .otf
    AddType application/x-font-woff .woff
    AddType application/x-font-woff2 .woff2
    AddType image/svg+xml .svg

  2. svuota la cache del server

  3. svuota la cache del browser e ricarica

0

Controlla il file css del tuo font. (fontawesome.css / fontawesome.min.css) , vedrai così:

@font-face {
    font-family: 'FontAwesome';
    src: url('../fonts/fontawesome-webfont.eot-v=4.6.3.htm');
    src: url('../fonts/fontawesome-webfont.eot#iefix-v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2-v=4.6.3.htm') format('woff2'), url('../fonts/fontawesome-webfont.woff-v=4.6.3.htm') format('woff'), url('../fonts/fontawesome-webfont.ttf-v=4.6.3.htm') format('truetype'), url('../fonts/fontawesome-webfont.svg-v=4.6.3.htm#fontawesomeregular') format('svg');
    font-weight: normal;
    font-style: normal
}

vedrai il tag della versione dopo il nome dell'estensione del file del tuo carattere . Piace:

-v = 4.6.3

Devi solo rimuovere questo tag dal tuo file css. Dopo aver rimosso questo, devi andare alla cartella dei caratteri e vedrai: inserisci qui la descrizione dell'immagine

E, forma questi file di font, devi solo rimuovere il tag di versione -v = 4.6.3 dal nome del file.

Quindi, il problema verrà risolto.


0

nel caso questo sia rilevante per qualcuno. Ho avuto lo stesso errore esatto usando ASP.NET e C # in Visual Studio. Quando ho avviato l'app da Visual Studio ha funzionato, ma ho riscontrato questo problema. Nel frattempo, si è scoperto che il percorso del mio progetto conteneva il carattere "#" (c: \ C # \ testapplication). Questo sembra confondere IIS Express (forse anche IIS) e causa questo problema. Suppongo che "#" sia un carattere riservato da qualche parte in ASP.NET o sotto. Cambiare il percorso ha aiutato e ora funziona come previsto.

Saluti Christof


capito quale problema esattamente?
Nelles,

codeImpossibile decodificare il carattere scaricato: localhost: 52963 / css /…
x-of Rezbach

0

Ciò che mi ha aiutato è stato che ho cambiato l'ordine. Il file .eot viene caricato per primo, ma il mio errore è stato nel caricamento di .eot. Così ho abbandonato .eot come primo src per woff2 e l'errore è scomparso.

Quindi il codice è ora:

@font-face {
  font-family: 'icomoon';
  src:  url('assets/fonts/icomoon.woff2?9h1pxj') format('woff2');
  src:  url('assets/fonts/icomoon.eot?9h1pxj#iefix') format('embedded-opentype'),
    url('assets/fonts/icomoon.woff2?9h1pxj') format('woff2'),
    url('assets/fonts/icomoon.ttf?9h1pxj') format('truetype'),
    url('assets/fonts/icomoon.woff?9h1pxj') format('woff'),
    url('assets/fonts/icomoon.svg?9h1pxj#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}

Ed è stato:

@font-face {
  font-family: 'icomoon';
  src:  url('assets/fonts/icomoon.eot?9h1pxj');
  src:  url('assets/fonts/icomoon.eot?9h1pxj#iefix') format('embedded-opentype'),
    url('assets/fonts/icomoon.woff2?9h1pxj') format('woff2'),
    url('assets/fonts/icomoon.ttf?9h1pxj') format('truetype'),
    url('assets/fonts/icomoon.woff?9h1pxj') format('woff'),
    url('assets/fonts/icomoon.svg?9h1pxj#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}

-1
For it is fixed by using below statement in app.web.scss
    $fa-font-path:   "../../node_modules/font-awesome/fonts/" !default;
    @import "../../node_modules/font-awesome/scss/font-awesome";

7
Mentre questo frammento di codice può risolvere la domanda, inclusa una spiegazione aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro e quelle persone potrebbero non conoscere i motivi del tuo suggerimento sul codice.
andreas,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.