remember to specify the bloody font tag in the constructor!



git-svn-id: http://skia.googlecode.com/svn/trunk@118 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleFontScalerTest.cpp b/samplecode/SampleFontScalerTest.cpp
index 380d346..356ab39 100644
--- a/samplecode/SampleFontScalerTest.cpp
+++ b/samplecode/SampleFontScalerTest.cpp
@@ -29,6 +29,14 @@
 
 static const int gFaceCount = SK_ARRAY_COUNT(gFaces);
 
+static const char* gStrings[] = {
+    "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH",
+    "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+    "......................................",
+    "11111111111111111111111111111111111111",
+    "00000000000000000000000000000000000000"
+};
+
 class FontScalerTestView : public SkView {
     SkTypeface* fFaces[gFaceCount];
 
@@ -67,16 +75,29 @@
         paint.setAntiAlias(true);
         paint.setTypeface(SkTypeface::CreateFromName("Times Roman", SkTypeface::kNormal))->safeUnref();
         
-        const char* text = "HHHaaammmbbbuuurrrgggeeefffooonnnsss";
-        const size_t textLen = strlen(text);
+//        const char* text = "abcdefghijklmnopqrstuvwxyz";
+        const char* text = "HnHnHnHnHnHnHnHnH";
+        size_t textLen = strlen(text);
 
         SkScalar x = SkIntToScalar(10);
         SkScalar y = SkIntToScalar(20);
 
+        {
+            SkPaint p;
+            p.setColor(SK_ColorRED);
+            SkRect r;
+            r.set(0, 0, x, y*20);
+            canvas->drawRect(r, p);
+        }
+        
+        int index = 0;
         for (int ps = 9; ps <= 24; ps++) {
+         //   text = gStrings[index % SK_ARRAY_COUNT(gStrings)];
+            textLen = strlen(text);
             paint.setTextSize(SkIntToScalar(ps));
             canvas->drawText(text, textLen, x, y, paint);
             y += paint.getFontMetrics(NULL);
+            index += 1;
         }
     }
     
diff --git a/src/ports/SkFontHost_mac.cpp b/src/ports/SkFontHost_mac.cpp
index 56f52f7..6b8f9a3 100755
--- a/src/ports/SkFontHost_mac.cpp
+++ b/src/ports/SkFontHost_mac.cpp
@@ -124,11 +124,32 @@
                                        SkScalarToFloat(m[SkMatrix::kMTransX]),
                                        SkScalarToFloat(m[SkMatrix::kMTransY]));
                                        
-    
-    Fixed fixedSize = SK_Fixed1;    //SkScalarToFixed(fRec.fTextSize);
-    static const ATSUAttributeTag tags[] = { kATSUSizeTag, kATSUFontMatrixTag };
-    static const ByteCount sizes[] = { sizeof(Fixed), sizeof(fTransform) };
-    const ATSUAttributeValuePtr values[] = { &fixedSize, &fTransform };
+    ATSStyleRenderingOptions renderOpts = kATSStyleApplyAntiAliasing;
+    switch (fRec.fHints) {
+        case kNo_Hints:
+            renderOpts |= kATSStyleNoHinting;
+            break;
+        case kSubpixel_Hints:
+            // hmmm, need to support subpixel... from path?
+            renderOpts |= kATSStyleNoHinting;
+            break;
+        case kNormal_Hints:
+            renderOpts |= kATSStyleApplyHints;
+            break;
+    }
+
+    ATSUFontID fontID = FMGetFontFromATSFontRef(fRec.fFontID);
+    // we put everything in the matrix, so our pt size is just 1.0
+    Fixed fixedSize = SK_Fixed1;
+    static const ATSUAttributeTag tags[] = {
+        kATSUFontTag, kATSUSizeTag, kATSUFontMatrixTag, kATSUStyleRenderingOptionsTag
+    };
+    static const ByteCount sizes[] = {
+        sizeof(fontID), sizeof(fixedSize), sizeof(fTransform), sizeof(renderOpts)
+    };
+    const ATSUAttributeValuePtr values[] = {
+        &fontID, &fixedSize, &fTransform, &renderOpts
+    };
     err = ::ATSUSetAttributes(fStyle, SK_ARRAY_COUNT(tags),
                               tags, sizes, values);
     SkASSERT(0 == err);
@@ -199,7 +220,7 @@
         set_glyph_metrics_on_error(glyph);
         return;
     }
-
+    
     if (kNormal_Hints == fRec.fHints) {
         glyph->fAdvanceX = SkFloatToFixed(screenMetrics.deviceAdvance.x);
         glyph->fAdvanceY = -SkFloatToFixed(screenMetrics.deviceAdvance.y);
@@ -234,7 +255,7 @@
     ::CGContextSetGrayFillColor(contextRef, 1.0, 1.0);
     ::CGContextSetTextDrawingMode(contextRef, kCGTextFill);
     
-    CGGlyph glyphID = glyph.getGlyphID();
+    CGGlyph glyphID = glyph.getGlyphID(fBaseGlyphCount);
     CGFontRef fontRef = CGFontCreateWithPlatformFont(&fRec.fFontID);
     CGContextSetFont(contextRef, fontRef);
     CGContextSetFontSize(contextRef, 1);