<?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>189541</bug_id>
          
          <creation_ts>2018-09-12 02:50:08 -0700</creation_ts>
          <short_desc>Build error in FontDescriptionKey::computeHash when compiling FontTaggedSettings and FontCascadeFonts together</short_desc>
          <delta_ts>2018-09-14 11:34:32 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>188043</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>lforschler</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1458911</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-12 02:50:08 -0700</bug_when>
    <thetext>Applying attachment 349536, I get the errors below on macOS and iOS ports. Since attachment 349536 is unrelated to font stuff I suspect this is one more instance of UnifiedBuild rotating. A workaround is to move the implementation from the header to the cpp file.

In file included from /Users/fred/WebKit/WebKitBuild/Debug/DerivedSources/WebCore/unified-sources/UnifiedSource321.cpp:8:
./platform/graphics/FontTaggedSettings.cpp:36:31: error: explicit specialization
      of &apos;hash&apos; after instantiation
unsigned FontFeatureSettings::hash() const
                              ^
In file included from /Users/fred/WebKit/WebKitBuild/Debug/DerivedSources/WebCore/unified-sources/UnifiedSource321.cpp:1:
In file included from ./platform/graphics/FontCascadeFonts.cpp:32:
./platform/graphics/FontCache.h:117:38: note: implicit instantiation first
      required here
        hasher.add(m_featureSettings.hash());
                                     ^
In file included from /Users/fred/WebKit/WebKitBuild/Debug/DerivedSources/WebCore/unified-sources/UnifiedSource321.cpp:8:
./platform/graphics/FontTaggedSettings.cpp:48:33: error: explicit specialization
      of &apos;hash&apos; after instantiation
unsigned FontVariationSettings::hash() const
                                ^
In file included from /Users/fred/WebKit/WebKitBuild/Debug/DerivedSources/WebCore/unified-sources/UnifiedSource321.cpp:1:
In file included from ./platform/graphics/FontCascadeFonts.cpp:32:
./platform/graphics/FontCache.h:119:40: note: implicit instantiation first
      required here
        hasher.add(m_variationSettings.hash());
                                       ^
2 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458912</commentid>
    <comment_count>1</comment_count>
      <attachid>349537</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-12 03:09:22 -0700</bug_when>
    <thetext>Created attachment 349537
Patch (Move FontDescriptionKey::computeHash into the corresponding implementation file + ALWAYS_INLINE tag)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459023</commentid>
    <comment_count>2</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-12 11:32:30 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #15)
&gt; Comment on attachment 349552 [details]
&gt; Patch
&gt; 
&gt; We often inline functions for performance, and fonts are used pretty often.
&gt; Is this a performance regression?

ALWAYS_INLINE failed to build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459024</commentid>
    <comment_count>3</comment_count>
      <attachid>349566</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-12 11:37:37 -0700</bug_when>
    <thetext>Created attachment 349566
Patch (Move FontDescriptionKey::computeHash into the corresponding implementation file + inline tag)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459067</commentid>
    <comment_count>4</comment_count>
      <attachid>349566</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-12 13:21:01 -0700</bug_when>
    <thetext>Comment on attachment 349566
Patch (Move FontDescriptionKey::computeHash into the corresponding implementation file + inline tag)

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

&gt; Source/WebCore/platform/graphics/FontCache.h:107
&gt; +    inline unsigned computeHash() const;

This &quot;inline&quot; doesn&apos;t do anything any more.  Is computeHash only used from within FontCache.cpp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459255</commentid>
    <comment_count>5</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-12 21:39:15 -0700</bug_when>
    <thetext>For the record, my initial attempt was in https://bugs.webkit.org/show_bug.cgi?id=185087#c14</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459309</commentid>
    <comment_count>6</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-13 03:05:01 -0700</bug_when>
    <thetext>Just to complete the description of the bug, the unified build content is:

#include &quot;platform/graphics/FontCascadeFonts.cpp&quot;
#include &quot;platform/graphics/FontDescription.cpp&quot;
#include &quot;platform/graphics/FontFamilySpecificationNull.cpp&quot;
#include &quot;platform/graphics/FontGenericFamilies.cpp&quot;
#include &quot;platform/graphics/FontPlatformData.cpp&quot;
#include &quot;platform/graphics/FontRanges.cpp&quot;
#include &quot;platform/graphics/FontSelectionAlgorithm.cpp&quot;
#include &quot;platform/graphics/FontTaggedSettings.cpp&quot;

