<?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>164689</bug_id>
          
          <creation_ts>2016-11-12 14:15:51 -0800</creation_ts>
          <short_desc>[FreeType] FontPlatformData::fallbacks() returns unprepared FcPatterns</short_desc>
          <delta_ts>2017-03-07 12:36:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1250718</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-12 14:15:51 -0800</bug_when>
    <thetext>Behdad warned me about this at the Web Engines Hackfest. From the documentation of FcFontSort():

&quot;&quot;&quot;The returned FcFontSet references FcPattern structures which may be shared by the return value from multiple FcFontSort calls, applications must not modify these patterns. Instead, they should be passed, along with p to FcFontRenderPrepare which combines them into a complete pattern.&quot;&quot;&quot;

That means each call to FcFontSort() must be followed up by a call to FcFontRenderPrepare(), else the patterns will lack information about how to draw the font properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250750</commentid>
    <comment_count>1</comment_count>
      <attachid>294643</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-12 16:59:05 -0800</bug_when>
    <thetext>Created attachment 294643
[FreeType] FontPlatformData::fallbacks() returns unprepared FcPatterns</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250752</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-12 17:00:15 -0800</bug_when>
    <thetext>Same caveat here as in bug #82889: it&apos;s surely going to affect layout tests, so has to be landed once we&apos;ve cleaned up our existing expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251059</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-14 11:34:23 -0800</bug_when>
    <thetext>I would review this but I don&apos;t understand enough about FontConfig.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284180</commentid>
    <comment_count>4</comment_count>
      <attachid>294643</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-06 21:21:42 -0800</bug_when>
    <thetext>Comment on attachment 294643
[FreeType] FontPlatformData::fallbacks() returns unprepared FcPatterns

Seems like a good time to try landing this. Carlos?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284220</commentid>
    <comment_count>5</comment_count>
      <attachid>294643</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-03-06 23:24:25 -0800</bug_when>
    <thetext>Comment on attachment 294643
[FreeType] FontPlatformData::fallbacks() returns unprepared FcPatterns

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

&gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:265
&gt; +        for (int i = 0; i &lt; unpreparedFallbacks.get()-&gt;nfont; i++) {

unsigned

&gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:267
&gt; +            FcPattern* pattern = FcFontRenderPrepare(nullptr, m_pattern.get(), unpreparedFallbacks.get()-&gt;fonts[i]);
&gt; +            FcFontSetAdd(m_fallbacks.get(), pattern);

This could probably be just one line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284491</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-07 12:35:57 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:265
&gt; &gt; +        for (int i = 0; i &lt; unpreparedFallbacks.get()-&gt;nfont; i++) {
&gt; 
&gt; unsigned

Nope, because FcFontSet::nfont is an int.

&gt; &gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:267
&gt; &gt; +            FcPattern* pattern = FcFontRenderPrepare(nullptr, m_pattern.get(), unpreparedFallbacks.get()-&gt;fonts[i]);
&gt; &gt; +            FcFontSetAdd(m_fallbacks.get(), pattern);
&gt; 
&gt; This could probably be just one line

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284493</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-07 12:36:34 -0800</bug_when>
    <thetext>Committed r213532: &lt;http://trac.webkit.org/changeset/213532&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294643</attachid>
            <date>2016-11-12 16:59:05 -0800</date>
            <delta_ts>2017-03-06 23:24:25 -0800</delta_ts>
            <desc>[FreeType] FontPlatformData::fallbacks() returns unprepared FcPatterns</desc>
            <filename>bug-164689-20161112185449.patch</filename>
            <type>text/plain</type>
            <size>2453</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE2YmIwYmIyZDUyNjAw
ZGQ1YzM3ZjViMDJjOTczOTUyYmMzZWNlNi4uMGI1YzZlYWM0MTQ0OWY5YjFhOGI4ZmQyOTNhZmUz
ZDk3YTgxYWZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE2LTExLTEyICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAorICAgICAgICBbRnJlZVR5
cGVdIEZvbnRQbGF0Zm9ybURhdGE6OmZhbGxiYWNrcygpIHJldHVybnMgdW5wcmVwYXJlZCBGY1Bh
dHRlcm5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQ2ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
cm9tIHRoZSBkb2N1bWVudGF0aW9uIG9mIEZjRm9udFNvcnQoKToKKworICAgICAgICAiIiJUaGUg
cmV0dXJuZWQgRmNGb250U2V0IHJlZmVyZW5jZXMgRmNQYXR0ZXJuIHN0cnVjdHVyZXMgd2hpY2gg
bWF5IGJlIHNoYXJlZCBieSB0aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlIGZyb20gbXVsdGlwbGUg
RmNGb250U29ydCBjYWxscywgYXBwbGljYXRpb25zIG11c3Qgbm90IG1vZGlmeSB0aGVzZSBwYXR0
ZXJucy4KKyAgICAgICAgSW5zdGVhZCwgdGhleSBzaG91bGQgYmUgcGFzc2VkLCBhbG9uZyB3aXRo
IHAgdG8gRmNGb250UmVuZGVyUHJlcGFyZSB3aGljaCBjb21iaW5lcyB0aGVtIGludG8KKyAgICAg
ICAgYSBjb21wbGV0ZSBwYXR0ZXJuLiIiIgorCisgICAgICAgIFRoYXQgbWVhbnMgZWFjaCBjYWxs
IHRvIEZjRm9udFNvcnQoKSBtdXN0IGJlIGZvbGxvd2VkIHVwIGJ5IGEgY2FsbCB0byBGY0ZvbnRS
ZW5kZXJQcmVwYXJlKCksCisgICAgICAgIGVsc2UgdGhlIHBhdHRlcm5zIHdpbGwgbGFjayBpbmZv
cm1hdGlvbiBhYm91dCBob3cgdG8gZHJhdyB0aGUgZm9udCBwcm9wZXJseS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpmYWxsYmFja3MpOgorCisyMDE2
LTExLTEyICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKwogICAg
ICAgICBbR1RLXSBIb25vciBHVEsrIGZvbnQgc2V0dGluZ3MKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODg5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IGEwZTkxNWFhZTlkMmNkNjAxODdmYzI2YWM1ZDI4
ODU4ZjFiYWIxNWUuLmJjMDdkYzMyYjk5NGYwY2I3NjkyNThhZjE4NzQwZjA3MzZiZGY1OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjYwLDcgKzI2
MCwxMiBAQCBGY0ZvbnRTZXQqIEZvbnRQbGF0Zm9ybURhdGE6OmZhbGxiYWNrcygpIGNvbnN0CiAK
ICAgICBpZiAobV9wYXR0ZXJuKSB7CiAgICAgICAgIEZjUmVzdWx0IGZvbnRDb25maWdSZXN1bHQ7
Ci0gICAgICAgIG1fZmFsbGJhY2tzLnJlc2V0KEZjRm9udFNvcnQobnVsbHB0ciwgbV9wYXR0ZXJu
LmdldCgpLCBGY1RydWUsIG51bGxwdHIsICZmb250Q29uZmlnUmVzdWx0KSk7CisgICAgICAgIEZj
VW5pcXVlUHRyPEZjRm9udFNldD4gdW5wcmVwYXJlZEZhbGxiYWNrcyhGY0ZvbnRTb3J0KG51bGxw
dHIsIG1fcGF0dGVybi5nZXQoKSwgRmNUcnVlLCBudWxscHRyLCAmZm9udENvbmZpZ1Jlc3VsdCkp
OworICAgICAgICBtX2ZhbGxiYWNrcy5yZXNldChGY0ZvbnRTZXRDcmVhdGUoKSk7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgdW5wcmVwYXJlZEZhbGxiYWNrcy5nZXQoKS0+bmZvbnQ7IGkr
KykgeworICAgICAgICAgICAgRmNQYXR0ZXJuKiBwYXR0ZXJuID0gRmNGb250UmVuZGVyUHJlcGFy
ZShudWxscHRyLCBtX3BhdHRlcm4uZ2V0KCksIHVucHJlcGFyZWRGYWxsYmFja3MuZ2V0KCktPmZv
bnRzW2ldKTsKKyAgICAgICAgICAgIEZjRm9udFNldEFkZChtX2ZhbGxiYWNrcy5nZXQoKSwgcGF0
dGVybik7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG1fZmFsbGJhY2tzLmdldCgpOwog
fQo=
</data>
<flag name="review"
          id="317309"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>