macos - OSX API CTFontDrawGlyphs() 不会返回 AppleColorEmoji 字形的正确 alpha 值

标签 macos text fonts alpha emoji

我正在使用 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/

相关文章:

macos - Mac 上的范围栏

ios - 在色彩空间之间转换 CGColors 的正确方法

mysql - 在 MacOs Lion 上安装 Perl DBD-mysql-4.021 是否需要 MySQL header?

Java Hashtable containsValue() 不起作用

java - 如何使用第三方字体从 Unicode 字符集语言创建 PDF 文档

objective-c - 在 Mac OS X 上画一个正方形?

javascript - 如果跨度包含少于 3 个字符,则使用 jQuery 隐藏跨度父级

java - java中将字符串分成句子(在指定组的符号出现后)

css - 根据屏幕分辨率更改 TD 字体大小

css - 无法在 CSS 中生成此字体