https://github.com/i-tu/hasklig
Hasklig - a code font with monospaced ligatures
https://github.com/i-tu/hasklig
afdko font hasklig ligatures otf
Last synced: 17 days ago
JSON representation
Hasklig - a code font with monospaced ligatures
- Host: GitHub
- URL: https://github.com/i-tu/hasklig
- Owner: i-tu
- License: ofl-1.1
- Created: 2014-04-06T11:10:28.000Z (about 11 years ago)
- Default Branch: main
- Last Pushed: 2022-02-19T01:25:54.000Z (about 3 years ago)
- Last Synced: 2025-04-05T10:05:41.703Z (24 days ago)
- Topics: afdko, font, hasklig, ligatures, otf
- Language: Python
- Homepage:
- Size: 132 MB
- Stars: 5,620
- Watchers: 82
- Forks: 153
- Open Issues: 44
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
### Hasklig – _Ligatures for 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](https://www.andres-loeh.de/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](https://en.wikipedia.org/wiki/Typographic_ligature). 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.
#### Hasklig
#### Source Code Pro
#### Currently implemented symbols
`<*` `<*>` `<+>` `<$>` `***` `<|` `|>` `<|>` `!!` `||` `===` `==>` `<<<` `>>>` `<>` `+++` `<-` `->` `=>` `>>` `<<` `>>=` `=<<` `..` `...` `::` `-<` `>-` `-<<` `>>-` `++` `/=` `==`### Building the fonts from source
#### Requirements
To build the binary font files from source, you need to have installed the
[Adobe Font Development Kit for OpenType](http://www.adobe.com/devnet/opentype/afdko.html) (AFDKO). The AFDKO
tools are widely used for font development today, and are part of most font
editor applications.Some SVG glyphs are inserted into the fonts using Python [FontTools](https://pypi.python.org/pypi/FontTools).
#### Building font instances from masters
This repository only includes so-called *master* weights of the fonts (effectively extralight and black).
The shapes of the weights in between these extremities are calculated by `makeInstancesUFO` supplied with `.designspace` files.
For convenience, the shell script **makeInstances** is provided, which executes `makeInstancesUFO`, calculating all the italic and regular font weight shapes.```sh
$ ./makeInstances.sh
```#### Building one font
The key to building OTF or TTF fonts is `makeotf`, which is part of the AFDKO toolset.
Information and usage instructions can be found by executing `makeotf -h`.In this repository, all necessary files are in place for building the OTF and TTF fonts.
For example, build a binary OTF font for the Regular style like this:```sh
$ cd Roman/Regular/
$ makeotf -r
```#### Building all fonts
For convenience, a shell script named **build** is provided in the root directory.
It builds all OTFs and TTFs, and can be executed by typing:```sh
$ ./build.sh
```or this on Windows:
```sh
> build.cmd
```### Credits
Original idea, design and implementation of code ligatures by Ian Tuomi 2014-2015.
This typeface extends [Source Code Pro](https://github.com/adobe-fonts/source-code-pro) with ligatures.