applySoftMask
open override fun applySoftMask(kind: SoftMask.Kind, maskBBox: KiteRectangle, maskCtm: KiteMatrix, render: () -> Unit, renderMask: (KiteCanvas) -> Unit)
open override fun applySoftMask(kind: SoftMask.Kind, maskBBox: KiteRectangle, maskCtm: KiteMatrix, transfer: KiteMaskTransfer?, render: () -> Unit, renderMask: (KiteCanvas) -> Unit)
ISO 32000-1, 11.6.5.2: the mask group draws into a bitmap of its own. Its alpha, or its luminosity over a black backdrop, becomes a grey mask that the content paints through with CGContextClipToMask. So the mask group's colours never reach the page, and each paint keeps its own blend mode against the page (#79). The transfer table maps each value of the grey mask.