hb_font_t *font = hb_font_reference (font_opts->get_font ());
cairo_font_face_t *cairo_face;
- /* We cannot use the FT_Face from hb_font_t, as doing so will confuse hb_font_t because
- * cairo will reset the face size. As such, create new face... */
- FT_Face ft_face = NULL;//hb_ft_font_get_face (font);
+ FT_Face ft_face = hb_ft_font_get_face (font);
if (!ft_face)
{
if (!ft_library)
return scaled_font;
}
-bool
-helper_cairo_scaled_font_has_color (cairo_scaled_font_t *scaled_font)
-{
- bool ret = false;
-#ifdef FT_HAS_COLOR
- FT_Face ft_face = cairo_ft_scaled_font_lock_face (scaled_font);
- if (ft_face)
- {
- if (FT_HAS_COLOR (ft_face))
- ret = true;
- cairo_ft_scaled_font_unlock_face (scaled_font);
- }
-#endif
- return ret;
-}
-
struct finalize_closure_t {
void (*callback)(finalize_closure_t *);
cairo_t *
helper_cairo_create_context (double w, double h,
view_options_t *view_opts,
- output_options_t *out_opts,
- cairo_content_t content)
+ output_options_t *out_opts)
{
cairo_surface_t *(*constructor) (cairo_write_func_t write_func,
void *closure,
}
if (0)
;
- else if (0 == g_ascii_strcasecmp (extension, "ansi"))
+ else if (0 == strcasecmp (extension, "ansi"))
constructor2 = _cairo_ansi_surface_create_for_stream;
#ifdef CAIRO_HAS_PNG_FUNCTIONS
- else if (0 == g_ascii_strcasecmp (extension, "png"))
+ else if (0 == strcasecmp (extension, "png"))
constructor2 = _cairo_png_surface_create_for_stream;
#endif
#ifdef CAIRO_HAS_SVG_SURFACE
- else if (0 == g_ascii_strcasecmp (extension, "svg"))
+ else if (0 == strcasecmp (extension, "svg"))
constructor = cairo_svg_surface_create_for_stream;
#endif
#ifdef CAIRO_HAS_PDF_SURFACE
- else if (0 == g_ascii_strcasecmp (extension, "pdf"))
+ else if (0 == strcasecmp (extension, "pdf"))
constructor = cairo_pdf_surface_create_for_stream;
#endif
#ifdef CAIRO_HAS_PS_SURFACE
- else if (0 == g_ascii_strcasecmp (extension, "ps"))
+ else if (0 == strcasecmp (extension, "ps"))
constructor = cairo_ps_surface_create_for_stream;
#ifdef HAS_EPS
- else if (0 == g_ascii_strcasecmp (extension, "eps"))
+ else if (0 == strcasecmp (extension, "eps"))
constructor = _cairo_eps_surface_create_for_stream;
#endif
#endif
unsigned int fr, fg, fb, fa, br, bg, bb, ba;
- const char *color;
br = bg = bb = 0; ba = 255;
- color = view_opts->back ? view_opts->back : DEFAULT_BACK;
- sscanf (color + (*color=='#'), "%2x%2x%2x%2x", &br, &bg, &bb, &ba);
+ sscanf (view_opts->back + (*view_opts->back=='#'), "%2x%2x%2x%2x", &br, &bg, &bb, &ba);
fr = fg = fb = 0; fa = 255;
- color = view_opts->fore ? view_opts->fore : DEFAULT_FORE;
- sscanf (color + (*color=='#'), "%2x%2x%2x%2x", &fr, &fg, &fb, &fa);
+ sscanf (view_opts->fore + (*view_opts->fore=='#'), "%2x%2x%2x%2x", &fr, &fg, &fb, &fa);
- if (content == CAIRO_CONTENT_ALPHA)
- {
- if (view_opts->annotate ||
- br != bg || bg != bb ||
- fr != fg || fg != fb)
- content = CAIRO_CONTENT_COLOR;
- }
- if (ba != 255)
+ cairo_content_t content;
+ if (!view_opts->annotate && ba == 255 && br == bg && bg == bb && fr == fg && fg == fb)
+ content = CAIRO_CONTENT_ALPHA;
+ else if (ba == 255)
+ content = CAIRO_CONTENT_COLOR;
+ else
content = CAIRO_CONTENT_COLOR_ALPHA;
cairo_surface_t *surface;
for (i = 0; i < (int) l->num_glyphs; i++)
{
l->glyphs[i].index = hb_glyph[i].codepoint;
- l->glyphs[i].x = scalbn ((double) hb_position->x_offset + x, scale_bits);
- l->glyphs[i].y = scalbn ((double) -hb_position->y_offset + y, scale_bits);
+ l->glyphs[i].x = scalbn ( hb_position->x_offset + x, scale_bits);
+ l->glyphs[i].y = scalbn (-hb_position->y_offset + y, scale_bits);
x += hb_position->x_advance;
y += -hb_position->y_advance;
hb_position++;
}
l->glyphs[i].index = -1;
- l->glyphs[i].x = scalbn ((double) x, scale_bits);
- l->glyphs[i].y = scalbn ((double) y, scale_bits);
+ l->glyphs[i].x = scalbn (x, scale_bits);
+ l->glyphs[i].y = scalbn (y, scale_bits);
if (l->num_clusters) {
memset ((void *) l->clusters, 0, l->num_clusters * sizeof (l->clusters[0]));