體驗 WebFont,網頁上的藝術字

在最新項目中,由于要頻繁使用藝術字,
而用戶設備沒有此字體,因此以往的經驗都是使用圖片...
所以在同事的矚目期許之下,我開始實驗研究這個問題的解決方案

1. 直接使用字體文件
@font-face {font-family: 'xxxx';src: url('../img/漢儀秀英體簡.TTF');
}
.font {font-family: 'xxxx', Arial, sans-serif;
}
該方案是能用的,因為使用的是微信不用考慮兼容性,
但是隨著項目發布,還是出現了問題,由于字體文件過大(3.8M),于是藝術字部分出現了先沒有再為雅黑再為藝術字的過程,視覺效果相當不妙,
其次,由于其文件過大的問題,一個項目使用多個字體那就很“刺激”了。

2. 引用第三方字體庫
a. 字體生成
以“有字庫”為例,它只需引用對應的 js,選定一個 dom,該 dom 內的文字就變成了藝術字。
使用時要把用在那個域名加入白名單,過段時間再研究其源碼,還是非常好用的。
DEMO:https://foreverz133.github.io/demos/single/FontFamily.html
WEB:http://www.youziku.com/onlinefont/index
b. 線上字體
以“阿里WebFont”為例,引用線上字體文件,可以壓縮該文件只包含部分文字,
用起來還不錯,但問題在于只有 7 個字體,有待尋找其他字體庫
WEB:http://www.iconfont.cn/webfont/#!/webfont/index

3. 自己壓縮字體文件(只選擇部分文字進行打包)
我們采用的是 java 版,得安一個 java sdk,初期效果還不錯,大約兩百字的大小是 236K
WEB:https://github.com/forJrking/FontZip?(下載 FontZip.jar 那個)

// -----------------------------------------------------------
// --------------------------------------- 2017/05/31 更新
4. 字蛛
它依賴于 nodeJS,和 3 達到的效果是一樣的,但個人覺得要方便很多,
官網:http://font-spider.org/
先使用源字體玩耍,待發布時壓縮一下,然后就不用管了,最多刪掉新生成的一個文件夾
npm install font-spider -g // 安裝font-spider ./demo/*.html // 壓縮
// -----------------------------------------------------------
// --------------------------------------- 2017/05/07 更新
后期有出現幾次部分字體壓縮后報錯的情況,所以又重新研究了一番,
已遇到的主要報錯有以下幾種:
1. Failed to parse metrics in vhea
2. cmap: Failed to parse format 4 cmap subtable 0
3. invalid version tag
都是?OTS parsing error,一般直接調用文件是沒問題的,但壓縮后才開始報錯,
有去查找些資料,但情況太過復雜,解決方案有改寫 gulp 的,改寫 IIS 的,實在不好總結。
所以最終只得和設計達成一致,使用什么字體先讓前端試試能不能壓縮,不能就換個字體,無奈呀...

轉載于:https://www.cnblogs.com/foreverZ/p/6387251.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371544.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371544.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371544.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux文件分別打包命令,Linux文件打包命令

15.1 gzipgzip(1)是GNU的壓縮程序。它只對單個文件進行壓縮。基本用法如下:$ gzip filename程序執行以后,文件名會變成filename.gz,而且一般情況下大小會比原文件要小。注意,程序并不新建一個新的文件filename.gz,而是將filename變…

Play 2.0框架和XA交易

XA事務非常有用,而且開箱即用,今天的Play 2.0不支持它們。 在這里,我展示了如何添加該支持: 首先,介紹一些XA有用的示例: –如果您使用來自兩個不同persistence.xml的實體,則JPA使用兩個物理連…

java代碼注釋規范

java代碼注釋規范 一、規范存在的意義 應用編碼規范對于軟件本身和軟件開發人員而言尤為重要,有以下幾個原因:1、好的編碼規范可以盡可能的減少一個軟件的維護成本 , 并且幾乎沒有任何一個軟件,在其整個生命周期中,均由最初的開…

win10 hyper-v 虛擬機ping不通宿主機問題

在Windows10 Hyper-V 中安裝 Linux (Centos6.9)虛擬機無法 ping 通宿主機 這種情況下關閉 Windows 防火墻就能ping通了,當然關閉防火墻不安全。所以需要 做以下步驟: 控制面板-》系統和安全-》Windows防火墻-》高級設置-》入站規則 啟用下圖被紅框選中的兩個選…

linux方法參數,Linux的sysctl?命令?參數

Linux內核通過/proc虛擬文件系統向用戶導出內核信息,用戶也可以通過/proc文件系統或通過sysctl命令動態配置內核。比如,如果我們想啟動NAT,除了加載模塊、配置防火墻外,還需要啟動內核轉發功能。我們有三種方法:1. 直接…

Java枚舉:您擁有優雅,優雅和力量,這就是我所愛!

當Java 8即將面世時,您確定您對Java 5中引入的枚舉很了解嗎? Java枚舉仍然被低估了,很可惜,因為它們比您想象的要有用,它們不僅僅用于通常的枚舉常量! Java枚舉是多態的 Java枚舉是可以包含行為甚至數據的…

C#刪除和清空文件夾的程序

/// <summary>/// 清空指定的文件夾&#xff0c;但不刪除文件夾/// </summary>/// <param name"dir"></param>private void DeleteFolder(string dir){foreach (string d in Directory.GetFileSystemEntries(dir)){if (File.Exists(d)){try{…

