使用HttpListener响应哪个ContentEncoding用于WOFF和TTF?

时间:2014-12-08 17:33:26

标签: true-type-fonts httplistener woff

Chrome和Firefox不会渲染Font-Awesome的WOFF / TTF,即使他们从HttpListener下载它们,也就是说,iOS上的Safari正在渲染Font-Awesome。 我正在使用.NET&#39的HttpListener类发送HTTP响应,如下所示:

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

WOFF是否有其他编码类型(UTF8除外)?或者我有什么需要在Chrome或Firefox中处理的事情吗?

感谢任何帮助或指针,谢谢。

2 个答案:

答案 0 :(得分:0)

在我自己的实现中,在提供字体或二进制文件时,我将所有ContentEncoding标头都省略了。

这应该有效:

{{1}}

答案 1 :(得分:0)

问题是我将所有www内容都设为Embedded Resource,我创建了一种方法,将这些Embedded Resource Stream转换为byte数组,方法是首先将其转换为使用string编码的UTF-8。 所以this stackoverflow question帮我确定了根本原因。将Embedded Resource Stream直接转换为byte数组后,Chrome开始正确显示Font-Awesome字体!