void operator()(text_render_thunk const &thunk) const
    {
        text_renderer_type ren(*buf_, thunk.halo_rasterizer_, thunk.comp_op_, thunk.comp_op_,
                               common_.scale_factor_, common_.font_manager_.get_stroker());

        render_offset_placements(
            thunk.placements_,
            offset_,
            [&] (glyph_positions_ptr glyphs)
            {
                if (glyphs->marker())
                {
                    ren_.render_marker(glyphs->marker_pos(),
                                       *(glyphs->marker()->marker),
                                       glyphs->marker()->transform,
                                       thunk.opacity_, thunk.comp_op_);
                }
                ren.render(*glyphs);
            });
    }
    void operator()(text_render_thunk const &thunk) const
    {
        text_renderer_type ren(pixmap_, thunk.comp_op_, common_.scale_factor_);
        value_integer feature_id = feature_.id();

        render_offset_placements(
            thunk.placements_,
            offset_,
            [&] (glyph_positions_ptr glyphs)
            {
                if (glyphs->marker())
                {
                    ren_.render_marker(feature_,
                                       glyphs->marker_pos(),
                                       *(glyphs->marker()->marker),
                                       glyphs->marker()->transform,
                                       thunk.opacity_, thunk.comp_op_);
                }
                ren.render(*glyphs, feature_id);
            });
    }