diff --git a/src/hb-open-file.hh b/src/hb-open-file.hh index de22ed55d..32a223cdf 100644 --- a/src/hb-open-file.hh +++ b/src/hb-open-file.hh @@ -154,7 +154,8 @@ typedef struct OffsetTable c->align (4); const char *end = (const char *) c->head; - if (items[i].tag == HB_OT_TAG_head && end - start >= head::static_size) + if (items[i].tag == HB_OT_TAG_head && + (unsigned) (end - start) >= head::static_size) { head *h = (head *) start; checksum_adjustment = &h->checkSumAdjustment; diff --git a/src/hb-ot-color-cbdt-table.hh b/src/hb-ot-color-cbdt-table.hh index 71c31aff8..333ceaaba 100644 --- a/src/hb-ot-color-cbdt-table.hh +++ b/src/hb-ot-color-cbdt-table.hh @@ -56,7 +56,7 @@ struct SmallGlyphMetrics extents->x_bearing = bearingX; extents->y_bearing = bearingY; extents->width = width; - extents->height = -height; + extents->height = - (hb_position_t) height; } HBUINT8 height; diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc index 8e9fda269..31c50dfeb 100644 --- a/src/hb-uniscribe.cc +++ b/src/hb-uniscribe.cc @@ -215,9 +215,12 @@ struct hb_uniscribe_shaper_funcs_t hinstLib = GetModuleHandle (TEXT ("usp10.dll")); if (hinstLib) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" this->ScriptItemizeOpenType = (SIOT) GetProcAddress (hinstLib, "ScriptItemizeOpenType"); this->ScriptShapeOpenType = (SSOT) GetProcAddress (hinstLib, "ScriptShapeOpenType"); this->ScriptPlaceOpenType = (SPOT) GetProcAddress (hinstLib, "ScriptPlaceOpenType"); +#pragma GCC diagnostic pop } if (!this->ScriptItemizeOpenType || !this->ScriptShapeOpenType || diff --git a/src/hb.hh b/src/hb.hh index 556e9171c..eb941bea4 100644 --- a/src/hb.hh +++ b/src/hb.hh @@ -30,6 +30,9 @@ #define HB_HH #ifndef HB_NO_PRAGMA_GCC_DIAGNOSTIC +#if defined(_MSC_VER) +#pragma warning( disable: 4068 ) /* Unknown pragma */ +#endif #if defined(__GNUC__) || defined(__clang__) /* Rules: *