Egret引擎外部字体的解决方案
最新官方文檔太老了
http://developer.egret.com/cn/github/egret-docs/Engine2D/textField/textStyle/index.html
還在使用egret.registerFontMapping(),這個API早就不支持了。
?
官方論壇上也有多個帖子在詢問
https://bbs.egret.com/forum.php?mod=viewthread&tid=54983&highlight=%E5%AD%97%E4%BD%93
https://bbs.egret.com/forum.php?mod=viewthread&tid=52751&highlight=%E5%AD%97%E4%BD%93
?
經過多次來回試驗,終于找到可行的解決方案。在下列版本上,用小米,錘子,oppo的多款手機測試通過
引擎版本: 5.2.16 ~5.2.20(當前最新版本)
native android版本: 0.1.16和0.1.17(當前最新版本)
?
先概括一下:在web和native兩個平臺上,支持外部字體的方法不同。
?
我們把要使用的字體放到resource目錄下, 比如名字是:testFont.TTF
?
1、在web上支持的方法。修改index文件,增加一個一種字體:
<style>
html, body {
-ms-touch-action: none;
background: #000000;
padding: 0;
border: 0;
margin: 0;
height: 100%;
}
</style>
<style type="text/css"> /* 在默認的style后面加一個字體style就可以了。 */
@font-face {
font-family: 'Saira SemiCondensed';
src:url('./resource/testFont.TTF') format('truetype');
font-weight: normal;
font-style: normal;
}
div
{
font-family: "Saira SemiCondensed";
}
</style>
?
然后在引擎的label上,用fontFamily="Saira SemiCondensed", 就可以使用這個字體了.??梢栽趀xml中直接定義,很方便。
?
?
2、在native android 上支持的方法。
在label,使用代碼如下:
let myLabel: eui.Label
myLabe.fontFamily = "resource/testFont.TTF";
?
?
3、把上面兩個方案結合起來。
上面這兩種方案是不兼容的。native的方案直接用瀏覽器訪問,字體會非常小,怪異。加上判斷即可。注意判斷native版本,要使用 egret.RuntimeType.RUNTIME2,而不是egret.RuntimeType.NATIVE
let myLabel: eui.Label
if (egret.Capabilities.runtimeType == egret.RuntimeType.RUNTIME2) {
myLabel.fontFamily = "resource/testFont.TTF";
}
?
?
總結
以上是生活随笔為你收集整理的Egret引擎外部字体的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摹客经典在线原型例子(可编辑):支付宝A
- 下一篇: 简单了解一下拉线式位移传感器及线性度是如