Error al decodificar la fuente descargada, error de análisis OTS: etiqueta de versión no válida + rieles 4

136

Estoy haciendo una compilación previa de activos y ejecuto la aplicación en modo de producción. Después de la compilación cuando cargo mi página de índice, recibí las siguientes advertencias en la consola de 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

El problema es que no está cargando iconos en lugar de mostrar cuadrados .

Utilizamos las fuentes personalizadas y el código es:

@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;
}

No sé lo que me falta de mi parte. Busqué mucho y también probé la solución, pero no obtuve ningún éxito. En el modo de desarrollo funciona bien, pero no sé por qué se muestra cuadrado en el modo de producción.

Deepti Kakade
fuente
2
Podría ser una serie de cosas: la codificación de caracteres podría ser incorrecta o la fuente en sí podría estar dañada. ¿Puedes abrir la fuente en Font Book o similar? Un rápido Google revela un error en el navegador Chromium versión 45: code.google.com/p/chromium/issues/detail?id=545924
Craig
¿Pudiste resolver el problema?
codificador
1
¡En mi caso, tengo que purgar el caché de Cloudflare y esperar unos minutos para que el tiempo solucione el problema!
HoseinGhanbari
Tuve el mismo problema y descubrí que necesito tener la fuente woff2 antes de woff para Chrome.
jcubic

Respuestas:

138

Obtuve exactamente el mismo error, y en mi caso resultó ser por un camino incorrecto para la @font-facedeclaración. El inspector web nunca se quejó con un 404 ya que el servidor de desarrollo que estamos usando (servidor en vivo) se configuró para servir el index.html predeterminado en cualquier 404: s. Sin conocer ningún detalle sobre su configuración, esto podría ser un culpable probable.

Fredrik Frodlund
fuente
1
Si esta es la razón de la redirección, puede filtrarla por la extensión de archivo RewriteRule! \. (Js | gif | css | jpg | otf | eot | png) $ / redirect [R = 301, L]
fearis
En mi caso, la agrupación y minificación ASP.NET MVC esencialmente cambió la ubicación del CSS sin cambiar las rutas relativas en el mismo. Tuve que eliminar el archivo ya minificado y usar un CssRewriteUrlTransformen BundleConfig.
Sinjai
22

Si se ejecuta en IIS como el servidor y .net 4 / 4.5, es posible que falten definiciones de extensión mime / file en Web.config, como esta:

<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>

Squareman88
fuente
16

Yo estaba teniendo el mismo 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

Si recibió este mensaje de error al intentar confirmar su fuente, entonces es un problema con .gitattributes "warning: CRLF will be replaced by LF "

La solución para esto es agregar cualquier fuente con la que tenga el problema en .gitattributes

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

Luego eliminé los archivos de fuentes corruptos y volví a aplicar los nuevos archivos de fuentes y está funcionando muy bien.

stacksonstacksonstacks
fuente
¿Dónde vive ese archivo? ¿sabrá el navegador que existe? ¿Cómo?
Omar
@ Omar Ese archivo debe estar en su directorio raíz y no tiene nada que ver con el navegador. Describe cómo git administrará las terminaciones de línea en diferentes formatos de archivo. Git puede dañar algunos tipos de archivos al intentar cambiar las terminaciones de línea.
elliottregan
5

tratar

@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;
}

y renombra tu archivo a application.css.scss

Yu-Shing Shen
fuente
4

Tenía una fuente dañada, aunque parecía estar cargando sin problemas y, según las fuentes de Chrome Devtools, el recuento de bytes no era correcto, así que lo descargué nuevamente y lo resolvió.

LJT
fuente
Si usaba woff2, tuve este problema después de usar convertidores en línea. Necesario para usar el convertidor de línea de comando woff2 (disponible a través de homebrew)
rob-gordon
4

Simplemente indique el formato en @ font-face de la siguiente manera:

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

Oleksiy Stryzhak
fuente
3

Tuve el mismo problema y eso se debió a que git trataba estos archivos como texto. Entonces, mientras revisaba los archivos en los agentes de compilación, no se mantuvo el binario.

Agregue esto a su .gitattributesarchivo e intente.

*.eot binary
*.ttf binary
*.woff binary
*.woff2 binary
Abhijeet
fuente
2

Al usar angular-cli, esto es lo que funciona para mí:

<?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>
Skorunka František
fuente
Sería genial si puedes decir, ¿para qué archivo tienes que agregarlos?
Saiyaff Farouk
1
Edite el web.config
Skorunka František
No pude presentar un archivo web.config en el proyecto angular-cli. Usando la versión 1.3.0. ¿Cualquier pista?
Saiyaff Farouk
Web.config solo se usa cuando aloja su aplicación cliente en IIS (incluido Azure Web Services).
Skorunka František
2

Recibía los siguientes errores:

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

que se corrigió después de descargar el archivo sin procesar directamente desde:
https://github.com/twbs/bootstrap/blob/master/fonts/glyphicons-halflings-regular.woff2

