<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>55609</bug_id>
          
          <creation_ts>2011-03-02 13:27:06 -0800</creation_ts>
          <short_desc>option to use skia&apos;s font backend when drawing text on windows</short_desc>
          <delta_ts>2011-03-04 16:00:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike Reed">reed</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>brettw</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>reed</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>361034</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-03-02 13:27:06 -0800</bug_when>
    <thetext>Today when the skia platform draws text on windows, it draws from paths extracted from GDI. This patch optionally uses Skia&apos;s native text drawing APIs which are faster as they draw from cached bitmaps (built from GDI).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361044</commentid>
    <comment_count>1</comment_count>
      <attachid>84458</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-03-02 13:40:16 -0800</bug_when>
    <thetext>Created attachment 84458
optionally use skia&apos;s font backend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361056</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-02 13:56:25 -0800</bug_when>
    <thetext>Attachment 84458 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp:291:  LOCAL_GLYPHS is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361060</commentid>
    <comment_count>3</comment_count>
      <attachid>84462</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-03-02 14:02:35 -0800</bug_when>
    <thetext>Created attachment 84462
fix style complaint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361846</commentid>
    <comment_count>4</comment_count>
      <attachid>84462</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-03 12:43:32 -0800</bug_when>
    <thetext>Comment on attachment 84462
fix style complaint

View in context: https://bugs.webkit.org/attachment.cgi?id=84462&amp;action=review

Why we would add another macro for this?  If this API only changes behavior &quot;significantly&quot; (what does that mean?) in the SKIA_GPU path, why not tie this behavior to the SKIA_GPU path directly and not have the extra macro?  Maintaining a large set of combinations of macros is a code maintenance headache.

Also, why is this change only for windows?  We use skia on linux as well.

&gt; WebCore/ChangeLog:1
&gt; +2011-03-02  Mike Reed  &lt;reed@google.com&gt;

This patch is rooted inside Source/ instead of the root of the repository.  This still works, but it breaks several tools (for example expanding context in the review tool).  Please generate patches from the root of the repository.

&gt; WebCore/ChangeLog:10
&gt; +        No new tests. text output should be essitially identical. 

typo &quot;essentially&quot;

I&apos;m curious what &quot;essentially identical&quot; means given that we do pixel-exact testing.  If there are subtle differences, that means we&apos;ll have to maintain another set of baselines (which is probably unavoidable for text in GPU rendered cases, but worth keeping track of).

&gt; WebCore/platform/graphics/skia/SkiaFontWin.cpp:47
&gt; +extern SkTypeface* SkCreateTypefaceFromLOGFONT(const LOGFONT&amp;);

this is odd - why don&apos;t you include the correct header for this function?

&gt; WebCore/platform/graphics/skia/SkiaFontWin.cpp:50
&gt; +#if ENABLE(SKIA_GPU)
&gt; +    #define USE_SKIA_TEXT_API

Do we want to turn this on for all content whenever SKIA_GPU is set, or just content rendered by a SKIA_GPU accelerated context?

&gt; WebCore/platform/graphics/skia/SkiaFontWin.cpp:51
&gt; +//  #define FORCE_SKIA_TEXT_FOR_ALL

why check in commented out code?

