2016-11-07 58 views
3

我在很多客戶端網站上使用Google字體RobotoGoogle字體:語言選擇不起作用

當你定製的谷歌字體的字體你有很多語言選項挑選來自:

  • 希臘(通過的Roboto支持)
  • 拉丁美洲擴展(通過的Roboto支持)
  • 西里爾(支持通過的Roboto)
  • 越南(通過的Roboto支持)
  • 西里爾擴展(通過的Roboto支持)
  • 希臘Ë xtended(通過的Roboto支持)
  • 拉丁語(所有字體支持)

對於這些客戶端的網站,我只需要使用拉丁語言,不需要加載任何其他語言。

然而,當我在加載這個字體和定義拉丁語言,你可以看到所有的其他語言也加載在生成的樣式表:

https://fonts.googleapis.com/css?family=Roboto:300&subset=latin

/* cyrillic-ext */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v15/0eC6fl06luXEYWpBSJvXCBJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; } /* cyrillic */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v15/Fl4y0QdOxyyTHEGMXX8kcRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; } /* greek-ext */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v15/-L14Jk06m6pUHB-5mXQQnRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); unicode-range: U+1F00-1FFF; } /* greek */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v15/I3S1wsgSg9YCurV6PUkTORJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); unicode-range: U+0370-03FF; } /* vietnamese */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v15/NYDWBdD4gIq26G5XYbHsFBJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; } /* latin-ext */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v15/Pru33qjShpZSmG3z6VYwnRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; } /* latin */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v15/Hgo13k-tfSpn0qi1SFdUfVtXRa8TVwTICgirnJhmVJw.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; }

這是我的理解定義&subset=latin只用該語言加載,那麼爲什麼所有的語言都在這裏加載?

+0

可能的重複[如何才能使用拉丁子集與谷歌字體WOFF2文件?](http://stackoverflow.com/questions/26720165/how-can-i-only-use-latin-subset-with-谷歌的字體 - woff2文件) –

回答

1

我在複製this answerDaryl Teo,因爲他似乎提供了正確的答案給你的問題。

訣竅在於這種優化:

unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;

這樣,瀏覽器知道它是否需要下載的字體,取決於它剛剛加載HTML中的字符。

看這裏哪些瀏覽器有full support for this

早期的瀏覽器,例如Firefox < 44和Safari < 10,忽略了規範的部分內容或需要啓用它,因此Google Fonts必須爲其提供最小的字體規格。