So the implicit instantiation happens in FontCache.h (included by FontCascadeFonts.cpp) before the explicit specialization (in FontTaggedSettings.cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459317</commentid>
    <comment_count>7</comment_count>
      <attachid>349651</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-13 03:58:45 -0700</bug_when>
    <thetext>Created attachment 349651
Patch (Move FontDescriptionKey::computeHash into the corresponding implementation file)

This is attachment 349552 (attached to the wrong bug) which did pass EWS but does not do any inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459345</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-13 07:07:22 -0700</bug_when>
    <thetext>A template function should be defined in header, not in a cpp file.
FontFeatureSettings::hash() should be defined in FontTaggedSettings class definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459377</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-13 09:09:16 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #8)
&gt; A template function should be defined in header, not in a cpp file.
&gt; FontFeatureSettings::hash() should be defined in FontTaggedSettings class
&gt; definition.

You&apos;re absolutely right.  We should move FontFeatureSettings::hash and FontVariationSettings::hash to a header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459710</commentid>
    <comment_count>10</comment_count>
      <attachid>349755</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-14 02:38:30 -0700</bug_when>
    <thetext>Created attachment 349755
Patch (move template functions to header)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459727</commentid>
    <comment_count>11</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-14 06:45:26 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #8)
&gt; A template function should be defined in header, not in a cpp file.
&gt; FontFeatureSettings::hash() should be defined in FontTaggedSettings class
&gt; definition.

(In reply to Alex Christensen from comment #9)
&gt; (In reply to Fujii Hironori from comment #8)
&gt; &gt; A template function should be defined in header, not in a cpp file.
&gt; &gt; FontFeatureSettings::hash() should be defined in FontTaggedSettings class
&gt; &gt; definition.
&gt; 
&gt; You&apos;re absolutely right.  We should move FontFeatureSettings::hash and
&gt; FontVariationSettings::hash to a header.

Thanks for the suggestion. I tried that in attachment 349755 but as you can see linking fails with duplicate symbols. I can probably avoid this by setting the functions as inline but anyway I realize this is not relevant here. These two functions are already fully specialized so they are not template functions!

The issue in comment 0 is &quot;Explicit specialization must be declared before the first use that would cause implicit instantiation, in every translation unit where such use occurs&quot; [1].

The problem is that unified build may put FontCache.h and FontTaggedSettings.cpp in the same unit. This can be avoided by moving FontDescriptionKey::computeHash to FontCache.cpp as done in attachment 349651 but it could really still be possible that unified build puts FontCache.cpp and FontTaggedSettings.cpp in the same unit... So my guess is that the proper solution is to isolate FontTaggedSettings.cpp as suggested by Michael on webkit-dev.

[1] https://en.cppreference.com/w/cpp/language/template_specialization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459728</commentid>
    <comment_count>12</comment_count>
      <attachid>349758</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-09-14 07:36:07 -0700</bug_when>
    <thetext>Created attachment 349758
Patch (declare fully specialized functions in FontTaggedSetting.h)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459820</commentid>
    <comment_count>13</comment_count>
      <attachid>349758</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-14 11:33:53 -0700</bug_when>
    <thetext>Comment on attachment 349758
Patch (declare fully specialized functions in FontTaggedSetting.h)

Clearing flags on attachment: 349758

Committed r236013: &lt;https://trac.webkit.org/changeset/236013&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459821</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-14 11:33:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459823</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-14 11:34:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/44463595&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349537</attachid>
            <date>2018-09-12 03:09:22 -0700</date>
            <delta_ts>2018-09-14 02:45:42 -0700</delta_ts>
            <desc>Patch (Move FontDescriptionKey::computeHash into the corresponding implementation file + ALWAYS_INLINE tag)</desc>
            <filename>0001-bug-189541.patch</filename>
            <type>text/plain</type>
            <size>3758</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA2ZTc5ZDgyMDRmNjJjNzRjZWQ1OGI1ODU4MWI4Y2UwOWU4ZjMwYTZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmd2FuZ0BpZ2FsaWEuY29tPgpEYXRl
OiBXZWQsIDEyIFNlcCAyMDE4IDEyOjA1OjQ4ICswMjAwClN1YmplY3Q6IFtQQVRDSCB4c2VydmVy
XSBidWcgMTg5NTQxCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAgICB8IDE3ICsrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCAgfCAxNyArLS0tLS0tLS0tLS0tLS0t
LQogMyBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZTNjZjI5MmFlYjguLjEwODJiYzVhMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTgtMDktMTIgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgor
CisgICAgICAgIE1vdmUgRm9udERlc2NyaXB0aW9uS2V5Ojpjb21wdXRlSGFzaCBpbnRvIHRoZSBj
b3JyZXNwb25kaW5nIGltcGxlbWVudGF0aW9uIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbnREZXNjcmlwdGlvbktleTo6Y29tcHV0ZUhhc2gg
cmVxdWlyZXMgaW1wbGljaXQgaW5zdGFudGlhdGlvbiBvZiB0aGUgRm9udFRhZ2dlZFNldHRpbmdz
IHRlbXBsYXRlLiBTaW5jZSB0aGUKKyAgICAgICAgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgZGly
ZWN0bHkgaW4gdGhlIGhlYWRlciwgdGhpcyBpbnN0YW50aWF0aW9uIG1heSBoYXBwZW4gYmVmb3Jl
IEZvbnRUYWdnZWRTZXR0aW5nczo6aGFzaCgpIGlzCisgICAgICAgIGFjdHVhbGx5IHNwZWNpYWxp
emVkIGluIEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwIG9yIEZvbnRWYXJpYXRpb25TZXR0aW5ncy5j
cHAuIFRvIGF2b2lkIGNvbXBpbGVyIGVycm9ycywgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9u
IGlzIG1vdmVkIGludG8gRm9udENhY2hlLmNwcCA7IHdoaWxlIHN0aWxsIG1hcmtpbmcgdGhlIGZ1
bmN0aW9uIGFzIEFMV0FZU19JTkxJTkUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWhhdmlv
ciB1bmNoYW5nZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5Ojpjb21wdXRlSGFzaCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6OmNvbXB1dGVIYXNoIGNvbnN0KTogRGVsZXRlZC4K
KwogMjAxOC0wOS0xMSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmVmYWN0b3IgZmlsdGVyIGxpc3QgY2hlY2tpbmcgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggNTg3NzNiZTczYzIuLmE3YjFk
YTdiNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHAKQEAgLTQ4OCw0ICs0ODgsMjEgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c2ltaWxh
ckZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIH0KICNl
bmRpZgogCitBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEZvbnREZXNjcmlwdGlvbktleTo6Y29tcHV0
ZUhhc2goKSBjb25zdAoreworICAgIEludGVnZXJIYXNoZXIgaGFzaGVyOworICAgIGhhc2hlci5h
ZGQobV9zaXplKTsKKyAgICBoYXNoZXIuYWRkKG1fZm9udFNlbGVjdGlvblJlcXVlc3Qud2VpZ2h0
KTsKKyAgICBoYXNoZXIuYWRkKG1fZm9udFNlbGVjdGlvblJlcXVlc3Qud2lkdGgpOworICAgIGhh
c2hlci5hZGQobV9mb250U2VsZWN0aW9uUmVxdWVzdC5zbG9wZS52YWx1ZV9vcihub3JtYWxJdGFs
aWNWYWx1ZSgpKSk7CisgICAgaGFzaGVyLmFkZChtX2xvY2FsZS5leGlzdGluZ0hhc2goKSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBmbGFnSXRlbSA6IG1fZmxhZ3MpCisgICAgICAgIGhhc2hlci5hZGQo
ZmxhZ0l0ZW0pOworICAgIGhhc2hlci5hZGQobV9mZWF0dXJlU2V0dGluZ3MuaGFzaCgpKTsKKyNp
ZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQorICAgIGhhc2hlci5hZGQobV92YXJpYXRpb25TZXR0
aW5ncy5oYXNoKCkpOworI2VuZGlmCisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmgKaW5kZXggODU2NGRiOWMxZTAuLmMzNTRhOTAxMTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtMTA0LDIyICsxMDQsNyBA
QCBzdHJ1Y3QgRm9udERlc2NyaXB0aW9uS2V5IHsKIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NpemUgPT0gY0hhc2hUYWJsZURlbGV0ZWRTaXpl
OyB9CiAKLSAgICBpbmxpbmUgdW5zaWduZWQgY29tcHV0ZUhhc2goKSBjb25zdAotICAgIHsKLSAg
ICAgICAgSW50ZWdlckhhc2hlciBoYXNoZXI7Ci0gICAgICAgIGhhc2hlci5hZGQobV9zaXplKTsK
LSAgICAgICAgaGFzaGVyLmFkZChtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndlaWdodCk7Ci0gICAg
ICAgIGhhc2hlci5hZGQobV9mb250U2VsZWN0aW9uUmVxdWVzdC53aWR0aCk7Ci0gICAgICAgIGhh
c2hlci5hZGQobV9mb250U2VsZWN0aW9uUmVxdWVzdC5zbG9wZS52YWx1ZV9vcihub3JtYWxJdGFs
aWNWYWx1ZSgpKSk7Ci0gICAgICAgIGhhc2hlci5hZGQobV9sb2NhbGUuZXhpc3RpbmdIYXNoKCkp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGZsYWdJdGVtIDogbV9mbGFncykKLSAgICAgICAgICAg
IGhhc2hlci5hZGQoZmxhZ0l0ZW0pOwotICAgICAgICBoYXNoZXIuYWRkKG1fZmVhdHVyZVNldHRp
bmdzLmhhc2goKSk7Ci0jaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKLSAgICAgICAgaGFzaGVy
LmFkZChtX3ZhcmlhdGlvblNldHRpbmdzLmhhc2goKSk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJu
IGhhc2hlci5oYXNoKCk7Ci0gICAgfQorICAgIHVuc2lnbmVkIGNvbXB1dGVIYXNoKCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDI+IG1ha2VGbGFn
c0tleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQotLSAKMi4xOC4wCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349566</attachid>
            <date>2018-09-12 11:37:37 -0700</date>
            <delta_ts>2018-09-14 02:45:23 -0700</delta_ts>
            <desc>Patch (Move FontDescriptionKey::computeHash into the corresponding implementation file + inline tag)</desc>
            <filename>bug-189541-20180912203736.patch</filename>
            <type>text/plain</type>
            <size>3566</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVjODMzYWNmZDUxOTY3
N2FiZDc2YWE4ZjAwMGUyNjUzOTBlNjNkYi4uYWJmNzQ1NjczZjNkNTUyMDkwOGRkNWQ5ZDMxOTAz
NDhkZDBkN2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTEyICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnREZXNjcmlw
dGlvbktleTo6Y29tcHV0ZUhhc2ggaW50byB0aGUgY29ycmVzcG9uZGluZyBpbXBsZW1lbnRhdGlv
biBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODk1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
b250RGVzY3JpcHRpb25LZXk6OmNvbXB1dGVIYXNoIHJlcXVpcmVzIGltcGxpY2l0IGluc3RhbnRp
YXRpb24gb2YgdGhlIEZvbnRUYWdnZWRTZXR0aW5ncyB0ZW1wbGF0ZS4gU2luY2UgdGhlCisgICAg
ICAgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIHRoZSBoZWFkZXIsIHRoaXMg
aW5zdGFudGlhdGlvbiBtYXkgaGFwcGVuIGJlZm9yZSBGb250VGFnZ2VkU2V0dGluZ3M6Omhhc2go
KSBpcworICAgICAgICBhY3R1YWxseSBzcGVjaWFsaXplZCBpbiBGb250RmVhdHVyZVNldHRpbmdz
LmNwcCBvciBGb250VmFyaWF0aW9uU2V0dGluZ3MuY3BwLiBUbyBhdm9pZCBjb21waWxlciBlcnJv
cnMsIHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBpcyBtb3ZlZCBpbnRvIEZvbnRDYWNoZS5j
cHAgOyB3aGlsZSBzdGlsbCBtYXJraW5nIHRoZSBmdW5jdGlvbiBhcyBpbmxpbmUuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBiZWhhdmlvciB1bmNoYW5nZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uS2V5Ojpjb21wdXRlSGFzaCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6OmNvbXB1
dGVIYXNoIGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOC0wOS0xMiAgUGFibG8gU2FhdmVkcmEgIDxw
c2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBMaW5raW5nIGFnYWluc3QgbGliV1BFV2Vi
S2l0LTAuMS5zbyBpcyBub3QgcG9zaWJsZSB3aGVuIFdQRSBpcyBidWlsZCB3aXRoIEVOQUJMRV9W
SURFTz1PRkYgYW5kIEVOQUJMRV9XRUJfQVVESU89T0ZGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCA1ODc3M2JlNzNjMjZjMzc5MTM5ODA5
MGJkNTQwYjNhOTIwYWQ1NmJmLi4yZGRkM2NlODE5YmRkY2YxYzI0YWM2MmY3NmExMzVlNmVkMjIz
ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5j
cHAKQEAgLTQ4OCw0ICs0ODgsMjEgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c2ltaWxhckZv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIH0KICNlbmRp
ZgogCit1bnNpZ25lZCBGb250RGVzY3JpcHRpb25LZXk6OmNvbXB1dGVIYXNoKCkgY29uc3QKK3sK
KyAgICBJbnRlZ2VySGFzaGVyIGhhc2hlcjsKKyAgICBoYXNoZXIuYWRkKG1fc2l6ZSk7CisgICAg
aGFzaGVyLmFkZChtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndlaWdodCk7CisgICAgaGFzaGVyLmFk
ZChtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndpZHRoKTsKKyAgICBoYXNoZXIuYWRkKG1fZm9udFNl
bGVjdGlvblJlcXVlc3Quc2xvcGUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSkpOworICAg
IGhhc2hlci5hZGQobV9sb2NhbGUuZXhpc3RpbmdIYXNoKCkpOworICAgIGZvciAodW5zaWduZWQg
ZmxhZ0l0ZW0gOiBtX2ZsYWdzKQorICAgICAgICBoYXNoZXIuYWRkKGZsYWdJdGVtKTsKKyAgICBo
YXNoZXIuYWRkKG1fZmVhdHVyZVNldHRpbmdzLmhhc2goKSk7CisjaWYgRU5BQkxFKFZBUklBVElP
Tl9GT05UUykKKyAgICBoYXNoZXIuYWRkKG1fdmFyaWF0aW9uU2V0dGluZ3MuaGFzaCgpKTsKKyNl
bmRpZgorICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4
IDg1NjRkYjljMWUwZjI1ZTA4NDY3ZjQ4YTg0MGEyZWExYjE4Y2MxY2EuLjBiNzljY2U4NzM2ZWM2
ZWFiZDJjZDVmNzYyMzNkMTViMjUxYzdkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xMDQsMjIgKzEwNCw3IEBAIHN0cnVjdCBGb250RGVz
Y3JpcHRpb25LZXkgewogCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZSA9PSBjSGFzaFRhYmxlRGVsZXRlZFNpemU7IH0KIAotICAgIGlubGlu
ZSB1bnNpZ25lZCBjb21wdXRlSGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICBJbnRlZ2VySGFz
aGVyIGhhc2hlcjsKLSAgICAgICAgaGFzaGVyLmFkZChtX3NpemUpOwotICAgICAgICBoYXNoZXIu
YWRkKG1fZm9udFNlbGVjdGlvblJlcXVlc3Qud2VpZ2h0KTsKLSAgICAgICAgaGFzaGVyLmFkZCht
X2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndpZHRoKTsKLSAgICAgICAgaGFzaGVyLmFkZChtX2ZvbnRT
ZWxlY3Rpb25SZXF1ZXN0LnNsb3BlLnZhbHVlX29yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpKTsKLSAg
ICAgICAgaGFzaGVyLmFkZChtX2xvY2FsZS5leGlzdGluZ0hhc2goKSk7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgZmxhZ0l0ZW0gOiBtX2ZsYWdzKQotICAgICAgICAgICAgaGFzaGVyLmFkZChmbGFn
SXRlbSk7Ci0gICAgICAgIGhhc2hlci5hZGQobV9mZWF0dXJlU2V0dGluZ3MuaGFzaCgpKTsKLSNp
ZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQotICAgICAgICBoYXNoZXIuYWRkKG1fdmFyaWF0aW9u
U2V0dGluZ3MuaGFzaCgpKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsK
LSAgICB9CisgICAgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVIYXNoKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgc3RhdGljIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDI+IG1ha2VGbGFnc0tleShjb25z
dCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349651</attachid>
            <date>2018-09-13 03:58:45 -0700</date>
            <delta_ts>2018-09-14 02:37:49 -0700</delta_ts>
            <desc>Patch (Move FontDescriptionKey::computeHash into the corresponding implementation file)</desc>
            <filename>bug-185087-20180912180302.patch</filename>
            <type>text/plain</type>
            <size>3514</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVjODMzYWNmZDUxOTY3
N2FiZDc2YWE4ZjAwMGUyNjUzOTBlNjNkYi4uNzA5OTYzM2VhZWU3MTU3NmQwYTM5ZWE5ZTc2ZjNl
MTFlOTliNDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTEyICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnREZXNjcmlw
dGlvbktleTo6Y29tcHV0ZUhhc2ggaW50byB0aGUgY29ycmVzcG9uZGluZyBpbXBsZW1lbnRhdGlv
biBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODUwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
b250RGVzY3JpcHRpb25LZXk6OmNvbXB1dGVIYXNoIHJlcXVpcmVzIGltcGxpY2l0IGluc3RhbnRp
YXRpb24gb2YgdGhlIEZvbnRUYWdnZWRTZXR0aW5ncyB0ZW1wbGF0ZS4gU2luY2UgdGhlCisgICAg
ICAgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIHRoZSBoZWFkZXIsIHRoaXMg
aW5zdGFudGlhdGlvbiBtYXkgaGFwcGVuIGJlZm9yZSBGb250VGFnZ2VkU2V0dGluZ3M6Omhhc2go
KSBpcworICAgICAgICBhY3R1YWxseSBzcGVjaWFsaXplZCBpbiBGb250RmVhdHVyZVNldHRpbmdz
LmNwcCBvciBGb250VmFyaWF0aW9uU2V0dGluZ3MuY3BwLiBUbyBhdm9pZCBjb21waWxlciBlcnJv
cnMsIHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBpcyBtb3ZlZCBpbnRvIEZvbnRDYWNoZS5j
cHAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWhhdmlvciB1bmNoYW5nZWQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5Ojpjb21wdXRlSGFzaCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRp
b25LZXk6OmNvbXB1dGVIYXNoIGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOC0wOS0xMiAgUGFibG8g
U2FhdmVkcmEgIDxwc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBMaW5raW5nIGFnYWlu
c3QgbGliV1BFV2ViS2l0LTAuMS5zbyBpcyBub3QgcG9zaWJsZSB3aGVuIFdQRSBpcyBidWlsZCB3
aXRoIEVOQUJMRV9WSURFTz1PRkYgYW5kIEVOQUJMRV9XRUJfQVVESU89T0ZGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCA1ODc3M2JlNzNj
MjZjMzc5MTM5ODA5MGJkNTQwYjNhOTIwYWQ1NmJmLi4yZGRkM2NlODE5YmRkY2YxYzI0YWM2MmY3
NmExMzVlNmVkMjIzODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAKQEAgLTQ4OCw0ICs0ODgsMjEgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNo
ZTo6c2ltaWxhckZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5n
JikKIH0KICNlbmRpZgogCit1bnNpZ25lZCBGb250RGVzY3JpcHRpb25LZXk6OmNvbXB1dGVIYXNo
KCkgY29uc3QKK3sKKyAgICBJbnRlZ2VySGFzaGVyIGhhc2hlcjsKKyAgICBoYXNoZXIuYWRkKG1f
c2l6ZSk7CisgICAgaGFzaGVyLmFkZChtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndlaWdodCk7Cisg
ICAgaGFzaGVyLmFkZChtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndpZHRoKTsKKyAgICBoYXNoZXIu
YWRkKG1fZm9udFNlbGVjdGlvblJlcXVlc3Quc2xvcGUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFs
dWUoKSkpOworICAgIGhhc2hlci5hZGQobV9sb2NhbGUuZXhpc3RpbmdIYXNoKCkpOworICAgIGZv
ciAodW5zaWduZWQgZmxhZ0l0ZW0gOiBtX2ZsYWdzKQorICAgICAgICBoYXNoZXIuYWRkKGZsYWdJ
dGVtKTsKKyAgICBoYXNoZXIuYWRkKG1fZmVhdHVyZVNldHRpbmdzLmhhc2goKSk7CisjaWYgRU5B
QkxFKFZBUklBVElPTl9GT05UUykKKyAgICBoYXNoZXIuYWRkKG1fdmFyaWF0aW9uU2V0dGluZ3Mu
aGFzaCgpKTsKKyNlbmRpZgorICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oCmluZGV4IDg1NjRkYjljMWUwZjI1ZTA4NDY3ZjQ4YTg0MGEyZWExYjE4Y2MxY2EuLmMz
NTRhOTAxMTY3ZWMzYmIwNDQwNzI5NjQ0OGY0ZDRkNTIzODY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xMDQsMjIgKzEwNCw3IEBAIHN0
cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZSA9PSBjSGFzaFRhYmxlRGVsZXRlZFNpemU7IH0K
IAotICAgIGlubGluZSB1bnNpZ25lZCBjb21wdXRlSGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBJbnRlZ2VySGFzaGVyIGhhc2hlcjsKLSAgICAgICAgaGFzaGVyLmFkZChtX3NpemUpOwotICAg
ICAgICBoYXNoZXIuYWRkKG1fZm9udFNlbGVjdGlvblJlcXVlc3Qud2VpZ2h0KTsKLSAgICAgICAg
aGFzaGVyLmFkZChtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndpZHRoKTsKLSAgICAgICAgaGFzaGVy
LmFkZChtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LnNsb3BlLnZhbHVlX29yKG5vcm1hbEl0YWxpY1Zh
bHVlKCkpKTsKLSAgICAgICAgaGFzaGVyLmFkZChtX2xvY2FsZS5leGlzdGluZ0hhc2goKSk7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgZmxhZ0l0ZW0gOiBtX2ZsYWdzKQotICAgICAgICAgICAgaGFz
aGVyLmFkZChmbGFnSXRlbSk7Ci0gICAgICAgIGhhc2hlci5hZGQobV9mZWF0dXJlU2V0dGluZ3Mu
aGFzaCgpKTsKLSNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQotICAgICAgICBoYXNoZXIuYWRk
KG1fdmFyaWF0aW9uU2V0dGluZ3MuaGFzaCgpKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gaGFz
aGVyLmhhc2goKTsKLSAgICB9CisgICAgdW5zaWduZWQgY29tcHV0ZUhhc2goKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgc3RkOjphcnJheTx1bnNpZ25lZCwgMj4gbWFrZUZsYWdzS2V5
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349755</attachid>
            <date>2018-09-14 02:38:30 -0700</date>
            <delta_ts>2018-09-14 02:38:30 -0700</delta_ts>
            <desc>Patch (move template functions to header)</desc>
            <filename>189541.patch</filename>
            <type>text/plain</type>
            <size>2779</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRT
ZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2Vk
U2V0dGluZ3MuY3BwCmluZGV4IGIwY2E0M2Q1NWM0Li4zYmVkMzg5MmMzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3Mu
Y3BwCkBAIC0zMiwzNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRl
IDw+Ci11bnNpZ25lZCBGb250RmVhdHVyZVNldHRpbmdzOjpoYXNoKCkgY29uc3QKLXsKLSAgICBJ
bnRlZ2VySGFzaGVyIGhhc2hlcjsKLSAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiBtX2xpc3QpIHsK
LSAgICAgICAgaGFzaGVyLmFkZChGb3VyQ2hhcmFjdGVyVGFnSGFzaDo6aGFzaChmZWF0dXJlLnRh
ZygpKSk7Ci0gICAgICAgIGhhc2hlci5hZGQoZmVhdHVyZS52YWx1ZSgpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIGhhc2hlci5oYXNoKCk7Ci19Ci0KICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQot
dGVtcGxhdGUgPD4KLXVuc2lnbmVkIEZvbnRWYXJpYXRpb25TZXR0aW5nczo6aGFzaCgpIGNvbnN0
Ci17Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZmxvYXQpID09IHNpemVvZihpbnQpLCAiSW50
ZWdlckhhc2hlciBuZWVkcyB0byBhY2NlcHQgZmxvYXRzIHRvbyIpOwotICAgIHVuaW9uIHsKLSAg
ICAgICAgZmxvYXQgZjsKLSAgICAgICAgaW50IGk7Ci0gICAgfSBmbG9hdFRvSW50OwotCi0gICAg
SW50ZWdlckhhc2hlciBoYXNoZXI7Ci0gICAgZm9yIChhdXRvJiB2YXJpYXRpb24gOiBtX2xpc3Qp
IHsKLSAgICAgICAgaGFzaGVyLmFkZChGb3VyQ2hhcmFjdGVyVGFnSGFzaDo6aGFzaCh2YXJpYXRp
b24udGFnKCkpKTsKLSAgICAgICAgZmxvYXRUb0ludC5mID0gdmFyaWF0aW9uLnZhbHVlKCk7Ci0g
ICAgICAgIGhhc2hlci5hZGQoZmxvYXRUb0ludC5pKTsKLSAgICB9Ci0gICAgcmV0dXJuIGhhc2hl
ci5oYXNoKCk7Ci19Ci0KIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyYgaXRlbSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaXRlbS5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaAppbmRleCAyM2NhMmVlYzAzOC4u
NzBjM2MxMTc1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRUYWdnZWRTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxh
cnJheT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTM5LDEx
ICsxNDAsNDAgQEAgdm9pZCBGb250VGFnZ2VkU2V0dGluZ3M8VD46Omluc2VydChGb250VGFnZ2Vk
U2V0dGluZzxUPiYmIGZlYXR1cmUpCiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nPGludD4gRm9u
dEZlYXR1cmU7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0
dGluZ3M7CiAKK3RlbXBsYXRlIDw+Cit1bnNpZ25lZCBGb250RmVhdHVyZVNldHRpbmdzOjpoYXNo
KCkgY29uc3QKK3sKKyAgICBJbnRlZ2VySGFzaGVyIGhhc2hlcjsKKyAgICBmb3IgKGF1dG8mIGZl
YXR1cmUgOiBtX2xpc3QpIHsKKyAgICAgICAgaGFzaGVyLmFkZChGb3VyQ2hhcmFjdGVyVGFnSGFz
aDo6aGFzaChmZWF0dXJlLnRhZygpKSk7CisgICAgICAgIGhhc2hlci5hZGQoZmVhdHVyZS52YWx1
ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKICNpZiBFTkFCTEUo
VkFSSUFUSU9OX0ZPTlRTKQogCiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxmbG9hdD4gRm9u
dFZhcmlhdGlvblNldHRpbmdzOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyYpOwogCit0ZW1wbGF0ZSA8Pgor
dW5zaWduZWQgRm9udFZhcmlhdGlvblNldHRpbmdzOjpoYXNoKCkgY29uc3QKK3sKKyAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihmbG9hdCkgPT0gc2l6ZW9mKGludCksICJJbnRlZ2VySGFzaGVyIG5l
ZWRzIHRvIGFjY2VwdCBmbG9hdHMgdG9vIik7CisgICAgdW5pb24geworICAgICAgICBmbG9hdCBm
OworICAgICAgICBpbnQgaTsKKyAgICB9IGZsb2F0VG9JbnQ7CisKKyAgICBJbnRlZ2VySGFzaGVy
IGhhc2hlcjsKKyAgICBmb3IgKGF1dG8mIHZhcmlhdGlvbiA6IG1fbGlzdCkgeworICAgICAgICBo
YXNoZXIuYWRkKEZvdXJDaGFyYWN0ZXJUYWdIYXNoOjpoYXNoKHZhcmlhdGlvbi50YWcoKSkpOwor
ICAgICAgICBmbG9hdFRvSW50LmYgPSB2YXJpYXRpb24udmFsdWUoKTsKKyAgICAgICAgaGFzaGVy
LmFkZChmbG9hdFRvSW50LmkpOworICAgIH0KKyAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKK30K
KwogI2Vsc2UKIAogc3RydWN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349758</attachid>
            <date>2018-09-14 07:36:07 -0700</date>
            <delta_ts>2018-09-14 11:33:53 -0700</delta_ts>
            <desc>Patch (declare fully specialized functions in FontTaggedSetting.h)</desc>
            <filename>189541.patch</filename>
            <type>text/plain</type>
            <size>2575</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMWNmYWQxM2NmYy4uM2I4MzE0NDUzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxOC0wOS0xNCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+
CisKKyAgICAgICAgQnVnIDE4OTU0MSAtIEJ1aWxkIGVycm9yIGluIEZvbnREZXNjcmlwdGlvbktl
eTo6Y29tcHV0ZUhhc2ggd2hlbiBjb21waWxpbmcgRm9udFRhZ2dlZFNldHRpbmdzIGFuZCBGb250
Q2FzY2FkZUZvbnRzIHRvZ2V0aGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODk1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGb250RGVzY3JpcHRpb25LZXk6OmNvbXB1dGVIYXNoKCkgZnJvbSBJbiBG
b250Q2FjaGUuaCByZXF1aXJlcyBpbXBsaWNpdCBpbnN0YW50aWF0aW9uIG9mIHRoZQorICAgICAg
ICBGb250VGFnZ2VkU2V0dGluZ3M6Omhhc2goKSB0ZW1wbGF0ZSBmdW5jdGlvbi4gVGhpcyBpbnN0
YW50aWF0aW9uIG1heSBoYXBwZW4gYmVmb3JlCisgICAgICAgIEZvbnRUYWdnZWRTZXR0aW5nczo6
aGFzaCgpIGlzIGFjdHVhbGx5IGZ1bGx5IHNwZWNpYWxpemVkIGluIEZvbnRUYWdnZWRTZXR0aW5n
cy5jcHAuIFRvIGF2b2lkCisgICAgICAgIGNvbXBpbGVyIGVycm9ycyB3aGVuIEZvbnRDYWNoZS5o
IGFuZCBGb250VGFnZ2VkU2V0dGluZ3MuY3BwIGFyZSBpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1
bml0LAorICAgICAgICB3ZSBkZWNsYXJlIGZ1bGwgc3BlY2lhbGl6YXRpb24gb2YgdGhlIGhhc2go
KSBmdW5jdGlvbnMgaW4gRm9udFRhZ2dlZFNldHRpbmdzLmguCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBiZWhhdmlvciB1bmNoYW5nZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaDogRXhwbGljaXRseSBpbmNsdWRlIEZvbnRUYWdnZWRTZXR0aW5ncyB0byBhdm9p
ZCBwb3NzaWJsZSBmdXR1cmUgYnJlYWthZ2UuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udFRhZ2dlZFNldHRpbmdzLmg6IERlY2xhcmUgZnVsbCBzcGVjaWFsaXphdGlvbiBvZiBGb250
VGFnZ2VkU2V0dGluZ3M6Omhhc2goKS4KKwogMjAxOC0wOS0xMyAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDYXB0dXJpbmcgZXZlbnQgbGlzdGVuZXJzIGFyZSBj
YWxsZWQgZHVyaW5nIGJ1YmJsaW5nIHBoYXNlIGZvciBzaGFkb3cgaG9zdHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggODU2NGRiOWMxZTAuLmU5
NWQyZGFlYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAj
aW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGlt
aXRzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
VGFnZ2VkU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRU
YWdnZWRTZXR0aW5ncy5oCmluZGV4IDIzY2EyZWVjMDM4Li5iNTc0NTdlM2ZkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdz
LmgKQEAgLTEzOSwxMSArMTM5LDE1IEBAIHZvaWQgRm9udFRhZ2dlZFNldHRpbmdzPFQ+OjppbnNl
cnQoRm9udFRhZ2dlZFNldHRpbmc8VD4mJiBmZWF0dXJlKQogdHlwZWRlZiBGb250VGFnZ2VkU2V0
dGluZzxpbnQ+IEZvbnRGZWF0dXJlOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBG
b250RmVhdHVyZVNldHRpbmdzOwogCit0ZW1wbGF0ZSA8PiB1bnNpZ25lZCBGb250RmVhdHVyZVNl
dHRpbmdzOjpoYXNoKCkgY29uc3Q7CisKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogCiB0
eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxmbG9hdD4gRm9udFZhcmlhdGlvblNldHRpbmdzOwog
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEZvbnRW
YXJpYXRpb25TZXR0aW5ncyYpOwogCit0ZW1wbGF0ZSA8PiB1bnNpZ25lZCBGb250VmFyaWF0aW9u
U2V0dGluZ3M6Omhhc2goKSBjb25zdDsKKwogI2Vsc2UKIAogc3RydWN0IEZvbnRWYXJpYXRpb25T
ZXR0aW5ncyB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>