1 @c -*- coding: utf-8; mode: texinfo; -*-
3 Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
5 When revising a translation, copy the HEAD committish of the
6 version that you are working on. For details, see the Contributors'
7 Guide, node Updating translation committishes..
13 @node implementing-typography
16 @unnumberedsec Implementing typography
18 How do we go about implementing typography? Answering the "music
19 notation" problem left us with a bunch of graphic objects
20 representing note heads, the staff, stems, etc.
22 If craftsmen need over ten years to become true masters, how could we
23 simple hackers ever write a program to take over their jobs?
25 The answer is: we cannot! Since typography relies on human judgement
26 of appearance, people cannot be replaced. However, much of their dull
27 work can be automated: if LilyPond solves most of the common
28 situations correctly, then this will be a huge improvement over
29 existing software. The remaining cases can be tuned by hand.
30 Over the course of years, the software can be refined to do
31 more and more automatically, so manual overrides are necessary less
34 How do we go about building such a system? When we started, we wrote
35 the program in C++. Essentially, this means that the program
36 functionality is set in stone by us developers. That proved to be
41 If things must be tuned by hand, then the user must access to the
42 formatting engine. Hence, rules and settings cannot be fixed at
43 compile time, but they must be accessible at run-time.
47 Engraving is a matter of visual judgement, and hence it is a
48 matter of taste. As knowledgeable as we are, users can disagree with
49 our personal decision. Therefore, the definitions of typographical
50 style must also be accessible to the user.
54 Finally, we continually refine the formatting algorithms, so we
55 need a flexible approach to rules. The C++ language forces a certain
56 method of grouping rules that does not match how music notation works.
61 Clearly, there is a need for a flexible architecture. The architecture
62 should encompass formatting rules, typographical style and individual
65 @divClass{float-right}
66 Next: @ref{formatting-architecture,Program architecture,
67 your flexible friend}: tuning, tweaking and developing typography