2013-09-25 28 views
37

Trong ứng dụng ASP.NET MVC của tôi, tôi đang sử dụng Gói để nén tệp css và js. Vấn đề là - các phông chữ không tải sau khi tôi kích hoạt chế độ tối ưu hóa.Tệp phông chữ không tải với Gói ASP.NET

BundleTable.EnableOptimizations = true; 

Dưới đây là mã C#

public static void RegisterBundles(BundleCollection bundles) { 
    RegisterStyles(bundles); 
    BundleTable.EnableOptimizations = true; 
} 

private static void RegisterStyles(BundleCollection bundles) { 
bundles.Add(new StyleBundle("~/BundleStyles/css").Include(
    "~/Content/Styles/bootstrap/bootstrap.css", 
    "~/Content/Styles/reset.css", 
    "~/Content/Styles/gridpack/gridpack.css", 

    "~/Content/Styles/fontFaces.css", 
    "~/Content/Styles/icons.css", 

    "~/Content/Styles/inputs.css", 
    "~/Content/Styles/common.css", 
    "~/Content/Styles/header.css", 
    "~/Content/Styles/footer.css", 
    "~/Content/Styles/cslider/slider-animations.css", 
    "~/Content/Styles/cslider/slider-base.css")); 
} 

Và đây là css cho phông chữ.

@font-face { 
     font-family: ProximaNova; 
     src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype'); 
     font-weight: bold; 
     font-style: normal; 
    } 

Đây là cách CSS được tham chiếu trong trang.

<link href="/BundleStyles/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/> 

Tuy nhiên, khi tôi kiểm tra bằng công cụ Trình gỡ lỗi Chrome, các tệp phông chữ không tải lên trang và trang của tôi có vẻ xấu với phông chữ sai.

Tôi đang làm gì sai?

+0

Chỉ có vấn đề với fontFaces.css hoặc bất kỳ tệp css nào khác cũng không tải –

+0

chỉ với phông chữ. trang có vẻ như không phải là phông chữ. các tệp css khác đang được nén thành công. mà không bật chế độ tối ưu hóa, các phông chữ cũng đang tải. – Zafar

+0

Tôi nghi ngờ có điều gì đó đang xảy ra trong khi nén fontFaces.css, nếu có vấn đề trong cú pháp css, nó sẽ gây ra lỗi trong khi trình duyệt tìm cách truy xuất. ngay bây giờ, bạn có thể di chuyển chỉ một phần mã phông chữ và xem liệu mọi thứ có hoạt động cho phép tối ưu hóa hay không. –

Trả lời

33

Vâng, tôi nghĩ rằng vấn đề là với vị trí phông chữ của bạn. Tôi giả định rằng vị trí ảo css đi kèm /BundleStyles/css không thực sự tồn tại. và nếu cấu trúc của bạn thư mục như dưới đây

nội dung> Font

nội dung> phong cách

Nếu điều này là đúng, sau đó thử

thay đổi này /BundleStyles/css để /Content/css

<link href="/Content/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/> 

và tham khảo ence phông chữ của bạn như thế này

src: url('Fonts/ProximaNova/ProximaNova-Bold.otf') 

trong trường hợp này phông chữ của bạn sẽ được nạp tương đối so với tập tin "css" mà nằm bên trong thư mục nội dung mà còn chứa các "phông chữ" thư mục

Nếu những gì tôi giả định không chính xác, vui lòng chỉ cho chúng tôi cách bạn cấu trúc tệp của mình

+3

Khi bạn triển khai IIS, có thể bạn sẽ thấy hữu ích, http://codingstill.com/2013/01/set-mime-types-for-web-fonts-in-iis/ – SimonGates

+1

Tôi gặp vấn đề với câu trả lời của bạn: nó sẽ không hoạt động trong chế độ gỡ lỗi vì phông chữ sẽ được tham chiếu bên dưới thư mục kiểu, vì vậy đây là cách tôi giải quyết nó: Tôi có thư mục Content/css và thư mục Content/fonts. Tôi đặt đường dẫn ảo của gói thành "~/Content/css/styles", bằng cách này tôi không phải xóa "../" khỏi tham chiếu phông chữ vì thư mục phông chữ sẽ vẫn ở một cấp trên tệp "kiểu" . Điều đó nói rằng, nó vẫn hoạt động tốt trong chế độ gỡ lỗi vì độ sâu đường dẫn vẫn giữ nguyên. – Boanerge

+4

tôi có cùng một vấn đề để truy cập phông chữ tuyệt vời, cho ** các giải pháp khác ** thử các liên kết này liên quan đến lối đi ảo ** StyleBundle' **: [Link 1] (http://www.mvccentral.net/story)/details/articles/kahanu/stylebundle-403-error-solve), [Link 2] (http://forums.asp.net/t/1774324.aspx?MVC4+css+bundling+and+image+references), [Liên kết 3] (http://ericpanorel.net/2013/10/25/font-awesome-4-0-mvc-bundling-and-minification/), [Liên kết 4] (http://jameschambers.com/ 2014/08/add-some-font-awesome-to-mvc-and-bootstrap /), hy vọng điều này sẽ giúp ai đó. – stom

7

Câu trả lời hay ở trên.

Một giải pháp thay thế - nếu vì một lý do nào đó ở trên không hiệu quả với bạn - sẽ thay đổi cách tài sản src phông chữ tham chiếu đến thư mục 'Phông chữ'. '../' -ing không hoạt động tốt cho việc nhóm để tham khảo trực tiếp từ thư mục gốc của trang web thay thế. Assumung thư mục 'Phông chữ' là một xuống từ gốc, thay đổi này:

@font-face { 
    src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype'); 
} 

Để này:

@font-face { 
    src: url('/Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype'); 
} 

Bạn sẽ lấy kết quả tương tự khi trang web được chạy trong chế độ gỡ lỗi quá.

+1

Nó không hoạt động nếu ứng dụng của bạn được triển khai dưới dạng ứng dụng ảo – Laserson

+0

Làm việc cho tôi; cảm ơn! – contactmatt

1

Tôi đã tìm kiếm trực tuyến hôm nay vì tôi đang gặp sự cố này.Đây là những gì làm việc cho tôi:

  1. Các/bó/không thực sự là một vấn đề (Tôi đã thử này đầu tiên)
  2. tôi đã thay đổi dấu nháy đơn để dấu ngoặc kép & các phông chữ làm việc - nhưng không biết tại sao, vì vậy nếu ai đó biết xin vui lòng xây dựng.
Các vấn đề liên quan