Ammend font table data experiment on Mac.
authorbungeman <bungeman@google.com>
Fri, 10 Apr 2015 22:35:22 +0000 (15:35 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 10 Apr 2015 22:35:22 +0000 (15:35 -0700)
Calling CGFontCopyTableForTag did not affect the runtime results,
so try to actually access the data to see if that makes a
difference.

TBR=reed1
This is a test change, allow data to be collected.

Review URL: https://codereview.chromium.org/1076183004

src/ports/SkFontHost_mac.cpp

index 836576b..5eaf7df 100755 (executable)
@@ -913,6 +913,14 @@ CGRGBPixel* Offscreen::getCG(const SkScalerContext_Mac& context, const SkGlyph&
     AutoCFRelease<CFDataRef> sbix;
     if (static_cast<SkTypeface_Mac*>(context.getTypeface())->fHasColorGlyphs) {
         sbix.reset(CGFontCopyTableForTag(context.fCGFont, 'sbix'));
+        // Attempt to read from the sbix table data to determine if the returned data is valid.
+        const UInt8* sbixData = CFDataGetBytePtr(sbix);
+        CFIndex sbixLength = CFDataGetLength(sbix);
+        if (sbixLength > 0 && *sbixData > 0x80) {
+            // We need to actually do something to avoid this being optimized away.
+            CFRetain(sbix);
+            CFRelease(sbix);
+        }
     }
     ctFontDrawGlyphs(context.fCTUnrotatedFont, &glyphID, &point, 1, fCG);