&gt; WebCore/platform/graphics/skia/SkiaFontWin.cpp:296
&gt; +    static const size_t kLocalGlyphMax = 64;
&gt; +    SkAutoSTArray&lt;kLocalGlyphMax, SkPoint&gt; posStorage(numGlyphs);
&gt; +    SkPoint* pos = posStorage.get();
&gt; +    SkScalar x = point.fX;
&gt; +    SkScalar y = point.fY;
&gt; +    for (int i = 0; i &lt; numGlyphs; i++) {

What happens when numGlyphs &gt;= 64?

&gt; WebCore/platform/graphics/skia/SkiaFontWin.cpp:333
&gt; +    /*
&gt; +        Much of this logic could also happen in
&gt; +        FontCustomPlatformData::fontPlatformData and be cached,
&gt; +        allowing us to avoid talking to GDI at this point.
&gt; +    */
&gt; +    LOGFONT info;

In WebKit this sort of comment is normally a FIXME and written with // in front of each line.

&gt; WebCore/platform/graphics/skia/SkiaFontWin.cpp:337
&gt; +    if (size &lt; 0)
&gt; +        size = -size;

huh?  this deserves a comment at least</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362625</commentid>
    <comment_count>5</comment_count>
      <attachid>84781</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-03-04 10:52:22 -0800</bug_when>
    <thetext>Created attachment 84781
use SKIA_TEXT to opt-in to new code path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362679</commentid>
    <comment_count>6</comment_count>
      <attachid>84781</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-04 13:31:48 -0800</bug_when>
    <thetext>Comment on attachment 84781
use SKIA_TEXT to opt-in to new code path

View in context: https://bugs.webkit.org/attachment.cgi?id=84781&amp;action=review

Looks good.  If you&apos;d like I can fix the comment nitpicks and land myself, or you can upload a new patch for commit-queue.

&gt; WebCore/platform/graphics/skia/SkiaFontWin.cpp:287
&gt; +    // reallocate space on the stack. If numGlyphs is larger, the array
&gt; +    // will dynamically alocate it.

nit: &quot;reallocate&quot; -&gt; &quot;Initially allocate space on the stack for 64 entries&quot; or something like that.
&quot;alocate&quot; -&gt; &quot;allocate&quot;.

&gt; WebCore/platform/graphics/skia/SkiaFontWin.cpp:335
&gt; +        size = -size; // we don&apos;t let GDI dpi-scale us (see SkFontHost_win.cpp

Thanks for the comment.  nits: &quot;we&quot;-&gt;&quot;We&quot;, needs a trailing &quot;).&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362687</commentid>
    <comment_count>7</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-03-04 13:54:17 -0800</bug_when>
    <thetext>Since its near the end of the day for the East, it would be great if you fixed the comments and did the land. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362771</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-04 16:00:50 -0800</bug_when>
    <thetext>Committed r80386: &lt;http://trac.webkit.org/changeset/80386&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84458</attachid>
            <date>2011-03-02 13:40:16 -0800</date>
            <delta_ts>2011-03-02 14:02:35 -0800</delta_ts>
            <desc>optionally use skia&apos;s font backend</desc>
            <filename>skiafont.diff</filename>
            <type>text/plain</type>
            <size>4071</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4MDE2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTEtMDMtMDIgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpb24g
