[HB] Remove hinting setting and use ppem==0 to mean "no hinting"
diff --git a/src/hb-ot-layout-gpos-private.h b/src/hb-ot-layout-gpos-private.h
index 619b4c4..b0695c1 100644
--- a/src/hb-ot-layout-gpos-private.h
+++ b/src/hb-ot-layout-gpos-private.h
@@ -109,19 +109,32 @@
     if (format & yAdvance)
       glyph_pos->y_advance += y_scale * *(SHORT*)values++ / 0x10000;
 
-    if (HB_LIKELY (!layout->gpos_info.dvi))
-    {
-      x_ppem = layout->gpos_info.x_ppem;
-      y_ppem = layout->gpos_info.y_ppem;
-      /* pixel -> fractional pixel */
-      if (format & xPlaDevice)
+    x_ppem = layout->gpos_info.x_ppem;
+    y_ppem = layout->gpos_info.y_ppem;
+    /* pixel -> fractional pixel */
+    if (format & xPlaDevice) {
+      if (x_ppem)
 	glyph_pos->x_pos += (base+*(OffsetTo<Device>*)values++).get_delta (x_ppem) << 6;
-      if (format & yPlaDevice)
+      else
+        values++;
+    }
+    if (format & yPlaDevice) {
+      if (y_ppem)
 	glyph_pos->y_pos += (base+*(OffsetTo<Device>*)values++).get_delta (y_ppem) << 6;
-      if (format & xAdvDevice)
+      else
+        values++;
+    }
+    if (format & xAdvDevice) {
+      if (x_ppem)
 	glyph_pos->x_advance += (base+*(OffsetTo<Device>*)values++).get_delta (x_ppem) << 6;
-      if (format & yAdvDevice)
+      else
+        values++;
+    }
+    if (format & yAdvDevice) {
+      if (y_ppem)
 	glyph_pos->y_advance += (base+*(OffsetTo<Device>*)values++).get_delta (y_ppem) << 6;
+      else
+        values++;
     }
   }
 };
@@ -179,11 +192,10 @@
       *x = layout->gpos_info.x_scale * xCoordinate / 0x10000;
       *y = layout->gpos_info.y_scale * yCoordinate / 0x10000;
 
-      if (!layout->gpos_info.dvi)
-      {
+      if (layout->gpos_info.x_ppem)
 	*x += (this+xDeviceTable).get_delta (layout->gpos_info.x_ppem) << 6;
+      if (layout->gpos_info.y_ppem)
 	*y += (this+yDeviceTable).get_delta (layout->gpos_info.y_ppem) << 6;
-      }
   }
 
   private: