diff --git a/src/fontations/Cargo.lock b/src/fontations/Cargo.lock index 6b97fb77e..af660934f 100644 --- a/src/fontations/Cargo.lock +++ b/src/fontations/Cargo.lock @@ -25,8 +25,6 @@ dependencies = [ [[package]] name = "font-types" version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d868ec188a98bb014c606072edd47e52e7ab7297db943b0b28503121e1d037bd" dependencies = [ "bytemuck", ] @@ -60,8 +58,6 @@ dependencies = [ [[package]] name = "read-fonts" version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f004ee5c610b8beb5f33273246893ac6258ec22185a6eb8ee132bccdb904cdaa" dependencies = [ "bytemuck", "font-types", @@ -70,8 +66,6 @@ dependencies = [ [[package]] name = "skrifa" version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e7936ca3627fdb516e97aca3c8ab5103f94ae32fe5ce80a0a02edcbacb7b53" dependencies = [ "bytemuck", "read-fonts", diff --git a/src/fontations/Cargo.toml b/src/fontations/Cargo.toml index dc02d7c30..dcfd2796b 100644 --- a/src/fontations/Cargo.toml +++ b/src/fontations/Cargo.toml @@ -3,8 +3,8 @@ name = "harfbuzz_fontations" edition = "2021" [dependencies] -read-fonts = "0.27.2" -skrifa = "0.28.1" +read-fonts = { path = "/home/behdad/fontations/read-fonts" } +skrifa = { path = "/home/behdad/fontations/skrifa" } [lib] name = "harfbuzz_fontations" diff --git a/src/fontations/lib.rs b/src/fontations/lib.rs index d785a83f9..1e223def7 100644 --- a/src/fontations/lib.rs +++ b/src/fontations/lib.rs @@ -333,15 +333,14 @@ impl HbColorPainter { } } - fn make_color_line(&mut self, color_stops: &ColorLineData) -> hb_color_line_t { + fn make_color_line(&mut self, color_line: &ColorLineData) -> hb_color_line_t { let mut cl = unsafe { std::mem::zeroed::() }; cl.data = self as *mut HbColorPainter as *mut ::std::os::raw::c_void; cl.get_color_stops = Some(_hb_fontations_get_color_stops); cl.get_color_stops_user_data = - color_stops as *const ColorLineData as *mut ::std::os::raw::c_void; + color_line as *const ColorLineData as *mut ::std::os::raw::c_void; cl.get_extend = Some(_hb_fontations_get_extend); - cl.get_extend_user_data = - color_stops as *const ColorLineData as *mut ::std::os::raw::c_void; + cl.get_extend_user_data = color_line as *const ColorLineData as *mut ::std::os::raw::c_void; cl } } @@ -384,10 +383,10 @@ extern "C" fn _hb_fontations_get_color_stops( } extern "C" fn _hb_fontations_get_extend( _color_line: *mut hb_color_line_t, - color_line_data: *mut ::std::os::raw::c_void, - _user_data: *mut ::std::os::raw::c_void, + _color_line_data: *mut ::std::os::raw::c_void, + user_data: *mut ::std::os::raw::c_void, ) -> hb_paint_extend_t { - let color_line_data = unsafe { &*(color_line_data as *const ColorLineData) }; + let color_line_data = unsafe { &*(user_data as *const ColorLineData) }; color_line_data.extend as hb_paint_extend_t // They are the same } diff --git a/src/hb-cairo-utils.cc b/src/hb-cairo-utils.cc index 85c62d39a..b81474086 100644 --- a/src/hb-cairo-utils.cc +++ b/src/hb-cairo-utils.cc @@ -294,6 +294,8 @@ _hb_cairo_get_color_stops (hb_cairo_context_t *c, } hb_color_line_get_color_stops (color_line, 0, &len, *stops); for (unsigned i = 0; i < len; i++) + { + printf ("stop at %g\n", (*stops)[i].offset); if ((*stops)[i].is_foreground) { #ifdef HAVE_CAIRO_USER_SCALED_FONT_GET_FOREGROUND_SOURCE @@ -306,6 +308,7 @@ _hb_cairo_get_color_stops (hb_cairo_context_t *c, #endif (*stops)[i].color = HB_COLOR (0, 0, 0, hb_color_get_alpha ((*stops)[i].color)); } + } *count = len; return true; @@ -341,6 +344,7 @@ _hb_cairo_paint_linear_gradient (hb_cairo_context_t *c, pattern = cairo_pattern_create_linear ((double) xxx0, (double) yyy0, (double) xxx1, (double) yyy1); cairo_pattern_set_extend (pattern, hb_cairo_extend (hb_color_line_get_extend (color_line))); + printf("extend %d\n", hb_color_line_get_extend (color_line)); for (unsigned int i = 0; i < len; i++) { double r, g, b, a; diff --git a/src/hb-cairo.cc b/src/hb-cairo.cc index 89332d715..8f967fdf1 100644 --- a/src/hb-cairo.cc +++ b/src/hb-cairo.cc @@ -321,6 +321,7 @@ hb_cairo_paint_linear_gradient (hb_paint_funcs_t *pfuncs HB_UNUSED, { hb_cairo_context_t *c = (hb_cairo_context_t *) paint_data; + printf ("linear gradient %f %f %f %f %f %f\n", x0, y0, x1, y1, x2, y2); _hb_cairo_paint_linear_gradient (c, color_line, x0, y0, x1, y1, x2, y2); }