summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qharfbuzzng.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/text/qharfbuzzng.cpp')
-rw-r--r--src/gui/text/qharfbuzzng.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gui/text/qharfbuzzng.cpp b/src/gui/text/qharfbuzzng.cpp
index b2edfc00a0..6437465da8 100644
--- a/src/gui/text/qharfbuzzng.cpp
+++ b/src/gui/text/qharfbuzzng.cpp
@@ -573,17 +573,27 @@ _hb_qt_font_get_glyph_from_name(hb_font_t * /*font*/, void * /*font_data*/,
static hb_user_data_key_t _useDesignMetricsKey;
+static hb_user_data_key_t _ignoreGSUB;
void hb_qt_font_set_use_design_metrics(hb_font_t *font, uint value)
{
hb_font_set_user_data(font, &_useDesignMetricsKey, (void *)quintptr(value), NULL, true);
}
+void hb_qt_face_set_ignore_gsub(hb_face_t *face, uint value)
+{
+ hb_face_set_user_data(face, &_ignoreGSUB, (void *)quintptr(value), NULL, true);
+}
+
uint hb_qt_font_get_use_design_metrics(hb_font_t *font)
{
return quintptr(hb_font_get_user_data(font, &_useDesignMetricsKey));
}
+uint hb_qt_face_get_ignore_gsub(hb_face_t *face)
+{
+ return quintptr(hb_face_get_user_data(face, &_ignoreGSUB));
+}
struct _hb_qt_font_funcs_t {
_hb_qt_font_funcs_t()
@@ -618,11 +628,14 @@ hb_font_funcs_t *hb_qt_get_font_funcs()
static hb_blob_t *
-_hb_qt_reference_table(hb_face_t * /*face*/, hb_tag_t tag, void *user_data)
+_hb_qt_reference_table(hb_face_t *face, hb_tag_t tag, void *user_data)
{
QFontEngine::FaceData *data = static_cast<QFontEngine::FaceData *>(user_data);
Q_ASSERT(data);
+ if (hb_qt_face_get_ignore_gsub(face) && tag == HB_TAG('G','S','U','B'))
+ return hb_blob_get_empty();
+
qt_get_font_table_func_t get_font_table = data->get_font_table;
Q_ASSERT(get_font_table);