<p dir="auto">Lately I have been playing with fonts with ligatures like PragmataPro, Fira Code, Hasklig, etc...</p>
<p dir="auto">The only way I have found to make Atom to actually render any ligature is by adding <code class="notranslate">text-rendering: optimizeLegibility</code> to my style config. Anyways, this completely breaks pretty much the entire editor. Cursor position stops working correctly (a single ligature requires 2 or 3 left/right arrow clicks for the cursor to move back/forwards), the delete key acts really funny, etc...</p>
<p dir="auto">Even more, after commenting <code class="notranslate">text-rendering: optimizeLegibility</code>, Atom keeps doing funny stuff until I restart it.</p>
<p dir="auto">Those type of fonts are getting more and more common; it would be really nice if Atom could handle them correctly.</p>
<p dir="auto">Btw, PragmataPro works just fine in Chrome, test it here: <a href="http://typecast.com/preview/myfonts/113975" rel="nofollow">http://typecast.com/preview/myfonts/113975</a>  (be sure to add <code class="notranslate">text-rendering: optimizeLegibility</code> to the textbox you'll be testing.</p>
<p dir="auto">I'm using the Atom for Windows Alpha from the Atom website (not Chocolatey), version 0.136.0 (as viewed in the Help menu and with <code class="notranslate">--version</code> in the command line, the <code class="notranslate">version</code> file in the Atom folder says v0.17.1; it was downloaded around 12:30AM US Eastern on October 14, 2014 if that helps) on Windows 8.1. I set <code class="notranslate">text-rendering: optimizeLegibility;</code> for <code class="notranslate">.editor</code> in <code class="notranslate">styles.less</code> (because otherwise the ligatures aren't in effect and I get each individual character). This happens regardless of whether hardware acceleration is enabled. It also happens in <code class="notranslate">--safe</code> mode, and the developer tools console shows no errors.</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/4254261/4624455/bad18f5a-5364-11e4-9a0f-8c59596bcd59.png"><img src="https://cloud.githubusercontent.com/assets/4254261/4624455/bad18f5a-5364-11e4-9a0f-8c59596bcd59.png" alt="temp" style="max-width: 100%;"></a></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="(&lt;*&gt;)::Functor f=&gt;(a-&gt;b)-&gt;(f a-&gt;f b)
fmap::Functor f=&gt;(a-&gt;b)-&gt;(f a-&gt;f b)"><pre class="notranslate"><code class="notranslate">(&lt;*&gt;)::Functor f=&gt;(a-&gt;b)-&gt;(f a-&gt;f b)
fmap::Functor f=&gt;(a-&gt;b)-&gt;(f a-&gt;f b)
</code></pre></div>
<p dir="auto">in <a href="https://github.com/i-tu/Hasklig">Hasklig</a>, which has ligatures for <code class="notranslate">&lt;*&gt;</code>, <code class="notranslate">::</code>, <code class="notranslate">=&gt;</code>, and <code class="notranslate">-&gt;</code>.</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/4254261/4624502/6b794cee-5365-11e4-8d85-a129dee8ae1d.png"><img src="https://cloud.githubusercontent.com/assets/4254261/4624502/6b794cee-5365-11e4-8d85-a129dee8ae1d.png" alt="temp" style="max-width: 100%;"></a></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="fifififififififififi"><pre class="notranslate"><code class="notranslate">fifififififififififi
</code></pre></div>
<p dir="auto">in Calibri, using the ligature for <code class="notranslate">fi</code>. The cursor is at the end of the line, and the misspell underline only leads up to that point as well. The ligature for <code class="notranslate">ff</code> in Calibri has the opposite effect; the cursor and underline extend farther than text on the screen if you put enough f's on a line.</p>
<p dir="auto">I can provide more details if you need them.</p>