Gulzar is a Nastaliq font for Urdu text with a typographic, rather than calligraphic feel.
We hope that Gulzar will serve as a reference and model for other Nastaliq font designs, in particular in terms of its engineering and shaping rules. If you are looking to design a Nastaliq font, you will find some documentation on the Gulzar system and how it works in engineering.md.
Only needs to be done once:
sudo pip3 install -r requirements.txt
Don't try exporting from Glyphs! It's not going to work!
make
fonts/ttf/Gulzar-Regular.ttf
make
produces a debug version of the font.make release
produces a version of the font suitable for release.make test-shaping
checks the shaping rules and produces a report in qa/shaping_tests/report.html
.make test
runs a full fontbakery check on the font.make proof
produces urdu-john.pdf
, a comparison between Noto Nastaliq and GS Nastaliq.make testproof
produces test-failures.pdf
, PDF containing words with collisions.If you find a colliding sequence between two "words" (i.e. final glyph -> initial glyph + dots), you need to:
qa/shaping_tests/collisions.json
so it can be tested.Makefile
by default turns on FONTTOOLS_LOOKUP_DEBUGGING=1
which creates a Debg
table in the final font. This is stripped when building the release version.At_600_800_AtHeight600sub
and At_600_800_AtHeight600pos
- this tells you the height-specific lookup routines you need to modify to mitigate the collision.anchor-attachment.fez
.DropOne
in the sub
lookup)DropTwo
in sub
)OpenSmallSpaceBeforeKern
in pos
) OpenSpaceBeforeKern
in pos)
Tighten
in pos
)DropATinyBitMore
) or a lot further (DropALotMore
, both in pos
)Raise
in pos
)@dal_like
) to address the final glyph and all other glyphs like it.DoNothing
and DoNothingPos
(ignore rules) to create exceptions for existing situations.make test-shaping
to make sure there are no unwanted interactions with other sequences.This repository also contains FEZ plugins for Nastaliq as well as scripts to build the font file:
dump-glyphs-rules.py
turns the Nastaliq Connection information within the .glyphs
file into a CSV file so that it can be processed by the nastaliqTools.NastaliqConnections
plugin.find-notdefs.py
finds characters not currently mapped in the font.lint-arabic.py
finds missing entry/exit anchors (and will, in the future, also detect other anchor issues.)