Skip to content

Fix PDF transparent gradient alpha loss on SMask.#1442

Merged
shlzxjp merged 2 commits into
mainfrom
bugfix/YGaurora_pdf_gradient
May 22, 2026
Merged

Fix PDF transparent gradient alpha loss on SMask.#1442
shlzxjp merged 2 commits into
mainfrom
bugfix/YGaurora_pdf_gradient

Conversation

@YGaurora
Copy link
Copy Markdown
Collaborator

@YGaurora YGaurora commented May 22, 2026

修复 PDF 导出带透明度的线性/径向/锥形/菱形渐变时颜色错误的问题。

CreateSmaskGraphicState 构造 luminosity SMask 用的渐变副本时,只把每个 stop 的 alpha 清成 1.0,没有把原 alpha 编码进 RGB。luminosity SMask 取颜色亮度作为 alpha mask,因此 RGB 必须等于 (alpha, alpha, alpha) 才能表达透明度;否则 SMask 渲染为纯白(亮度=1),相当于完全不透明,原 alpha 信息丢失。

修复方式:将原 alpha 写入 RGB 三通道后再将 alpha 设为 1.0,luminosity 正确反映各 stop 的透明度。

新增测试 PDFExportTest.LinearGradientWhiteAlpha,覆盖 50% 到 10% 白色透明渐变叠在黑底上的导出场景。

Clipboard_Screenshot_1779440570 Clipboard_Screenshot_1779440583

@shlzxjp shlzxjp merged commit c713c21 into main May 22, 2026
10 checks passed
@shlzxjp shlzxjp deleted the bugfix/YGaurora_pdf_gradient branch May 22, 2026 12:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants