User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:184.108.40.206) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 6.1; WOW64; en-US; rv:1.9.3a5pre) Gecko/20100610 Minefield/3.7a5pre (.NET CLR 3.5.30729) Forgive me if I have this all wrong :) CreateGlyphRunAnalysis here: http://mxr.mozilla.org/mozilla-central/source/gfx/cairo/cairo/src/cairo-dwrite-font.cpp#498 uses DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC and DWRITE_MEASURING_MODE_NATURAL Reproducible: Always Actual Results: D2D fonts are, I believe, rendered using DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC and DWRITE_MEASURING_MODE_NATURAL except in the correct case of Bug 568495 Expected Results: Could CreateGlyphRunAnalysis use DWRITE_RENDERING_MODE based on the results of IDWriteRenderingParams::GetRenderingMode Method - http://msdn.microsoft.com/en-us/library/dd371300%28VS.85%29.aspx and IDWriteFontFace::GetRecommendedRenderingMode Method - http://msdn.microsoft.com/en-us/library/dd371015%28v=VS.85%29.aspx Perhaps this could happen at http://mxr.mozilla.org/mozilla-central/source/gfx/cairo/cairo/src/cairo-dwrite-font.cpp#287 to 310 GetRecommendedRenderingMode could then use the data about the particular character font type/size/etc to give CreateGlyphRunAnalysis 'optimal' values. I'm don't feel confident enough to attempt a patch but my reasoning is that with all the combinations of themes, fonts, colours and websites etc. out there that there are likely to be cases where the DWRITE modes would do a better job being set differently. Allowing the DRWITE_RENDERING mode to be automatically set based on the content being rendered would be very helpful for a web browser.
Upon further investigation it seems that the values such as emsize, pixelsPerDip and renderingParams aren't useful/necessary in this case. DWRITE_RENDERING_MODE should probably now be set to DEFAULT.
This will only change something for fallback rendering. The vast majority of text is not rendered using this codepath. So this should not make any difference for how normal text looks, we could still change the rendering mode of course.
I'm still looking in the wrong place then :) Is it planned/possible to be able to pass the text/glyphs about to be drawn to GetRecommendedRenderingMode and maybe CreateMonitorRenderingParams, then use the results and DWRITE (would IDWriteTextRenderer::DrawGlyphRun be the right one?) to draw the text/glyphs on the codepath that is used for most/all of the text?
(In reply to comment #4) > I'm still looking in the wrong place then :) > > Is it planned/possible to be able to pass the text/glyphs about to be drawn to > GetRecommendedRenderingMode and maybe CreateMonitorRenderingParams, then use > the results and DWRITE (would IDWriteTextRenderer::DrawGlyphRun be the right > one?) to draw the text/glyphs on the codepath that is used for most/all of the > text? The place to look for D2D would be http://mxr.mozilla.org/mozilla-central/source/gfx/cairo/cairo/src/cairo-d2d-surface.cpp#2107.
Aha, so it does it correctly already. Sorry for wasting your time :) So I take it the text 'improvements' mentioned here http://blogs.msdn.com/b/text/archive/2010/03/05/additional-wpf-text-clarity-improvements.aspx would require firefox to be built differently (target .NET4) but I suspect the actual issue/solution will be more complex than that :)
(In reply to comment #6) > Aha, so it does it correctly already. Sorry for wasting your time :) > > So I take it the text 'improvements' mentioned here > http://blogs.msdn.com/b/text/archive/2010/03/05/additional-wpf-text-clarity-improvements.aspx > > would require firefox to be built differently (target .NET4) but I suspect the > actual issue/solution will be more complex than that :) No such thing :). Always good to have more eyes look at something. I would suspect that all that is required is an update, we don't target any specific .NET version. But I might be mistaking.