dG8gdXNlIHNraWEncyBuYXRpdmUgdGV4dCBkcmF3aW5nIEFQSXMgd2hlbiBkcmF3aW5nIHRleHQK
KyAgICAgICAgb24gV2luZG93cywgcmF0aGVyIHRoYW4gZnJvbSBvdXRsaW5lcyB1c2luZyBkcmF3
UGF0aCgpLiBUaGlzIHdpbGwKKyAgICAgICAgb25seSBoYXZlIGEgc2lnbmlmaWNhbnQgZWZmZWN0
IHdoZW4gdGhlIHNraWEtZ3B1IGJhY2tlbmQgaXMgZW5hYmxlZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NjA5CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiB0ZXh0IG91dHB1dCBzaG91bGQgYmUgZXNzaXRpYWxseSBpZGVudGljYWwuIAorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
c2tpYURyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUGFpbnRGb3JGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBhaW50U2tpYVRleHQpOgorCiAyMDExLTAzLTAyICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGxvY2F0aW9u
IG9mIG1lZGlhLWZpbGUuanMsIHdoaWNoIHdhcyBtb3ZlZCBpbiByNzk2MzAuCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHJldmlzaW9u
IDgwMDA1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDE5IEBACiAjaW5jbHVkZSAiU2tDYW52YXMu
aCIKICNpbmNsdWRlICJTa1BhaW50LmgiCiAjaW5jbHVkZSAiU2tTaGFkZXIuaCIKKyNpbmNsdWRl
ICJTa1RlbXBsYXRlcy5oIgorI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKIAogI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorZXh0ZXJuIFNrVHlw
ZWZhY2UqIFNrQ3JlYXRlVHlwZWZhY2VGcm9tTE9HRk9OVChjb25zdCBMT0dGT05UJik7CisKKyNp
ZiBFTkFCTEUoU0tJQV9HUFUpCisgICAgI2RlZmluZSBVU0VfU0tJQV9URVhUX0FQSQorLy8gICNk
ZWZpbmUgRk9SQ0VfU0tJQV9URVhUX0ZPUl9BTEwKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBDYWNoZWRPdXRsaW5lS2V5IHsKQEAgLTIzMyw2ICsyNDIsOSBAQCBib29s
IHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhHcmFwCiAKIGJvb2wgd2luZG93c0Nhbkhh
bmRsZVRleHREcmF3aW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKKyNpZmRlZiBGT1JD
RV9TS0lBX1RFWFRfRk9SX0FMTAorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIC8vIENo
ZWNrIGZvciBub24tdHJhbnNsYXRpb24gdHJhbnNmb3Jtcy4gU29tZXRpbWVzIHpvb21zIHdpbGwg
bG9vayBiZXR0ZXIgaW4KICAgICAvLyBTa2lhLCBhbmQgc29tZXRpbWVzIGJldHRlciBpbiBXaW5k
b3dzLiBUaGUgbWFpbiBwcm9ibGVtIGlzIHRoYXQgem9vbWluZwogICAgIC8vIGluIHVzaW5nIFNr
aWEgd2lsbCBzaG93IHlvdSB0aGUgaGludGVkIG91dGxpbmVzIGZvciB0aGUgc21hbGxlciBzaXpl
LApAQCAtMjczLDYgKzI4NSwyMSBAQCBzdGF0aWMgYm9vbCBza2lhRHJhd1RleHQoSEZPTlQgaGZv
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR09GRlNFVCogb2Zmc2V0cywKICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtR2x5cGhzKQogeworI2lmZGVmIFVTRV9TS0lB
X1RFWFRfQVBJCisgICAgU2tBU1NFUlQoc2l6ZW9mKFdPUkQpID09IHNpemVvZih1aW50MTZfdCkp
OworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBMT0NBTF9HTFlQSFMgPSA2NDsKKyAgICBTa0F1
dG9TVEFycmF5PExPQ0FMX0dMWVBIUywgU2tQb2ludD4gcG9zU3RvcmFnZShudW1HbHlwaHMpOwor
ICAgIFNrUG9pbnQqIHBvcyA9IHBvc1N0b3JhZ2UuZ2V0KCk7CisgICAgU2tTY2FsYXIgeCA9IHBv
aW50LmZYOworICAgIFNrU2NhbGFyIHkgPSBwb2ludC5mWTsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAgIHBvc1tpXS5zZXQoeCArIChvZmZzZXRzID8g
b2Zmc2V0c1tpXS5kdSA6IDApLAorICAgICAgICAgICAgICAgICAgIHkgKyAob2Zmc2V0cyA/IG9m
ZnNldHNbaV0uZHYgOiAwKSk7CisgICAgICAgIHggKz0gU2tJbnRUb1NjYWxhcihhZHZhbmNlc1tp
XSk7CisgICAgfQorICAgIGNhbnZhcy0+ZHJhd1Bvc1RleHQoZ2x5cGhzLCBudW1HbHlwaHMgKiBz
aXplb2YodWludDE2X3QpLCBwb3MsICpwYWludCk7CisjZWxzZQogICAgIGZsb2F0IHggPSBwb2lu
dC5mWCwgeSA9IHBvaW50LmZZOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1HbHlwaHM7
IGkrKykgewpAQCAtMjkyLDEwICszMTksMjkgQEAgc3RhdGljIGJvb2wgc2tpYURyYXdUZXh0KEhG
T05UIGhmb250LAogCiAgICAgICAgIHggKz0gYWR2YW5jZXNbaV07CiAgICAgfQotCisjZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIHZvaWQgc2V0dXBQYWludEZvckZvbnQoSEZP
TlQgaGZvbnQsIFNrUGFpbnQqIHBhaW50KQoreworICAgIC8qCisgICAgICAgIE11Y2ggb2YgdGhp
cyBsb2dpYyBjb3VsZCBhbHNvIGhhcHBlbiBpbgorICAgICAgICBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjpmb250UGxhdGZvcm1EYXRhIGFuZCBiZSBjYWNoZWQsCisgICAgICAgIGFsbG93aW5nIHVz
IHRvIGF2b2lkIHRhbGtpbmcgdG8gR0RJIGF0IHRoaXMgcG9pbnQuCisgICAgKi8KKyAgICBMT0dG
T05UIGluZm87CisgICAgR2V0T2JqZWN0KGhmb250LCBzaXplb2YoaW5mbyksICZpbmZvKTsKKyAg
ICBpbnQgc2l6ZSA9IGluZm8ubGZIZWlnaHQ7CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICBz
aXplID0gLXNpemU7CisgICAgcGFpbnQtPnNldFRleHRTaXplKFNrSW50VG9TY2FsYXIoc2l6ZSkp
OworCisgICAgU2tUeXBlZmFjZSogZmFjZSA9IFNrQ3JlYXRlVHlwZWZhY2VGcm9tTE9HRk9OVChp
bmZvKTsKKyAgICBwYWludC0+c2V0VHlwZWZhY2UoZmFjZSk7CisgICAgU2tTYWZlVW5yZWYoZmFj
ZSk7Cit9CisKIGJvb2wgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgSEZPTlQgaGZvbnQsCiAgICAgICAgICAgICAgICAgICAgaW50IG51
bUdseXBocywKQEAgLTMxNCw2ICszNjAsMTAgQEAgYm9vbCBwYWludFNraWFUZXh0KEdyYXBoaWNz
Q29udGV4dCogY29udAogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgcGxhdGZvcm1Db250ZXh0LT5z
ZXR1cFBhaW50Rm9yRmlsbGluZygmcGFpbnQpOwogICAgIHBhaW50LnNldEZsYWdzKFNrUGFpbnQ6
OmtBbnRpQWxpYXNfRmxhZyk7CisjaWZkZWYgVVNFX1NLSUFfVEVYVF9BUEkKKyAgICBwYWludC5z
ZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURfVGV4dEVuY29kaW5nKTsKKyAgICBzZXR1
cFBhaW50Rm9yRm9udChoZm9udCwgJnBhaW50KTsKKyNlbmRpZgogICAgIGJvb2wgZGlkRmlsbCA9
IGZhbHNlOwogCiAgICAgaWYgKCh0ZXh0TW9kZSAmIFRleHRNb2RlRmlsbCkgJiYgU2tDb2xvckdl
dEEocGFpbnQuZ2V0Q29sb3IoKSkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84462</attachid>
            <date>2011-03-02 14:02:35 -0800</date>
            <delta_ts>2011-03-04 10:52:22 -0800</delta_ts>
            <desc>fix style complaint</desc>
            <filename>skiafont.diff</filename>
            <type>text/plain</type>
            <size>4075</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4MDE2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTEtMDMtMDIgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpb24g
