<?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>26353</bug_id>
          
          <creation_ts>2009-06-12 13:24:51 -0700</creation_ts>
          <short_desc>Incorrect Handling of Cairo Fonts</short_desc>
          <delta_ts>2009-06-16 14:56:14 -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>WebKit Misc.</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></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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mihnea</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>125516</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-12 13:24:51 -0700</bug_when>
    <thetext>Cairo&apos;s internal reference counting for its various font types (cairo_font_face_t* and cairo_scaled_font_t*) are getting out of sync because the various FontPlatformData implementations are not consistently marking the fonts in use and removing them when finished.

One significant cause of this problem is that the Cairo font implementations use the default copy constructor, which does a shallow pointer assignment for the font pointers, which can cause multiple destruction of the same font and possible crashes.

The attached patch corrects the font handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125517</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-12 13:29:40 -0700</bug_when>
    <thetext>Note: One potentially confusing coding convention is that the cairo_font_face_t* pointers passed during construction are assumed to have a reference count of one (i.e., they were created prior to the constructor), and that the FontPlatformData object takes ownership.

Therefore, the main constructor does not increment the reference count, but the copy constructor must (or else the destructor count will be out of sync).

This is probably a bad idea and should be cleaned up in a future refactoring.

Better yet, we should probably create a RefCounted class to take care of all of this automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125523</commentid>
    <comment_count>2</comment_count>
      <attachid>31212</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-12 13:55:53 -0700</bug_when>
    <thetext>Created attachment 31212
First Iteration Patch

Clean up font references to avoid double-destruction of cairo font types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125524</commentid>
    <comment_count>3</comment_count>
      <attachid>31212</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-12 14:00:26 -0700</bug_when>
    <thetext>Comment on attachment 31212
First Iteration Patch

Style:
 FontCustomPlatformData(const FontCustomPlatformData&amp; source)
 40     : m_fontFace(cairo_font_face_reference(source.m_fontFace))
 41     {}
officially that should be:
 FontCustomPlatformData(const FontCustomPlatformData&amp; source)
    : m_fontFace(cairo_font_face_reference(source.m_fontFace))
{
}
At least that&apos;s my understanding of the WK style.

Looks OK I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125528</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-12 14:21:17 -0700</bug_when>
    <thetext>Based on discussions with Gustavo Noronha Silva, leaving the GTK+ piece of this out.  The GTK+ fonts are noncopyable, so they don&apos;t see this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125531</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-12 14:32:06 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/44628</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126184</commentid>
    <comment_count>6</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2009-06-16 05:08:43 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Landed in http://trac.webkit.org/changeset/44628
&gt; 

Hi,
Wouldn&apos;t be better to add also an assignment operator to FontPlatformData class, just as a safe precaution? What did you mean by: &quot;The GTK+ fonts are noncopyable, so they don&apos;t see this problem.&quot;

Regards,
Mihnea</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126219</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-16 10:24:57 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Wouldn&apos;t be better to add also an assignment operator to FontPlatformData
&gt; class, just as a safe precaution?

That&apos;s a good idea; I&apos;ll reopen the bug and add that as a patch.

&gt; What did you mean by: &quot;The GTK+ fonts are noncopyable, so they don&apos;t see this problem.&quot;

The GTK+ FontCustomPlatformData object inherits from the Noncopyable object, so the font objects can never be copied, and are therefore not impacted by this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126221</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-16 10:25:40 -0700</bug_when>
    <thetext>Reopening bug to address Mihnea&apos;s excellent point that the assignment operator should also be corrected for this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126277</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-16 13:44:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Based on discussions with Gustavo Noronha Silva, leaving the GTK+ piece of this
&gt; out.  The GTK+ fonts are noncopyable, so they don&apos;t see this problem.

It turns out this is incorrect!  The FontCustomPlatformData object for GTK+ *is* noncopyable (as it is for the Windows Cairo build), but the area in question is the FontPlatformData object.

In GTK+/Pango, the FontPlatformData object implements both a copy constructor and an assignment operator, which is why this platform has never had the problem.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126278</commentid>
    <comment_count>10</comment_count>
      <attachid>31368</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-16 13:51:51 -0700</bug_when>
    <thetext>Created attachment 31368
