<?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>77437</bug_id>
          
          <creation_ts>2012-01-31 07:28:40 -0800</creation_ts>
          <short_desc>freetype port: font fallback mechanism can try harder</short_desc>
          <delta_ts>2015-07-19 09:53:53 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=147057</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Martin Jackson">mjackson220.list</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mitz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>nekohayo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546040</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Jackson">mjackson220.list</who>
    <bug_when>2012-01-31 07:28:40 -0800</bug_when>
    <thetext>In the CSS rules for font matching (http://www.w3.org/TR/css3-fonts/#font-matching-algorithm), if all else fails, the system is allowed to choose an appropriate font (&quot;system font fallback&quot; procedure). In the case of free type, we can use fontconfig matching to find the closest font to what was asked for if none of the developer&apos;s choices could be used.

Currently, getSimilarFontPlatformData is an empty stub, but here fontconfig could be consulted for the best match for the requested font.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550932</commentid>
    <comment_count>1</comment_count>
      <attachid>125835</attachid>
    <who name="Martin Jackson">mjackson220.list</who>
    <bug_when>2012-02-07 06:25:20 -0800</bug_when>
    <thetext>Created attachment 125835
Allow fontconfig to choose an appropriate font if all else fails

This patch allows the system to attempt to match the requested font if nothing
appropriate was found in the CSS font family list, using fontconfig. This will
only happen if none of the fonts specified in the CSS list could be used. This
is in accordance with the w3c rules:

http://www.w3.org/TR/css3-fonts/#font-matching-algorithm

&quot;... If there are no more font families to be evaluated and no matching face has
been found, then the user agent performs a system font fallback procedure to
find the best match for the character to be rendered. The result of this
procedure may vary across user agents.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551349</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 13:57:07 -0800</bug_when>
    <thetext>Attachment 125835 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;]&quot; exit_code: 1

Total errors found: 0 in 0 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>552052</commentid>
    <comment_count>3</comment_count>
      <attachid>126065</attachid>
    <who name="Martin Jackson">mjackson220.list</who>
    <bug_when>2012-02-08 05:42:50 -0800</bug_when>
    <thetext>Created attachment 126065
Allow fontconfig to choose an appropriate font if all else fails</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552978</commentid>
    <comment_count>4</comment_count>
      <attachid>126260</attachid>
    <who name="Martin Jackson">mjackson220.list</who>
    <bug_when>2012-02-09 02:17:15 -0800</bug_when>
    <thetext>Created attachment 126260
Allow fontconfig to choose an appropriate font if all else fails</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571176</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-05 16:44:50 -0800</bug_when>
    <thetext>I appreciate this patch, but I don&apos;t quite understand it. How does FontCache::getSimilarFontPlatformData interact with the changes you made in the platform-independent code. 

