[pragma] Flesh out more
diff --git a/src/hb.hh b/src/hb.hh
index 6714bbb..d20f3b8 100644
--- a/src/hb.hh
+++ b/src/hb.hh
@@ -30,16 +30,28 @@
 #define HB_HH
 
 #ifndef HB_NO_DIAGNOSTIC_PRAGMAS
-// Enable
+/* Rules:
+ * - We set all pragmas under GCC, even clang-specific ones.  Clang
+ *   still reads them.
+ * - Within each category, keep sorted.
+ */
+/* Setup */
+#pragma GCC diagnostic ignored "-Wpragmas" // Must be first
 #pragma GCC diagnostic warning "-Wall"
 #pragma GCC diagnostic warning "-Wextra"
-#pragma GCC diagnostic warning "-Wunused"
-#pragma GCC diagnostic warning "-Wcast-align"
-// Disable
+//#pragma GCC diagnostic warning "-Weverything"
+/* Error */
+#pragma GCC diagnostic error   "-Wcast-align"
+#pragma GCC diagnostic error   "-Wunused"
+/* Warning */
+/* Ignored */
+#pragma GCC diagnostic ignored "-Wconversion" // TODO fix
 #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#pragma GCC diagnostic ignored "-Wpacked" // Erratic impl in clang
+#pragma GCC diagnostic ignored "-Wshadow" // TODO fix
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
 #pragma GCC diagnostic ignored "-Wtype-limits"
 #pragma GCC diagnostic ignored "-Wunused-parameter" // TODO Fix
-#pragma GCC diagnostic ignored "-Wshadow" // TODO fix
 #endif
 
 #ifdef HAVE_CONFIG_H