2014-12-08 2 views
0

Chrome и Firefox не отображают WOFF/TTF Font-Awesome, даже если они загружают их из HttpListener, тем не менее, Safari на iOS правильно выполняет Font-Awesome. Я посылаю ответ HTTP, используя класс HttpListener .NET, как показано ниже:Какое ContentEncoding используется для WOFF и TTF с ответом HttpListener?

private void Send(HttpListenerContext context, byte[] response, string contentType) 
    { 
     context.Response.StatusCode = (int)HttpStatusCode.OK; 
     context.Response.ContentEncoding = Encoding.UTF8; 
     context.Response.ContentType = contentType; 
     context.Response.ContentLength64 = response.Length; 
     context.Response.AddHeader("Server", SERVER); 

     if (response == null || response.Length == 0) 
     { 
      logger.Error("Send: Engine generated null or empty content"); 
      context.Response.StatusCode = (int)HttpStatusCode.NotFound; 
      return; 
     } 

     using (var s = context.Response.OutputStream) 
     { 
      s.Write(response, 0, response.Length); 
     } 
    } 

Есть еще один тип кодировки (кроме UTF8) для WOFF? или есть что-то, о чем я должен заботиться в Chrome или Firefox?

Любая помощь или указатель оценили, спасибо.

ответ

0

В моей собственной реализации я оставляю заголовок ContentEncoding все вместе при обслуживании шрифта или двоичного кода.

Это должно работать:

context.Response.ContentLength64 = response.Length; 
context.Response.ContentType = "application/x-font-woff"; 
context.Response.OutputStream.Write(response, 0, response.Length); 

context.Response.OutputStream.Close(); 
+0

Спасибо за ваше решение, но это не сработало для меня. Мои шрифты пока не отображаются. Chrome по-прежнему показывает «не удалось декодировать загруженный шрифт» – Vikrant

+0

Что вы думаете об этом: у меня есть файлы woff, eot, ttf как «Embedded Resources» в моем проекте CS. Возможно ли, что .NET может преобразовывать эти файлы шрифтов в кодировку UTF-8 при преобразовании файла в «Встроенный ресурс», в то время как я получаю байты файлов шрифтов через метод 'assembly.GetManifestResourceStream'? – Vikrant

0

Проблема была у меня было все содержимое WWW, как Embedded Resource, и я создал метод для преобразования тех Embedded ResourceStream в byte массиве сначала преобразованием, что в string с помощью UTF-8 кодирование. Итак, this stackoverflow question помог мне определить первопричину. Как только я преобразовал Embedded ResourceStream непосредственно в массив byte, Chrome начал правильно отображать шрифты Font-Awesome!

Смежные вопросы