Font Face không hoạt động trong IIS 8.0


118

Tôi có một phông chữ trong chương trình của tôi được tạo từ Font Squirrel. Tôi chỉ không thể làm cho nó hoạt động trong IIS, nó hoạt động trong localhost. Tôi đã thêm bài viết application / font-woff vào Loại MIME của mình nhưng nó vẫn không hoạt động.

Context
--Fonts
----font location
--css files

CSS

@font-face {
    font-family: 'wallStreetFont';
    src: url('Fonts/subway-webfont.eot');
    src: url('Fonts/subway-webfont.eot?#iefix') format('embedded-opentype'),
         url('Fonts/subway-webfont.woff2') format('woff2'),
         url('Fonts/subway-webfont.woff') format('woff'),
         url('Fonts/subway-webfont.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}

CHỈNH SỬA MIME HIỆN TẠI

Tôi đang sử dụng phông chữ IIS 8 MIME mặc định / x-woff


Làm thế nào bạn gọi nó trong? Bạn đã thử đầu ra mẫu trong zip Font Squirrel chưa?
Aibrean

Nếu bạn đang sử dụng IIS 8, bạn không cần phải thêm một loại kịch câm trong cấu hình web cho WOFF. Trong thực tế, nó có nhiều khả năng xảy ra lỗi hơn nếu có một bản sao.
Thịt xông khói Colin vào

@Aibrean vâng, đầu ra mẫu hoạt động
joetinger

@ColinBacon Tôi đã đọc nó sau khi đăng. Vì vậy, tôi hiện có font / x-woff, điều này được kế thừa từ IIS 8.0. Nhưng vẫn không may mắn nhận được phông chữ chính xác
joetinger

Câu trả lời:


259

Thật tuyệt khi thấy WOFF2 được đưa vào phông chữ Font Squirrel! Trong khi IIS 8 không cần loại kịch câm được thêm vào WOFFthì nó sẽ cần một loại cho WOFF2. W3C khuyến nghị :

application/font-woff2

Để biết thêm thông tin về WOFF2xem tại đây .

Để thêm loại kịch câm trong IIS, hãy sửa đổi của bạn Web.Confignhư sau:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- ... -->
  <system.webServer>
    <!-- ... -->
    <staticContent>
      <!-- ... -->
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
    </staticContent>
    <!-- ... -->
  </system.webServer>

2
Tôi đã thêm woff2nhưng vẫn không có gì
joetinger

4
Nếu bạn nhìn vào các công cụ dành cho nhà phát triển của mình. Bạn có nhận được 404 khi nó cố gắng lấy tệp phông chữ không? Vì vậy, hãy kiểm tra xem đường dẫn có đúng không và bạn có quyền duyệt đến đường dẫn đó trong trình duyệt của mình.
Thịt xông khói Colin

Có, http://192.168.72.196:85/bundles/Fonts/subway-webfont.woff2tôi không chắc họ đang lấy thư mục gói từ đâu. Bất kỳ ý tưởng?
joetinger

4
Tôi giả sử bạn đang sử dụng gói và rút gọn ASP.NET. Nếu bạn đặt điều này trong cấu hình gói của mình BundleTable.EnableOptimizations = true. Máy chủ cục bộ của bạn sẽ hoạt động giống như trên máy chủ sản xuất của bạn.
Thịt xông khói Colin vào

1
Cảm ơn tất cả sự giúp đỡ nó hiện đang hoạt động. Đó là sự kết hợp của woff2lỗi và lỗi 404, cuối cùng là lỗi chính tả trong gói của tôi. Cảm ơn bạn!
joetinger

79

Để làm cho các phông chữ woff và woff2 hoạt động bình thường trong IIS, bạn nên thêm các kiểu MIME sau vào tệp Web.Config.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>  
  <system.webServer>    
    <staticContent>
        <remove fileExtension=".woff" />
        <remove fileExtension=".woff2" />
        <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
        <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
    </staticContent>

Nếu bạn vẫn gặp lỗi 404 trên Google Chrome, bạn nên xóa bộ nhớ cache của trình duyệt trước khi tải lại trang.


2
Thông số kỹ thuật hiện đang đề xuất mimeType cho woff là ứng dụng / font-woff .
Steven

2
Tôi chỉ nhận được vấn đề .woff2 404 và điều này phù hợp với tôi. Tôi chỉ sử dụng các dòng liên quan đến woff2
Francisc

26

Lưu ý rằng cũng có thể định cấu hình các kiểu MIME trong Trình quản lý IIS. Chỉ cần chọn trang web và sau đó nhấp đúp vào biểu tượng Loại MIME bên dưới IIS trong ngăn chính.

nhập mô tả hình ảnh ở đây

Sau đó, bạn sẽ thấy danh sách tất cả các Loại MIME hiện có và có thể thêm các loại mới bằng liên kết Thêm ... trong ngăn bên phải.


2
tại sao không sử dụng web.config,? !!
Mojtaba Pourmirzaei

7
@MojtabaPourmirzaei Vì không phải ai cũng là sysadmin. Đó là toàn bộ lý do IIS có UI.
Alph.Dev

Nếu bạn đang triển khai một trang web không phải.NET trong IIS, bạn cần thực hiện theo cách này (ví dụ: ứng dụng Angular).
Jon Kruger

0

Hôm nay tôi gặp sự cố này khi triển khai biểu tượng Giao diện người dùng Metro4 giải pháp Web và chuyển từ CDN sang tùy chọn Biên dịch.

Dự án của tôi được phát triển bằng nền tảng WebSharper, nhưng dù sao thì giải pháp cũng độc lập với các chi tiết triển khai này.

Dài truyện ngắn, tôi đã phát hiện ra rằng tôi đã có thêm phần mở rộng tập tin, ví dụ như cho .ttf, bên trong securityphần dưới system.webServercủa Web.config.

<security>
    <requestFiltering>
        <fileExtensions>
            <add fileExtension=".ttf" allowed="true" />
        </fileExtensions>
    </requestFiltering>
</security>

Tùy chọn cấu hình tương tự cũng có sẵn trong cài đặt GUI của IIS

IIS GUI

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.