summaryrefslogtreecommitdiffstats
path: root/gfx/cairo/dwrite-font-printing.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/cairo/dwrite-font-printing.patch')
-rw-r--r--gfx/cairo/dwrite-font-printing.patch157
1 files changed, 0 insertions, 157 deletions
diff --git a/gfx/cairo/dwrite-font-printing.patch b/gfx/cairo/dwrite-font-printing.patch
deleted file mode 100644
index 837e19f6c..000000000
--- a/gfx/cairo/dwrite-font-printing.patch
+++ /dev/null
@@ -1,157 +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
-@@ -37,16 +37,17 @@
- #include "cairoint.h"
-
- #include "cairo-win32-private.h"
- #include "cairo-surface-private.h"
- #include "cairo-clip-private.h"
-
- #include "cairo-d2d-private.h"
- #include "cairo-dwrite-private.h"
-+#include "cairo-truetype-subset-private.h"
- #include <float.h>
-
- typedef HRESULT (WINAPI*D2D1CreateFactoryFunc)(
- D2D1_FACTORY_TYPE factoryType,
- REFIID iid,
- CONST D2D1_FACTORY_OPTIONS *pFactoryOptions,
- void **factory
- );
-@@ -1036,17 +1037,17 @@ cairo_int_status_t
- {
- cairo_dwrite_scaled_font_t *dwritesf = static_cast<cairo_dwrite_scaled_font_t*>(scaled_font);
- cairo_dwrite_font_face_t *face = reinterpret_cast<cairo_dwrite_font_face_t*>(dwritesf->base.font_face);
-
- const void *data;
- UINT32 size;
- void *tableContext;
- BOOL exists;
-- face->dwriteface->TryGetFontTable(tag,
-+ face->dwriteface->TryGetFontTable(be32_to_cpu (tag),
- &data,
- &size,
- &tableContext,
- &exists);
-
- if (!exists) {
- return CAIRO_INT_STATUS_UNSUPPORTED;
- }
-@@ -1476,16 +1477,59 @@ DWriteFactory::CreateRenderingParams()
- Instance()->CreateCustomRenderingParams(gamma, contrast, clearTypeLevel,
- pixelGeometry, renderingMode,
- &mCustomClearTypeRenderingParams);
- Instance()->CreateCustomRenderingParams(gamma, contrast, clearTypeLevel,
- pixelGeometry, DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC,
- &mForceGDIClassicRenderingParams);
- }
-
-+static cairo_bool_t
-+_name_tables_match (cairo_scaled_font_t *font1,
-+ cairo_scaled_font_t *font2)
-+{
-+ unsigned long size1;
-+ unsigned long size2;
-+ cairo_int_status_t status1;
-+ cairo_int_status_t status2;
-+ unsigned char *buffer1;
-+ unsigned char *buffer2;
-+ cairo_bool_t result = false;
-+
-+ if (!font1->backend->load_truetype_table ||
-+ !font2->backend->load_truetype_table)
-+ return false;
-+
-+ status1 = font1->backend->load_truetype_table (font1,
-+ TT_TAG_name, 0, NULL, &size1);
-+ status2 = font2->backend->load_truetype_table (font2,
-+ TT_TAG_name, 0, NULL, &size2);
-+ if (status1 || status2)
-+ return false;
-+ if (size1 != size2)
-+ return false;
-+
-+ buffer1 = (unsigned char*)malloc (size1);
-+ buffer2 = (unsigned char*)malloc (size2);
-+
-+ if (buffer1 && buffer2) {
-+ status1 = font1->backend->load_truetype_table (font1,
-+ TT_TAG_name, 0, buffer1, &size1);
-+ status2 = font2->backend->load_truetype_table (font2,
-+ TT_TAG_name, 0, buffer2, &size2);
-+ if (!status1 && !status2) {
-+ result = memcmp (buffer1, buffer2, size1) == 0;
-+ }
-+ }
-+
-+ free (buffer1);
-+ free (buffer2);
-+ return result;
-+}
-+
- // Helper for _cairo_win32_printing_surface_show_glyphs to create a win32 equivalent
- // of a dwrite scaled_font so that we can print using ExtTextOut instead of drawing
- // paths or blitting glyph bitmaps.
- cairo_int_status_t
- _cairo_dwrite_scaled_font_create_win32_scaled_font (cairo_scaled_font_t *scaled_font,
- cairo_scaled_font_t **new_font)
- {
- if (cairo_scaled_font_get_type (scaled_font) != CAIRO_FONT_TYPE_DWRITE) {
-@@ -1528,19 +1572,18 @@ cairo_int_status_t
- &ctm,
- &options);
- cairo_font_face_destroy (win32_face);
-
- if (!font) {
- return CAIRO_INT_STATUS_UNSUPPORTED;
- }
-
-- if (_cairo_win32_scaled_font_is_type1 (font) || _cairo_win32_scaled_font_is_bitmap (font)) {
-- // If we somehow got a Type1 or bitmap font, it can't be the same physical font
-- // as directwrite was using, so glyph IDs will not match; best we can do is to
-- // throw it away and fall back on rendering paths or blitting bitmaps instead.
-+ if (!_name_tables_match (font, scaled_font)) {
-+ // If the font name tables aren't equal, then GDI may have failed to
-+ // find the right font and substituted a different font.
- cairo_scaled_font_destroy (font);
- return CAIRO_INT_STATUS_UNSUPPORTED;
- }
-
- *new_font = font;
- return CAIRO_INT_STATUS_SUCCESS;
- }
-diff --git a/gfx/cairo/cairo/src/cairo-truetype-subset-private.h b/gfx/cairo/cairo/src/cairo-truetype-subset-private.h
---- a/gfx/cairo/cairo/src/cairo-truetype-subset-private.h
-+++ b/gfx/cairo/cairo/src/cairo-truetype-subset-private.h
-@@ -34,16 +34,18 @@
- * Adrian Johnson <ajohnson@redneon.com>
- */
-
- #ifndef CAIRO_TRUETYPE_SUBSET_PRIVATE_H
- #define CAIRO_TRUETYPE_SUBSET_PRIVATE_H
-
- #include "cairoint.h"
-
-+CAIRO_BEGIN_DECLS
-+
- #if CAIRO_HAS_FONT_SUBSET
-
- /* The structs defined here should strictly follow the TrueType
- * specification and not be padded. We use only 16-bit integer
- * in their definition to guarantee that. The fields of type
- * "FIXED" in the TT spec are broken into two *_1 and *_2 16-bit
- * parts, and 64-bit members are broken into four.
- *
-@@ -191,9 +193,11 @@ typedef struct _tt_composite_glyph {
- typedef struct _tt_glyph_data {
- int16_t num_contours;
- int8_t data[8];
- tt_composite_glyph_t glyph;
- } tt_glyph_data_t;
-
- #endif /* CAIRO_HAS_FONT_SUBSET */
-
-+CAIRO_END_DECLS
-+
- #endif /* CAIRO_TRUETYPE_SUBSET_PRIVATE_H */