Implementing typography

How do we go about implementing typography? Answering the "music notation" problem left us with a bunch of graphic objects representing note heads, the staff, stems, etc.

If craftsmen need over ten years to become true masters, how could we simple hackers ever write a program to take over their jobs?

The answer is: we cannot! Since typography relies on human judgement of appearance, people cannot be replaced. However, much of their dull work can be automated: if LilyPond solves most of the common situations correctly, then this will be a huge improvement over existing software. The remaining cases can be tuned by hand. Over the course of years, the software can be refined to do more and more automatically, so manual overrides are necessary less and less.

How do we go about building such a system? When we started, we wrote the program in C++. Essentially, this means that the program functionality is set in stone by us developers. That proved to be unsatisfactory:

Clearly, there is a need for a flexible architecture. The architecture should encompass formatting rules, typographical style and individual formatting decisions.

Next: Program architecture, your flexible friend: tuning, tweaking and developing typography rules.


Home > About > Essay

Other languages: Deutsch, EspaƱol, Français.
About automatic language selection.