我正在使用 CTFontDrawGlyphs() API 渲染 AppleColorEmoji 字体的字形。我使用以下信息来创建 CGContext : RGB、32 bpp、8 bpc、kCGImageAlphaPremultipliedFirst
AppleColorEmoji 字体的“sbix”表中的实际 png 文件包含正确的 alpha 值。表情符号的背景是透明的,而前景是不透明的。但是,当使用 CTFontDrawGlyphs API 渲染时,渲染字形的 Alpha channel 包含所有 0xFF 值,从而导致完全不透明的方形渲染。由于缺少 Alpha 值,我无法将其与彩色背景正确混合。
这是 API 的已知限制吗?我在创建上下文时是否做错了什么,导致了这种意外的行为?请帮忙。
最佳答案
显然,CTFontDrawGlyphs()
如果您已使用 0xFF
填充了上下文缓冲区的字节,则不会在上下文缓冲区中写入半透明 alpha 值。值。
根据Apple开发人员支持的建议,我对要传递给上下文的缓冲区进行了memset 0x00
值(value)观。此后,CTFontDrawGlyphs()
开始正确写入 alpha 值,即使对于半透明像素也是如此。
关于macos - OSX API CTFontDrawGlyphs() 不会返回 AppleColorEmoji 字形的正确 alpha 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38301325/