1
1
mirror of https://github.com/i-tu/Hasklig.git synced 2024-09-17 13:37:21 +03:00
Hasklig - a code font with monospaced ligatures
Go to file
2014-04-26 09:13:08 +03:00
Roman Name change to hasklig 2014-04-20 05:01:00 +03:00
RomanMM Name change to hasklig 2014-04-20 05:01:00 +03:00
.gitignore Name change to hasklig 2014-04-20 05:01:00 +03:00
build.sh Name change to hasklig 2014-04-20 05:01:00 +03:00
features.family Implement code ligatures :) 2014-04-19 17:13:21 +03:00
features.tables first release 2012-09-20 17:06:26 -07:00
FontMenuNameDB Name change to hasklig 2014-04-20 05:01:00 +03:00
GlyphOrderAndAliasDB Implement code ligatures :) 2014-04-19 17:13:21 +03:00
GlyphOrderAndAliasDB_TT Updates design of asterisk and hyphen to accommodate coders' preferences. Realigns math and punctuation glyphs. Adds a stylistic set <ss01> for typographic alternates. Adds a stylistic set <ss04> for alternate dollar sign. Adds a small number of IPA characters. Adds box drawing characters and block elements. 2012-12-06 13:34:09 -08:00
hasklig_example.png pic 2014-04-20 05:03:34 +03:00
LICENSE.txt first release 2012-09-20 17:06:26 -07:00
ReadMe.html first release 2012-09-20 17:06:26 -07:00
README.md Update README.md 2014-04-26 09:13:08 +03:00
relnotes.txt Updates the design of the asterisk glyphs, bar, and broken bar. Updates the hinting to the default asterisk in all styles. Adds an new Medium weight to the font project. Updates design of several box drawing glyphs to center them within glyph height/width. 2013-01-15 16:30:16 -08:00
Roadmap.txt first release 2012-09-20 17:06:26 -07:00
SourceCodePro.enc Implement code ligatures :) 2014-04-19 17:13:21 +03:00
SourceCodeProLSample.png fix ext link 2014-04-20 15:20:43 +03:00
SourceCodeProReadMe.html Merge branch 'master' of https://github.com/adobe/source-code-pro 2013-01-16 13:45:33 -08:00
SourceCodeProSample.png upload sample images 2014-04-19 20:52:24 +03:00
widthsAdjust.mark first release 2012-09-20 17:06:26 -07:00

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 of a limited character set, 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 (over 100 in lens alone!). The readability of this kind of complex code improves considerably with some kind of pretty printing.

Some Haskell programmers have resorted to unicode symbols in code as a solution (, etc.). This opens a whole new can of worms. In addition to encoding/compatibility problems and all the reasons it never worked out for APL, these symbols are one-character-wide and therefore eye-strainingly small.

Hasklig solves this 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.

Download Font Family

Hasklig

Hasklig Sample

Source Code Pro

Source Code Pro Sample

Editors and Terminals with support

  • Atom (add text-rendering: optimizeLegibility; to your .editor css.)
  • Chocolat
  • Geany
  • gEdit
  • Kate
  • Konsole
  • KWrite
  • Leksah (x64 W8 reported not working)
  • TextEdit

No support

  • Aquamacs
  • gVim (output corrupted)
  • iTerm2
  • MacVim
  • Sublime Text (Vote for the enhancement here)
  • Terminal (OSX)

To Do

  1. Contextual glyph substitution for \λ and .
  2. Terminal support (for example iTerm2)
  3. Discretionary or alternate ligatures for some characters (notably /= with a slash in the middle, and pretty printed less-equals and greater-equals signs)
  4. Version for C-esque languages (->, !=, ==)

Alternatives

  • Vim: vim2hs and HaskellConceal do this but a ligature takes up one less space, changing vertical alignment
  • Emacs: haskell-mode does the same as vim2hs, but emacs reportedly supports adjusting the font for ligatures so that proper spacing is maintained Instructions (note: I haven't been able to get this to work myself on OSX)