dG8gdXNlIHNraWEncyBuYXRpdmUgdGV4dCBkcmF3aW5nIEFQSXMgd2hlbiBkcmF3aW5nIHRleHQK
KyAgICAgICAgb24gV2luZG93cywgcmF0aGVyIHRoYW4gZnJvbSBvdXRsaW5lcyB1c2luZyBkcmF3
UGF0aCgpLiBUaGlzIHdpbGwKKyAgICAgICAgb25seSBoYXZlIGEgc2lnbmlmaWNhbnQgZWZmZWN0
IHdoZW4gdGhlIHNraWEtZ3B1IGJhY2tlbmQgaXMgZW5hYmxlZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NjA5CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiB0ZXh0IG91dHB1dCBzaG91bGQgYmUgZXNzaXRpYWxseSBpZGVudGljYWwuIAorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
c2tpYURyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUGFpbnRGb3JGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBhaW50U2tpYVRleHQpOgorCiAyMDExLTAzLTAyICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGxvY2F0aW9u
IG9mIG1lZGlhLWZpbGUuanMsIHdoaWNoIHdhcyBtb3ZlZCBpbiByNzk2MzAuCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHJldmlzaW9u
IDgwMDA1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDE5IEBACiAjaW5jbHVkZSAiU2tDYW52YXMu
aCIKICNpbmNsdWRlICJTa1BhaW50LmgiCiAjaW5jbHVkZSAiU2tTaGFkZXIuaCIKKyNpbmNsdWRl
ICJTa1RlbXBsYXRlcy5oIgorI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKIAogI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorZXh0ZXJuIFNrVHlw
ZWZhY2UqIFNrQ3JlYXRlVHlwZWZhY2VGcm9tTE9HRk9OVChjb25zdCBMT0dGT05UJik7CisKKyNp
ZiBFTkFCTEUoU0tJQV9HUFUpCisgICAgI2RlZmluZSBVU0VfU0tJQV9URVhUX0FQSQorLy8gICNk
ZWZpbmUgRk9SQ0VfU0tJQV9URVhUX0ZPUl9BTEwKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBDYWNoZWRPdXRsaW5lS2V5IHsKQEAgLTIzMyw2ICsyNDIsOSBAQCBib29s
IHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhHcmFwCiAKIGJvb2wgd2luZG93c0Nhbkhh
bmRsZVRleHREcmF3aW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKKyNpZmRlZiBGT1JD
RV9TS0lBX1RFWFRfRk9SX0FMTAorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIC8vIENo
ZWNrIGZvciBub24tdHJhbnNsYXRpb24gdHJhbnNmb3Jtcy4gU29tZXRpbWVzIHpvb21zIHdpbGwg
bG9vayBiZXR0ZXIgaW4KICAgICAvLyBTa2lhLCBhbmQgc29tZXRpbWVzIGJldHRlciBpbiBXaW5k
b3dzLiBUaGUgbWFpbiBwcm9ibGVtIGlzIHRoYXQgem9vbWluZwogICAgIC8vIGluIHVzaW5nIFNr
aWEgd2lsbCBzaG93IHlvdSB0aGUgaGludGVkIG91dGxpbmVzIGZvciB0aGUgc21hbGxlciBzaXpl
LApAQCAtMjczLDYgKzI4NSwyMSBAQCBzdGF0aWMgYm9vbCBza2lhRHJhd1RleHQoSEZPTlQgaGZv
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR09GRlNFVCogb2Zmc2V0cywKICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtR2x5cGhzKQogeworI2lmZGVmIFVTRV9TS0lB
X1RFWFRfQVBJCisgICAgU2tBU1NFUlQoc2l6ZW9mKFdPUkQpID09IHNpemVvZih1aW50MTZfdCkp
OworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTG9jYWxHbHlwaE1heCA9IDY0OworICAgIFNr
QXV0b1NUQXJyYXk8a0xvY2FsR2x5cGhNYXgsIFNrUG9pbnQ+IHBvc1N0b3JhZ2UobnVtR2x5cGhz
KTsKKyAgICBTa1BvaW50KiBwb3MgPSBwb3NTdG9yYWdlLmdldCgpOworICAgIFNrU2NhbGFyIHgg
PSBwb2ludC5mWDsKKyAgICBTa1NjYWxhciB5ID0gcG9pbnQuZlk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1HbHlwaHM7IGkrKykgeworICAgICAgICBwb3NbaV0uc2V0KHggKyAob2Zmc2V0
cyA/IG9mZnNldHNbaV0uZHUgOiAwKSwKKyAgICAgICAgICAgICAgICAgICB5ICsgKG9mZnNldHMg
PyBvZmZzZXRzW2ldLmR2IDogMCkpOworICAgICAgICB4ICs9IFNrSW50VG9TY2FsYXIoYWR2YW5j
ZXNbaV0pOworICAgIH0KKyAgICBjYW52YXMtPmRyYXdQb3NUZXh0KGdseXBocywgbnVtR2x5cGhz
ICogc2l6ZW9mKHVpbnQxNl90KSwgcG9zLCAqcGFpbnQpOworI2Vsc2UKICAgICBmbG9hdCB4ID0g
cG9pbnQuZlgsIHkgPSBwb2ludC5mWTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtR2x5
cGhzOyBpKyspIHsKQEAgLTI5MiwxMCArMzE5LDI5IEBAIHN0YXRpYyBib29sIHNraWFEcmF3VGV4
dChIRk9OVCBoZm9udCwKIAogICAgICAgICB4ICs9IGFkdmFuY2VzW2ldOwogICAgIH0KLQorI2Vu
ZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIHNldHVwUGFpbnRGb3JGb250
KEhGT05UIGhmb250LCBTa1BhaW50KiBwYWludCkKK3sKKyAgICAvKgorICAgICAgICBNdWNoIG9m
IHRoaXMgbG9naWMgY291bGQgYWxzbyBoYXBwZW4gaW4KKyAgICAgICAgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YSBhbmQgYmUgY2FjaGVkLAorICAgICAgICBhbGxvd2lu
ZyB1cyB0byBhdm9pZCB0YWxraW5nIHRvIEdESSBhdCB0aGlzIHBvaW50LgorICAgICovCisgICAg
TE9HRk9OVCBpbmZvOworICAgIEdldE9iamVjdChoZm9udCwgc2l6ZW9mKGluZm8pLCAmaW5mbyk7
CisgICAgaW50IHNpemUgPSBpbmZvLmxmSGVpZ2h0OworICAgIGlmIChzaXplIDwgMCkKKyAgICAg
ICAgc2l6ZSA9IC1zaXplOworICAgIHBhaW50LT5zZXRUZXh0U2l6ZShTa0ludFRvU2NhbGFyKHNp
emUpKTsKKworICAgIFNrVHlwZWZhY2UqIGZhY2UgPSBTa0NyZWF0ZVR5cGVmYWNlRnJvbUxPR0ZP
TlQoaW5mbyk7CisgICAgcGFpbnQtPnNldFR5cGVmYWNlKGZhY2UpOworICAgIFNrU2FmZVVucmVm
KGZhY2UpOworfQorCiBib29sIHBhaW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgIEhGT05UIGhmb250LAogICAgICAgICAgICAgICAgICAgIGlu
dCBudW1HbHlwaHMsCkBAIC0zMTQsNiArMzYwLDEwIEBAIGJvb2wgcGFpbnRTa2lhVGV4dChHcmFw
aGljc0NvbnRleHQqIGNvbnQKICAgICBTa1BhaW50IHBhaW50OwogICAgIHBsYXRmb3JtQ29udGV4
dC0+c2V0dXBQYWludEZvckZpbGxpbmcoJnBhaW50KTsKICAgICBwYWludC5zZXRGbGFncyhTa1Bh
aW50OjprQW50aUFsaWFzX0ZsYWcpOworI2lmZGVmIFVTRV9TS0lBX1RFWFRfQVBJCisgICAgcGFp
bnQuc2V0VGV4dEVuY29kaW5nKFNrUGFpbnQ6OmtHbHlwaElEX1RleHRFbmNvZGluZyk7CisgICAg
c2V0dXBQYWludEZvckZvbnQoaGZvbnQsICZwYWludCk7CisjZW5kaWYKICAgICBib29sIGRpZEZp
bGwgPSBmYWxzZTsKIAogICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZUZpbGwpICYmIFNrQ29s
b3JHZXRBKHBhaW50LmdldENvbG9yKCkpKSB7Cg==
</data>
<flag name="review"
          id="76442"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84781</attachid>
            <date>2011-03-04 10:52:22 -0800</date>
            <delta_ts>2011-03-04 13:31:47 -0800</delta_ts>
            <desc>use SKIA_TEXT to opt-in to new code path</desc>
            <filename>skiatext.diff</filename>
            <type>text/plain</type>
            <size>4020</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4MDM2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTEtMDMtMDQgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpb24g
