fix scalar math to work with float and fixed
authorreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 18 Mar 2011 21:23:45 +0000 (21:23 +0000)
committerreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 18 Mar 2011 21:23:45 +0000 (21:23 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@962 2bbb7eff-a529-9590-31e7-b0007b416f81

src/pdf/SkPDFFont.cpp

index 7a5baf6..382c93a 100644 (file)
@@ -225,11 +225,14 @@ SkStream* handleType1Stream(SkStream* srcStream, size_t* headerLen,
     return NULL;
 }
 
+// scale from em-units to base-1000, returning as a SkScalar
 SkScalar scaleFromFontUnits(int16_t val, uint16_t emSize) {
-    if (emSize == 1000)
-        return SkIntToScalar(val);
-    int intVal = ((int)val) * 1000;
-    return SkIntToScalar(intVal) * SkScalarInvert(SkIntToScalar(emSize));
+    SkScalar scaled = SkIntToScalar(val);
+    if (emSize == 1000) {
+        return scaled;
+    } else {
+        return SkScalarMulDiv(scaled, 1000, emSize);
+    }
 }
 
 void setGlyphWidthAndBoundingBox(SkScalar width, SkIRect box,