国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???

這篇具有很好參考價(jià)值的文章主要介紹了記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

這里給大家分享我在網(wǎng)上總結(jié)出來(lái)的一些知識(shí),希望對(duì)大家有所幫助

記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???

遇到的問(wèn)題

在一個(gè)新項(xiàng)目中,設(shè)計(jì)統(tǒng)一了項(xiàng)目中所有的字體,并提供了字體包。在項(xiàng)目中需要按需引入這些字體包。

首先,字體包的使用分為了以下幾種情況:

  1. 無(wú)特殊要求的語(yǔ)言使用字體A,阿拉伯語(yǔ)言使用字體B;
  2. 加粗、中等、常規(guī)、偏細(xì)四種樣式,AB兩種字體分別對(duì)應(yīng)使用 Bold 、 Medium 、 RegularThin 四種字體包;

所以,我現(xiàn)在桌面上擺著 8 個(gè)字體包:

  • A-Bold.tff
  • A-Medium.tff
  • A-Regular.tff
  • A-Thin.tff
  • B-Bold.tff
  • B-Medium.tff
  • B-Regular.tff
  • B-Thin.tff

記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???

不同語(yǔ)言要使用不同的字體包,不同粗細(xì)也要使用不同的字體包!

還有一個(gè)前提是,設(shè)計(jì)給的設(shè)計(jì)圖都是以字體A為準(zhǔn),所以在 Figma 中復(fù)制出來(lái)的 CSS 代碼中字體名稱(chēng)都是A。

剛接到這個(gè)需求時(shí)還是比較懵的,一時(shí)想不出來(lái)怎么樣才能以最少的邏輯判斷最少的文件下載、最少的代碼改動(dòng)去實(shí)現(xiàn)在不同情況下自動(dòng)的去選擇對(duì)應(yīng)的字體包。

因?yàn)橐婕暗秸Z(yǔ)言的判斷,最先想到的還是通過(guò) JS,然后去添加相應(yīng)的類(lèi)名。但這樣也只能判斷語(yǔ)言使用A或B,粗細(xì)還是解決不了。

記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???

看來(lái)還是要用 CSS 解決。

首先我將所有的8個(gè)字體先定義好:

@font-face {
    font-family: A-Bold;
    src: url('./fonts/A-Bold.ttf');
}

/* ... */

@font-face {
    font-family: B-Thin;
    src: url('./fonts/B-Thin.ttf');
}

記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???

?

如何根據(jù)粗細(xì)程度自動(dòng)選擇對(duì)應(yīng)字體包

有同學(xué)可能會(huì)問(wèn),為什么不直接使用 font-weight 來(lái)控制粗細(xì)而是用不同的字體包呢?

我們來(lái)看下面這個(gè)例子,我們使用同一個(gè)字體, font-weight 分別設(shè)置為900、500、100,結(jié)果我們看到的字體粗細(xì)是一樣的。

對(duì)的,很多字體不支持 font-weight 所以我們需要用不同粗細(xì)的字體包。

記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???

所以,我們可以通過(guò)?@font-face?中的?font-weight?屬性來(lái)設(shè)置字體的寬度:
@font-face {
    font-family: A;
    src: url('./fonts/A-Bold.ttf');
		font-weight: 600;
}
@font-face {
    font-family: A;
    src: url('./fonts/A-Medium.ttf');
		font-weight: 500;
}
@font-face {
    font-family: A;
    src: url('./fonts/A-Regular.ttf');
		font-weight: 400;
}
@font-face {
    font-family: A;
    src: url('./fonts/A-Thin.ttf');
		font-weight: 300;
}

注意,這里我們把字體名字都設(shè)為相同的,如下圖所示,這樣我們就成功的解決了第一個(gè)問(wèn)題:不同粗細(xì)也要使用不同的字體包;

記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???

?并且,如果我們只是定義而未真正使用時(shí),不會(huì)去下載未使用的字體包,再加上字體包的緩存策略,就可以最大程度節(jié)省帶寬:

記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???

如何根據(jù)不同語(yǔ)言自動(dòng)選擇字體包?

通過(guò)張?chǎng)涡竦牟┛驼业搅私鉀Q辦法,使用 unicode-range 設(shè)置字符 unicode 范圍,從而自定義字體包。

unicode-range 是一個(gè) CSS 屬性,用于指定字體文件所支持的 Unicode 字符范圍,以便在顯示文本時(shí)選擇適合的字體。

它的語(yǔ)法如下:

@font-face {
  font-family: "Font Name";
  src: url("font.woff2") format("woff2");
  unicode-range: U+0020-007E, U+4E00-9FFF;
}

在上述例子中,unicode-range 屬性指定了字體文件支持的字符范圍。使用逗號(hào)分隔不同的范圍,并使用 U+XXXX-XXXX 的形式表示 Unicode 字符代碼的范圍。

通過(guò)設(shè)置 unicode-range 屬性,可以?xún)?yōu)化字體加載和頁(yè)面渲染性能,只加載所需的字符范圍,減少不必要的網(wǎng)絡(luò)請(qǐng)求和資源占用。

通過(guò)查表得知阿拉伯語(yǔ)的 unicode 的范圍為:U+06??, U+0750-077F, U+08A0-08FF, U+FB50-FDFF, U+FE70-FEFF, U+10A60-10A7F, U+10A80-10A9F 這么幾個(gè)區(qū)間。所以我們?cè)O(shè)置字體如下,因?yàn)樵O(shè)計(jì)以 A 字體為準(zhǔn),所以在 Figma 中給出的樣式代碼字體名均為 A,所以我們把 B 字體的字體名也設(shè)置為 A:

記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???

?當(dāng)使用字體的字符中命中?unicode-rang?的范圍時(shí),自動(dòng)下載相應(yīng)的字體包。

@font-face {
    font-family: A;
    src: url('./fonts/A-Bold.ttf');
    font-weight: 600;
}

@font-face {
    font-family: A;
    src: url('./fonts/A-Medium.ttf');
    font-weight: 500;
}

@font-face {
    font-family: A;
    src: url('./fonts/A-Regular.ttf');
    font-weight: 400;
}

@font-face {
    font-family: A;
    src: url('./fonts/A-Thin.ttf');
    font-weight: 300;
}

:root {
    --ARABIC_UNICODE_RANGE: U+06??, U+0750-077F, U+08A0-08FF, U+FB50-FDFF, U+FE70-FEFF, U+10A60-10A7F, U+10A80-10A9F;
}
@font-face {
    font-family: A;
    src: url('./fonts/B-Bold.ttf');
    font-weight: 600;
    unicode-range: var(--ARABIC_UNICODE_RANGE);
}
@font-face {
    font-family: A;
    src: url('./fonts/B-Medium.ttf');
    font-weight: 500;
    unicode-range: var(--ARABIC_UNICODE_RANGE);
}
@font-face {
    font-family: A;
    src: url('./fonts/B-Regular.ttf');
    font-weight: 400;
    unicode-range: var(--ARABIC_UNICODE_RANGE);
}
@font-face {
    font-family: A;
    src: url('./fonts/B-Thin.ttf');
    font-weight: 300;
    unicode-range: var(--ARABIC_UNICODE_RANGE);
}
p {
    font-family: A;
}

總結(jié)

遇到的問(wèn)題:

  1. 兩種字體,B 字體為阿拉伯語(yǔ)使用,A 字體其他語(yǔ)言使用。根據(jù)語(yǔ)言自動(dòng)選擇。
  2. 根據(jù)字寬自動(dòng)選擇相應(yīng)的字體包。
  3. 可以直接使用 Figma 中生成的樣式而不必每次手動(dòng)改動(dòng)。
  4. 盡可能節(jié)省帶寬。

我們通過(guò) font-weight 解決了問(wèn)題2,并通過(guò) unicode-range 解決了問(wèn)題1。

并且實(shí)現(xiàn)了按需下載相應(yīng)字體包,不使用時(shí)不下載。

Figma 中的代碼可以直接復(fù)制粘貼,無(wú)需任何修改即可根據(jù)語(yǔ)言和自寬自動(dòng)使用相應(yīng)字體包。

