From 64bcf51680ddc6184772782f11e053339ae08974 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Wed, 2 Mar 2022 10:08:23 +0100 Subject: [PATCH] harfbuzz: detect script with unicode funcs testing first glyph --- src/vkvg_fonts.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/vkvg_fonts.c b/src/vkvg_fonts.c index f887005..7370050 100644 --- a/src/vkvg_fonts.c +++ b/src/vkvg_fonts.c @@ -544,18 +544,20 @@ void _update_current_font (VkvgContext ctx) { hb_buffer_t * _get_hb_buffer (_vkvg_font_t* font, const char* text, int length) { hb_buffer_t *buf = hb_buffer_create(); - const char *lng = "fr"; hb_script_t script = HB_SCRIPT_LATIN; - script = hb_script_from_string (text, length); + hb_unicode_funcs_t* ucfunc = hb_unicode_funcs_get_default (); + wchar_t firstChar = 0; + if (mbstowcs (&firstChar, text, 1)) + script = hb_unicode_script (ucfunc, firstChar); hb_direction_t dir = hb_script_get_horizontal_direction(script); - //dir = HB_DIRECTION_TTB; hb_buffer_set_direction (buf, dir); hb_buffer_set_script (buf, script); - hb_buffer_set_language (buf, hb_language_from_string (lng, (int)strlen(lng))); + //hb_buffer_set_language (buf, hb_language_from_string (lng, (int)strlen(lng))); hb_buffer_add_utf8 (buf, text, length, 0, length); hb_shape (font->hb_font, buf, NULL, 0); + return buf; } #endif -- 2.47.3