[webkit-reviews] review denied: [Bug 50619] [GTK] Glyphs in vertical text tests are rotated 90 degrees clockwise : [Attachment 216051] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Tue Nov 5 12:33:30 PST 2013
Martin Robinson <mrobinson at webkit.org> has denied Denis Nomiyama (dnomi)
<d.nomiyama at samsung.com>'s request for review:
Bug 50619: [GTK] Glyphs in vertical text tests are rotated 90 degrees clockwise
https://bugs.webkit.org/show_bug.cgi?id=50619
Attachment 216051: Patch
https://bugs.webkit.org/attachment.cgi?id=216051&action=review
------- Additional Comments from Martin Robinson <mrobinson at webkit.org>
View in context: https://bugs.webkit.org/attachment.cgi?id=216051&action=review
Looking pretty good. I have some stylistic concerns, but you should also try to
regenerate pixel/test results for tests that use vertical writing modes.
> Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:42
> +namespace {
> +
This anonymous namespace is unnecessary.
> Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:106
> -static cairo_font_options_t* getDefaultFontOptions()
> +cairo_font_options_t* getDefaultFontOptions()
This should remain static.
> Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:118
> +void rotateCairoMatrixForVerticalOrientation(cairo_matrix_t* matrix)
This should be static.
> Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp:173
> - cairo_glyph_t cglyph = { glyph, 0, 0 };
> - cairo_text_extents_t extents;
> - cairo_scaled_font_glyph_extents(m_platformData.scaledFont(), &cglyph, 1,
&extents);
> + float w = 0.0;
> + if (cairo_scaled_font_status(m_platformData.scaledFont()) ==
CAIRO_STATUS_SUCCESS) {
> + cairo_glyph_t cglyph = { glyph, 0, 0 };
> + cairo_text_extents_t extents;
> + cairo_scaled_font_glyph_extents(m_platformData.scaledFont(),
&cglyph, 1, &extents);
> + w = static_cast<float>(platformData().orientation() == Horizontal ?
extents.x_advance : -extents.y_advance);
> + }
>
> - float w = (float)m_spaceWidth;
> - if (cairo_scaled_font_status(m_platformData.scaledFont()) ==
CAIRO_STATUS_SUCCESS && extents.x_advance)
> - w = (float)extents.x_advance;
> + if (!static_cast<unsigned>(w))
> + w = static_cast<float>(m_spaceWidth);
>
Please use early returns, avoid casting, and abbreviated variable names. For
instance:
if (cairo_scaled_font_status(m_platformData.scaledFont()) !=
CAIRO_STATUS_SUCCESS)
return m_spaceWidth;
cairo_glyph_t cairoGlyph = { glyph, 0, 0 };
cairo_text_extents_t extents;
cairo_scaled_font_glyph_extents(m_platformData.scaledFont(), &cairoGlyph, 1,
&extents);
float width = platformData().orientation() == Horizontal ? extents.x_advance :
-extents.y_advance;
return width ? width : m_spaceWidth;
> Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:92
> + // If no advance in x, assume font has vertical ghyphs.
ghyphs -> glyphs
> Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:101
> - *advance = doubleToHarfBuzzPosition(glyphExtents.x_advance);
> + *advance =
doubleToHarfBuzzPosition(static_cast<unsigned>(glyphExtents.x_advance) ?
glyphExtents.x_advance : -glyphExtents.y_advance);
> +
> if (extents) {
> extents->x_bearing =
doubleToHarfBuzzPosition(glyphExtents.x_bearing);
> - extents->y_bearing =
doubleToHarfBuzzPosition(glyphExtents.y_bearing);
> - extents->width = doubleToHarfBuzzPosition(glyphExtents.width);
> - extents->height = doubleToHarfBuzzPosition(glyphExtents.height);
> + extents->y_bearing =
doubleToHarfBuzzPosition(static_cast<unsigned>(glyphExtents.x_advance) ?
glyphExtents.y_bearing : -glyphExtents.y_bearing);
> + extents->width =
doubleToHarfBuzzPosition(static_cast<unsigned>(glyphExtents.x_advance) ?
glyphExtents.width : -glyphExtents.height);
> + extents->height =
doubleToHarfBuzzPosition(static_cast<unsigned>(glyphExtents.x_advance) ?
glyphExtents.height : glyphExtents.width);
> }
Certainly these casts can be avoided? It's probably best to save the results of
the test into a boolean:
bool hasVerticalGlyphs = glyphExtents.x_advance;
This will allow you to remove the comment too.
More information about the webkit-reviews
mailing list