<?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>21127</bug_id>
          
          <creation_ts>2008-09-25 18:49:02 -0700</creation_ts>
          <short_desc>REGRESSION: CFF format fonts fail to load</short_desc>
          <delta_ts>2008-10-02 01:52:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://opentype.info/demo/webfontdemo.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Daggett">jdaggett</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>mitz</cc>
    
    <cc>phiw2</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92844</commentid>
    <comment_count>0</comment_count>
    <who name="John Daggett">jdaggett</who>
    <bug_when>2008-09-25 18:49:02 -0700</bug_when>
    <thetext>For pages using web fonts via @font-face rules, CFF formatted fonts fail to load (i.e. .otf fonts) under Windows XP.

Traced this a bit in the debugger, within createFontCustomPlatformData (FontCustomPlatformData.cpp) the call to load the font via TTLoadEmbeddedFont fails with return code 0x0103, E_NAMECHANGEFAILED (defined in t2embapi.h).

This is a regression, the page renders correctly with the latest Windows version of Safari, 3.1.2 (525.21).  I&apos;m guessing the difference is that 525.21 was using CoreGraphics to load the font(?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92968</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-09-26 14:36:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/6202962&gt; is about TTLoadEmbeddedFont failing with E_NAMECHANGEFAILED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93173</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-09-28 15:29:46 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; &lt;rdar://problem/6202962&gt; is about TTLoadEmbeddedFont failing with
&gt; E_NAMECHANGEFAILED.

That was fixed in &lt;http://trac.webkit.org/changeset/37042&gt;.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93174</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-09-28 15:31:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; &lt;rdar://problem/6202962&gt; is about TTLoadEmbeddedFont failing with
&gt; &gt; E_NAMECHANGEFAILED.
&gt; 
&gt; That was fixed in &lt;http://trac.webkit.org/changeset/37042&gt;.
&gt; 

Yup. Now loading the fonts in this bug fails with different error codes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93184</commentid>
    <comment_count>4</comment_count>
    <who name="John Daggett">jdaggett</who>
    <bug_when>2008-09-28 16:42:57 -0700</bug_when>
    <thetext>
From Simon Daniels, Microsoft:

&gt; Do you know if the font embedding API&apos;s under Windows support CFF
&gt; OpenType fonts?

Yes we consider this a bug in t2embed.dll - historically (pre-OpenType)
it rejected fonts without a glyf table. The fix is easy, but was not
fixed in Vista due to concerns over the number of machines without CFF
rasterizers.

[Note: Windows 7 bug 257987]

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93190</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-28 19:43:31 -0700</bug_when>
    <thetext>We could fall back to the CoreGraphics rendering path...

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93191</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-28 19:44:10 -0700</bug_when>
    <thetext>... if t2embed fails I mean ....

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93193</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-09-28 19:48:02 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; We could fall back to the CoreGraphics rendering path...

An HFONT is required for the complex script code path regardless of the rendering mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93453</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-09-30 16:16:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/6259134&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93464</commentid>
    <comment_count>9</comment_count>
      <attachid>23962</attachid>
    <who name="">mitz</who>
    <bug_when>2008-09-30 16:39:22 -0700</bug_when>
    <thetext>Created attachment 23962
If TTLoadEmbeddedFont fails, use AddFontMemResourceEx after changing the font name in memory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93511</commentid>
    <comment_count>10</comment_count>
      <attachid>23962</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-30 23:17:45 -0700</bug_when>
    <thetext>Comment on attachment 23962
If TTLoadEmbeddedFont fails, use AddFontMemResourceEx after changing the font name in memory

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93512</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-09-30 23:25:49 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/changeset/37139&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93694</commentid>
    <comment_count>12</comment_count>
    <who name="John Daggett">jdaggett</who>
    <bug_when>2008-10-02 01:38:09 -0700</bug_when>
    <thetext>Um, don&apos;t you need some buffer length checks in renameAndActivateFont, given that the input data could be intentionally malformed font data?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93695</commentid>
    <comment_count>13</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-10-02 01:52:33 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Um, don&apos;t you need some buffer length checks in renameAndActivateFont, given
&gt; that the input data could be intentionally malformed font data?

I think I do not, given that data is passed to renameAndActivateFont only if getEOTHeader succeeds with the same data. If there is a deficiency in the code, please file a new bug, as the patch has landed and this bug is resolved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23962</attachid>
            <date>2008-09-30 16:39:22 -0700</date>
            <delta_ts>2008-09-30 23:17:45 -0700</delta_ts>
            <desc>If TTLoadEmbeddedFont fails, use AddFontMemResourceEx after changing the font name in memory</desc>
            <filename>21127_r1_bugzilla.diff</filename>
            <type>text/plain</type>
            <size>11687</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzEyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMDgtMDktMzAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZp
eCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjcKKyAgICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjI1OTEzND4gUkVHUkVTU0lPTjogQ0ZGIGZvcm1hdCBmb250cyBm
YWlsIHRvIGxvYWQKKworICAgICAgICBJZiBUVExvYWRFbWJlZGRlZEZvbnQgZmFpbHMsIHVzZSBB
ZGRGb250TWVtUmVzb3VyY2VFeCBhZnRlciBjaGFuZ2luZworICAgICAgICB0aGUgZm9udCBuYW1l
IGluIG1lbW9yeS4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBS
ZW5hbWVkIEdldEVPVEhlYWRlci4qIHRvCisgICAgICAgIE9wZW5UeXBlVXRpbGl0aWVzLiouCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSk6IEFkZGVkIGEgY2FsbAorICAgICAgICB0byBSZW1vdmVGb250TWVtUmVz
b3VyY2VFeCB0byBtYXRjaCBBZGRGb250TWVtUmVzb3VyY2VFeCB3aGVuIGl0IGlzCisgICAgICAg
IHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxh
dGZvcm1EYXRhKTogQWRkZWQgYSBjb2RlIHBhdGgKKyAgICAgICAgZm9yIGZvbnRzIGxvYWRlZCB1
c2luZyBBZGRGb250TWVtUmVzb3VyY2VFeC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOiBBZGRlZCBhIGNhbGwgdG8KKyAgICAgICAgcmVuYW1lQW5kQWN0
aXZhdGVGb250KCkgaWYgVFRMb2FkRW1iZWRkZWRGb250IGZhaWxzLiBJZgorICAgICAgICBUVExv
YWRFbWJlZGRlZEZvbnQgc3VjY2VlZHMsIHNldCB0aGUgZm9udCBuYW1lIHRvIHRoZSBudWxsIHN0
cmluZywgYXMKKyAgICAgICAgZm9udFBsYXRmb3JtRGF0YSgpIHdpbGwgcmV0cmlldmUgdGhlIG5h
bWUgZnJvbSB0aGUgZm9udCByZWZlcmVuY2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6IEFkZGVkIGEKKyAgICAg
ICAgZm9udCBuYW1lIG1lbWJlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
ZXRFT1RIZWFkZXIuY3BwOiBSZW5hbWVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HZXRFT1RIZWFkZXIuaDogUmVuYW1lZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9PcGVuVHlwZVV0aWxpdGllcy5jcHA6IENvcGllZCBmcm9tIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HZXRFT1RIZWFkZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6QmlnRW5kaWFuVVNob3J0
OjpCaWdFbmRpYW5VU2hvcnQpOiBBZGRlZCBhIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29y
ZTo6QmlnRW5kaWFuVUxvbmc6OkJpZ0VuZGlhblVMb25nKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOiBBZGRlZC4gQ3JlYXRlcyBhbiBpbi1tZW1vcnkg
Y29weSBvZgorICAgICAgICB0aGUgZm9udCBkYXRhIGFuZCBtb2RpZmllcyBpdCB0byBoYXZlIHRo
ZSBnaXZlbiBuYW1lLCB0aGVuIGFjdGl2YXRlcworICAgICAgICBpdCB1c2luZyBBZGRGb250TWVt
UmVzb3VyY2VFeC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9PcGVuVHlwZVV0
aWxpdGllcy5oOiBDb3BpZWQgZnJvbSBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR2V0RU9USGVhZGVy
LmguCisKIDIwMDgtMDktMzAgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAzNzEyMikKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQzMTIsMTQgKzQzMTIsNiBAQAog
CQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cR2V0RU9USGVhZGVy
LmNwcCINCi0JCQkJCQk+DQotCQkJCQk8L0ZpbGU+DQotCQkJCQk8RmlsZQ0KLQkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEdldEVPVEhlYWRlci5oIg0KLQkJCQkJ
CT4NCi0JCQkJCTwvRmlsZT4NCi0JCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1x3aW5cR2x5cGhQYWdlVHJlZU5vZGVDYWlyb1dpbi5jcHAiDQogCQkJ
CQkJPg0KIAkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTQ1MjAsNiArNDUxMiwxNCBAQAog
CQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxPcGVuVHlwZVV0aWxpdGllcy5jcHAiDQorCQkJCQkJ
Pg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXHdpblxPcGVuVHlwZVV0aWxpdGllcy5oIg0KKwkJCQkJCT4NCisJCQkJ
CTwvRmlsZT4NCisJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1x3aW5cU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAiDQogCQkJCQkJPg0KIAkJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCShyZXZpc2lvbiAzNzEy
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJCYXNl
NjQuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCi0jaW5jbHVkZSAiR2V0RU9USGVh
ZGVyLmgiCisjaW5jbHVkZSAiT3BlblR5cGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgPEFwcGxpY2F0aW9u
U2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgpAQCAtNDksOSArNDksMTIgQEAgRm9udEN1
c3RvbVBsYXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0ZgogewogICAgIENHRm9udFJlbGVhc2Uo
bV9jZ0ZvbnQpOwogICAgIGlmIChtX2ZvbnRSZWZlcmVuY2UpIHsKLSAgICAgICAgQVNTRVJUKFQy
ZW1iZWRMaWJyYXJ5KCkpOwotICAgICAgICBVTE9ORyBzdGF0dXM7Ci0gICAgICAgIFRURGVsZXRl
RW1iZWRkZWRGb250KG1fZm9udFJlZmVyZW5jZSwgMCwgJnN0YXR1cyk7CisgICAgICAgIGlmICht
X25hbWUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChUMmVtYmVkTGlicmFyeSgpKTsK
KyAgICAgICAgICAgIFVMT05HIHN0YXR1czsKKyAgICAgICAgICAgIFRURGVsZXRlRW1iZWRkZWRG
b250KG1fZm9udFJlZmVyZW5jZSwgMCwgJnN0YXR1cyk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgUmVtb3ZlRm9udE1lbVJlc291cmNlRXgobV9mb250UmVmZXJlbmNlKTsKICAgICB9CiB9
CiAKQEAgLTYyLDcgKzY1LDEwIEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YToKICAgICBBU1NFUlQoVDJlbWJlZExpYnJhcnkoKSk7CiAKICAgICBMT0dGT05UIGxvZ0Zv
bnQ7Ci0gICAgVFRHZXROZXdGb250TmFtZSgmbV9mb250UmVmZXJlbmNlLCBsb2dGb250LmxmRmFj
ZU5hbWUsIExGX0ZBQ0VTSVpFLCAwLCAwKTsKKyAgICBpZiAobV9uYW1lLmlzTnVsbCgpKQorICAg
ICAgICBUVEdldE5ld0ZvbnROYW1lKCZtX2ZvbnRSZWZlcmVuY2UsIGxvZ0ZvbnQubGZGYWNlTmFt
ZSwgTEZfRkFDRVNJWkUsIDAsIDApOworICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KGxvZ0ZvbnQu
bGZGYWNlTmFtZSwgbV9uYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIHNpemVv
Zihsb2dGb250LmxmRmFjZU5hbWVbMF0pICogbWluKHN0YXRpY19jYXN0PHNpemVfdD4oTEZfRkFD
RVNJWkUpLCAxICsgbV9uYW1lLmxlbmd0aCgpKSk7CiAKICAgICBsb2dGb250LmxmSGVpZ2h0ID0g
LXNpemU7CiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gTm9ybWFsUmVuZGVyaW5nTW9kZSkKQEAg
LTIxMywxMiArMjE5LDE3IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0
b20KICAgICBFT1RTdHJlYW0gZW90U3RyZWFtKGVvdEhlYWRlciwgYnVmZmVyLCBvdmVybGF5RHN0
LCBvdmVybGF5U3JjLCBvdmVybGF5TGVuZ3RoKTsKIAogICAgIExPTkcgbG9hZEVtYmVkZGVkRm9u
dFJlc3VsdCA9IFRUTG9hZEVtYmVkZGVkRm9udCgmZm9udFJlZmVyZW5jZSwgVFRMT0FEX1BSSVZB
VEUsICZwcml2U3RhdHVzLCBMSUNFTlNFX1BSRVZJRVdQUklOVCwgJnN0YXR1cywgcmVhZEVtYmVk
UHJvYywgJmVvdFN0cmVhbSwgY29uc3RfY2FzdDxMUFdTVFI+KGZvbnROYW1lLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkpLCAwLCAwKTsKLSAgICBpZiAobG9hZEVtYmVkZGVkRm9udFJl
c3VsdCAhPSBFX05PTkUpIHsKLSAgICAgICAgQ0dGb250UmVsZWFzZShjZ0ZvbnQpOwotICAgICAg
ICByZXR1cm4gMDsKKyAgICBpZiAobG9hZEVtYmVkZGVkRm9udFJlc3VsdCA9PSBFX05PTkUpCisg
ICAgICAgIGZvbnROYW1lID0gU3RyaW5nKCk7CisgICAgZWxzZSB7CisgICAgICAgIGZvbnRSZWZl
cmVuY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CisgICAgICAg
IGlmICghZm9udFJlZmVyZW5jZSkgeworICAgICAgICAgICAgQ0dGb250UmVsZWFzZShjZ0ZvbnQp
OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
bmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoY2dGb250LCBmb250UmVmZXJlbmNlKTsKKyAgICBy
ZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoY2dGb250LCBmb250UmVmZXJlbmNlLCBm
b250TmFtZSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgJKHJldmlzaW9uIDM3MTIyKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIEZvbnRDdXN0b21QbGF0Zm9y
bURhdGFfaAogCiAjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiB0eXBlZGVmIHN0
cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKQEAgLTMyLDkgKzMzLDEwIEBAIGNsYXNzIEZvbnRQbGF0
Zm9ybURhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhIDogTm9uY29weWFibGUgewotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ0dGb250
UmVmIGNnRm9udCwgSEFORExFIGZvbnRSZWZlcmVuY2UgPSAwKQorICAgIEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoQ0dGb250UmVmIGNnRm9udCwgSEFORExFIGZvbnRSZWZlcmVuY2UsIGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICAgICAgOiBtX2NnRm9udChjZ0ZvbnQpCiAgICAgICAgICwgbV9mb250
UmVmZXJlbmNlKGZvbnRSZWZlcmVuY2UpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgewog
ICAgIH0KIApAQCAtNDQsNiArNDYsNyBAQCBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA6
IE5vbmNvcHlhCiAKICAgICBDR0ZvbnRSZWYgbV9jZ0ZvbnQ7CiAgICAgSEFORExFIG1fZm9udFJl
ZmVyZW5jZTsKKyAgICBTdHJpbmcgbV9uYW1lOwogfTsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqKTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL09wZW5UeXBlVXRpbGl0aWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9PcGVuVHlwZVV0aWxpdGllcy5j
cHAJKHJldmlzaW9uIDM3MTIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vT3Bl
blR5cGVVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdldEVPVEhlYWRlci5oIgorI2luY2x1
ZGUgIk9wZW5UeXBlVXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIApA
QCAtMzIsMTEgKzMyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlh
blVTaG9ydCB7IAogICAgIG9wZXJhdG9yIHVuc2lnbmVkIHNob3J0KCkgY29uc3QgeyByZXR1cm4g
KHYgJiAweDAwZmYpIDw8IDggfCB2ID4+IDg7IH0KKyAgICBCaWdFbmRpYW5VU2hvcnQodW5zaWdu
ZWQgc2hvcnQgdSkgOiB2KCh1ICYgMHgwMGZmKSA8PCA4IHwgdSA+PiA4KSB7IH0KICAgICB1bnNp
Z25lZCBzaG9ydCB2OwogfTsKIAogc3RydWN0IEJpZ0VuZGlhblVMb25nIHsgCiAgICAgb3BlcmF0
b3IgdW5zaWduZWQoKSBjb25zdCB7IHJldHVybiAodiAmIDB4ZmYpIDw8IDI0IHwgKHYgJiAweGZm
MDApIDw8IDggfCAodiAmIDB4ZmYwMDAwKSA+PiA4IHwgdiA+PiAyNDsgfQorICAgIEJpZ0VuZGlh
blVMb25nKHVuc2lnbmVkIHUpIDogdigodSAmIDB4ZmYpIDw8IDI0IHwgKHUgJiAweGZmMDApIDw8
IDggfCAodSAmIDB4ZmYwMDAwKSA+PiA4IHwgdSA+PiAyNCkgeyB9CiAgICAgdW5zaWduZWQgdjsK
IH07CiAKQEAgLTMxNiw0ICszMTgsNzAgQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVkQnVmZmVy
KiBmb250RGF0YQogICAgIHJldHVybiB0cnVlOwogfQogCitIQU5ETEUgcmVuYW1lQW5kQWN0aXZh
dGVGb250KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCit7
CisgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS0+c2l6ZSgpOworICAgIGNv
bnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIq
Pihmb250RGF0YS0+ZGF0YSgpKTsKKworICAgIHVuc2lnbmVkIHQ7CisgICAgZm9yICh0ID0gMDsg
dCA8IHNmbnQtPm51bVRhYmxlczsgKyt0KSB7CisgICAgICAgIGlmIChzZm50LT50YWJsZXNbdF0u
dGFnID09ICduYW1lJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAodCA9PSBz
Zm50LT5udW1UYWJsZXMpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29uc3QgaW50IG5hbWVS
ZWNvcmRDb3VudCA9IDU7CisKKyAgICAvLyBSb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUgb2YgNCB0
byBzaW1wbGlmeSB0aGUgY2hlY2tzdW0gY2FsY3VsYXRpb24uCisgICAgc2l6ZV90IG5hbWVUYWJs
ZVNpemUgPSAoKG9mZnNldG9mKG5hbWVUYWJsZSwgbmFtZVJlY29yZHMpICsgbmFtZVJlY29yZENv
dW50ICogc2l6ZW9mKG5hbWVSZWNvcmQpICsgZm9udE5hbWUubGVuZ3RoKCkgKiBzaXplb2YoVUNo
YXIpKSAmIH4zKSArIDQ7CisKKyAgICBWZWN0b3I8Y2hhcj4gcmV3cml0dGVuRm9udERhdGEoZm9u
dERhdGEtPnNpemUoKSArIG5hbWVUYWJsZVNpemUpOworICAgIGNoYXIqIGRhdGEgPSByZXdyaXR0
ZW5Gb250RGF0YS5kYXRhKCk7CisgICAgbWVtY3B5KGRhdGEsIGZvbnREYXRhLT5kYXRhKCksIG9y
aWdpbmFsRGF0YVNpemUpOworCisgICAgLy8gTWFrZSB0aGUgdGFibGUgZGlyZWN0b3J5IGVudHJ5
IHBvaW50IHRvIHRoZSBuZXcgJ25hbWUnIHRhYmxlLgorICAgIHNmbnRIZWFkZXIqIHJld3JpdHRl
blNmbnQgPSByZWludGVycHJldF9jYXN0PHNmbnRIZWFkZXIqPihkYXRhKTsKKyAgICByZXdyaXR0
ZW5TZm50LT50YWJsZXNbdF0ubGVuZ3RoID0gbmFtZVRhYmxlU2l6ZTsKKyAgICByZXdyaXR0ZW5T
Zm50LT50YWJsZXNbdF0ub2Zmc2V0ID0gb3JpZ2luYWxEYXRhU2l6ZTsKKworICAgIC8vIFdyaXRl
IHRoZSBuZXcgJ25hbWUnIHRhYmxlIGFmdGVyIHRoZSBvcmlnaW5hbCBmb250IGRhdGEuCisgICAg
bmFtZVRhYmxlKiBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxuYW1lVGFibGUqPihkYXRhICsgb3Jp
Z2luYWxEYXRhU2l6ZSk7CisgICAgbmFtZS0+Zm9ybWF0ID0gMDsKKyAgICBuYW1lLT5jb3VudCA9
IG5hbWVSZWNvcmRDb3VudDsKKyAgICBuYW1lLT5zdHJpbmdPZmZzZXQgPSBvZmZzZXRvZihuYW1l
VGFibGUsIG5hbWVSZWNvcmRzKSArIG5hbWVSZWNvcmRDb3VudCAqIHNpemVvZihuYW1lUmVjb3Jk
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFtZVJlY29yZENvdW50OyArK2kpIHsK
KyAgICAgICAgbmFtZS0+bmFtZVJlY29yZHNbaV0ucGxhdGZvcm1JRCA9IDM7CisgICAgICAgIG5h
bWUtPm5hbWVSZWNvcmRzW2ldLmVuY29kaW5nSUQgPSAxOworICAgICAgICBuYW1lLT5uYW1lUmVj
b3Jkc1tpXS5sYW5ndWFnZUlEID0gMHgwNDA5OworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tp
XS5vZmZzZXQgPSAwOworICAgICAgICBuYW1lLT5uYW1lUmVjb3Jkc1tpXS5sZW5ndGggPSBmb250
TmFtZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7CisgICAgfQorCisgICAgLy8gVGhlIHJlcXVp
cmVkICduYW1lJyByZWNvcmQgdHlwZXM6IEZhbWlseSwgU3R5bGUsIFVuaXF1ZSwgRnVsbCBhbmQg
UG9zdFNjcmlwdC4KKyAgICBuYW1lLT5uYW1lUmVjb3Jkc1swXS5uYW1lSUQgPSAxOworICAgIG5h
bWUtPm5hbWVSZWNvcmRzWzFdLm5hbWVJRCA9IDI7CisgICAgbmFtZS0+bmFtZVJlY29yZHNbMl0u
bmFtZUlEID0gMzsKKyAgICBuYW1lLT5uYW1lUmVjb3Jkc1szXS5uYW1lSUQgPSA0OworICAgIG5h
bWUtPm5hbWVSZWNvcmRzWzRdLm5hbWVJRCA9IDY7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZm9udE5hbWUubGVuZ3RoKCk7ICsraSkKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxC
aWdFbmRpYW5VU2hvcnQqPihkYXRhICsgb3JpZ2luYWxEYXRhU2l6ZSArIG5hbWUtPnN0cmluZ09m
ZnNldClbaV0gPSBmb250TmFtZVtpXTsKKworICAgIC8vIFVwZGF0ZSB0aGUgdGFibGUgY2hlY2tz
dW0gaW4gdGhlIGRpcmVjdG9yeSBlbnRyeS4KKyAgICByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0u
Y2hlY2tTdW0gPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgKiBzaXplb2YoQmlnRW5k
aWFuVUxvbmcpIDwgbmFtZVRhYmxlU2l6ZTsgKytpKQorICAgICAgICByZXdyaXR0ZW5TZm50LT50
YWJsZXNbdF0uY2hlY2tTdW0gPSByZXdyaXR0ZW5TZm50LT50YWJsZXNbdF0uY2hlY2tTdW0gKyBy
ZWludGVycHJldF9jYXN0PEJpZ0VuZGlhblVMb25nKj4obmFtZSlbaV07CisKKyAgICBEV09SRCBu
dW1Gb250cyA9IDA7CisgICAgSEFORExFIGZvbnRIYW5kbGUgPSBBZGRGb250TWVtUmVzb3VyY2VF
eChkYXRhLCBvcmlnaW5hbERhdGFTaXplICsgbmFtZVRhYmxlU2l6ZSwgMCwgJm51bUZvbnRzKTsK
KworICAgIGlmIChmb250SGFuZGxlICYmIG51bUZvbnRzICE9IDEpIHsKKyAgICAgICAgUmVtb3Zl
Rm9udE1lbVJlc291cmNlRXgoZm9udEhhbmRsZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KworICAgIHJldHVybiBmb250SGFuZGxlOworfQorCiB9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9PcGVuVHlwZVV0aWxpdGllcy5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOm1lcmdlaW5mbwoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL09wZW5UeXBlVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vT3BlblR5cGVVdGlsaXRpZXMuaAkocmV2aXNpb24gMzcxMjIpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9PcGVuVHlwZVV0aWxpdGllcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw5ICsyMywxMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBHZXRFT1RIZWFkZXJfaAotI2RlZmluZSBHZXRFT1RIZWFkZXJfaAorI2lmbmRlZiBPcGVuVHlw
ZVV0aWxpdGllc19oCisjZGVmaW5lIE9wZW5UeXBlVXRpbGl0aWVzX2gKIAorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzMsNyArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIFZl
Y3RvcjxVSW50OCwgNTEyPiYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlEc3QsIHNpemVfdCYg
b3ZlcmxheVNyYywgc2l6ZV90JiBvdmVybGF5TGVuZ3RoKTsKK0hBTkRMRSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmIC8vIEdldEVPVEhlYWRlcl9oCisjZW5kaWYgLy8gT3BlblR5cGVV
dGlsaXRpZXNfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vT3BlblR5cGVVdGlsaXRpZXMuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWVyZ2VpbmZv
Cgo=
</data>
<flag name="review"
          id="10824"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>