Roman | ||
RomanMM | ||
target | ||
.gitignore | ||
all.rtf | ||
build.sh | ||
buildAll.sh | ||
features.family | ||
features.tables | ||
FontMenuNameDB | ||
GlyphOrderAndAliasDB | ||
GlyphOrderAndAliasDB_TT | ||
hasklig_example.png | ||
Hasklig_relnotes.txt | ||
LICENSE.txt | ||
ReadMe.html | ||
README.md | ||
relnotes.txt | ||
Roadmap.txt | ||
SourceCodePro.enc | ||
SourceCodeProLSample.png | ||
SourceCodeProSample.png | ||
widthsAdjust.mark |
N.B. This is a fork of the Source Code Pro repository
Hasklig - Ligatures for Haskell code
Programming languages are limited to relatively few characters. As a result, combined character operators surfaced quite early, such as the widely used arrow (->
), comprised of a hyphen and greater sign. It looks like an arrow if you know the analogy and squint a bit.
Composite glyphs are problematic in languages such as Haskell which utilize these complicated operators (=>
-<
>>=
etc.) extensively. The readability of such complex code improves with pretty printing. Academic articles featuring Haskell code often use lhs2tex to achieve an appealing rendering, but it is of no use when programming.
Some Haskellers have resorted to Unicode symbols (⇒
, ←
etc.), which are valid in the ghc. However they are one-character-wide and therefore eye-strainingly small. Furthermore, when displayed as substitutes to the underlying multi-character representation, as [vim2hs] (https://github.com/dag/vim2hs) does, the characters go out of alignment.
Hasklig solves the problem the way typographers have always solved ill-fitting characters which co-occur often: ligatures. The underlying code stays the same — only the representation changes.
Not only can multi-character glyphs be rendered more vividly, other problematic things in monospaced fonts, such as spacing can be corrected.
Download Hasklig Font Family v0.4
Hasklig
Source Code Pro
Credits
Original idea, design and implementation of code ligatures by Ian Tuomi 2014-2015. This typeface extends Source Code Pro with ligatures.
Release notes
- v0.4: New ligatures:
<*
<*>
<+>
<$>
***
<|>
!!
||
===
==>
, Powerline symbol support - v0.3: New ligatures:
<<<
>>>
<>
and+++
- v0.2: Lengthened
==
and/=
to match other equals signs - v0.1: Ligatures
<-
->
=>
>>
<<
>>=
=<<
..
...
::
-<
>-
-<<
>>-
++
/=
and==
Currently implemented symbols
<*
<*>
<+>
<$>
***
<|>
!!
||
===
==>
<<<
>>>
<>
+++
<-
->
=>
>>
<<
>>=
=<<
..
...
::
-<
>-
-<<
>>-
++
/=
==
Editor Support
Reports on the current state of support for code editors and terminals is much appreciated.
- BBEdit 11 (Instructions)
- Chocolat
- Geany
- gEdit
- Kate
- Konsole
- KWrite
- Leksah (x64 W8 reported not working)
- Light Table (Instructions)
- QtCreator (v.3.2.2 on GNU/Linux x64)
- Smultron
- TextEdit
- TextMate (from version 2.0-alpha.9549 onwards)
- Vico
No support
- Atom (see Atom issue #3821 for more details.)
- Emacs (Support is currently under work.)
- gVim (output corrupted. A patch exists, but it has not been incorporated into mainstream gVim.)
- Intellij IDEA (Has feature request)
- iTerm2 (details)
- MacVim (Reversing this commit makes ligatures show, but advancement is borked.)
- Sublime Text (Vote for the enhancement here)
- Terminal (OSX)