本文轉(zhuǎn)載于:

https://juejin.cn/post/7251884086536781880

如果對(duì)您有所幫助,歡迎您點(diǎn)個(gè)關(guān)注,我會(huì)定時(shí)更新技術(shù)文檔,大家一起討論學(xué)習(xí),一起進(jìn)步。

?記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-522342.html

到了這里,關(guān)于記錄--什么!一個(gè)項(xiàng)目給了8個(gè)字體包???的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 電子取證之服務(wù)器取證,本人第一次從pc取證到服務(wù)器,這里有一套例題分享給大家,所有解析我都盡可能全面具體,希望與各位同仁一起學(xué)習(xí)。(二次修改)

    電子取證之服務(wù)器取證,本人第一次從pc取證到服務(wù)器,這里有一套例題分享給大家,所有解析我都盡可能全面具體,希望與各位同仁一起學(xué)習(xí)。(二次修改)

    話(huà)不多說(shuō),先上鏈接,這個(gè)包含一個(gè)2G的服務(wù)器鏡像和題目,原題是弘連公司的,致謝,此處純粹分享解法供大家學(xué)習(xí)。 第二次做題目,發(fā)現(xiàn)寶塔新版已經(jīng)不支持,所以題目意義減少,還是歡迎手搓與小白來(lái)看看 鏈接: https://pan.baidu.com/s/1p8T7Fez_VlnSqdzvptARRw?pwd=ybww 提取碼: ybww

    2024年02月07日
    瀏覽(26)
  • 初級(jí) - 如何搭建一個(gè)Java Web項(xiàng)目 - 記錄

    初級(jí) - 如何搭建一個(gè)Java Web項(xiàng)目 - 記錄

    Intellij IDEA 一般可以通過(guò)兩種方式創(chuàng)建 Spring Boot 項(xiàng)目: 使用 Maven 創(chuàng)建 使用 Spring Initializr 創(chuàng)建 Tips: 標(biāo)題選項(xiàng)后的 感嘆號(hào) ! 的是重點(diǎn)配置 這里筆者選擇的是 2.x 版本的 Spring Boot,不勾選 Download pre-built … 1. 取消download pre-built shared indexes自動(dòng)下載 Developer Tools 選項(xiàng) ! 1. Spring

    2024年02月07日
    瀏覽(28)
  • 分享一個(gè)403界面給大家

    分享一個(gè)403界面給大家

    先看效果圖(說(shuō)明:小鬼影會(huì)飄來(lái)飄去,長(zhǎng)時(shí)間停留會(huì)有小驚喜,具體大家跑一下就知道): 代碼如下: PS:發(fā)現(xiàn)我用文字寫(xiě)太生硬了,干的噎嗓子,干脆在代碼里加注釋了。

    2024年02月06日
    瀏覽(24)
  • 分享一個(gè)500頁(yè)面給大家

    分享一個(gè)500頁(yè)面給大家

    先看效果: 再看代碼:

    2024年02月06日
    瀏覽(25)
  • 【操作日志】如何在一個(gè)SpringBoot+Mybatis的項(xiàng)目中設(shè)計(jì)一個(gè)自定義ChangeLog記錄?

    設(shè)計(jì)一個(gè)業(yè)務(wù)改動(dòng)信息時(shí)的自定義記錄,例如新增、修改、刪除數(shù)據(jù)等。并且記錄的規(guī)則可以通過(guò)配置的方式控制。大家需要根據(jù)各自業(yè)務(wù)場(chǎng)景參考,歡迎討論。偽代碼如下: 實(shí)體類(lèi): ? DAO層: ? ? 自定義注解: ? Http接口請(qǐng)求參數(shù): ? Http接口: ? SQL攔截器: ? Spring切面

    2024年02月06日
    瀏覽(23)
  • Vue框架學(xué)習(xí)記錄之環(huán)境安裝與第一個(gè)Vue項(xiàng)目

    Vue框架學(xué)習(xí)記錄之環(huán)境安裝與第一個(gè)Vue項(xiàng)目

    首先是Node.js的安裝,安裝十分簡(jiǎn)單,只需要去官網(wǎng)下載安裝包后,一路next即可。 Node.js是一個(gè)開(kāi)源的、跨平臺(tái)的 JavaScript 運(yùn)行時(shí)環(huán)境 下載地址,有兩個(gè)版本,一個(gè)是推薦的,一個(gè)是最新的,現(xiàn)在博主學(xué)習(xí)的話(huà)就直接安裝最新的即可。 驗(yàn)證是否安裝成功,只需要在cmd窗口中輸

    2024年02月09日
    瀏覽(22)
  • 詳細(xì)步驟記錄:持續(xù)集成Jenkins自動(dòng)化部署一個(gè)Maven項(xiàng)目

    詳細(xì)步驟記錄:持續(xù)集成Jenkins自動(dòng)化部署一個(gè)Maven項(xiàng)目

    提示:本教程基于CentOS Linux 7系統(tǒng)下進(jìn)行 1. 下載安裝jdk11 官網(wǎng)下載地址:https://www.oracle.com/cn/java/technologies/javase/jdk11-archive-downloads.html 本文檔教程選擇的是jdk-11.0.20_linux-x64_bin.tar.gz 解壓jdk-11.0.20_linux-x64_bin.tar.gz命令為: 2. 下載Jenkins的war包 官網(wǎng)下載地址:https://mirrors.tuna.tsing

    2024年02月04日
    瀏覽(61)
  • 記錄一次最近遇到的新網(wǎng)絡(luò)詐騙經(jīng)歷,大家要提高警惕啊

    記錄一次最近遇到的新網(wǎng)絡(luò)詐騙經(jīng)歷,大家要提高警惕啊

    第一次接到詐騙電話(huà),說(shuō)是要求修改支付寶信息的,一開(kāi)始說(shuō)的確實(shí)是很迷惑人,一下子可能沒(méi)法馬上分辨出來(lái),但是到后面說(shuō)要加QQ操作什么什么的,那肯定就是有嚴(yán)重問(wèn)題的,因?yàn)楹芏嘣p騙都是通過(guò)QQ來(lái)操作的,一聽(tīng)到這個(gè)就要警惕了。 他的詐騙流程是這樣的: 先是說(shuō)你

    2023年04月23日
    瀏覽(38)
  • 記錄一個(gè)在寫(xiě)項(xiàng)目中遇到的Maven依賴(lài)無(wú)法導(dǎo)入的問(wèn)題

    記錄一個(gè)在寫(xiě)項(xiàng)目中遇到的Maven依賴(lài)無(wú)法導(dǎo)入的問(wèn)題

    項(xiàng)目是一個(gè)父項(xiàng)目做依賴(lài)管理,三個(gè)子項(xiàng)目,今天遇到一個(gè)問(wèn)題: 子項(xiàng)目中導(dǎo)入的依賴(lài),怎么都導(dǎo)入不進(jìn)去,maven倉(cāng)庫(kù)中已經(jīng)有了,idea提示也沒(méi)有問(wèn)題,如圖: 可以看到,idea提示是正常的,依賴(lài)都是繼承自父項(xiàng)目,但是左邊的依賴(lài)中沒(méi)有我導(dǎo)入的這些依賴(lài),有的是父項(xiàng)目中

    2024年02月10日
    瀏覽(21)
  • 記錄--為什么 export 導(dǎo)出一個(gè)字面量會(huì)報(bào)錯(cuò),而使用 export default 就不會(huì)報(bào)錯(cuò)?

    記錄--為什么 export 導(dǎo)出一個(gè)字面量會(huì)報(bào)錯(cuò),而使用 export default 就不會(huì)報(bào)錯(cuò)?

    其實(shí)總的來(lái)說(shuō)就是 export 導(dǎo)出的是變量的句柄(或者說(shuō)符號(hào)綁定、近似于 C 語(yǔ)言里面的指針,C++里面的變量別名),而 export default 導(dǎo)出的是變量的值。 需要注意的是:模塊里面的內(nèi)容只能在模塊內(nèi)部修改,模塊外部只能使用。esModule在語(yǔ)法層面做了一層 淺層 的保護(hù)(即將i

    2024年01月17日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包