On Tue, Jan 11, 2011 at 2:08 AM, Behdad Esfahbod <span dir="ltr">&lt;<a href="mailto:behdad@behdad.org">behdad@behdad.org</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">I found both the API and the implementation less than elegant.  In fact, both<br></div>
are dirty hacks!<br>
<br>
On the API level, it defeats the whole purpose of having an opaque<br>
cairo_font_options_t.</blockquote><div><br>I&#39;m not sure what you mean by that.<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
  I&#39;m open to making _cairo_surface_set_font_options()<br>
public if that helps.<br></blockquote><div><br>It won&#39;t help. That would only affect fonts whose font options are set to CAIRO_ANTIALIAS_DEFAULT. Sometimes we&#39;re setting font options to CAIRO_ANTIALIAS_SUBPIXEL explicitly (e.g. downloaded fonts need Cleartype in Windows XP even if the user hasn&#39;t enabled Cleartype) and but we still need to disable subpixel AA when rendering those fonts to RGBA surfaces (in some cases).<br>
<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
On the implementation level, it&#39;s just wrong.  The scaled font glyph metrics<br>
may depend on the antialias mode.  In which case with your patch, apps<br>
position glyphs with one mode, and render with another.  It&#39;s broken.<br></blockquote><div><br>If, at layout time, we know that the font needs to be grayscale-AA, we will make it so when we construct the font and we don&#39;t need this additional control. But sometimes we don&#39;t know until after layout is done whether we can use subpixel AA or not, because that actually depends on layout! For example, if text overlaps a GPU-accelerated video, we may need to place it in an RGBA layer. In that case, rendering the glyphs of the grayscale-AA font using glyph positions of the subpixel-AA font seems to give better results than mangling the subpixel-AA alpha channels into a single alpha value as cairo does today, especially when the text isn&#39;t black. We can&#39;t handle a circular dependency where layout depends on the antialiasing of the text and the antialiasing of the text depends on layout.<br>
<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I understand your frustration, but this approach doesn&#39;t work IMO.<br></blockquote><div><br>I&#39;d welcome a better suggestion.<br clear="all"></div></div><br>Rob<br>-- <br>&quot;Now the Bereans were of more noble character than the 
Thessalonians, for they received the message with great eagerness and 
examined the Scriptures every day to see if what Paul said was true.&quot; [Acts 17:11]<br>