背景信息
之前項目中遇到了使用ActiveReportsJS 前端報表控件生成PDF的功能,在IIS 或者Tomcat服務器上部署前端項目,生成PDF 超鏈接(為英文)均能正常顯示,但是在Docker中部署,生成PDF時候總是出現超鏈接吃字。
正常
通過與公司內部的資深前端大神溝通後,會發現還是因為缺字體導致的,因為雖然在生成PDF 時註冊了字體但這個字體是避免了亂碼,並未保證能夠被正確的畫出來,所以研究後發現,還是需要使用 Web-Fonts
Web Fonts 介紹
Web Fonts 表示可以隨着網頁的加載下載自定義字體實現以更多不同的、自定義的文本樣式。
CSS 中允許為HTML 標籤指定 font-family 屬性,瀏覽器會嘗試下載font-family 中指定的字體列表直到在運行的客户端系統中找到可用的字體。
如:
p {
font-family: Helvetica, "Trebuchet MS", Verdana, sans-serif;
}
以上會保證在系統中運行良好,但傳統Web開發者的字體選擇是有限的。只有少數幾種字體,可以保證在所有常見的系統中都可以使用,稱為 Web-safe fonts, 我們就可以通過 web-safe提供的字體,在字體棧中指定可選的字體文件,但這增加了測試方面的開銷,以確保你的設計在每一種字體下看起來都很好。
Web fonts是一個好的選擇,可以保證網頁運行良好, Web-Font 是 CSS 的特點,允許指定字體文件隨着網站一起下載,也就意味着,任何支持 Web fonts的瀏覽器都可以精準的指定需要加載的字體。
語法如下:
首先需要在CSS 中定義@font-fce 塊, 指定下載字體的文件,注意 src裏面就是字體文件的地址:
@font-face {
font-family: "myFont";
src: url("myFont.woff2");
}
可以使用@font-face裏面指定的字體名稱,在任何需要的標籤中,像普通的font-family引用一樣應用到需要的標籤中:
html {
font-family: "myFont", "Bitstream Vera Serif", serif;
}
語法確實稍微複雜一些
關於 Web-Font 我們需要注意以下事項:
- 注意字體版權
- 所有主流瀏覽器主要支持的字體格式 為 WOFF或WOFF2(Web Open Font Format versions 1 and 2),即使老的瀏覽器如IE9也是支持WOFF格式的。
- WOFF2 支持TrueType 和OpenType 規格説明的全部,包含variable fonts, chromatic fonts, 及font collections.
- 列出字體文件的順序很重要。如果提供了瀏覽器的字體列表,瀏覽器將選擇首個字體文件來使用。
示例:
@font-face {
font-family: 'zantrokeregular';
src: url('fonts/zantroke-webfont.woff2') format('woff2'),
url('fonts/zantroke-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}
font-family: 'zantrokeregular', serif;