後端負責字體...哎,咱們公司的前端真的任性啊...前端
而後,一路踩了jvm關於字體的坑,重點是,java的報錯很隨意,甚至不報錯,建議直接看最後面.java
正常要windows裝一次字體,linux裝一次字體,這樣的話系統就能直接拿到了。linux
可是這樣一點都不兼容,加個字體,還要裝個兩次,反程序員啊。(後面你會發現更加反程序員)程序員
那麼,只能把字體放到哦靜態文件裏面,而後引用外部字體了。web
private static Font definedFont;
private static final String basePath = System.getProperty("user.dir") + File.separator + "web" + File.separator + "src" + File.separator + "main" + File.separator + "resources"
+ File.separator + "static" + File.separator + "backToSchool";
/**
* 引用外部字體
*/
public static void setFont() {
String fontUrl = basePath + File.separator + "fonts" + File.separator + "SourceHanSans-Bold.ttf";
logger.info(".setFont.fontUrl={}", fontUrl);
try {
Font font = Font.createFont(Font.TRUETYPE_FONT, new File(fontUrl));
//設置字體大小,float型
setDefinedFont(font.deriveFont(FONT_SIZE));
} catch (Exception e) {
logger.error(".setFont.e={}", e.getMessage(), e);
throw new ActivityBusinessException(BtsErrorCode.SET_FONT_ERROR);
}
}
public static Font getDefinedFont() {
return definedFont;
}
public static void setDefinedFont(Font font) {
definedFont = font;
}
其實代碼很簡單,難點在於字體文件。windows
一開始,需求給的otf字體我在開發機和測試機(windows/linux)都安裝了,而後一跑,正常,美滋滋。後端
可是這樣一點都不程序員,我還要在正式環境裝一次字體,特傻。jvm
因而,只能引用外部字體。學習
前頭說了,是otf文件,用正確的代碼跑一下,很好一個報錯都沒有!(此處應有掌聲!)測試
可是,就是不顯示字體,甚至不用默認字體,什麼都沒有輸出,我心想,java居然沒有報錯????
好吧百度,1個小時以後。
嗯,我只能說這個引用外部的otf在百度上,根本沒有任何解決方法。
甚至問這個問題的人,答案也是叫咱們在操做系統安裝,本地引用。
而後,谷歌,stackflow。
大神直接fxxk了一下java的awt,大意就是java說支持引用otf,可是,不支持外部引用otf,最後說了一句awt寫的就是一坨翔。
小數幾個直接爆粗口的答案啊,感受這哥們也和我那樣浪費一大堆時間,在這傻逼問題上。
因而,只能叫需求給ttf格式的字體。
很好使用ttf外部引用,謝天謝地,終於報錯了。
FONT NAME ERROR xxxxxx
什麼?字體名字不正確的?
大哥,我是根據路徑引用的哦,不是根據字體名字去系統那裏取的哦?
是的,這個就是我說的java的報錯很隨意。
那麼只能排除了,用個系統的內部字體試一下,正常無報錯。
我那個糾結啊,也就是說外部引用,路徑引用代碼沒錯,並且看了源碼,外部引用也就是路徑引用。
也就是說需求給的ttf有問題,反映一下問題,需求說你想要怎樣的ttf呢?
鬼子知道啊?我也想知道啊!
因而,我只能裝個設計字體的軟件來找一下,兩個ttf文件的不一樣!
設計字體的軟件怎麼操做,我不想說,太反程序員了,我擔憂說出來,會害了大家。
說個大體思路。
用windows打開後,會發現正常的有個數字簽名。
也就是用設計字體的文件加個數字簽名就行了!
其實我是倒由於果,再改以前我都不知道有數字簽名這玩意
直接把一個正常的ttf的非必要屬性,直接覆蓋了不正常的ttf的非必要屬性。而後,改字體名稱什麼的,你會發現上圖,基本沒幾個屬性同樣....(夠反程序員了吧?)
至此,功能徹底已經實現。
大家真覺得這樣就結束了?
我實現了這個功能以後,還要寫點字進去,而後居中動態靠右。
可是,這個網頁在手機上的,也就是說要搞手機適配!
而後,和先後端的老大說了下,這個需求要實現後端機型適配,獲取長寬來寫字。
最終,兩方大佬逼迫前端學習技術去了,也就是說我搞了這麼久,一點用都沒有....
字體仍是給前端作吧...