El problema era que había un error de proxy al descargar el archivo (contenía el mensaje de error HTML).

DJDaveMark
fuente
No pensé en verificar el archivo en sí mismo ... asegúrese de no descargar este enlace directamente ("guardar enlace como"), pero ingréselo y use el botón "descargar".
omadawn
2

Vaya a la dirección a continuación en GitHub y descargue cada uno de los archivos FontAwesome.

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

... pero en lugar de hacer clic derecho y guardar el enlace como, haga clic en cada uno de los archivos y use el botón 'Descargar' para guardarlos.

Descubrí que guardar el enlace como descargado una página HTML y no el archivo binario FontAwesome en sí.

Una vez que tuve todos los binarios, funcionó para mí.

Robert Bolton
fuente
1

Mi problema fue que estaba declarando dos fuentes, y scss parece esperar que declares el nombre de la fuente.

después de tu @font-face{} debes declarar $my-font: "OpenSans3.0 or whatever";

y esto para cada fuente.

:-)

Antoine
fuente
¿Estás hablando de font-family?
Nadav B
no puedo recordar ahora, lo siento :-)
Antoine
1

Para los usuarios de angular-cli y webpack sospeché que hay algún problema al importar las fuentes en el archivo css, así que también proporcione la ubicación de la URL codificada con comillas simples de la siguiente manera:

@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;
}

Esta publicación puede ser antigua, pero esta es la solución que funcionó para mí.

ip_x
fuente
1

He tenido el mismo problema.

Agregar la versión de fuente (p ?v=1.101. Ej. ) A la fuente URLS debería ser el truco;)

@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 */
}

Hacer clic (clic con el botón derecho del mouse) en la versión TTF de la fuente y seleccionar "Obtener información" (Mac OSX) "Propiedades" (Windows) en el menú contextual debería ser suficiente para acceder a la versión de la fuente.

Lefan
fuente
0

Si está usando Chrome, intente agregar una versión de tipo fuente (OTF) como se muestra a continuación:

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

¡Salud!

Buitregool
fuente
0

Si usa bootstrap, actualice el bootstrap.min.cssarchivo bootstrap css ( ) y los archivos de fuentes. Solucioné mi problema con esta solución.

FRabbi
fuente
0

Estoy usando ASP.NET con IIS y resulta que solo necesitaba agregar el tipo MIME a IIS: '.woff2' / 'application / font-woff'

Jawid Hassim
fuente
0

Después de probar muchos otros enfoques, y muchas reinstalaciones y comprobaciones, acabo de solucionar el problema borrando los datos de navegación de Chrome (imágenes y archivos en caché) y luego actualizando la página.

Andy Lorenz
fuente
0

Tuve el mismo problema cuando abrí y guardé .woffy. woff2archivos a través de Sublime Text con EditorConfigopción end_of_line = lf. Acabo de copiar archivos a la carpeta de fuentes sin abrirlos en Sublime y el problema se resolvió.

usuario3125779
fuente
0

Si otras respuestas no funcionaron, intente:

  1. compruebe el archivo .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. borrar el caché del servidor

  3. borrar el caché del navegador y recargar
Andrea Zangheri
fuente
0

Verifique el archivo CSS de su fuente. (fontawesome.css / fontawesome.min.css) , verá así:

@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
}

verá la etiqueta de versión después del nombre de la extensión de archivo de su fuente . Me gusta:

-v = 4.6.3

Solo necesita eliminar esta etiqueta de su archivo css. Después de eliminar esto, debe ir a su carpeta de fuentes, y verá: ingrese la descripción de la imagen aquí

Y, forme estos archivos de fuente, solo necesita eliminar la etiqueta de versión -v = 4.6.3 del nombre del archivo.

Entonces, el problema será descuidado.

El príncipe Ahmed
fuente
0

por si esto es relevante para alguien. Obtuve exactamente el mismo error al usar ASP.NET y C # en Visual Studio. Cuando comencé la aplicación desde el estudio visual, funcionó, pero recibí este problema. Mientras tanto, resultó que la ruta a mi proyecto contenía el carácter "#" (c: \ C # \ testapplication). Esto parece confundir a IIS Express (quizás también IIS) y causa este problema. Supongo que "#" es un carácter reservado en algún lugar de ASP.NET o inferior. Cambiar el camino ayudó y ahora funciona como se esperaba.

Saludos Christof

x-de Rezbach
fuente
¿Qué problema tienes exactamente?
Nelles
codeError al decodificar la fuente descargada: localhost: 52963 / css / ...
x-of Rezbach
0

Lo que me ayudó fue que cambié el orden. El .eot get se carga primero, pero mi error fue al cargar el .eot. Así que abandoné el .eot como primer src para woff2 y el error desapareció.

Entonces el código es ahora:

@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;
}

Y es fue:

@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;
}
JosFabre
fuente
-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";
Gampesh
fuente
77
Si bien este fragmento de código puede resolver la pregunta, incluir una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo la pregunta para los lectores en el futuro, y que esas personas podrían no conocer los motivos de su sugerencia de código.
andreas