dG8gdXNlIHNraWEncyBuYXRpdmUgdGV4dCBkcmF3aW5nIEFQSXMgd2hlbiBkcmF3aW5nIHRleHQK
KyAgICAgICAgb24gV2luZG93cywgcmF0aGVyIHRoYW4gZnJvbSBvdXRsaW5lcyB1c2luZyBkcmF3
UGF0aCgpLiBUaGlzIHdpbGwKKyAgICAgICAgb25seSBoYXZlIGEgc2lnbmlmaWNhbnQgZWZmZWN0
IHdoZW4gdGhlIHNraWEtZ3B1IGJhY2tlbmQgaXMgZW5hYmxlZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NjA5CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFdoZW4gZW5hYmxlZCwgaXQgd2lsbCBk
cmF3CisgICAgICAgIGVzc2VudGlhbGx5IHRoZSBzYW1lLCBidXQgd2l0aCBzbGlnaHRseSBkaWZm
ZXJlbnQgYW50aWFsaWFzZWQgZWRnZXMsIGR1ZQorICAgICAgICB0byBkaWZmZXJlbmNlcyBiZXR3
ZWVuIHRoZSBjdXJyZW50IHNjYW5jb252ZXJ0ZXIgYW5kIEdESSdzIGZvbnQgc2NhbGVyLgorICAg
ICAgICBXaGVuIGVuYWJsZWQsIHdlIHdpbGwgaGF2ZSB0byByZWNhbGlicmF0ZSBsYXlvdXR0ZXN0
IGltYWdlIHJlc3VsdHMuIAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lh
Rm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpza2lhRHJhd1RleHQpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0dXBQYWludEZvckZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTa2lh
VGV4dCk6CisKIDIwMTEtMDMtMDQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCShyZXZpc2lv
biA4MDM0MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxNyBAQAogI2luY2x1ZGUgIlNrQ2FudmFz
LmgiCiAjaW5jbHVkZSAiU2tQYWludC5oIgogI2luY2x1ZGUgIlNrU2hhZGVyLmgiCisjaW5jbHVk
ZSAiU2tUZW1wbGF0ZXMuaCIKKyNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCiAKICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBFTkFCTEUo
U0tJQV9URVhUKQorLy8gRklYTUU6IGEgZnV0dXJlIHJvbGUgb2Ygc2tpYSB3aWxsIGhhdmUgdGhp
cyBpbiBhIHByb3BlciBoZWFkZXIKK2V4dGVybiBTa1R5cGVmYWNlKiBTa0NyZWF0ZVR5cGVmYWNl
RnJvbUxPR0ZPTlQoY29uc3QgTE9HRk9OVCYpOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IENhY2hlZE91dGxpbmVLZXkgewpAQCAtMjczLDYgKzI4MCwyMyBAQCBzdGF0
aWMgYm9vbCBza2lhRHJhd1RleHQoSEZPTlQgaGZvbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR09GRlNFVCogb2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bnVtR2x5cGhzKQogeworI2lmIEVOQUJMRShTS0lBX1RFWFQpCisgICAgU2tBU1NFUlQoc2l6ZW9m
KFdPUkQpID09IHNpemVvZih1aW50MTZfdCkpOworCisgICAgLy8gcmVhbGxvY2F0ZSBzcGFjZSBv
biB0aGUgc3RhY2suIElmIG51bUdseXBocyBpcyBsYXJnZXIsIHRoZSBhcnJheQorICAgIC8vIHdp
bGwgZHluYW1pY2FsbHkgYWxvY2F0ZSBpdC4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtMb2Nh
bEdseXBoTWF4ID0gNjQ7CisgICAgU2tBdXRvU1RBcnJheTxrTG9jYWxHbHlwaE1heCwgU2tQb2lu
dD4gcG9zU3RvcmFnZShudW1HbHlwaHMpOworICAgIFNrUG9pbnQqIHBvcyA9IHBvc1N0b3JhZ2Uu
Z2V0KCk7CisgICAgU2tTY2FsYXIgeCA9IHBvaW50LmZYOworICAgIFNrU2NhbGFyIHkgPSBwb2lu
dC5mWTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAg
IHBvc1tpXS5zZXQoeCArIChvZmZzZXRzID8gb2Zmc2V0c1tpXS5kdSA6IDApLAorICAgICAgICAg
ICAgICAgICAgIHkgKyAob2Zmc2V0cyA/IG9mZnNldHNbaV0uZHYgOiAwKSk7CisgICAgICAgIHgg
Kz0gU2tJbnRUb1NjYWxhcihhZHZhbmNlc1tpXSk7CisgICAgfQorICAgIGNhbnZhcy0+ZHJhd1Bv
c1RleHQoZ2x5cGhzLCBudW1HbHlwaHMgKiBzaXplb2YodWludDE2X3QpLCBwb3MsICpwYWludCk7
CisjZWxzZQogICAgIGZsb2F0IHggPSBwb2ludC5mWCwgeSA9IHBvaW50LmZZOwogCiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1HbHlwaHM7IGkrKykgewpAQCAtMjkyLDEwICszMTYsMzEgQEAg
c3RhdGljIGJvb2wgc2tpYURyYXdUZXh0KEhGT05UIGhmb250LAogCiAgICAgICAgIHggKz0gYWR2
YW5jZXNbaV07CiAgICAgfQotCisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIEVO
QUJMRShTS0lBX1RFWFQpCitzdGF0aWMgdm9pZCBzZXR1cFBhaW50Rm9yRm9udChIRk9OVCBoZm9u
dCwgU2tQYWludCogcGFpbnQpCit7CisgICAgLyogIEZJWE1FOgorICAgICAgICBNdWNoIG9mIHRo
aXMgbG9naWMgY291bGQgYWxzbyBoYXBwZW4gaW4KKyAgICAgICAgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6Zm9udFBsYXRmb3JtRGF0YSBhbmQgYmUgY2FjaGVkLAorICAgICAgICBhbGxvd2luZyB1
cyB0byBhdm9pZCB0YWxraW5nIHRvIEdESSBhdCB0aGlzIHBvaW50LgorICAgICovCisgICAgTE9H
Rk9OVCBpbmZvOworICAgIEdldE9iamVjdChoZm9udCwgc2l6ZW9mKGluZm8pLCAmaW5mbyk7Cisg
ICAgaW50IHNpemUgPSBpbmZvLmxmSGVpZ2h0OworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAg
c2l6ZSA9IC1zaXplOyAvLyB3ZSBkb24ndCBsZXQgR0RJIGRwaS1zY2FsZSB1cyAoc2VlIFNrRm9u
dEhvc3Rfd2luLmNwcAorICAgIHBhaW50LT5zZXRUZXh0U2l6ZShTa0ludFRvU2NhbGFyKHNpemUp
KTsKKworICAgIFNrVHlwZWZhY2UqIGZhY2UgPSBTa0NyZWF0ZVR5cGVmYWNlRnJvbUxPR0ZPTlQo
aW5mbyk7CisgICAgcGFpbnQtPnNldFR5cGVmYWNlKGZhY2UpOworICAgIFNrU2FmZVVucmVmKGZh
Y2UpOworfQorI2VuZGlmCisKIGJvb2wgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgSEZPTlQgaGZvbnQsCiAgICAgICAgICAgICAgICAg
ICAgaW50IG51bUdseXBocywKQEAgLTMxNCw2ICszNTksMTAgQEAgYm9vbCBwYWludFNraWFUZXh0
KEdyYXBoaWNzQ29udGV4dCogY29udAogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgcGxhdGZvcm1D
b250ZXh0LT5zZXR1cFBhaW50Rm9yRmlsbGluZygmcGFpbnQpOwogICAgIHBhaW50LnNldEZsYWdz
KFNrUGFpbnQ6OmtBbnRpQWxpYXNfRmxhZyk7CisjaWYgRU5BQkxFKFNLSUFfVEVYVCkKKyAgICBw
YWludC5zZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURfVGV4dEVuY29kaW5nKTsKKyAg
ICBzZXR1cFBhaW50Rm9yRm9udChoZm9udCwgJnBhaW50KTsKKyNlbmRpZgogICAgIGJvb2wgZGlk
RmlsbCA9IGZhbHNlOwogCiAgICAgaWYgKCh0ZXh0TW9kZSAmIFRleHRNb2RlRmlsbCkgJiYgU2tD
b2xvckdldEEocGFpbnQuZ2V0Q29sb3IoKSkpIHsK
</data>
<flag name="review"
          id="76817"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>