我正在使用此方法将字体从opentype.js转换为base64:
const buffer = glyphs.toArrayBuffer() // from opentype
let binary = []
const bytes = new Uint8Array(buffer)
const len = bytes.byteLength
for (let i = 0; i < len; i++) {
binary[i] = String.fromCharCode(bytes[ i ])
}
return window.btoa(binary.join(''))
我接受这个base64字符串并将其嵌入为css字符串:
src: url('data:text/plain;charset=utf-8;base64,BASE64DARA')
95%的字体在Chrome中运行,100%在Safari中运行。某些字体在Chrome中失败
Failed to decode downloaded font
如果我使用更原生的方法(如CLI)对字体进行编码,则可以正常工作。我已经读过上面的浏览器方法需要多字节,但它在Safari中工作正常,并且还解码回ttf。
我玩过编码器的几种变体=,mime类型等无济于事。
这是违规基地64的gist。
如何在Chrome中使用此功能?