欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何修復react應用程序中的@fontface問題?

阮建安1年前7瀏覽0評論

我遇到了自定義字體的問題。我已經使用create-react-app創建了一個應用程序,并提供了自定義字體文件(。ttf ),以便在構建應用程序時,所有資產都是構建的一部分。我可以在本地看到字體,但在nginx服務器上看不到。Nginx服務器有。ttf支持,因為另一個應用程序工作正常。錯過的應該是什么?我找不到它。此外,firefox不能加載相同的自定義字體。這是我的樣式表-

@font-face {
    font-family: 'Simplied';
    src: url('/fonts/simplied-Light.ttf') format('truetype');
  }

我使用@import 'stylesheet.css '將它導入另一個css文件。

頁(page的縮寫)謝謝你的評論。我做了這樣的改變-

//  ./index.css
@font-face {
  font-family: 'Simplified_Lt';
  font-display: block;
  src: local('Simplified_Lt') url(./fonts/Simplified_Lt.ttf) format('truetype');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC,
    U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

body {
  margin: 0;
  font-family:'Simplified_Lt';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

而我的fonts文件夾在src/fonts/下。但是我仍然不能使用這種字體。你能給我指出可能遺漏了什么或者項目結構是否正確嗎?我正在使用創建-反應-應用程序。

聽起來你已經有了這樣的安排:

// index.js
import './index.css`

/* index.css */
@import 'stylesheet.css`;

/* other styling */

/* stylesheet.css */
@font-face {
  font-family: 'Simplied';
  src: url('/fonts/simplied-Light.ttf') format('truetype');
}

使用默認哈希構建后 當CRA運行生產版本時,它會對文件名進行哈希處理,并更新對哈希文件的引用。然而,在某些情況下,它的重命名意識是有限的。

構建完成后,您的/build文件夾將包含類似以下名稱的文件:

index.a31171f2.js
index.a31171f2.css
stylesheet.a31171f2.css

CRA檢查javascript文件,并更新所有導入以包含哈希:

// index.a31171f2.js
import './index.a31171f2.css'

但是,它不會在靜態CSS文件中進行相同的修改:

/* index.a31171f2.css */
@import 'stylesheet.css`;

/* other styling */

因為/build目錄有stylesheet.a31171f2.css,而沒有stylesheet.css,所以@import會失敗。

解決方法 將@font-face聲明移動到index.css中,而不是嘗試從另一個文件@import它。

/* index.css */
@font-face {
  font-family: 'Simplied';
  src: url('/fonts/simplied-Light.ttf') format('truetype');
}

/* other styling */

將兩個CSS文件直接導入javascript:

// index.js
import './stylesheet.css'
import './index.css`

有一些方法可以防止構建時散列,但這通常不是一個好主意,因為您會失去自動破壞緩存的好處。

最后,如果你的系統上安裝了Simplied字體,這就解釋了為什么它能在本地工作,而不能在你的遠程服務器上工作。當您在本地開發時,@import仍然會在幕后失敗,但是您的瀏覽器會直接從您的系統加載字體,所以您仍然會看到預期的字體。

我在react也遇到了同樣的問題。我在index.html上做了@font-face in style標簽,這是我的錯。所以它不起作用

解決方法

從index.html風格標簽中移除@font-face,并將其添加到我的App.css文件中,然后它就可以正常工作了...