Add a load_truetype_table function to cairo_scaled_font_backend_t and
use it to load the truetype sfnt tables. Implement this with freetype
for the freetype font backend and use GetFontData for win32. Atsui
remains unimplemented, and still falls back to type3 fonts.
We have switched back and forth quite a few times. This time I'm switching
because with pngalpha we get gray antialiased text and graphics while with
png16m all we get is no antialiasing. This is definitely a bug in the png16m
driver, but I won't wait until it gets fixed upstream.
Previously Carl Worth switched to pngalpha and reverted it immediately in
commit c4fc7b06b5. I've now fixed image-diff to
work with the output of pngalpha, so we can switch. It requires lots of
reference image updates, but still doesn't help with reducing the number of
PS-specific reference images we need.
Previously it was using the equation 128+diff/3, which results in
lots of gray and de-emphasized difference. Now it's using
MIN(255,diff*4) which more emphasizes the real difference.
that includes all tests depending on CAIRO_ANTIALIAS_NONE and
CAIRO_ANTIALIAS_SUBPIXEL.
This removes separate pdf_ignored_tests and svg_ignored_tests
arrays that were out of synch and otherwise the same.
New internal function _cairo_surface_set_font_options is used to set them.
cairo_surface_create_similar propagates the font options of the other
surface into the newly created surface. Fixes bugs with font options in
fallback images and bug 4106.
Fixes the bug that paginated backends had font-matrix translation
applied twice, AND removes a second copy of the glyphs. It's
essentially similar to what cworth did for stroke/fill/clip in
this commit: bd92eb7f3c
Reviewed by: Carl Worth
Do a funny transition of CAIRO_TEST_TARGET through TARGETS such that
one can limit tested targets both through CAIRO_TEST_TARGET env var
and TARGETS make var on the command line.
There appears to be a bug in some X servers which is triggered by
rendering 1-bit glyphs with zero size via the functions
XRenderAddGlyphs and XRenderCompositeText8 (and likely its variants).
We avoid this bug by making a copy of the glyphs array which does not
include any of the size-zero glyphs so that the X server never sees them.
As the font matrix includes translation, which is otherwise unused for glyph
transformation, the interpretation of translation is fairly arbitrary. For
1.2.0, we choose to have this translation affect the glyph advance with the
thought that it could be used to do letter spacing/kerning. That is fairly
useless in practice, and a far more useful interpretation is to relocate
the origin of each glyph.
This patch uses the translation in the font matrix as an offset for the
glyph origin in user space. It turns out glyph extents were already correctly
shifted.
The end result with this patch is to have cairo match the 1.0 behaviour for
font matrix translations, but now we know why :-)
Explanation above courtesy of Keith Packard.