<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[191251] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/191251">191251</a></dd>
<dt>Author</dt> <dd>mmaxfield@apple.com</dd>
<dt>Date</dt> <dd>2015-10-17 15:40:41 -0700 (Sat, 17 Oct 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Delete FontPlatformData::allowsLigatures()
https://bugs.webkit.org/show_bug.cgi?id=150286

Reviewed by Dan Bernstein.

Source/WebCore:

This function is only used to force ligatures on for complex fonts (where &quot;complex&quot;
means &quot;does not support the letter 'a'&quot;). However, ligatures are turned on for all
fonts by default, which means that this function is unnecessary.

Required ligatures, such as those which make these complex scripts legible, are always
enabled, no matter what.

Test: fast/text/required-ligatures.html

* platform/graphics/FontPlatformData.h:
* platform/graphics/cocoa/FontPlatformDataCocoa.mm:
(WebCore::FontPlatformData::allowsLigatures): Deleted.
* platform/graphics/mac/SimpleFontDataCoreText.cpp:
(WebCore::Font::getCFStringAttributes):

LayoutTests:

Make sure it's impossible to turn off required ligatures with CSS.

* fast/text/required-ligatures-expected.html: Added.
* fast/text/required-ligatures.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontPlatformDatah">trunk/Source/WebCore/platform/graphics/FontPlatformData.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaFontPlatformDataCocoamm">trunk/Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsmacSimpleFontDataCoreTextcpp">trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataCoreText.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfasttextrequiredligaturesexpectedhtml">trunk/LayoutTests/fast/text/required-ligatures-expected.html</a></li>
<li><a href="#trunkLayoutTestsfasttextrequiredligatureshtml">trunk/LayoutTests/fast/text/required-ligatures.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (191250 => 191251)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-10-17 22:31:36 UTC (rev 191250)
+++ trunk/LayoutTests/ChangeLog        2015-10-17 22:40:41 UTC (rev 191251)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2015-10-17  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
+
+        Delete FontPlatformData::allowsLigatures()
+        https://bugs.webkit.org/show_bug.cgi?id=150286
+
+        Reviewed by Dan Bernstein.
+
+        Make sure it's impossible to turn off required ligatures with CSS.
+
+        * fast/text/required-ligatures-expected.html: Added.
+        * fast/text/required-ligatures.html: Added.
+
</ins><span class="cx"> 2015-10-17  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         td and th should use HTMLTableDataCellElement and HTMLTableHeaderCellElement interfaces
</span></span></pre></div>
<a id="trunkLayoutTestsfasttextrequiredligaturesexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/text/required-ligatures-expected.html (0 => 191251)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/required-ligatures-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/text/required-ligatures-expected.html        2015-10-17 22:40:41 UTC (rev 191251)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;/head&gt;
+&lt;body&gt;
+This test makes sure that it is impossible to turn off required ligatures in CSS.
+&lt;div style=&quot;font: 50px GeezaPro;&quot;&gt;استشهد&lt;/div&gt;
+&lt;div style=&quot;font: 50px GeezaPro;&quot;&gt;استشهد&lt;/div&gt;
+&lt;div style=&quot;font: 50px GeezaPro;&quot;&gt;استشهد&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfasttextrequiredligatureshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/text/required-ligatures.html (0 => 191251)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/required-ligatures.html                                (rev 0)
+++ trunk/LayoutTests/fast/text/required-ligatures.html        2015-10-17 22:40:41 UTC (rev 191251)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;style&gt;
+#one {
+    font-variant-ligatures: no-common-ligatures no-discretionary-ligatures no-historical-ligatures no-contextual;
+    font: 50px GeezaPro;
+}
+#two {
+    font-feature-settings: &quot;liga&quot; 0, &quot;clig&quot; 0, &quot;dlig&quot; 0, &quot;hlig&quot; 0, &quot;calt&quot; 0;
+    font: 50px GeezaPro;
+}
+#three {
+    text-rendering: optimizeSpeed;
+    font: 50px GeezaPro;
+}
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+This test makes sure that it is impossible to turn off required ligatures in CSS.
+&lt;div id=&quot;one&quot;&gt;استشهد&lt;/div&gt;
+&lt;div id=&quot;two&quot;&gt;استشهد&lt;/div&gt;
+&lt;div id=&quot;three&quot;&gt;استشهد&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (191250 => 191251)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-10-17 22:31:36 UTC (rev 191250)
+++ trunk/Source/WebCore/ChangeLog        2015-10-17 22:40:41 UTC (rev 191251)
</span><span class="lines">@@ -1,5 +1,27 @@
</span><span class="cx"> 2015-10-17  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Delete FontPlatformData::allowsLigatures()
+        https://bugs.webkit.org/show_bug.cgi?id=150286
+
+        Reviewed by Dan Bernstein.
+
+        This function is only used to force ligatures on for complex fonts (where &quot;complex&quot;
+        means &quot;does not support the letter 'a'&quot;). However, ligatures are turned on for all
+        fonts by default, which means that this function is unnecessary.
+
+        Required ligatures, such as those which make these complex scripts legible, are always
+        enabled, no matter what.
+
+        Test: fast/text/required-ligatures.html
+
+        * platform/graphics/FontPlatformData.h:
+        * platform/graphics/cocoa/FontPlatformDataCocoa.mm:
+        (WebCore::FontPlatformData::allowsLigatures): Deleted.
+        * platform/graphics/mac/SimpleFontDataCoreText.cpp:
+        (WebCore::Font::getCFStringAttributes):
+
+2015-10-17  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
+
</ins><span class="cx">         Stop honoring the user default &quot;WebKitKerningAndLigaturesEnabledByDefault&quot;
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=150287
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontPlatformDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FontPlatformData.h (191250 => 191251)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FontPlatformData.h        2015-10-17 22:31:36 UTC (rev 191250)
+++ trunk/Source/WebCore/platform/graphics/FontPlatformData.h        2015-10-17 22:40:41 UTC (rev 191251)
</span><span class="lines">@@ -115,8 +115,6 @@
</span><span class="cx">     static RetainPtr&lt;CFTypeRef&gt; objectForEqualityCheck(CTFontRef);
</span><span class="cx">     RetainPtr&lt;CFTypeRef&gt; objectForEqualityCheck() const;
</span><span class="cx"> 
</span><del>-    bool allowsLigatures() const;
-
</del><span class="cx"> #if USE(APPKIT)
</span><span class="cx">     // FIXME: Remove this when all NSFont usage is removed.
</span><span class="cx">     NSFont *nsFont() const { return (NSFont *)m_font.get(); }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaFontPlatformDataCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm (191250 => 191251)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm        2015-10-17 22:31:36 UTC (rev 191250)
+++ trunk/Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm        2015-10-17 22:40:41 UTC (rev 191251)
</span><span class="lines">@@ -112,15 +112,6 @@
</span><span class="cx">     m_ctFont = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool FontPlatformData::allowsLigatures() const
-{
-    if (!m_font)
-        return false;
-
-    RetainPtr&lt;CFCharacterSetRef&gt; characterSet = adoptCF(CTFontCopyCharacterSet(ctFont()));
-    return !(characterSet.get() &amp;&amp; CFCharacterSetIsCharacterMember(characterSet.get(), 'a'));
-}
-
</del><span class="cx"> inline int mapFontWidthVariantToCTFeatureSelector(FontWidthVariant variant)
</span><span class="cx"> {
</span><span class="cx">     switch(variant) {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsmacSimpleFontDataCoreTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataCoreText.cpp (191250 => 191251)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataCoreText.cpp        2015-10-17 22:31:36 UTC (rev 191250)
+++ trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataCoreText.cpp        2015-10-17 22:40:41 UTC (rev 191251)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">         CFDictionarySetValue(mutableAttributes, kCTKernAttributeName, zeroKerningValue);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!((orientation == Horizontal &amp;&amp; platformData().allowsLigatures()) || enableLigatures)) {
</del><ins>+    if (!enableLigatures) {
</ins><span class="cx">         const int zero = 0;
</span><span class="cx">         static CFNumberRef essentialLigaturesValue = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &amp;zero);
</span><span class="cx">         CFDictionarySetValue(mutableAttributes, kCTLigatureAttributeName, essentialLigaturesValue);
</span></span></pre>
</div>
</div>

</body>
</html>