diff -urN scribus-1.5.7.old/scribus/fonts/sfnt.cpp scribus-1.5.7/scribus/fonts/sfnt.cpp
--- scribus-1.5.7.old/scribus/fonts/sfnt.cpp 2021-04-26 01:54:52.000000000 +0530
+++ scribus-1.5.7/scribus/fonts/sfnt.cpp 2021-09-21 15:01:01.500775457 +0530
@@ -1256,14 +1256,22 @@
for (int i = 0; i < cids.count(); ++i)
hb_set_add(glyphSet, cids.at(i));
-
+
+#if HB_VERSION_ATLEAST(2, 9, 0)
+ uint32_t subsetFlags = (uint32_t) hb_subset_input_get_flags(hbSubsetInput.get());
+ subsetFlags |= HB_SUBSET_FLAGS_RETAIN_GIDS;
+ subsetFlags &= ~HB_SUBSET_FLAGS_NO_HINTING;
+ subsetFlags |= HB_SUBSET_FLAGS_NAME_LEGACY;
+ hb_subset_input_set_flags(hbSubsetInput.get(), subsetFlags);
+#else
hb_subset_input_set_retain_gids(hbSubsetInput.get(), true);
hb_subset_input_set_drop_hints(hbSubsetInput.get(), false);
#if HB_VERSION_ATLEAST(2, 6, 5)
hb_subset_input_set_name_legacy(hbSubsetInput.get(), true);
#endif
+#endif
- QScopedPointer<hb_face_t, HbFaceDeleter> hbSubsetFace(hb_subset(hbFullFace.get(), hbSubsetInput.get()));
+ QScopedPointer<hb_face_t, HbFaceDeleter> hbSubsetFace(hb_subset_or_fail(hbFullFace.get(), hbSubsetInput.get()));
if (hbSubsetFace.isNull())
return QByteArray();