Re: [PATCH] Use the new pixman_glyph_cache_t API that will be in pixman 0.28.0

Behdad Esfahbod <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
On 05/31/2012 12:18 AM, Søren Sandmann wrote:
> Behdad Esfahbod <[email protected]> writes:
> 
>>> The *current* code - master as of today - doesn't do this, but I do
>>> remember that the code used to do this, and I agree it's the right thing
>>> to do.
>>
>> I see. I see the code is commented out.  Not sure where image show_glyphs is
>> happening these days.
> 
> It eventually ends up in composite_glyphs() in cairo-image-compositor.c.
> If you look at composite_glyphs_via_mask() you'll see that when the mask
> is "upgraded" from a8 to a8r8g8b8, what happens is that first the
> original a8 mask is SRCed to the new mask (basically losing the
> content), and then new glyphs are ADDed directly without a white source.

Right.  So the delicacy was lost when this was written.


> So unless I am totally misreading that code, mixing a8 and a8r8g8b8
> fonts doesn't work with current master.
> 
>>> It's easy enough to fix in the pixman code; the only concern is how
>>> seriously we need to take the Render spec. It does seem to call for the
>>> behavior of directly adding the glyphs, but that behavior is so useless
>>> that I can't imagine how anyone could actually rely on it. So I guess
>>
>> I'm not sure I follow.  What behavior of Render are you referring to?
> 
> The spec for CompositeGlyphs* says:
> 
>     When mask-format is not None, glyphs are rendered in the following
>     way with the effective mask computed in mask-format:
> 
>         tmp = temporary alpha picture
>         Combine (Zero, tmp, tmp, None)
>             for each glyph
>                 Combine (Add, tmp, glyph, None)
>             Combine (op, dst, source, tmp)
> 
> which (a) allows for glyphsets to have a format of a8, and (b) allows
> the mask to have a format of a8r8g8b8, and (c) doesn't say anything
> about white sources.
> 
> On the other hand the spec also doesn't mention component alpha at all,
> and the dst-x and dst-y that it has don't actually exist in the code, so
> I'm not too worried about it. I don't think any sane applications are
> relying on their glyphs being invisible.

I see.  I didn't even know that existed.  Perhaps a good idea to submit a
correction there too.

Thanks for the information.

behdad
--
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.