Add assignment operator

Update to original change to provide an assignment operator.  This brings the behavior in line with the GTK+ Cairo port, and helps guarantee that we get proper behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126284</commentid>
    <comment_count>11</comment_count>
      <attachid>31369</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-16 14:09:34 -0700</bug_when>
    <thetext>Created attachment 31369
Revised patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126293</commentid>
    <comment_count>12</comment_count>
      <attachid>31373</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-16 14:32:05 -0700</bug_when>
    <thetext>Created attachment 31373
Final revision.

Revised patch based on full build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126294</commentid>
    <comment_count>13</comment_count>
      <attachid>31373</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-06-16 14:35:44 -0700</bug_when>
    <thetext>Comment on attachment 31373
Final revision.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126314</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-16 14:56:14 -0700</bug_when>
    <thetext>Landed second patch in http://trac.webkit.org/changeset/44740.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31212</attachid>
            <date>2009-06-12 13:55:53 -0700</date>
            <delta_ts>2009-06-16 10:25:06 -0700</delta_ts>
            <desc>First Iteration Patch</desc>
            <filename>cairo_font_fix.patch</filename>
            <type>text/plain</type>
            <size>7124</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDYyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMDYtMTIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjM1MworICAgICAgICBD
b3JyZWN0cyBoYW5kbGluZyBvZiBDYWlybyBmb250cyB0aGF0IHdlcmUgZ2V0dGluZyBvdXQgb2YK
KyAgICAgICAgc3luYyBkdWUgdG8gZGVmYXVsdCBjb3B5IGNvbnN0cnVjdGlvbi4gIEFsc28gcmVm
YWN0b3JzCisgICAgICAgIHNvbWUgaW5jb3JyZWN0IHBsYXRmb3JtIGZvbnQgZGVzdHJ1Y3Rpb24g
Y29kZSB0aGF0IGJlbG9uZ3MKKyAgICAgICAgaW4gdGhlIGZvbnQgb2JqZWN0J3MgZGVzdHJ1Y3Rv
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6fkZv
bnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1EYXRhSW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
OjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
OnNldEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERh
dGFDR1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnRE
YXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRm
b3JtSW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0
aEZvckdseXBoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERh
dGFXaW4uY3BwOgorCiAyMDA5LTA2LTEyICBOYXRlIENoYXBpbiAgPGphcGhldEBnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAko
cmV2aXNpb24gNDQ2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDExIEBAIHN0cnVj
dCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIDogTm9uY29weWEKICAgICA6IG1fZm9udEZhY2UoZm9u
dEZhY2UpCiAgICAge30KIAorICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoY29uc3QgRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSYgc291cmNlKQorICAgIDogbV9mb250RmFjZShjYWlyb19mb250X2Zh
Y2VfcmVmZXJlbmNlKHNvdXJjZS5tX2ZvbnRGYWNlKSkKKyAgICB7fQorICAgIAorCiAgICAgfkZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9udFBsYXRm
b3JtRGF0YShpbnQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgRm9udFJlbmRlcmluZ01v
ZGUgPSBOb3JtYWxSZW5kZXJpbmdNb2RlKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhLmgJKHJldmlzaW9uIDQ0NjEwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhKEhGT05U
LCBDR0ZvbnRSZWYsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBvYmxpcXVlLCBib29sIHVz
ZUdESSk7CiAjZWxpZiBQTEFURk9STShDQUlSTykKICAgICBGb250UGxhdGZvcm1EYXRhKGNhaXJv
X2ZvbnRfZmFjZV90KiwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxdWUpOworICAg
IEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogI2VuZGlmCiAgICAg
fkZvbnRQbGF0Zm9ybURhdGEoKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCShyZXZpc2lvbiA0NDYx
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw0ICsxMzcsOCBAQCBGb250UGxhdGZvcm1EYXRh
OjpGb250UGxhdGZvcm1EYXRhKEhGT05UCiB7CiB9CiAKK0ZvbnRQbGF0Zm9ybURhdGE6On5Gb250
UGxhdGZvcm1EYXRhKCkKK3sKK30KKwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCShyZXZp
c2lvbiA0NDYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogdm9pZCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybURhdGFJbml0KEhG
T05UIGZvbnQsIGZsb2F0IHNpemUsIEhEQyBoZGMsIFdDSEFSKiBmYWNlTmFtZSkKIHsKICAgICBt
X2ZvbnRGYWNlID0gY2Fpcm9fd2luMzJfZm9udF9mYWNlX2NyZWF0ZV9mb3JfaGZvbnQoZm9udCk7
CisKICAgICBjYWlyb19tYXRyaXhfdCBzaXplTWF0cml4LCBjdG07CiAgICAgY2Fpcm9fbWF0cml4
X2luaXRfaWRlbnRpdHkoJmN0bSk7CiAgICAgY2Fpcm9fbWF0cml4X2luaXRfc2NhbGUoJnNpemVN
YXRyaXgsIHNpemUsIHNpemUpOwpAQCAtNzksNiArODAsMTcgQEAgRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShjYWlybwogICAgY2Fpcm9fZm9udF9vcHRpb25zX2Rlc3Ryb3kob3B0
aW9ucyk7CiB9CiAKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgc291cmNlKQorICAgIDogbV9mb250KHNvdXJjZS5tX2ZvbnQpCisgICAg
LCBtX3NpemUoc291cmNlLm1fc2l6ZSkKKyAgICAsIG1fZm9udEZhY2UoY2Fpcm9fZm9udF9mYWNl
X3JlZmVyZW5jZShzb3VyY2UubV9mb250RmFjZSkpCisgICAgLCBtX3NjYWxlZEZvbnQoY2Fpcm9f
c2NhbGVkX2ZvbnRfcmVmZXJlbmNlKHNvdXJjZS5tX3NjYWxlZEZvbnQpKQorICAgICwgbV9zeW50
aGV0aWNCb2xkKHNvdXJjZS5tX3N5bnRoZXRpY0JvbGQpCisgICAgLCBtX3N5bnRoZXRpY09ibGlx
dWUoc291cmNlLm1fc3ludGhldGljT2JsaXF1ZSkKKyAgICAsIG1fdXNlR0RJKHNvdXJjZS5tX3Vz
ZUdESSkKK3sKK30KKwogdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRGb250KGNhaXJvX3QqIGNy
KSBjb25zdAogewogICAgIEFTU0VSVChtX3NjYWxlZEZvbnQpOwpAQCAtODYsNCArOTgsMTAgQEAg
dm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRGb250KGNhaXJvX3QqIAogICAgIGNhaXJvX3NldF9z
Y2FsZWRfZm9udChjciwgbV9zY2FsZWRGb250KTsKIH0KIAorRm9udFBsYXRmb3JtRGF0YTo6fkZv
bnRQbGF0Zm9ybURhdGEoKQoreworICAgIGNhaXJvX3NjYWxlZF9mb250X2Rlc3Ryb3kobV9zY2Fs
ZWRGb250KTsKKyAgICBjYWlyb19mb250X2ZhY2VfZGVzdHJveShtX2ZvbnRGYWNlKTsKK30KKwog
fQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YVdpbi5jcHAJKHJldmlzaW9uIDQ0NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1
LDggKzg1LDQgQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShmbG9hdAogewog
fQogCi1Gb250UGxhdGZvcm1EYXRhOjp+Rm9udFBsYXRmb3JtRGF0YSgpCi17Ci19Ci0KIH0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ0dXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnRE
YXRhQ0dXaW4uY3BwCShyZXZpc2lvbiA0NDYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1NpbXBsZUZvbnREYXRhQ0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsMTEg
KzEyNiw2IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtQ2hhcldpZHRoSW4KICAgICB9
CiB9CiAKLXZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtRGVzdHJveSgpCi17Ci0gICAgcGxh
dGZvcm1Db21tb25EZXN0cm95KCk7Ci19Ci0KIGZsb2F0IFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9y
bVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcGxhdGZvcm1E
YXRhLnVzZUdESSgpKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxl
Rm9udERhdGFDYWlyb1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAJKHJldmlzaW9uIDQ0NjEwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgdm9pZCBTaW1wbGVGb250RGF0YTo6cGxh
dGZvcm1Jbml0KCkKICAgICBtX3NjcmlwdENhY2hlID0gMDsKICAgICBtX3NjcmlwdEZvbnRQcm9w
ZXJ0aWVzID0gMDsKICAgICBtX2lzU3lzdGVtRm9udCA9IGZhbHNlOwotICAgIG1fc3ludGhldGlj
Qm9sZE9mZnNldCA9IDA7CiAKICAgICBtX3N5bnRoZXRpY0JvbGRPZmZzZXQgPSBtX3BsYXRmb3Jt
RGF0YS5zeW50aGV0aWNCb2xkKCkgPyAxLjBmIDogMC5mOwogCkBAIC05NywxNiArOTYsNiBAQCB2
b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUNoYXJXaWR0aEluCiAgICAgLy8gY2hhcndpZHRo
cyBhcmUgc2V0IGluIHBsYXRmb3JtSW5pdC4KIH0KIAotdm9pZCBTaW1wbGVGb250RGF0YTo6cGxh
dGZvcm1EZXN0cm95KCkKLXsKLSAgICBjYWlyb19mb250X2ZhY2VfZGVzdHJveShtX3BsYXRmb3Jt
RGF0YS5mb250RmFjZSgpKTsKLSAgICBjYWlyb19zY2FsZWRfZm9udF9kZXN0cm95KG1fcGxhdGZv
cm1EYXRhLnNjYWxlZEZvbnQoKSk7Ci0KLSAgICBEZWxldGVPYmplY3QobV9wbGF0Zm9ybURhdGEu
aGZvbnQoKSk7Ci0KLSAgICBwbGF0Zm9ybUNvbW1vbkRlc3Ryb3koKTsKLX0KLQogZmxvYXQgU2lt
cGxlRm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIHsK
ICAgICBpZiAobV9wbGF0Zm9ybURhdGEudXNlR0RJKCkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCShyZXZpc2lvbiA0
NDYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCB2b2lkIFNpbXBsZUZvbnREYXRh
Ojppbml0R0RJRm9udCgpCiAgICAgIHJldHVybjsKIH0KIAotdm9pZCBTaW1wbGVGb250RGF0YTo6
cGxhdGZvcm1Db21tb25EZXN0cm95KCkKK3ZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtRGVz
dHJveSgpCiB7CiAgICAgLy8gV2UgZG9uJ3QgaGFzaCB0aGlzIG9uIFdpbjMyLCBzbyBpdCdzIGVm
ZmVjdGl2ZWx5IG93bmVkIGJ5IHVzLgogICAgIGRlbGV0ZSBtX3NtYWxsQ2Fwc0ZvbnREYXRhOwo=
</data>
<flag name="review"
          id="15918"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31368</attachid>
            <date>2009-06-16 13:51:51 -0700</date>
            <delta_ts>2009-06-16 14:04:54 -0700</delta_ts>
            <desc>Add assignment operator</desc>
            <filename>font_assignment.patch</filename>
            <type>text/plain</type>
            <size>3219</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQ0NzM2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDYt
MTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBvZiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzNTMuCisgICAgICAgIFByb3ZpZGUgYW4gYXNz
aWdubWVudCBvcGVyYXRvciB0byBhdm9pZCBpbXByb3BlciByZWZlcmVuY2UKKyAgICAgICAgY291
bnRzIG9uIHRoZSBDYWlybyBmb250IG9iamVjdHMuICBUaGlzIGJyaW5ncyB0aGUgV2luZG93cwor
ICAgICAgICBDYWlybyBwb3J0IGluIGxpbmUgd2l0aCB0aGUgR1RLKyBwb3J0LgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KToKKwogMjAwOS0wNi0xNiAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEZpc2hlci4KSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGEu
aAkocmV2aXNpb24gNDQ3MzUpCisrKyBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKICNlbGlmIFBM
QVRGT1JNKENBSVJPKQogICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9mYWNlX3QqLCBm
bG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgb2JsaXF1ZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CisKKyAgICBib29sIG9wZXJhdG9yPShjb25zdCBG
b250UGxhdGZvcm1EYXRhJikgY29uc3Q7CiAjZW5kaWYKICAgICB+Rm9udFBsYXRmb3JtRGF0YSgp
OwogCkluZGV4OiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YUNhaXJvV2luLmNwcAkocmV2aXNpb24gNDQ3MzUpCisrKyBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTIgKzgz
LDE3IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY2Fpcm8KIEZvbnRQbGF0
Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgc291cmNl
KQogICAgIDogbV9mb250KHNvdXJjZS5tX2ZvbnQpCiAgICAgLCBtX3NpemUoc291cmNlLm1fc2l6
ZSkKLSAgICAsIG1fZm9udEZhY2UoY2Fpcm9fZm9udF9mYWNlX3JlZmVyZW5jZShzb3VyY2UubV9m
b250RmFjZSkpCi0gICAgLCBtX3NjYWxlZEZvbnQoY2Fpcm9fc2NhbGVkX2ZvbnRfcmVmZXJlbmNl
KHNvdXJjZS5tX3NjYWxlZEZvbnQpKQorICAgICwgbV9mb250RmFjZSgwKQorICAgICwgbV9zY2Fs
ZWRGb250KDApCiAgICAgLCBtX3N5bnRoZXRpY0JvbGQoc291cmNlLm1fc3ludGhldGljQm9sZCkK
ICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShzb3VyY2UubV9zeW50aGV0aWNPYmxpcXVlKQogICAg
ICwgbV91c2VHREkoc291cmNlLm1fdXNlR0RJKQogeworICAgIGlmIChzb3VyY2UubV9mb250RmFj
ZSkKKyAgICAgICAgbV9mb250RmFjZSA9IGNhaXJvX3NjYWxlZF9mb250X3JlZmVyZW5jZShzb3Vy
Y2UubV9mb250RmFjZSk7CisKKyAgICBpZiAoc291cmNlLm1fc2NhbGVkRm9udCkKKyAgICAgICAg
bV9zY2FsZWRGb250ID0gY2Fpcm9fc2NhbGVkX2ZvbnRfcmVmZXJlbmNlKHNvdXJjZS5tX3NjYWxl
ZEZvbnQpOwogfQogCiB2b2lkIEZvbnRQbGF0Zm9ybURhdGE6OnNldEZvbnQoY2Fpcm9fdCogY3Ip
IGNvbnN0CkBAIC0xMDQsNCArMTA5LDMxIEBAIEZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZv
cm1EYXRhKCkKICAgICBjYWlyb19mb250X2ZhY2VfZGVzdHJveShtX2ZvbnRGYWNlKTsKIH0KIAor
Rm9udFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIG90aGVyKQoreworICAgIC8vIENoZWNrIGZvciBzZWxmLWFzc2lnbm1lbnQu
CisgICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBt
X2ZvbnQgPSBvdGhlci5tX2ZvbnQ7CisgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1f
c3ludGhldGljQm9sZCA9IG90aGVyLm1fc3ludGhldGljQm9sZDsKKyAgICBtX3N5bnRoZXRpY09i
bGlxdWUgPSBvdGhlci5tX3N5bnRoZXRpY09ibGlxdWU7CisgICAgbV91c2VHREkgPSBvdGhlci5t
X3VzZUdESTsKKworICAgIGlmIChvdGhlci5tX2ZvbnRGYWNlKQorICAgICAgICBjYWlyb19mb250
X2ZhY2VfcmVmZXJlbmNlKG90aGVyLm1fZm9udEZhY2UpOworICAgIGlmIChtX2ZvbnRGYWNlKQor
ICAgICAgICBjYWlyb19mb250X2ZhY2VfZGVzdHJveShtX2ZvbnRGYWNlKTsKKyAgICBtX2ZvbnRG
YWNlID0gb3RoZXIubV9mb250RmFjZTsKKworICAgIGlmIChvdGhlci5tX3NjYWxlZEZvbnQpCisg
ICAgICAgIGNhaXJvX3NjYWxlZF9mb250X3JlZmVyZW5jZShvdGhlci5tX3NjYWxlZEZvbnQpOwor
ICAgIGlmIChtX3NjYWxlZEZvbnQpCisgICAgICAgIGNhaXJvX3NjYWxlZF9mb250X2Rlc3Ryb3ko
bV9zY2FsZWRGb250KTsKKyAgICBtX3NjYWxlZEZvbnQgPSBvdGhlci5tX3NjYWxlZEZvbnQ7CisK
KyAgICByZXR1cm4gKnRoaXM7Cit9CisKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31369</attachid>
            <date>2009-06-16 14:09:34 -0700</date>
            <delta_ts>2009-06-16 14:32:05 -0700</delta_ts>
            <desc>Revised patch.</desc>
            <filename>font_assignment.patch</filename>
            <type>text/plain</type>
            <size>3302</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDczNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDYtMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzNTMu
CisgICAgICAgIFByb3ZpZGUgYW4gYXNzaWdubWVudCBvcGVyYXRvciB0byBhdm9pZCBpbXByb3Bl
ciByZWZlcmVuY2UKKyAgICAgICAgY291bnRzIG9uIHRoZSBDYWlybyBmb250IG9iamVjdHMuICBU
aGlzIGJyaW5ncyB0aGUgV2luZG93cworICAgICAgICBDYWlybyBwb3J0IGluIGxpbmUgd2l0aCB0
aGUgR1RLKyBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZv
bnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3Bl
cmF0b3I9KToKKwogMjAwOS0wNi0xNiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhLmgJKHJldmlzaW9uIDQ0NzM1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKENB
SVJPKQogICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9mYWNlX3QqLCBmbG9hdCBzaXpl
LCBib29sIGJvbGQsIGJvb2wgb2JsaXF1ZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250UGxhdGZvcm1EYXRhJik7CisKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0OwogI2VuZGlmCiAgICAgfkZvbnRQbGF0Zm9ybURh
dGEoKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YUNhaXJvV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiA0NDczNSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDEyICs4MywxNyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKGNhaXJvCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNvdXJjZSkKICAgICA6IG1fZm9udChzb3VyY2UubV9mb250
KQogICAgICwgbV9zaXplKHNvdXJjZS5tX3NpemUpCi0gICAgLCBtX2ZvbnRGYWNlKGNhaXJvX2Zv
bnRfZmFjZV9yZWZlcmVuY2Uoc291cmNlLm1fZm9udEZhY2UpKQotICAgICwgbV9zY2FsZWRGb250
KGNhaXJvX3NjYWxlZF9mb250X3JlZmVyZW5jZShzb3VyY2UubV9zY2FsZWRGb250KSkKKyAgICAs
IG1fZm9udEZhY2UoMCkKKyAgICAsIG1fc2NhbGVkRm9udCgwKQogICAgICwgbV9zeW50aGV0aWNC
b2xkKHNvdXJjZS5tX3N5bnRoZXRpY0JvbGQpCiAgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoc291
cmNlLm1fc3ludGhldGljT2JsaXF1ZSkKICAgICAsIG1fdXNlR0RJKHNvdXJjZS5tX3VzZUdESSkK
IHsKKyAgICBpZiAoc291cmNlLm1fZm9udEZhY2UpCisgICAgICAgIG1fZm9udEZhY2UgPSBjYWly
b19mb250X2ZhY2VfcmVmZXJlbmNlKHNvdXJjZS5tX2ZvbnRGYWNlKTsKKworICAgIGlmIChzb3Vy
Y2UubV9zY2FsZWRGb250KQorICAgICAgICBtX3NjYWxlZEZvbnQgPSBjYWlyb19zY2FsZWRfZm9u
dF9yZWZlcmVuY2Uoc291cmNlLm1fc2NhbGVkRm9udCk7CiB9CiAKIHZvaWQgRm9udFBsYXRmb3Jt
RGF0YTo6c2V0Rm9udChjYWlyb190KiBjcikgY29uc3QKQEAgLTEwNCw0ICsxMDksMzEgQEAgRm9u
dFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQogICAgIGNhaXJvX2ZvbnRfZmFjZV9k
ZXN0cm95KG1fZm9udEZhY2UpOwogfQogCitGb250UGxhdGZvcm1EYXRhJiBGb250UGxhdGZvcm1E
YXRhOjpvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpCit7CisgICAgLy8g
Q2hlY2sgZm9yIHNlbGYtYXNzaWdubWVudC4KKyAgICBpZiAodGhpcyA9PSAmb3RoZXIpCisgICAg
ICAgIHJldHVybiAqdGhpczsKKworICAgIG1fZm9udCA9IG90aGVyLm1fZm9udDsKKyAgICBtX3Np
emUgPSBvdGhlci5tX3NpemU7CisgICAgbV9zeW50aGV0aWNCb2xkID0gb3RoZXIubV9zeW50aGV0
aWNCb2xkOworICAgIG1fc3ludGhldGljT2JsaXF1ZSA9IG90aGVyLm1fc3ludGhldGljT2JsaXF1
ZTsKKyAgICBtX3VzZUdESSA9IG90aGVyLm1fdXNlR0RJOworCisgICAgaWYgKG90aGVyLm1fZm9u
dEZhY2UpCisgICAgICAgIGNhaXJvX2ZvbnRfZmFjZV9yZWZlcmVuY2Uob3RoZXIubV9mb250RmFj
ZSk7CisgICAgaWYgKG1fZm9udEZhY2UpCisgICAgICAgIGNhaXJvX2ZvbnRfZmFjZV9kZXN0cm95
KG1fZm9udEZhY2UpOworICAgIG1fZm9udEZhY2UgPSBvdGhlci5tX2ZvbnRGYWNlOworCisgICAg
aWYgKG90aGVyLm1fc2NhbGVkRm9udCkKKyAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfcmVmZXJl
bmNlKG90aGVyLm1fc2NhbGVkRm9udCk7CisgICAgaWYgKG1fc2NhbGVkRm9udCkKKyAgICAgICAg
Y2Fpcm9fc2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOworICAgIG1fc2NhbGVkRm9u
dCA9IG90aGVyLm1fc2NhbGVkRm9udDsKKworICAgIHJldHVybiAqdGhpczsKK30KKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31373</attachid>
            <date>2009-06-16 14:32:05 -0700</date>
            <delta_ts>2009-06-16 14:35:44 -0700</delta_ts>
            <desc>Final revision.</desc>
            <filename>font_assignment.patch.txt</filename>
            <type>text/plain</type>
            <size>3296</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDczNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDYtMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzNTMu
CisgICAgICAgIFByb3ZpZGUgYW4gYXNzaWdubWVudCBvcGVyYXRvciB0byBhdm9pZCBpbXByb3Bl
ciByZWZlcmVuY2UKKyAgICAgICAgY291bnRzIG9uIHRoZSBDYWlybyBmb250IG9iamVjdHMuICBU
aGlzIGJyaW5ncyB0aGUgV2luZG93cworICAgICAgICBDYWlybyBwb3J0IGluIGxpbmUgd2l0aCB0
aGUgR1RLKyBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZv
bnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3Bl
cmF0b3I9KToKKwogMjAwOS0wNi0xNiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhLmgJKHJldmlzaW9uIDQ0NzM1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKENB
SVJPKQogICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9mYWNlX3QqLCBmbG9hdCBzaXpl
LCBib29sIGJvbGQsIGJvb2wgb2JsaXF1ZSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250UGxhdGZvcm1EYXRhJik7CisKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpOwogI2VuZGlmCiAgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsK
IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNh
aXJvV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiA0NDczNSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgzLDEyICs4MywxNyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKGNhaXJvCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHNvdXJjZSkKICAgICA6IG1fZm9udChzb3VyY2UubV9mb250KQogICAg
ICwgbV9zaXplKHNvdXJjZS5tX3NpemUpCi0gICAgLCBtX2ZvbnRGYWNlKGNhaXJvX2ZvbnRfZmFj
ZV9yZWZlcmVuY2Uoc291cmNlLm1fZm9udEZhY2UpKQotICAgICwgbV9zY2FsZWRGb250KGNhaXJv
X3NjYWxlZF9mb250X3JlZmVyZW5jZShzb3VyY2UubV9zY2FsZWRGb250KSkKKyAgICAsIG1fZm9u
dEZhY2UoMCkKKyAgICAsIG1fc2NhbGVkRm9udCgwKQogICAgICwgbV9zeW50aGV0aWNCb2xkKHNv
dXJjZS5tX3N5bnRoZXRpY0JvbGQpCiAgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoc291cmNlLm1f
c3ludGhldGljT2JsaXF1ZSkKICAgICAsIG1fdXNlR0RJKHNvdXJjZS5tX3VzZUdESSkKIHsKKyAg
ICBpZiAoc291cmNlLm1fZm9udEZhY2UpCisgICAgICAgIG1fZm9udEZhY2UgPSBjYWlyb19mb250
X2ZhY2VfcmVmZXJlbmNlKHNvdXJjZS5tX2ZvbnRGYWNlKTsKKworICAgIGlmIChzb3VyY2UubV9z
Y2FsZWRGb250KQorICAgICAgICBtX3NjYWxlZEZvbnQgPSBjYWlyb19zY2FsZWRfZm9udF9yZWZl
cmVuY2Uoc291cmNlLm1fc2NhbGVkRm9udCk7CiB9CiAKIHZvaWQgRm9udFBsYXRmb3JtRGF0YTo6
c2V0Rm9udChjYWlyb190KiBjcikgY29uc3QKQEAgLTEwNCw0ICsxMDksMzEgQEAgRm9udFBsYXRm
b3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQogICAgIGNhaXJvX2ZvbnRfZmFjZV9kZXN0cm95
KG1fZm9udEZhY2UpOwogfQogCitGb250UGxhdGZvcm1EYXRhJiBGb250UGxhdGZvcm1EYXRhOjpv
cGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpCit7CisgICAgLy8gQ2hlY2sg
Zm9yIHNlbGYtYXNzaWdubWVudC4KKyAgICBpZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJl
dHVybiAqdGhpczsKKworICAgIG1fZm9udCA9IG90aGVyLm1fZm9udDsKKyAgICBtX3NpemUgPSBv
dGhlci5tX3NpemU7CisgICAgbV9zeW50aGV0aWNCb2xkID0gb3RoZXIubV9zeW50aGV0aWNCb2xk
OworICAgIG1fc3ludGhldGljT2JsaXF1ZSA9IG90aGVyLm1fc3ludGhldGljT2JsaXF1ZTsKKyAg
ICBtX3VzZUdESSA9IG90aGVyLm1fdXNlR0RJOworCisgICAgaWYgKG90aGVyLm1fZm9udEZhY2Up
CisgICAgICAgIGNhaXJvX2ZvbnRfZmFjZV9yZWZlcmVuY2Uob3RoZXIubV9mb250RmFjZSk7Cisg
ICAgaWYgKG1fZm9udEZhY2UpCisgICAgICAgIGNhaXJvX2ZvbnRfZmFjZV9kZXN0cm95KG1fZm9u
dEZhY2UpOworICAgIG1fZm9udEZhY2UgPSBvdGhlci5tX2ZvbnRGYWNlOworCisgICAgaWYgKG90
aGVyLm1fc2NhbGVkRm9udCkKKyAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfcmVmZXJlbmNlKG90
aGVyLm1fc2NhbGVkRm9udCk7CisgICAgaWYgKG1fc2NhbGVkRm9udCkKKyAgICAgICAgY2Fpcm9f
c2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOworICAgIG1fc2NhbGVkRm9udCA9IG90
aGVyLm1fc2NhbGVkRm9udDsKKworICAgIHJldHVybiAqdGhpczsKK30KKwogfQo=
</data>
<flag name="review"
          id="16042"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>