Is this change testable. For GTK+ we have a very particular fontconfig environment that we&apos;ve set up for testing changes like this. Is there a page that this change affects?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571701</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Jackson">mjackson220.list</who>
    <bug_when>2012-03-06 03:17:35 -0800</bug_when>
    <thetext>(In reply to comment #5)

Hi Martin,

Thanks for getting back to me on this.

&gt; I appreciate this patch, but I don&apos;t quite understand it. How does FontCache::getSimilarFontPlatformData interact with the changes you made in the platform-independent code. 

The patch was created in response to a bug that we had internally: Arial was requested by a web page, but since we didn&apos;t have this font in$talled, we ended up getting a serif font which was dissimilar to Arial (while we had perfectly good open alternatives installed, of which fontconfig was aware).

If none of the font families in the font fallback list, as defined in the web page, could be found, getSimilarFontPlatformData is called. Previously, webkit just give up at this point and fell through to getLastResortFallbackFont, which just substitutes &apos;serif&apos; (in the freetype port at least)

I added an extra flag, m_exactFamily, to the FontDescription which indicates whether the system is allowed to substitute what it considers to be &apos;similar&apos; font families for what was requested, or whether *only* what was requested will be accepted.

In general, m_exactFamily == true (i.e. we want the *exact* font family only). Then the CSS font family fallback list can be iterated (http://www.w3.org/TR/css3-fonts/#font-matching-algorithm) correctly. In getSimilarFontPlatformData, the system has failed to find any of the fonts that were requested, and so relaxes the exact matching condition (i.e. m_exactFamily -&gt; 0) and then tries to use fontconfig to locate an appropriate replacement font for the first choice of font family as specified in the web page.

&gt; 
&gt; Is this change testable. For GTK+ we have a very particular fontconfig environment that we&apos;ve set up for testing changes like this. Is there a page that this change affects?

The change is of course testable - however because it is highly installation dependent, I didn&apos;t really know what to do. I&apos;m not familiar with how you go about this in the GTK+ port - if you can give me some pointers on how to reproduce your test setup, I&apos;ll do my best to provide a sensible test case.

Regards

Martin Jackson</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571707</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Jackson">mjackson220.list</who>
    <bug_when>2012-03-06 03:53:22 -0800</bug_when>
    <thetext>I realise that I did not update the comment in FontCacheFreeType.cpp:211 (&quot;If Fontconfig gave use a different font family ...&quot;) - I&apos;ll address this in an update to the patch once further feedback has been provided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571822</commentid>
    <comment_count>8</comment_count>
      <attachid>126260</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-06 07:13:24 -0800</bug_when>
    <thetext>Comment on attachment 126260
Allow fontconfig to choose an appropriate font if all else fails

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

Looks good, but I think a slightly different design may be in order here.

&gt; Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp:115
&gt; +    const FontFamily* family = &amp;fontDescription.family();
&gt; +    if (family-&gt;family().length())
&gt; +        result = getCachedFontData(fontDescription, family-&gt;family(), false, Retain);
&gt; +

Instead of adding the idea of an in-exact match to the platform-independent code, I think it&apos;s better to first ask Fontconfig what the proper fallback font is and then get that font explicitly from the font cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828662</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-08 10:19:11 -0800</bug_when>
    <thetext>(In reply to comment #8)

&gt; Instead of adding the idea of an in-exact match to the platform-independent code, I think it&apos;s better to first ask Fontconfig what the proper fallback font is and then get that font explicitly from the font cache.

I&apos;m also a bit surprised that the page didn&apos;t have a font selection order like: Arial, sans-serif.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110475</commentid>
    <comment_count>10</comment_count>
    <who name="Jeff Fortin">nekohayo</who>
    <bug_when>2015-07-19 09:12:37 -0700</bug_when>
    <thetext>Hi there, it is a bit unclear to me what the status of this bug/patch is.
I came here from a fairly interesting discussion on https://bugzilla.gnome.org/show_bug.cgi?id=752533

The problem is if you have this:  font-family: Arial,Helvetica,sans-serif;

Epiphany+WebKit goes through that list, and as Arial and Helvetica are not found on the system, when it hits &quot;sans-serif&quot; it then asks for GNOME&apos;s default &quot;sans&quot; font, which happens to be DejaVu Sans Book; the problem with that is that on Linux systems, there are often much better matches available, such as Liberation Sans (metrically equivalent to Arial, thus preserving the page&apos;s intended layout). So what I&apos;m suggesting is that when you hit the generic &quot;sans-serif&quot; CSS rule, you ask fc-match for the font corresponding to the first non-generic font of the list (so, in a way, a &quot;second pass&quot;). Is this what this bug report &amp; patch is about?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110478</commentid>
    <comment_count>11</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-07-19 09:25:44 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Hi there, it is a bit unclear to me what the status of this bug/patch is.
&gt; I came here from a fairly interesting discussion on
&gt; https://bugzilla.gnome.org/show_bug.cgi?id=752533
&gt; 
&gt; The problem is if you have this:  font-family: Arial,Helvetica,sans-serif;
&gt; 
&gt; Epiphany+WebKit goes through that list, and as Arial and Helvetica are not
&gt; found on the system, when it hits &quot;sans-serif&quot; it then asks for GNOME&apos;s
&gt; default &quot;sans&quot; font, which happens to be DejaVu Sans Book; the problem with
&gt; that is that on Linux systems, there are often much better matches
&gt; available, such as Liberation Sans (metrically equivalent to Arial, thus
&gt; preserving the page&apos;s intended layout). So what I&apos;m suggesting is that when
&gt; you hit the generic &quot;sans-serif&quot; CSS rule, you ask fc-match for the font
&gt; corresponding to the first non-generic font of the list (so, in a way, a
&gt; &quot;second pass&quot;). Is this what this bug report &amp; patch is about? 

I believe it doesn&apos;t ask for GNOME&apos;s default first, but WebKit&apos;s default. This can be configured using the API for GTK+ http://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html#webkit-settings-get-sans-serif-font-family and there is also a setting in Epiphany. I think that if WebKit isn&apos;t using the font from the API settings than that is a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110483</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-19 09:44:23 -0700</bug_when>
    <thetext>Epiphany sets the WebKit default to GNOME&apos;s default... by default.

Anyway, this bug only covers the case where no generic fallback (sans-serif) is in the font-family list. The case of font-family: Arial,Helvetica,sans-serif; is bug #147057, where I am pretty sure we have agreed on a solution (though the discussion occurred before I filed that bug).

In the case where sans-serif is not in the list (this bug)... after processing the entire font-family list and finding no match, there are two possibilities for what we should do: (a) allow fontconfig to match on the first font, which might return a font that&apos;s better than the browser&apos;s default -- that&apos;s what the patch in this bug implements -- or (b) use the default font always.

I&apos;ve been going back and forth on whether (a) is a good idea. Yesterday I thought &quot;if there is no generic fallback listed, we might as well perform unrestricted fontconfig matching to try to find the best font.&quot; Today I think it&apos;s better to fix bug #147057 and leave it at that: never perform fontconfig matching except for fonts that are extremely similar to each other (strongly-aliased fonts), and use our default font otherwise. That would be sufficient to fix both of these particular issues, since Arial would get matched to Liberation Sans. So I am inclined to say WONTFIX for this bug, but I will leave that choice to Martin Robinson (although maybe Martin Jackson has an opinion on this too?).

Actually, there is one more thing we should change here: the lastResortFallbackFont should be sans. It seems we use serif currently, but that&apos;s silly, it should be sans. Bug #147088.

BTW the patch status was that the general idea was approved, but not the implementation (r- means &quot;review denied&quot;). Also, I think there needs to be layout tests for this, since they would be easy to write. We have a jhbuild environment for running tests to make sure that our font settings are always the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110484</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-19 09:47:30 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I think that if WebKit isn&apos;t using the font from the API settings than that
&gt; is a bug.

That&apos;s not happening; the problem is that the default font is being used when ideally it wouldn&apos;t be.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125835</attachid>
            <date>2012-02-07 06:25:20 -0800</date>
            <delta_ts>2012-02-08 05:43:30 -0800</delta_ts>
            <desc>Allow fontconfig to choose an appropriate font if all else fails</desc>
            <filename>upstream_freetype.patch.final</filename>
            <type>text/plain</type>
            <size>4403</size>
            <attacher name="Martin Jackson">mjackson220.list</attacher>
            
              <data encoding="base64">ZGlmZiBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMjAxLDYgKzIwMSwxMCBA
QCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9
IGl0LT5zZWNvbmQ7CiAgICAgICAgIGZvdW5kUmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFy
ZXN1bHQgJiYgIWZvbnREZXNjcmlwdGlvbi51c2VFeGFjdEZhbWlseSgpKSB7CisgICAgICAgICAg
ICByZXN1bHQgPSBjcmVhdGVGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5
TmFtZSk7CisgICAgICAgICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5zZXQoa2V5LCByZXN1
bHQpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFmb3VuZFJlc3VsdCAmJiAhY2hlY2tp
bmdBbHRlcm5hdGVOYW1lKSB7CmRpZmYgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5oCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5oCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Rl
eHRSZW5kZXJpbmcoQXV0b1RleHRSZW5kZXJpbmcpCiAgICAgICAgICwgbV9pc1NwZWNpZmllZEZv
bnQoZmFsc2UpCiAgICAgICAgICwgbV9zY3JpcHQoVVNDUklQVF9DT01NT04pCisgICAgICAgICwg
bV9leGFjdEZhbWlseSh0cnVlKQogICAgIHsKICAgICB9CiAKQEAgLTE2Niw2ICsxNjcsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRXaWR0aFZhcmlhbnQoRm9udFdpZHRoVmFyaWFudCB3aWR0aFZh
cmlhbnQpIHsgbV93aWR0aFZhcmlhbnQgPSB3aWR0aFZhcmlhbnQ7IH0KICAgICB2b2lkIHNldFNj
cmlwdChVU2NyaXB0Q29kZSBzKSB7IG1fc2NyaXB0ID0gczsgfQogICAgIHZvaWQgc2V0RmVhdHVy
ZVNldHRpbmdzKFBhc3NSZWZQdHI8Rm9udEZlYXR1cmVTZXR0aW5ncz4gc2V0dGluZ3MpIHsgbV9m
ZWF0dXJlU2V0dGluZ3MgPSBzZXR0aW5nczsgfQorICAgIHZvaWQgc2V0RXhhY3RGYW1pbHkoYm9v
bCBmKSB7IG1fZXhhY3RGYW1pbHkgPSBmOyB9CisgICAgYm9vbCB1c2VFeGFjdEZhbWlseSgpIGNv
bnN0IHsgcmV0dXJuIG1fZXhhY3RGYW1pbHk7IH0KIAogcHJpdmF0ZToKICAgICBGb250RmFtaWx5
IG1fZmFtaWx5TGlzdDsgLy8gVGhlIGxpc3Qgb2YgZm9udCBmYW1pbGllcyB0byBiZSB1c2VkLgpA
QCAtMjAzLDYgKzIwNiw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV90ZXh0UmVuZGVyaW5n
IDogMjsgLy8gVGV4dFJlbmRlcmluZ01vZGUKICAgICBib29sIG1faXNTcGVjaWZpZWRGb250IDog
MTsgLy8gVHJ1ZSBpZiBhIHdlYiBwYWdlIHNwZWNpZmllcyBhIG5vbi1nZW5lcmljIGZvbnQgZmFt
aWx5IGFzIHRoZSBmaXJzdCBmb250IGZhbWlseS4KICAgICBVU2NyaXB0Q29kZSBtX3NjcmlwdDsg
Ly8gVXNlZCB0byBoZWxwIGNob29zZSBhbiBhcHByb3ByaWF0ZSBmb250IGZvciBnZW5lcmljIGZv
bnQgZmFtaWxpZXMuCisKKyAgICBib29sIG1fZXhhY3RGYW1pbHk7IC8vIElzIHRoZSBzeXN0ZW0g
YWxsb3dlZCB0byBzdWJzdGl0dXRlIGEgc2ltaWxhciBmb250IGZhbWlseT8KIH07CiAKIGlubGlu
ZSBib29sIEZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24m
IG90aGVyKSBjb25zdApAQCAtMjI5LDcgKzIzNCw4IEBAIGlubGluZSBib29sIEZvbnREZXNjcmlw
dGlvbjo6b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdAogICAg
ICAgICAmJiBtX3RleHRPcmllbnRhdGlvbiA9PSBvdGhlci5tX3RleHRPcmllbnRhdGlvbgogICAg
ICAgICAmJiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5tX3dpZHRoVmFyaWFudAogICAgICAgICAm
JiBtX3NjcmlwdCA9PSBvdGhlci5tX3NjcmlwdAotICAgICAgICAmJiBtX2ZlYXR1cmVTZXR0aW5n
cyA9PSBvdGhlci5tX2ZlYXR1cmVTZXR0aW5nczsKKyAgICAgICAgJiYgbV9mZWF0dXJlU2V0dGlu
Z3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MKKyAgICAgICAgJiYgbV9leGFjdEZhbWlseSA9
PSBvdGhlci5tX2V4YWN0RmFtaWx5OwogfQogCiB9CmRpZmYgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJl
ZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtMTAyLDcgKzEwMiwxOCBAQCBjb25zdCBTaW1wbGVG
b250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYg
Zm9udCwgY29ucwogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBs
YXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQogewotICAgIHJldHVybiAwOworICAgIC8vICBB
c2sgZm9udGNvbmZpZyB0byBmaW5kIGEgc2ltaWxhciBmb250ICh3ZSBpZ25vcmVkIGl0cyBzdWdn
ZXN0aW9ucworICAgIC8vICBlYXJsaWVyIHdoZW4gdHJhdmVyc2luZyB0aGUgQ1NTIGZhbGxiYWNr
IGxpc3QpCisKKyAgICBTaW1wbGVGb250RGF0YSogcmVzdWx0ID0gMDsKKyAgICBGb250RGVzY3Jp
cHRpb24gZm9udERlc2NyaXB0aW9uKGZvbnQuZm9udERlc2NyaXB0aW9uKCkpOworICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRFeGFjdEZhbWlseShmYWxzZSk7CisKKyAgICBjb25zdCBGb250RmFtaWx5
KiBmYW1pbHkgPSAmZm9udERlc2NyaXB0aW9uLmZhbWlseSgpOworICAgIGlmIChmYW1pbHktPmZh
bWlseSgpLmxlbmd0aCgpKQorICAgICAgICByZXN1bHQgPSBnZXRDYWNoZWRGb250RGF0YShmb250
RGVzY3JpcHRpb24sIGZhbWlseS0+ZmFtaWx5KCksIGZhbHNlLCBSZXRhaW4pOworCisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgU2hv
dWxkUmV0YWluIHNob3VsZFJldGFpbikKQEAgLTIxMSw3ICsyMjIsNyBAQCBGb250UGxhdGZvcm1E
YXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RAogICAgIC8vIElmIEZvbnRjb25maWcgZ2F2ZSB1c2UgYSBkaWZmZXJlbnQgZm9u
dCBmYW1pbHkgdGhhbiB0aGUgb25lIHdlIHJlcXVlc3RlZCwgd2Ugc2hvdWxkIGlnbm9yZSBpdAog
ICAgIC8vIGFuZCBhbGxvdyBXZWJDb3JlIHRvIGdpdmUgdXMgdGhlIG5leHQgZm9udCBvbiB0aGUg
Q1NTIGZhbGxiYWNrIGxpc3QuIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyBpZgogICAgIC8vIHRoaXMg
ZmFtaWx5IG5hbWUgaXMgYSBjb21tb25seSB1c2VkIGdlbmVyaWMgZmFtaWx5LgotICAgIGlmICgh
ZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZUFmdGVyQ29uZmlndXJhdGlvbiwgZmFtaWx5TmFt
ZUFmdGVyTWF0Y2hpbmcpCisgICAgaWYgKGZvbnREZXNjcmlwdGlvbi51c2VFeGFjdEZhbWlseSgp
ICYmICFlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lQWZ0ZXJDb25maWd1cmF0aW9uLCBmYW1p
bHlOYW1lQWZ0ZXJNYXRjaGluZykKICAgICAgICAgJiYgIShlcXVhbElnbm9yaW5nQ2FzZShmYW1p
bHlOYW1lU3RyaW5nLCAic2FucyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWVTdHJp
bmcsICJzYW5zLXNlcmlmIikKICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlO
YW1lU3RyaW5nLCAic2VyaWYiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lU3RyaW5n
LCAibW9ub3NwYWNlIikKICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1l
U3RyaW5nLCAiZmFudGFzeSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWVTdHJpbmcs
ICJjdXJzaXZlIikpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126065</attachid>
            <date>2012-02-08 05:42:50 -0800</date>
            <delta_ts>2012-02-08 13:17:55 -0800</delta_ts>
            <desc>Allow fontconfig to choose an appropriate font if all else fails</desc>
            <filename>freetype_fallback.patch</filename>
            <type>text/plain</type>
            <size>4371</size>
            <attacher name="Martin Jackson">mjackson220.list</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAkocmV2aXNpb24gMTA3MDc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYgKzIwMSwxMCBAQCBGb250UGxh
dGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvCiAgICAgfSBlbHNlIHsKICAgICAgICAg
cmVzdWx0ID0gaXQtPnNlY29uZDsKICAgICAgICAgZm91bmRSZXN1bHQgPSB0cnVlOworICAgICAg
ICBpZiAoIXJlc3VsdCAmJiAhZm9udERlc2NyaXB0aW9uLnVzZUV4YWN0RmFtaWx5KCkpIHsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9u
LCBmYW1pbHlOYW1lKTsKKyAgICAgICAgICAgIGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPnNldChr
ZXksIHJlc3VsdCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIWZvdW5kUmVzdWx0ICYm
ICFjaGVja2luZ0FsdGVybmF0ZU5hbWUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCShyZXZpc2lvbiAxMDcwNzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV90ZXh0UmVu
ZGVyaW5nKEF1dG9UZXh0UmVuZGVyaW5nKQogICAgICAgICAsIG1faXNTcGVjaWZpZWRGb250KGZh
bHNlKQogICAgICAgICAsIG1fc2NyaXB0KFVTQ1JJUFRfQ09NTU9OKQorICAgICAgICAsIG1fZXhh
Y3RGYW1pbHkodHJ1ZSkKICAgICB7CiAgICAgfQogCkBAIC0xNjYsNiArMTY3LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0V2lkdGhWYXJpYW50KEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50
KSB7IG1fd2lkdGhWYXJpYW50ID0gd2lkdGhWYXJpYW50OyB9CiAgICAgdm9pZCBzZXRTY3JpcHQo
VVNjcmlwdENvZGUgcykgeyBtX3NjcmlwdCA9IHM7IH0KICAgICB2b2lkIHNldEZlYXR1cmVTZXR0
aW5ncyhQYXNzUmVmUHRyPEZvbnRGZWF0dXJlU2V0dGluZ3M+IHNldHRpbmdzKSB7IG1fZmVhdHVy
ZVNldHRpbmdzID0gc2V0dGluZ3M7IH0KKyAgICB2b2lkIHNldEV4YWN0RmFtaWx5KGJvb2wgZikg
eyBtX2V4YWN0RmFtaWx5ID0gZjsgfQorICAgIGJvb2wgdXNlRXhhY3RGYW1pbHkoKSBjb25zdCB7
IHJldHVybiBtX2V4YWN0RmFtaWx5OyB9CiAKIHByaXZhdGU6CiAgICAgRm9udEZhbWlseSBtX2Zh
bWlseUxpc3Q7IC8vIFRoZSBsaXN0IG9mIGZvbnQgZmFtaWxpZXMgdG8gYmUgdXNlZC4KQEAgLTIw
Myw2ICsyMDYsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGV4dFJlbmRlcmluZyA6IDI7
IC8vIFRleHRSZW5kZXJpbmdNb2RlCiAgICAgYm9vbCBtX2lzU3BlY2lmaWVkRm9udCA6IDE7IC8v
IFRydWUgaWYgYSB3ZWIgcGFnZSBzcGVjaWZpZXMgYSBub24tZ2VuZXJpYyBmb250IGZhbWlseSBh
cyB0aGUgZmlyc3QgZm9udCBmYW1pbHkuCiAgICAgVVNjcmlwdENvZGUgbV9zY3JpcHQ7IC8vIFVz
ZWQgdG8gaGVscCBjaG9vc2UgYW4gYXBwcm9wcmlhdGUgZm9udCBmb3IgZ2VuZXJpYyBmb250IGZh
bWlsaWVzLgorCisgICAgYm9vbCBtX2V4YWN0RmFtaWx5OyAvLyBJcyB0aGUgc3lzdGVtIGFsbG93
ZWQgdG8gc3Vic3RpdHV0ZSBhIHNpbWlsYXIgZm9udCBmYW1pbHk/CiB9OwogCiBpbmxpbmUgYm9v
bCBGb250RGVzY3JpcHRpb246Om9wZXJhdG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uJiBvdGhl
cikgY29uc3QKQEAgLTIyOSw3ICsyMzQsOCBAQCBpbmxpbmUgYm9vbCBGb250RGVzY3JpcHRpb246
Om9wZXJhdG9yPT0oCiAgICAgICAgICYmIG1fdGV4dE9yaWVudGF0aW9uID09IG90aGVyLm1fdGV4
dE9yaWVudGF0aW9uCiAgICAgICAgICYmIG1fd2lkdGhWYXJpYW50ID09IG90aGVyLm1fd2lkdGhW
YXJpYW50CiAgICAgICAgICYmIG1fc2NyaXB0ID09IG90aGVyLm1fc2NyaXB0Ci0gICAgICAgICYm
IG1fZmVhdHVyZVNldHRpbmdzID09IG90aGVyLm1fZmVhdHVyZVNldHRpbmdzOworICAgICAgICAm
JiBtX2ZlYXR1cmVTZXR0aW5ncyA9PSBvdGhlci5tX2ZlYXR1cmVTZXR0aW5ncworICAgICAgICAm
JiBtX2V4YWN0RmFtaWx5ID09IG90aGVyLm1fZXhhY3RGYW1pbHk7CiB9CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAJKHJldmlzaW9uIDEwNzA3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiwxOCBAQCBjb25zdCBTaW1wbGVGb250RGF0YSog
Rm9udENhY2hlOjpnZXRGb250CiAKIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldFNpbWls
YXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCiB7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgLy8gIEFzayBmb250Y29uZmlnIHRvIGZpbmQgYSBzaW1pbGFyIGZvbnQgKHdlIGlnbm9yZWQg
aXRzIHN1Z2dlc3Rpb25zCisgICAgLy8gIGVhcmxpZXIgd2hlbiB0cmF2ZXJzaW5nIHRoZSBDU1Mg
ZmFsbGJhY2sgbGlzdCkKKworICAgIFNpbXBsZUZvbnREYXRhKiByZXN1bHQgPSAwOworICAgIEZv
bnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24oZm9udC5mb250RGVzY3JpcHRpb24oKSk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldEV4YWN0RmFtaWx5KGZhbHNlKTsKKworICAgIGNvbnN0IEZv
bnRGYW1pbHkqIGZhbWlseSA9ICZmb250RGVzY3JpcHRpb24uZmFtaWx5KCk7CisgICAgaWYgKGZh
bWlseS0+ZmFtaWx5KCkubGVuZ3RoKCkpCisgICAgICAgIHJlc3VsdCA9IGdldENhY2hlZEZvbnRE
YXRhKGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5LT5mYW1pbHkoKSwgZmFsc2UsIFJldGFpbik7CisK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRM
YXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0
aW9uLCBTaG91bGRSZXRhaW4gc2hvdWxkUmV0YWluKQpAQCAtMjExLDcgKzIyMiw3IEBAIEZvbnRQ
bGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFAKICAgICAvLyBJZiBGb250Y29uZmln
IGdhdmUgdXNlIGEgZGlmZmVyZW50IGZvbnQgZmFtaWx5IHRoYW4gdGhlIG9uZSB3ZSByZXF1ZXN0
ZWQsIHdlIHNob3VsZCBpZ25vcmUgaXQKICAgICAvLyBhbmQgYWxsb3cgV2ViQ29yZSB0byBnaXZl
IHVzIHRoZSBuZXh0IGZvbnQgb24gdGhlIENTUyBmYWxsYmFjayBsaXN0LiBUaGUgb25seSBleGNl
cHRpb24gaXMgaWYKICAgICAvLyB0aGlzIGZhbWlseSBuYW1lIGlzIGEgY29tbW9ubHkgdXNlZCBn
ZW5lcmljIGZhbWlseS4KLSAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWVBZnRl
ckNvbmZpZ3VyYXRpb24sIGZhbWlseU5hbWVBZnRlck1hdGNoaW5nKQorICAgIGlmIChmb250RGVz
Y3JpcHRpb24udXNlRXhhY3RGYW1pbHkoKSAmJiAhZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFt
ZUFmdGVyQ29uZmlndXJhdGlvbiwgZmFtaWx5TmFtZUFmdGVyTWF0Y2hpbmcpCiAgICAgICAgICYm
ICEoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZVN0cmluZywgInNhbnMiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShmYW1pbHlOYW1lU3RyaW5nLCAic2Fucy1zZXJpZiIpCiAgICAgICAgICAgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZVN0cmluZywgInNlcmlmIikgfHwgZXF1YWxJZ25v
cmluZ0Nhc2UoZmFtaWx5TmFtZVN0cmluZywgIm1vbm9zcGFjZSIpCiAgICAgICAgICAgfHwgZXF1
YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZVN0cmluZywgImZhbnRhc3kiKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZShmYW1pbHlOYW1lU3RyaW5nLCAiY3Vyc2l2ZSIpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126260</attachid>
            <date>2012-02-09 02:17:15 -0800</date>
            <delta_ts>2012-03-06 07:13:24 -0800</delta_ts>
            <desc>Allow fontconfig to choose an appropriate font if all else fails</desc>
            <filename>freetype_fallback.patch</filename>
            <type>text/plain</type>
            <size>5928</size>
            <attacher name="Martin Jackson">mjackson220.list</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTA5ICBNYXJ0aW4g
SmFja3NvbiAgPG1qYWNrc29uMjIwLmxpc3RAZ21haWwuY29tPgorCisgICAgICAgIGZyZWV0eXBl
IHBvcnQ6IGZvbnQgZmFsbGJhY2sgbWVjaGFuaXNtIGNhbiB0cnkgaGFyZGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzQzNworCisgICAgICAgIEFs
bG93IHRoZSBzeXN0ZW0gdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgcmVxdWVzdGVkIGZvbnQgaWYg
bm90aGluZyBhcHByb3ByaWF0ZSB3YXMKKyAgICAgICAgZm91bmQgaW4gdGhlIENTUyBmb250IGZh
bWlseSBsaXN0LCB1c2luZyBmb250Y29uZmlnLiBUaGlzIHdpbGwgb25seSBoYXBwZW4gaWYgbm9u
ZQorICAgICAgICBvZiB0aGUgZm9udHMgc3BlY2lmaWVkIGluIHRoZSBDU1MgbGlzdCBjb3VsZCBi
ZSB1c2VkLiBUaGlzIGlzIGluIGFjY29yZGFuY2Ugd2l0aAorICAgICAgICB0aGUgdzNjIHJ1bGVz
IChodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZvbnRzLyNmb250LW1hdGNoaW5nLWFsZ29yaXRo
bSkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIChiZWhhdmlvdXIgaXMgaGlnaGx5IGRlcGVuZGVudCBvbiBpbnN0YWxsZWQgc3lz
dGVtKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb250RGVzY3JpcHRpb246OkZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RGVzY3JpcHRpb246OnNldEV4YWN0RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnREZXNjcmlwdGlvbjo6dXNlRXhhY3RGYW1pbHkpOgorICAgICAgICAoRm9udERlc2NyaXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgor
CiAyMDEyLTAyLTA5ICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcjogbW92ZSBwYXJhbWV0
ZXJzIGludG8gYSBzdHJ1Y3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmNwcAkocmV2aXNpb24gMTA3MTk1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYg
KzIwMSwxMCBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvCiAgICAg
fSBlbHNlIHsKICAgICAgICAgcmVzdWx0ID0gaXQtPnNlY29uZDsKICAgICAgICAgZm91bmRSZXN1
bHQgPSB0cnVlOworICAgICAgICBpZiAoIXJlc3VsdCAmJiAhZm9udERlc2NyaXB0aW9uLnVzZUV4
YWN0RmFtaWx5KCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURh
dGEoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKKyAgICAgICAgICAgIGdGb250UGxhdGZv
cm1EYXRhQ2FjaGUtPnNldChrZXksIHJlc3VsdCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAoIWZvdW5kUmVzdWx0ICYmICFjaGVja2luZ0FsdGVybmF0ZU5hbWUpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCShy
ZXZpc2lvbiAxMDcxOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RGVzY3JpcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICwgbV90ZXh0UmVuZGVyaW5nKEF1dG9UZXh0UmVuZGVyaW5nKQogICAgICAgICAsIG1f
aXNTcGVjaWZpZWRGb250KGZhbHNlKQogICAgICAgICAsIG1fc2NyaXB0KFVTQ1JJUFRfQ09NTU9O
KQorICAgICAgICAsIG1fZXhhY3RGYW1pbHkodHJ1ZSkKICAgICB7CiAgICAgfQogCkBAIC0xNjYs
NiArMTY3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lkdGhWYXJpYW50KEZvbnRXaWR0aFZh
cmlhbnQgd2lkdGhWYXJpYW50KSB7IG1fd2lkdGhWYXJpYW50ID0gd2lkdGhWYXJpYW50OyB9CiAg
ICAgdm9pZCBzZXRTY3JpcHQoVVNjcmlwdENvZGUgcykgeyBtX3NjcmlwdCA9IHM7IH0KICAgICB2
b2lkIHNldEZlYXR1cmVTZXR0aW5ncyhQYXNzUmVmUHRyPEZvbnRGZWF0dXJlU2V0dGluZ3M+IHNl
dHRpbmdzKSB7IG1fZmVhdHVyZVNldHRpbmdzID0gc2V0dGluZ3M7IH0KKyAgICB2b2lkIHNldEV4
YWN0RmFtaWx5KGJvb2wgZikgeyBtX2V4YWN0RmFtaWx5ID0gZjsgfQorICAgIGJvb2wgdXNlRXhh
Y3RGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX2V4YWN0RmFtaWx5OyB9CiAKIHByaXZhdGU6CiAg
ICAgRm9udEZhbWlseSBtX2ZhbWlseUxpc3Q7IC8vIFRoZSBsaXN0IG9mIGZvbnQgZmFtaWxpZXMg
dG8gYmUgdXNlZC4KQEAgLTIwMyw2ICsyMDYsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
dGV4dFJlbmRlcmluZyA6IDI7IC8vIFRleHRSZW5kZXJpbmdNb2RlCiAgICAgYm9vbCBtX2lzU3Bl
Y2lmaWVkRm9udCA6IDE7IC8vIFRydWUgaWYgYSB3ZWIgcGFnZSBzcGVjaWZpZXMgYSBub24tZ2Vu
ZXJpYyBmb250IGZhbWlseSBhcyB0aGUgZmlyc3QgZm9udCBmYW1pbHkuCiAgICAgVVNjcmlwdENv
ZGUgbV9zY3JpcHQ7IC8vIFVzZWQgdG8gaGVscCBjaG9vc2UgYW4gYXBwcm9wcmlhdGUgZm9udCBm
b3IgZ2VuZXJpYyBmb250IGZhbWlsaWVzLgorCisgICAgYm9vbCBtX2V4YWN0RmFtaWx5OyAvLyBJ
cyB0aGUgc3lzdGVtIGFsbG93ZWQgdG8gc3Vic3RpdHV0ZSBhIHNpbWlsYXIgZm9udCBmYW1pbHk/
CiB9OwogCiBpbmxpbmUgYm9vbCBGb250RGVzY3JpcHRpb246Om9wZXJhdG9yPT0oY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QKQEAgLTIyOSw3ICsyMzQsOCBAQCBpbmxpbmUgYm9v
bCBGb250RGVzY3JpcHRpb246Om9wZXJhdG9yPT0oCiAgICAgICAgICYmIG1fdGV4dE9yaWVudGF0
aW9uID09IG90aGVyLm1fdGV4dE9yaWVudGF0aW9uCiAgICAgICAgICYmIG1fd2lkdGhWYXJpYW50
ID09IG90aGVyLm1fd2lkdGhWYXJpYW50CiAgICAgICAgICYmIG1fc2NyaXB0ID09IG90aGVyLm1f
c2NyaXB0Ci0gICAgICAgICYmIG1fZmVhdHVyZVNldHRpbmdzID09IG90aGVyLm1fZmVhdHVyZVNl
dHRpbmdzOworICAgICAgICAmJiBtX2ZlYXR1cmVTZXR0aW5ncyA9PSBvdGhlci5tX2ZlYXR1cmVT
ZXR0aW5ncworICAgICAgICAmJiBtX2V4YWN0RmFtaWx5ID09IG90aGVyLm1fZXhhY3RGYW1pbHk7
CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAJKHJldmlzaW9uIDEw
NzE5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiwxOCBAQCBjb25z
dCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250CiAKIFNpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgLy8gIEFzayBmb250Y29uZmlnIHRvIGZpbmQgYSBzaW1pbGFy
IGZvbnQgKHdlIGlnbm9yZWQgaXRzIHN1Z2dlc3Rpb25zCisgICAgLy8gIGVhcmxpZXIgd2hlbiB0
cmF2ZXJzaW5nIHRoZSBDU1MgZmFsbGJhY2sgbGlzdCkKKworICAgIFNpbXBsZUZvbnREYXRhKiBy
ZXN1bHQgPSAwOworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24oZm9udC5mb250
RGVzY3JpcHRpb24oKSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEV4YWN0RmFtaWx5KGZhbHNl
KTsKKworICAgIGNvbnN0IEZvbnRGYW1pbHkqIGZhbWlseSA9ICZmb250RGVzY3JpcHRpb24uZmFt
aWx5KCk7CisgICAgaWYgKGZhbWlseS0+ZmFtaWx5KCkubGVuZ3RoKCkpCisgICAgICAgIHJlc3Vs
dCA9IGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5LT5mYW1pbHkoKSwg
ZmFsc2UsIFJldGFpbik7CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBTaW1wbGVGb250RGF0
YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uLCBTaG91bGRSZXRhaW4gc2hvdWxkUmV0YWluKQpAQCAtMjEx
LDcgKzIyMiw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFAKICAg
ICAvLyBJZiBGb250Y29uZmlnIGdhdmUgdXNlIGEgZGlmZmVyZW50IGZvbnQgZmFtaWx5IHRoYW4g
dGhlIG9uZSB3ZSByZXF1ZXN0ZWQsIHdlIHNob3VsZCBpZ25vcmUgaXQKICAgICAvLyBhbmQgYWxs
b3cgV2ViQ29yZSB0byBnaXZlIHVzIHRoZSBuZXh0IGZvbnQgb24gdGhlIENTUyBmYWxsYmFjayBs
aXN0LiBUaGUgb25seSBleGNlcHRpb24gaXMgaWYKICAgICAvLyB0aGlzIGZhbWlseSBuYW1lIGlz
IGEgY29tbW9ubHkgdXNlZCBnZW5lcmljIGZhbWlseS4KLSAgICBpZiAoIWVxdWFsSWdub3JpbmdD
YXNlKGZhbWlseU5hbWVBZnRlckNvbmZpZ3VyYXRpb24sIGZhbWlseU5hbWVBZnRlck1hdGNoaW5n
KQorICAgIGlmIChmb250RGVzY3JpcHRpb24udXNlRXhhY3RGYW1pbHkoKSAmJiAhZXF1YWxJZ25v
cmluZ0Nhc2UoZmFtaWx5TmFtZUFmdGVyQ29uZmlndXJhdGlvbiwgZmFtaWx5TmFtZUFmdGVyTWF0
Y2hpbmcpCiAgICAgICAgICYmICEoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZVN0cmluZywg
InNhbnMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lU3RyaW5nLCAic2Fucy1zZXJp
ZiIpCiAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZVN0cmluZywgInNl
cmlmIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZVN0cmluZywgIm1vbm9zcGFjZSIp
CiAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZVN0cmluZywgImZhbnRh
c3kiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lU3RyaW5nLCAiY3Vyc2l2ZSIpKSkK
</data>
<flag name="review"
          id="128029"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>