2)網頁請求順序

&#xff08;1&#xff09;分析瀏覽器訪問一個網頁的完整流程邏輯過程&#xff1a;http&#xff1a;//www.abc.com/def/ 轉載于:https://www.cnblogs.com/xiaoyoucai/p/7306246.html

JavaOne 2012:非阻塞數據結構如何工作?

當我查看今天的日程安排時&#xff0c;我感到有些驚訝&#xff0c;并指出我目前計劃今天參加的所有會議都在希爾頓舉行。 當我意識到JavaOne演示文稿中大約有一半是在希爾頓酒店中并且似乎按路線大致定位時&#xff0c;這變得有些不足為奇了。 Tobias Lindaaker &#xff08; 新…

c語言箭頭指針的作用,C語言中,結構體成員變量的點和箭頭

C語言中&#xff0c;調用成員變量用點還是用箭頭&#xff0c;取決于當前的ID是指針還是結構體本身。如&#xff1a;typedef struct {float height;float weight;} Person;int main(int argc, char *argv[]) {Person jiushen;Person *lengleng (Person *)malloc(sizeof(Person)…

JavaOne 2012:調查JVM水晶球

我回到了希爾頓的A / B廣場參加星期一的第四屆會議&#xff0c;但首先去了希爾頓的頂層收拾午餐。 我每年都在JavaOne的第一天被提醒&#xff0c;涉及到每個人的第一天的午餐獲取過程令人驚訝地令人沮喪。 我知道我在JavaOne的第一年的經歷使我有些困惑&#xff0c;因為我不確定…

測試遇到的問題

多人合作測試 多人員合作測試&#xff0c;應盡量保證測試平臺統一&#xff0c;處理流程統一&#xff0c;相互之間保持實時溝通。問題的處理進度應保證所負責的所有測試人員第一時間實時更新。 多人測試應做到2人或以上進行交叉測試。 轉載于:https://www.cnblogs.com/liuliu-wo…

Jquery Memo

jQuery選擇器 $( "#id" ) $( ".class" )$( "element" )全選擇器&#xff08;*選擇器&#xff09; * {padding: 0; margin: 0;}//子選擇器 //$(div > p) 選擇所有div元素里面的子元素P//后代選擇器 //$(div p) 選擇所有div元素…

c#語言輸出字符串長度,C#統計字符長度(漢字占2個字符)

在C#編程過程中&#xff0c;通過String類的Length屬性可以獲取對應字符串的長度&#xff0c;但是細心的讀者可能注意到了&#xff0c;String類的Length屬性返回的是字符串中Char對象的個數&#xff0c;也就是說&#xff0c;一個漢字的長度為1&#xff0c;對此&#xff0c;MSDN的…

使用JMSTester對JMS層進行基準測試

對于我去過的大多數客戶端&#xff0c;使用ActiveMQ擴展JMS消息傳遞層是一個優先事項。 有多種方法可以實現這一目標&#xff0c;但毫無疑問&#xff0c;創建基準測試并在實際硬件上分析架構&#xff08;或者正如我的同事Gary Tully所說的“詢問機器”&#xff09;是第一步。 但…

Js引擎解析執行 閱讀筆記

Js引擎解析執行 閱讀筆記 一篇閱讀筆記http://km.oa.com/group/2178/articles/show/145691?kmrefsearch&from_page1&no1 早期:遍歷語法樹 Js引擎最早使用的是遍歷語法樹方式 &#xff08;syntax tree walker&#xff09; 分為兩步 詞法分析語法分析詞法分析 i a b *…

紅外線遙控c語言程序,紅外遙控的C程序

紅外遙控在生產和生活中應用越來越廣泛,不同的紅外遙控芯片有不同的發碼協議,但一般都是由引導碼,系統碼,鍵碼三部分組成.引導碼是告訴接收機準備接收紅外遙控碼.系統碼是識別碼,不同的遙控芯片有不同的誤別碼,以免搞錯.遙控器上不同的按鍵有不同的鍵碼,系統碼和鍵碼都是16位碼…

Retrofit2 完全解析 探索與okhttp之間的關系

轉載請標明出處&#xff1a; http://blog.csdn.net/lmj623565791/article/details/51304204&#xff1b; 本文出自:【張鴻洋的博客】 之前寫了個okhttputils的工具類&#xff0c;然后有很多同學詢問這個工具類和retrofit什么區別&#xff0c;于是上了下官網&#xff0c;發現其底…

不變性真的意味著線程安全嗎?

我經常閱讀有關“如果對象是不可變的&#xff0c;則它是線程安全的”的文章。 實際上&#xff0c;我從未找到過一篇讓我相信不變的意味著線程安全的文章。 即使是Brian Goetz的Java Concurrency in Practice一書中關于不變性的一本書也沒有完全令我滿意。 在這本書中&#xff0…

c語言設計 數組的知識點,C語言程序設計知識點及示例.pdf

C語言程序設計知識點及示例四川大學錦江學院C語言程序設計知識點及示例知識點1&#xff1a;除了復合語句而外&#xff0c;C語言的語句都以分號結束。示例1&#xff1a;C語言的簡單語句 (非復合語句語句)必須以 結束。參考答案&#xff1a;分號知識點2&#xff1a;目標程序和可執…