Implementación de la tipografía
¿Cómo hacemos para implementar la tipografía? Resolver el "problema de la notación musical" nos ha dejado con una gran cantidad de objetos gráficos que representan las cabezas de las notas, el pentagrama, las plicas, etc.
Si los artesanos requieren más de diez años para convertirse en verdaderos maestros, ¿cómo vamos a poder nosotros, simples hackers, desarrollar un programa que les quite el trabajo?
La respuesta es: ¡no podemos! Puesto que la tipografía se fundamenta en el jucio humano sobre la apariencia, no se puede sustituir a las personas. Sin embargo, gran parte de su duro y repetitivo trabajo se puede automatizar: si LilyPond resuelve la mayoría de las situaciones más comunes de forma correcta, entonces esto ya será una gran mejoría sobre el software existente. El resto de los casos se pueden afinar a mano. Con el curso de los años, el software se podrá ir refinando para que haga cada vez más cosas de forma automática, de manera que las alteraciones forzadas a mano serán cada vez menos.
¿Cómo podemos construir tal sistema? Cuando iniciamos, escribimos el programa en C++. En esencia esto significa que la funcionalidad del programa quedaría grabada en piedra por nosotros, los desarrolladores. Esto demostró no ser satisfactorio:
- Si las cosas se tienen que afinar a mano, entonces el usuario debe poder acceder al motor de formateo. Por lo tanto, las reglas y parámetros no se pueden fijar en el momento de la compilación, sino que deben ser accesibles en el momento de la ejecución.
- El grabado es un asunto de juicio visual y por lo tanto de gusto personal. A pesar de ser tan conocedores como creemos ser, los usuarios podrían no estar de acuerdo con nuestra decisión estética. Por lo tanto, las definiciones sobre el estilo tipográfico también deben ser accesibles para el usuario.
- Por último, refinamos continuamente los algoritmos de formateo, por lo que necesitamos un enfoque flexible respecto de las reglas. El lenguaje C++ nos obliga a usar un método determinado de reglas de agrupación que no concuerda con la manera en que funciona la notación musical.
Siguiente: La arquitectura del
programa, su amiga flexible: afinar, modificar y desarrollar
las reglas de tipografía.