diff options
author | Matt A. Tobin <email@mattatobin.com> | 2019-11-10 15:43:51 -0500 |
---|---|---|
committer | Matt A. Tobin <email@mattatobin.com> | 2019-11-10 15:43:51 -0500 |
commit | b0e23e79e72b7892b826fabea4f9e02c421d2861 (patch) | |
tree | 26f20aea660514c213a3ae942eab222e5ccebde3 /gfx/cairo/dwrite-glyph-extents.patch | |
parent | 03590a6711d601ef3ddb48787e9f3f556705b5db (diff) | |
parent | b00601953bade944cd6df9cde6fcdd1f10d76feb (diff) | |
download | UXP-b0e23e79e72b7892b826fabea4f9e02c421d2861.tar UXP-b0e23e79e72b7892b826fabea4f9e02c421d2861.tar.gz UXP-b0e23e79e72b7892b826fabea4f9e02c421d2861.tar.lz UXP-b0e23e79e72b7892b826fabea4f9e02c421d2861.tar.xz UXP-b0e23e79e72b7892b826fabea4f9e02c421d2861.zip |
Merge branch 'master' into mailnews-work
Diffstat (limited to 'gfx/cairo/dwrite-glyph-extents.patch')
-rw-r--r-- | gfx/cairo/dwrite-glyph-extents.patch | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/gfx/cairo/dwrite-glyph-extents.patch b/gfx/cairo/dwrite-glyph-extents.patch deleted file mode 100644 index d3625e198..000000000 --- a/gfx/cairo/dwrite-glyph-extents.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff --git a/gfx/cairo/cairo/src/cairo-dwrite-font.cpp b/gfx/cairo/cairo/src/cairo-dwrite-font.cpp ---- a/gfx/cairo/cairo/src/cairo-dwrite-font.cpp -+++ b/gfx/cairo/cairo/src/cairo-dwrite-font.cpp -@@ -582,22 +582,37 @@ _cairo_dwrite_scaled_font_init_glyph_met - DWRITE_FONT_METRICS fontMetrics; - font_face->dwriteface->GetMetrics(&fontMetrics); - HRESULT hr = font_face->dwriteface->GetDesignGlyphMetrics(&charIndex, 1, &metrics); - if (FAILED(hr)) { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - // TODO: Treat swap_xy. -- extents.width = (FLOAT)(metrics.advanceWidth - metrics.leftSideBearing - metrics.rightSideBearing) / fontMetrics.designUnitsPerEm; -- extents.height = (FLOAT)(metrics.advanceHeight - metrics.topSideBearing - metrics.bottomSideBearing) / fontMetrics.designUnitsPerEm; -+ extents.width = (FLOAT)(metrics.advanceWidth - metrics.leftSideBearing - metrics.rightSideBearing) / -+ fontMetrics.designUnitsPerEm; -+ extents.height = (FLOAT)(metrics.advanceHeight - metrics.topSideBearing - metrics.bottomSideBearing) / -+ fontMetrics.designUnitsPerEm; - extents.x_advance = (FLOAT)metrics.advanceWidth / fontMetrics.designUnitsPerEm; - extents.x_bearing = (FLOAT)metrics.leftSideBearing / fontMetrics.designUnitsPerEm; - extents.y_advance = 0.0; -- extents.y_bearing = (FLOAT)(metrics.topSideBearing - metrics.verticalOriginY) / fontMetrics.designUnitsPerEm; -+ extents.y_bearing = (FLOAT)(metrics.topSideBearing - metrics.verticalOriginY) / -+ fontMetrics.designUnitsPerEm; -+ -+ // We pad the extents here because GetDesignGlyphMetrics returns "ideal" metrics -+ // for the glyph outline, without accounting for hinting/gridfitting/antialiasing, -+ // and therefore it does not always cover all pixels that will actually be touched. -+ if (scaled_font->base.options.antialias != CAIRO_ANTIALIAS_NONE && -+ extents.width > 0 && extents.height > 0) { -+ extents.width += scaled_font->mat_inverse.xx * 2; -+ extents.x_bearing -= scaled_font->mat_inverse.xx; -+ extents.height += scaled_font->mat_inverse.yy * 2; -+ extents.y_bearing -= scaled_font->mat_inverse.yy; -+ } -+ - _cairo_scaled_glyph_set_metrics (scaled_glyph, - &scaled_font->base, - &extents); - return CAIRO_INT_STATUS_SUCCESS; - } - - /** - * Stack-based helper implementing IDWriteGeometrySink. |