有没有遇到类似问题的大佬出来分享一下解决方法,在浏览器里面ttf字体是没问题,就模拟器有问题。。。因为自己项目遇到这个问题,然后才去看了一下creator的例子项目02_ui/02_label/TTFFontLabel.fire,结果例子项目也有这个问题。。。
顶。。。在线等。。。
难道我样例工程的打开方式不对??
你好 这个确实有这样的问题 我们正在处理
2.x 的 TTF 字体实现是强平台相关的,每个平台底层的实现都不一样,底层的实现又依赖对应系统 API。建议直接在想要发布的原生平台: iOS 或是 Android 验证 TTF 字体的效果。
好的。。还有遇到另一个问题,就是浏览器里加载ttf字体会超时,看了一下engine的代码,貌似是因为加载的ttf字体和浏览器的默认字体相同导致的。。。engine底层判断浏览器字体加载完成有bug。。。
function _checkFontLoaded () {
let allFontsLoaded = true;
let now = Date.now();
for (let i = _loadingFonts.length - 1; i >= 0; i--) {
let fontLoadHandle = _loadingFonts[i];
let fontFamily = fontLoadHandle.fontFamilyName;
// load timeout
if (now - fontLoadHandle.startTime > _timeout) {
cc.warnID(4933, fontFamily);
fontLoadHandle.callback(null, fontFamily);
_loadingFonts.splice(i, 1);
continue;
}
let oldWidth = fontLoadHandle.refWidth;
_canvasContext.font = '40px ' + fontFamily;
let newWidth = textUtils.safeMeasureText(_canvasContext, _testString);
// loaded successfully
if (oldWidth !== newWidth) { //浏览器默认字体和要加载的ttf字体一样时,这两个值永远相等??
_loadingFonts.splice(i, 1);
fontLoadHandle.callback(null, fontFamily);
}
else {
allFontsLoaded = false;
}
}
if (allFontsLoaded) {
clearInterval(_intervalId);
_intervalId = -1;
}
}
现在可以了吗?
我们现在用的2.0.9的版本,还有这个问题,请问下什么时候能解决啊