diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ftcrfont.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ftcrfont.c b/src/ftcrfont.c index c2e6785a76a..32f77b03d37 100644 --- a/src/ftcrfont.c +++ b/src/ftcrfont.c | |||
| @@ -702,8 +702,12 @@ ftcrhbfont_end_hb_font (struct font *font, hb_font_t *hb_font) | |||
| 702 | 702 | ||
| 703 | eassert (hb_font == ftcrfont_info->hb_font); | 703 | eassert (hb_font == ftcrfont_info->hb_font); |
| 704 | /* ftcrfont_info->hb_font holds a reference to the FT_Face returned by | 704 | /* ftcrfont_info->hb_font holds a reference to the FT_Face returned by |
| 705 | cairo_ft_scaled_font_lock_face. Keeping it around after the | 705 | cairo_ft_scaled_font_lock_face. Keeping it around after the matching |
| 706 | matching unlock call would violate the API contract (Bug#73752). */ | 706 | unlock call would violate the API contract, and cause corrupted |
| 707 | display of composed characters (Bug#73752). We destroy and NULLify | ||
| 708 | hb_font here, which will then cause fthbfont_begin_hb_font, called by | ||
| 709 | ftcrhbfont_begin_hb_font, to recreate hb_font anew, taking into | ||
| 710 | consideration any scale changes in FT_Face. */ | ||
| 707 | hb_font_destroy (ftcrfont_info->hb_font); | 711 | hb_font_destroy (ftcrfont_info->hb_font); |
| 708 | ftcrfont_info->hb_font = NULL; | 712 | ftcrfont_info->hb_font = NULL; |
| 709 | 713 | ||