[question un peu HS] metafont

Bonjour à tous,
Lors d’un week-end LilyPond à Paris, j’avais aperçu Metafont, dont Bertrand Bordage en particulier a beaucoup parlé. (Bertrand qui a quelque peu disparu de la liste…)
Est-ce que quelqu’un aurait une bonne introduction à Metafont à conseiller pour un débutant, en français de préférence, en anglais sinon, en sachant que par ailleurs je suis sur Mac OS et donc peu habitué à utiliser la ligne de commandes (je sais faire quelques bidouillages avec wget et mv, compiler avec lilypond ou pdflatex, mais ça ne va pas vraiment plus loin et dès qu’il faut utiliser des options je dois aller vérifier dans toutes sortes de documents parce que je n’ai rien retenu la fois précédente, càd trois mois avant).
Merci d’avance !
L.C.

Le Desgraupe est pas mal ; je ne me souviens plus du titre exact mais
c'est du genre « Introduction à Metafont ».

  Arthur

  Le Desgraupe est pas mal ; je ne me souviens plus du titre exact
mais c'est du genre « Introduction à Metafont ».

  Arthur

oui,

Metafont - guide pratique
Bernard Desgraupes

Vuibert

···

Le Thu, 12 Apr 2012 16:10:46 +0200, Arthur Reutenauer <****@****> a écrit :

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

--
René Bastian
www.pythoneon.org

Disponible ici : http://www.eyrolles.com/Audiovisuel/Livre/metafont-9782711786428

On trouve beaucoup de fichiers PDF libres à ce sujet sur internet, mais en anglais....

Christophe Pochon
http://www.christophe-pochon.com

2012/4/12 René Bastian <****@****>

···

Le Thu, 12 Apr 2012 16:10:46 +0200, > Arthur Reutenauer <****@****> a écrit :

Le Desgraupe est pas mal ; je ne me souviens plus du titre exact
mais c'est du genre « Introduction à Metafont ».

Arthur

oui,

Metafont - guide pratique
Bernard Desgraupes

Vuibert


liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

--
René Bastian
www.pythoneon.org


liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

Bonjour à tous,
Je suis passé aujourd’hui à la B.U. de sciences emprunter le bouquin conseillé. Ça a l’air assez costaud quand même.
Je chercherai aussi plus attentivement sur internet.
Si quelqu’un a des références en particulier à conseiller, je suis toujours preneur !
L.

Salut à tous !

(Eh oui, je suis toujours vivant)

Pour toutes les questions sur le développement de LilyPond, il y a le guide du contributeur.
J'y ai « jadis » ajouté le METAFONTtutorial sur cette page.
C'est très bien pour commencer, mais cela n'aborde qu'une partie du langage.
Le plus complet et « hardcore » à lire est le METAFONTbook de Donald Knuth (le créateur de MetaFont et TeX).

Quelques explications supplémentaires peuvent être trouvées ici, mais le mieux est de « bouffer du code ».

Et pour finir, j'avoue que MetaFont n'est pas franchement simple à utiliser. On fait un bon dans le temps en l'utilisant, car cela date d'il y a 30 ans.
Mais bon, pour quelqu'un qui se débrouille en géométrie, équations de droites et vecteurs, cela ne pose pas trop de problème.

À bientôt,
Bertrand

PS : j'ai fondé ma boîte de développement informatique. J'enchaîne commande sur commande, aussi n'ai-je hélas plus de temps à allouer au développement de LilyPond pour le moment.

Salut !
Et merci beaucoup, Bertrand, pour ces indications. Content aussi de voir que tout va à peu près bien de ton côté.

Je me demande du coup s’il faut apprendre MetaFont ou quelque autre outil de création de fontes…

À bientôt,
L.

···

Le 14/04/12 00:57, Bertrand Bordage a écrit :

Salut à tous !

(Eh oui, je suis toujours vivant)

Pour toutes les questions sur le développement de LilyPond, il y a le guide du contributeur.
J'y ai « jadis » ajouté le METAFONTtutorial sur cette page.
C'est très bien pour commencer, mais cela n'aborde qu'une partie du langage.
Le plus complet et « hardcore » à lire est le METAFONTbook de Donald Knuth (le créateur de MetaFont et TeX).

Quelques explications supplémentaires peuvent être trouvées ici, mais le mieux est de « bouffer du code ».

Et pour finir, j'avoue que MetaFont n'est pas franchement simple à utiliser. On fait un bon dans le temps en l'utilisant, car cela date d'il y a 30 ans.
Mais bon, pour quelqu'un qui se débrouille en géométrie, équations de droites et vecteurs, cela ne pose pas trop de problème.

À bientôt,
Bertrand

PS : j'ai fondé ma boîte de développement informatique. J'enchaîne commande sur commande, aussi n'ai-je hélas plus de temps à allouer au développement de LilyPond pour le moment.

Et merci beaucoup, Bertrand, pour ces indications. Content aussi de voir que tout va à peu près bien de ton côté.

Plus qu'à peu près :slight_smile:

Je me demande du coup s’il faut apprendre MetaFont ou quelque autre outil de création de fontes…

MetaFont est le seul outil permettant de créer des fontes de manière procédurale. C'est une mauvaise solution pour bien des points, mais c'est le mieux qu'on ait pour un projet open-source comme LilyPond.
À ma connaissance, seuls LilyPond, TeX et ses variations utilisent MetaFont. Et seul TeX sait l'interpréter correctement. En effet, MetaFont date d'une époque où les imprimantes vectorielles et les formats de fonte modernes n'existaient pas. Il a donc fallu créer un script pour convertir MetaFont en OpenType Font spécialement pour LilyPond. Mais il ne fonctionne que partiellement...

J'ai souvent songé à résoudre tous les problèmes liés à l'utilisation de MetaFont, mais cela demanderait un lourd investissement humain.
À mon sens, il faudrait :

  • créer un nouveau langage de fontes, plus simple et plus parlant ;
  • créer un framework un peu WYSIWIG du genre Frescobaldi pour que ce soit moins prise de tête ;
  • permettre la génération de fontes « à la demande ».

Ce dernier point permettrait, par exemple, de réduire un peu la largeur des altérations dans les partitions les plus serrées.
En effet, LilyPond est contraint de toujours utiliser les mêmes fontes pré-construites. Avec la puissance des ordinateurs modernes, on pourrait se permettre, au moins pour les altérations, d'adapter les glyphes à la demande.

Bref, tout cela est bien facile à dire, mais considérablement difficile à réaliser. Cela demanderait à une personne très motivée de travailler dessus pendant deux ou trois ans à temps plein.
Si on pouvait être sûrs que ce serait utile à d'autres projets que LilyPond, pourquoi pas. Hélas, les designers sont généralement hermétiques aux idées de « code source » et « fontes procédurales ».

Ce constat accablant fait, il reste tout de même une solution intermédiaire. Se contenter de faire une petite interface graphique pour MetaFont (style Frescobaldi, donc).
Et à l'occasion de ce projet, faire une documentation claire et minimaliste de MetaFont.
Ce serait l'affaire de quelques mois de développement pour une seule personne à temps partiel. Si cela t'intéresse, je peux me lancer dedans. Et publier, d'ici quelques semaines, un premier brouillon de documentation et de programme.
Quant au script de conversion MetaFont -> fonte moderne, il faudra sans doute l'améliorer un peu au passage.

Pour ce qui est des choix techniques, mon choix se porte « évidemment » sur reStructuredText pour la documentation et PySide pour l'interface graphique. Hébergé sur Read the Docs pour la doc et GitHub pour la source de l'interface graphique.

À bientôt,
Bertrand

···

Le 14 avril 2012 12:44, Loïc Chahine <****@****> a écrit :

Et merci beaucoup, Bertrand, pour ces indications. Content aussi de voir que tout va à peu près bien de ton côté.

Plus qu'à peu près :slight_smile:

Je me demande du coup s’il faut apprendre MetaFont ou quelque autre outil de création de fontes…

MetaFont est le seul outil permettant de créer des fontes de manière procédurale. C'est une mauvaise solution pour bien des points, mais c'est le mieux qu'on ait pour un projet open-source comme LilyPond.
À ma connaissance, seuls LilyPond, TeX et ses variations utilisent MetaFont. Et seul TeX sait l'interpréter correctement. En effet, MetaFont date d'une époque où les imprimantes vectorielles et les formats de fonte modernes n'existaient pas. Il a donc fallu créer un script pour convertir MetaFont en OpenType Font spécialement pour LilyPond. Mais il ne fonctionne que partiellement...

Dans la mesure où (La)TeX en 1, et LilyPond en 2, sont les buts ultimes, MetaFont va donc rester la meilleure solution.

Bref, tout cela est bien facile à dire, mais considérablement difficile à réaliser. Cela demanderait à une personne très motivée de travailler dessus pendant deux ou trois ans à temps plein.
Si on pouvait être sûrs que ce serait utile à d'autres projets que LilyPond, pourquoi pas. Hélas, les designers sont généralement hermétiques aux idées de « code source » et « fontes procédurales ».

Raison pour laquelle, sans doute, MetaFont a si “mauvaise” presse auprès des “fondeurs”.

Ce constat accablant fait, il reste tout de même une solution intermédiaire. Se contenter de faire une petite interface graphique pour MetaFont (style Frescobaldi, donc).
Et à l'occasion de ce projet, faire une documentation claire et minimaliste de MetaFont.
Ce serait l'affaire de quelques mois de développement pour une seule personne à temps partiel. Si cela t'intéresse, je peux me lancer dedans. Et publier, d'ici quelques semaines, un premier brouillon de documentation et de programme.
Quant au script de conversion MetaFont -> fonte moderne, il faudra sans doute l'améliorer un peu au passage.

Merci pour la proposition ! mais pour l’instant je vais déjà m’initier un peu à MetaFont. C’est pas comme si c’était un langage à vraiment développer, donc il n’est peut-être (sans doute) pas utile de créer un outil qui en fait ne sera utile qu’à très peu de monde.
À bientôt,
L.C.

···

Le 14/04/12 15:02, Bertrand Bordage a écrit :

Le 14 avril 2012 12:44, Loïc Chahine <****@****> a écrit :

Bien entendu, quasiment personne ne l'utiliserait. Il n'empêche que le gain de temps et de qualité serait énorme au final. Tu n'imagines pas à quel point mon travail sur les fontes a été long et crado...
Et à court terme, l'idée de faire une doc moderne pour MetaFont me tente beaucoup.
J'ai commencé un peu à l'instant :
http://readthedocs.org/docs/metafont-neo-doc/en/latest/introduction.html

Bertrand

···

Le 14 avril 2012 17:47, Loïc Chahine <****@****> a écrit :

Ce constat accablant fait, il reste tout de même une solution intermédiaire. Se contenter de faire une petite interface graphique pour MetaFont (style Frescobaldi, donc).
Et à l'occasion de ce projet, faire une documentation claire et minimaliste de MetaFont.
Ce serait l'affaire de quelques mois de développement pour une seule personne à temps partiel. Si cela t'intéresse, je peux me lancer dedans. Et publier, d'ici quelques semaines, un premier brouillon de documentation et de programme.
Quant au script de conversion MetaFont -> fonte moderne, il faudra sans doute l'améliorer un peu au passage.

Merci pour la proposition ! mais pour l’instant je vais déjà m’initier un peu à MetaFont. C’est pas comme si c’était un langage à vraiment développer, donc il n’est peut-être (sans doute) pas utile de créer un outil qui en fait ne sera utile qu’à très peu de monde.

Bon début !
Si tu m’attends un peu je pourrai peut-être participer :wink:
J’étais justement en train de lire The MetaFont Tutorial, et je dois dire que j’ai réalisé… les exemples du tutoriel, c’est-à-dire que j’ai recopié un bêta, un smiley basique et deux lignes droites (oui, j’en suis qu’à la page 17 hein). Pour l’instant en tout cas c’est très compréhensible.
J’y verrai plus clair quand j’aurai lu davantage, forcément.

Déjà tu pourras enrichir Forces et faiblesses de tout ce que tu as écrit sur la liste (et donc en particulier à moi) précédemment.
Littéraire chiant précise aussi que “mauvaise documentation” est sans doute excessif, et que “documentation difficile” serait sans doute plus réaliste.

À suivre !
L.

···

Le 15/04/12 01:10, Bertrand Bordage a écrit :

Bien entendu, quasiment personne ne l'utiliserait. Il n'empêche que le gain de temps et de qualité serait énorme au final. Tu n'imagines pas à quel point mon travail sur les fontes a été long et crado...
Et à court terme, l'idée de faire une doc moderne pour MetaFont me tente beaucoup.
J'ai commencé un peu à l'instant :
http://readthedocs.org/docs/metafont-neo-doc/en/latest/introduction.html

Bertrand

Si tu m’attends un peu je pourrai peut-être participer :wink:

Oui, pas de problème !
La source est sur GitHub : https://github.com/BertrandBordage/MetaFont-neo-doc
Si tu as le courage d'apprendre git et reStructuredText (un langage ultra-simple), tu pourras effectuer des changements sans même m'attendre non plus.
Sinon, on peut discuter en privé pour que tu me passes des bouts de doc que je rajouterai.

J’étais justement en train de lire The MetaFont Tutorial, et je dois dire que j’ai réalisé… les exemples du tutoriel, c’est-à-dire que j’ai recopié un bêta, un smiley basique et deux lignes droites (oui, j’en suis qu’à la page 17 hein). Pour l’instant en tout cas c’est très compréhensible.
J’y verrai plus clair quand j’aurai lu davantage, forcément.

Pour moi il y a trop de texte pour trop peu d'informations, hélas. Bon, je ne vais pas cracher dessus, j'ai appris avec ça !

Déjà tu pourras enrichir Forces et faiblesses de tout ce que tu as écrit sur la liste (et donc en particulier à moi) précédemment.
Littéraire chiant précise aussi que “mauvaise documentation” est sans doute excessif, et que “documentation difficile” serait sans doute plus réaliste.

Bien sûr. Mais à l'heure qu'il est je n'ai plus les idées claires, aussi préfère-je attendre le point du jour.

À suivre !

Yep !
Bertrand

···

Le 15 avril 2012 01:21, Loïc Chahine <****@****> a écrit :

Le 15 avril 2012 01:21, Loïc Chahine <****@****> a
écrit :

> Si tu m’attends un peu je pourrai peut-être participer :wink:
>

Oui, pas de problème !
La source est sur GitHub :
https://github.com/BertrandBordage/MetaFont-neo-doc
Si tu as le courage d'apprendre git et reStructuredText (un langage
ultra-simple), tu pourras effectuer des changements sans même
m'attendre non plus.

[...]

À suivre !

Yep !
Bertrand

Bonjour,

j'ai lu ce qui se trouve sur GitHub. Quelques remarques:
- Metafont produit du bitmap,
- Metapost, son successeur, produit du PostScript,
  (Ce ne serait pas plus intéressant ?)
- Metafun est un développement plus récent de Metapost et intégré
  à Context qui est par rapport à Tex ce que la mobylette est au vélo,
  (voir http://wiki.contextgarden.net/MetaFun ).

L'idée d'utiliser reStr.. pour la doc est bonne, par contre
pourquoi perdre votre temps à faire un tutoriel pour des
objets informatiques vétustes ?

Sur le GitHub je vois déjà traîner un conf.py. Pourquoi
ne pas refaire le tout en Python ?
J'ai le Metafonbook de Knuth. Une centaine de pages (sur 350)
est occupée à mettre en place des procédés qui sont déjà
disponibles dans Python.
Pyx et à un degré moindre reportLab apportent un certain nombre
de solutions graphiques dont certaines sont, je pense, réutilisables.

J'utilise Python de façon autonome (sans recours à MIDI ou d'autres
programmes de génération de sons) depuis 2004 - et je ne le regrette
pas : tout ce que j'ai accumulé est réutilisable, clair, lisible
même des années après. Avant de me décider pour Python, j'ai aussi
utilisé des langages plus ou moins cryptographiques (Pascal,
Csound, Lisp, etc). J'ai choisi Python bien que à l'époque il avait
la réputation d'être lent - mais cette objection ne tenait pas :
ce n'est pas la compilation qui fait perdre du temps, mais le
décryptage d'un code de plus de 6 mois. Entretemps, l'extension de
calcul numérique, numpy, accélère les calculs de vecteurs de grande
dimension (sr = 44100 ou plus) de sorte que les temps de calcul
deviennent imperceptibles.

En outre, en consultant http://pypi.python.org, on voit
que rien n'existe en "font design" - c'est un truc à faire.

Tout ceci pour dire que je participerai à un tel projet -
dans la mesure de mes capacités - s'il vous tente.

Bon dimanche !

···

Le Sun, 15 Apr 2012 01:40:05 +0200, Bertrand Bordage <****@****> a écrit :
--
René Bastian
www.pythoneon.org

Bonjour à tous !

Si tu m’attends un peu je pourrai peut-être participer :wink:

Oui, pas de problème !
La source est sur GitHub : https://github.com/BertrandBordage/MetaFont-neo-doc
Si tu as le courage d'apprendre git et reStructuredText (un langage ultra-simple), tu pourras effectuer des changements sans même m'attendre non plus.
Sinon, on peut discuter en privé pour que tu me passes des bouts de doc que je rajouterai.

C’est difficile git ? Faudra que j’essaie…

J’étais justement en train de lire The MetaFont Tutorial, et je dois dire que j’ai réalisé… les exemples du tutoriel, c’est-à-dire que j’ai recopié un bêta, un smiley basique et deux lignes droites (oui, j’en suis qu’à la page 17 hein). Pour l’instant en tout cas c’est très compréhensible.
J’y verrai plus clair quand j’aurai lu davantage, forcément.

Pour moi il y a trop de texte pour trop peu d'informations, hélas. Bon, je ne vais pas cracher dessus, j'ai appris avec ça !

Oui moi j’ai plus ou moins l’habitude de ce rapport-là :wink: Et au moins c’est clairement expliqué… Et puis on peut un peu sauter des mots de temps en temps, on comprend quand même, ça j’aime bien.

j'ai lu ce qui se trouve sur GitHub. Quelques remarques: - Metafont produit du bitmap, - Metapost, son successeur, produit du PostScript, (Ce ne serait pas plus intéressant ?) - Metafun est un développement plus récent de Metapost et intégré à Context qui est par rapport à Tex ce que la mobylette est au vélo, (voir http://wiki.contextgarden.net/MetaFun ).

Je ne suis pas sûr que quoi que ce soit se substitue réellement à TeX, dans la mesure où les autres langages sont des extensions, ou des “à partir de”, etc.
J’ai coécrit un paquetage LaTeX, tous les trucs les plus puissants sont en TeX pur.
Du coup :

L'idée d'utiliser reStr.. pour la doc est bonne, par contre
pourquoi perdre votre temps à faire un tutoriel pour des
objets informatiques vétustes ? 

Ben parce que bien que vétuste rien de réellement mieux n’a été créé depuis, si c’est comme pour TeX où ce qu’on a fait de mieux c’est d’ajouter des couches. Et là encore, à part LaTeX, peu parviennent à s’imposer…

En tout cas, pour l’idée de tout refaire en Python, moi je suis peu tenté, ne serait-ce que parce que je ne connais pas Python (si déjà j’arrive à apprendre convenablement C++ et Scheme ça sera bien, en plus de maîtriser mieux (La)TeX), que la nécessité absolue de tout refaire ne m’apparaît pas, et enfin que je n’en ai nullement les capacités.

Sur le GitHub je vois déjà traîner un conf.py. Pourquoi
ne pas refaire le tout en Python ?
J'ai le Metafonbook de Knuth. Une centaine de pages (sur 350)
est occupée à mettre en place des procédés qui sont déjà
disponibles dans Python. 
Pyx et à un degré moindre reportLab apportent un certain nombre
de solutions graphiques dont certaines sont, je pense, réutilisables.

J'utilise Python de façon autonome (sans recours à MIDI ou d'autres
programmes de génération de sons) depuis 2004 - et je ne le regrette
pas : tout ce que j'ai accumulé est réutilisable, clair, lisible
même des années après. Avant de me décider pour Python, j'ai aussi
utilisé des langages plus ou moins cryptographiques (Pascal,
Csound, Lisp, etc). J'ai choisi Python bien que à l'époque il avait
la réputation d'être lent - mais cette objection ne tenait pas :
ce n'est pas la compilation qui fait perdre du temps, mais le
décryptage d'un code de plus de 6 mois. Entretemps, l'extension de
calcul numérique, numpy, accélère les calculs de vecteurs de grande
dimension (sr = 44100 ou plus) de sorte que les temps de calcul
deviennent imperceptibles.

En outre, en consultant [http://pypi.python.org](http://pypi.python.org), on voit
que rien n'existe en "font design" - c'est un truc à faire.

Tout ceci pour dire que je participerai à un tel projet -
dans la mesure de mes capacités - s'il vous tente.

À bientôt,
L.

Bonjour,

j'ai lu ce qui se trouve sur GitHub. Quelques remarques:

  • Metafont produit du bitmap,
  • Metapost, son successeur, produit du PostScript,
    (Ce ne serait pas plus intéressant ?)

Oui, et LilyPond utilise un script Perl (http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=blob;f=scripts/build/mf2pt1.pl) pour obtenir du PostScript.
Et comment obtient-il du PostScript ? Grâce à MetaPost !
Je ne suis pas sûr qu'il faudrait en parler dès l'introduction, mais je pourrais être facilement convaincu.

  • Metafun est un développement plus récent de Metapost et intégré
    à Context qui est par rapport à Tex ce que la mobylette est au vélo,
    (voir http://wiki.contextgarden.net/MetaFun ).

Intéressant, je ne connaissais pas. Tu voudrais que j'ajoute MetaFun à la liste des programmes utilisant MetaFont ? Je viens de changer pour que ce soit plus cohérent.

L'idée d'utiliser reStr.. pour la doc est bonne, par contre
pourquoi perdre votre temps à faire un tutoriel pour des
objets informatiques vétustes ?

Parce qu'on a rien de mieux.
Parce que ce n'est pas si difficile que ça en a l'air.
Parce que la mauvaise connaissance de MetaFont rend les fontes de LilyPond de moins en moins cohérentes.
Parce qu'il faudra maîtriser MetaFont si on souhaite créer un jour un successeur à MetaFont qui puisse faire migrer les fontes de LilyPond
Parce qu'on est des pionniers en paléontologie informatique.
Parce qu'on est un peu fous.

Sur le GitHub je vois déjà traîner un conf.py. Pourquoi
ne pas refaire le tout en Python ?
J'ai le Metafonbook de Knuth. Une centaine de pages (sur 350)
est occupée à mettre en place des procédés qui sont déjà
disponibles dans Python.
Pyx et à un degré moindre reportLab apportent un certain nombre
de solutions graphiques dont certaines sont, je pense, réutilisables.

Comme je le disais plus haut, c'est un de mes ardents désirs. Mais, même avec les outils modernes, cela prendra beaucoup de temps. Surtout si on souhaite faire une interface graphique pour faciliter le boulot, notamment pour comparer rapidement les différentes tailles et poids d'un caractère, pour inciter à utiliser les mêmes variables sur tout un projet, etc.

J'utilise Python de façon autonome (sans recours à MIDI ou d'autres
programmes de génération de sons) depuis 2004 - et je ne le regrette
pas : tout ce que j'ai accumulé est réutilisable, clair, lisible
même des années après. Avant de me décider pour Python, j'ai aussi
utilisé des langages plus ou moins cryptographiques (Pascal,
Csound, Lisp, etc). J'ai choisi Python bien que à l'époque il avait
la réputation d'être lent - mais cette objection ne tenait pas :
ce n'est pas la compilation qui fait perdre du temps, mais le
décryptage d'un code de plus de 6 mois.

J'ai fait le même choix. Surtout qu'un programme Python un peu trop lent n'est pas à jeter : on peut facilement optimiser un module en le ré-implémentant en C++.
Je suis devenu définitivement amoureux de Python le jour où j'ai compris comment marchaient les args et kwargs :stuck_out_tongue:

Entretemps, l'extension de
calcul numérique, numpy, accélère les calculs de vecteurs de grande
dimension (sr = 44100 ou plus) de sorte que les temps de calcul
deviennent imperceptibles.

Certes. Mais pour de la résolution d'équations, le plus simple sera peut-être d'utiliser sympy, au moins dans un premier temps. Et lui est très lent :frowning:
De toutes façons, tant qu'on ne fait pas de génération de fonte à la demande lors de l'exécution de LilyPond, le temps perdu à utiliser sympy ne gênera que les développeurs

En outre, en consultant http://pypi.python.org, on voit
que rien n'existe en "font design" - c'est un truc à faire.

Oui, mais c'est un gros investissement qui demande au moins trois personnes motivées ;o)

Tout ceci pour dire que je participerai à un tel projet -
dans la mesure de mes capacités - s'il vous tente.

Ah ben c'est parfait, on a trois personnes ! :oD

Bon après-midi,
Bertrand
Bertrand

···

Le 15 avril 2012 10:37, René Bastian <****@****> a écrit :

Bonjour,

> j'ai lu ce qui se trouve sur GitHub. Quelques remarques:
> - Metafont produit du bitmap,

- Metapost, son successeur, produit du PostScript,
> (Ce ne serait pas plus intéressant ?)
>

Oui, et LilyPond utilise un script Perl (
Savannah Git Hosting - lilypond.git/blob - scripts/build/mf2pt1.pl)
pour obtenir du PostScript.

Et comment obtient-il du PostScript ? Grâce à MetaPost !

Donc pas Metafont ...

Je ne suis pas sûr qu'il faudrait en parler dès l'introduction, mais
je pourrais être facilement convaincu.

- Metafun est un développement plus récent de Metapost et intégré
> à Context qui est par rapport à Tex ce que la mobylette est au
> vélo, (voir http://wiki.contextgarden.net/MetaFun ).

Metafun gared évidemment la structure des langages
Metapost & Metafont qui font du développeur un esclave de
l'ordi. Ce n'est plus nécessaire [En Pascal je devais gérer
les listes ; pour avoir des listes hétéroclites, c'était la
galère ; en Python, je peux y mettre n'importe quoi -
comme déjà proposé dans les années 1980 par le Smalltalk-80
avec le concept de 'bag']

Aucun des MetaXXX ne semble comporter le concept de classe. Or c'est
l'instrument idéal pour enfouir les données assez invariables
pour ne s'occuper que des données variables.

>

Intéressant, je ne connaissais pas. Tu voudrais que j'ajoute MetaFun
à la liste des programmes utilisant MetaFont ? Je viens de changer
pour que ce soit plus cohérent.

Je propose de tout faire en pur Python, flanqué de sympy et numpy.
Pourquoi s'enquiquiner avec des syntaxes tarabiscotées.

> L'idée d'utiliser reStr.. pour la doc est bonne, par contre
> pourquoi perdre votre temps à faire un tutoriel pour des
> objets informatiques vétustes ?
>

Parce qu'on a rien de mieux.
Parce que ce n'est pas si difficile que ça en a l'air.
Parce que la mauvaise connaissance de MetaFont rend les fontes de
LilyPond de moins en moins cohérentes.
Parce qu'il faudra maîtriser MetaFont si on souhaite créer un jour un
successeur à MetaFont qui puisse faire migrer les fontes de LilyPond
Parce qu'on est des pionniers en paléontologie informatique.
Parce qu'on est un peu fous.

Bill Schottstaedt - dans son projet CMN - a des descriptions
de glyphes en CommonLisp qui pondent du PostScript;
elles viennent des fontes faites en son temps par
Daniel Taupin et sont traduisibles en Python.

> Sur le GitHub je vois déjà traîner un conf.py. Pourquoi
> ne pas refaire le tout en Python ?
> J'ai le Metafonbook de Knuth. Une centaine de pages (sur 350)
> est occupée à mettre en place des procédés qui sont déjà
> disponibles dans Python.
> Pyx et à un degré moindre reportLab apportent un certain nombre
> de solutions graphiques dont certaines sont, je pense,
> réutilisables.
>

Comme je le disais plus haut, c'est un de mes ardents désirs. Mais,
même avec les outils modernes, cela prendra beaucoup de temps.
Surtout si on souhaite faire une interface graphique pour faciliter
le boulot, notamment pour comparer rapidement les différentes tailles
et poids d'un caractère, pour inciter à utiliser les mêmes variables
sur tout un projet, etc.

J'utilise Python de façon autonome (sans recours à MIDI ou d'autres
> programmes de génération de sons) depuis 2004 - et je ne le regrette
> pas : tout ce que j'ai accumulé est réutilisable, clair, lisible
> même des années après. Avant de me décider pour Python, j'ai aussi
> utilisé des langages plus ou moins cryptographiques (Pascal,
> Csound, Lisp, etc). J'ai choisi Python bien que à l'époque il avait
> la réputation d'être lent - mais cette objection ne tenait pas :
> ce n'est pas la compilation qui fait perdre du temps, mais le
> décryptage d'un code de plus de 6 mois.

J'ai fait le même choix. Surtout qu'un programme Python un peu trop
lent n'est pas à jeter : on peut facilement optimiser un module en
le ré-implémentant en C++.
Je suis devenu définitivement amoureux de Python le jour où j'ai
compris comment marchaient les args et kwargs :stuck_out_tongue:

Entretemps, l'extension de
> calcul numérique, numpy, accélère les calculs de vecteurs de grande
> dimension (sr = 44100 ou plus) de sorte que les temps de calcul
> deviennent imperceptibles.
>

Certes. Mais pour de la résolution d'équations, le plus simple sera
peut-être d'utiliser sympy, au moins dans un premier temps. Et lui
est très lent :frowning:

1) Le bouquin de Langtanen "A Primer on Scientific Progr..."
propose même la solution d'équa-diffs. C'est pas lent.

2) Dans mon pythoneon j'utilise des droites (qu'on peut courber avec
des puissances) et des cubiques (on peut donner les pentes au
début et à la fin) pour dessiner n'importe quelle évolution
(variation de fréquence, variant de fréquence d'accord de filtre,
etc.). On ne voit pas le temps passer, car lors du 2e (ou 3e ? :slight_smile:
essai, Python utilise les précompilés .pyc.

Si on n'utilise pas les courbes de Bézier, on n'a pas
besoin d'interface graphique interactive.
[J'ai un énorme respect pour Pierre Bézier pour l'avoir vu
à la télé, je pense quelque temps avant qu'il meure.
Il a simplement raconté comment de son temps les ingénieurs
se passaient des tuyaux au coin du comptoir. Actuellement
ces gens iraient en taule pour "espionnage industriel".]

De toutes façons, tant qu'on ne fait pas de génération de fonte à la
demande lors de l'exécution de LilyPond, le temps perdu à utiliser
sympy ne gênera que les développeurs

Ben oui.

···

Le Sun, 15 Apr 2012 12:05:11 +0200, Bertrand Bordage <****@****> a écrit :

Le 15 avril 2012 10:37, René Bastian <****@****> a écrit :

En outre, en consultant http://pypi.python.org, on voit
> que rien n'existe en "font design" - c'est un truc à faire.
>

Oui, mais c'est un gros investissement qui demande au moins trois
personnes motivées ;o)

> Tout ceci pour dire que je participerai à un tel projet -
> dans la mesure de mes capacités - s'il vous tente.
>

Ah ben c'est parfait, on a trois personnes ! :oD

Bon après-midi,
Bertrand
Bertrand

--
René Bastian
www.pythoneon.org

Et comment obtient-il du PostScript ? Grâce à MetaPost !

Donc pas Metafont ...

Au moment de la compilation, on n'utilise pas le programme MetaFont, en effet.
Mais la syntaxe reste de la syntaxe MetaFont et MetaPost, en interne, utilise MetaFont.
Bref.

Metafun gared évidemment la structure des langages
Metapost & Metafont qui font du développeur un esclave de
l'ordi. Ce n'est plus nécessaire [En Pascal je devais gérer
les listes ; pour avoir des listes hétéroclites, c'était la
galère ; en Python, je peux y mettre n'importe quoi -
comme déjà proposé dans les années 1980 par le Smalltalk-80
avec le concept de 'bag']

Aucun des MetaXXX ne semble comporter le concept de classe. Or c'est
l'instrument idéal pour enfouir les données assez invariables
pour ne s'occuper que des données variables.

C'est sûr.

Je propose de tout faire en pur Python, flanqué de sympy et numpy.
Pourquoi s'enquiquiner avec des syntaxes tarabiscotées.

Évidemment, mais il faudra soit faire un « parser » capable de comprendre MF, soit réécrire toute la fonte de LilyPond.
Long dans un cas comme dans l'autre...

Bill Schottstaedt - dans son projet CMN - a des descriptions
de glyphes en CommonLisp qui pondent du PostScript;
elles viennent des fontes faites en son temps par
Daniel Taupin et sont traduisibles en Python.

Ah oui, effectivement. Je ne connaissais pas du tout.
Par contre il n'y a aucune description de glyphe. C'est juste du PostScript pur et dur pompé sur MusiXTeX.
C'est pas moi qui le dit, c'est l'auteur, dans le fichier cmn-glyphs.lisp de la source.

Entretemps, l'extension de

calcul numérique, numpy, accélère les calculs de vecteurs de grande
dimension (sr = 44100 ou plus) de sorte que les temps de calcul
deviennent imperceptibles.

Certes. Mais pour de la résolution d'équations, le plus simple sera
peut-être d'utiliser sympy, au moins dans un premier temps. Et lui
est très lent :frowning:

  1. Le bouquin de Langtanen "A Primer on Scientific Progr..."
    propose même la solution d'équa-diffs. C'est pas lent.

Cela m'est arrivé de faire des résolutions d'équations différentielles en temps réel avec sympy dans le cadre d'un jeu vidéo.
J'ai abandonné l'idée car on passait de 60 images à la seconde à 7 images à la seconde...
Mais c'est vrai, avec les objectifs qu'on se fixe, ce sera tout à fait acceptable

  1. Dans mon pythoneon j'utilise des droites (qu'on peut courber avec
    des puissances) et des cubiques (on peut donner les pentes au
    début et à la fin) pour dessiner n'importe quelle évolution
    (variation de fréquence, variant de fréquence d'accord de filtre,
    etc.). On ne voit pas le temps passer, car lors du 2e (ou 3e ? :slight_smile:
    essai, Python utilise les précompilés .pyc.

Si on n'utilise pas les courbes de Bézier, on n'a pas
besoin d'interface graphique interactive.

:o\ Je ne suis pas sûr de comprendre...
En tout cas j'étais parti sur des droites et des Bézier cubiques, comme MetaFont.
Avec une gestion des « pinceaux » et éventuellement toute courbe de Bézier.

···

Le 15 avril 2012 19:27, René Bastian <****@****> a écrit :

Le Sun, 15 Apr 2012 12:05:11 +0200, > > Bertrand Bordage <****@****> a écrit :

Bonsoir,

Discussion intéressante, même si j'avoue que les considérations
techniques restent bien au-dessus de ma compréhension.

Je ne sais pas si ça a quelque chose à voir mais il me semble avoir lu
que les sources de la fonte Gonville étaient en Python.
http://www.chiark.greenend.org.uk/~sgtatham/gonville/

Et il y a eu une discussion au sujet de Metafont sur la liste -devel
et Python a été mentionné pour remplacer certaines parties du processus
de génération de fontes.
http://lists.gnu.org/archive/html/lilypond-devel/2012-02/msg00629.html

Bref, avant de lancer un projet quelconque, pensez à en parler à des
personnes comme Janek Warchoł, Werner "font guru" Lemberg ou encore
Han-Wen Nienhuys.

Cordialement,
Xavier

···

2012/4/15 Bertrand Bordage <****@****>:

:o\ Je ne suis pas sûr de comprendre...
En tout cas j'étais parti sur des droites et des Bézier cubiques, comme
MetaFont.
Avec une gestion des « pinceaux » et éventuellement toute courbe de Bézier.

--
Xavier Scheuer <****@****>

Je ne sais pas si ça a quelque chose à voir mais il me semble avoir lu
que les sources de la fonte Gonville étaient en Python.
http://www.chiark.greenend.org.uk/~sgtatham/gonville/

Ah mais oui ! Excellent ! Merci mille fois pour avoir mis cela en avant.

···

Le 15 avril 2012 21:15, Xavier Scheuer <****@****> a écrit :

Et il y a eu une discussion au sujet de Metafont sur la liste -devel
et Python a été mentionné pour remplacer certaines parties du processus
de génération de fontes.
http://lists.gnu.org/archive/html/lilypond-devel/2012-02/msg00629.html

Bref, avant de lancer un projet quelconque, pensez à en parler à des
personnes comme Janek Warchoł, Werner "font guru" Lemberg ou encore
Han-Wen Nienhuys.

Cordialement,
Xavier

--
Xavier Scheuer <****@****>

Oups, fail, j'ai envoyé mon message sans le faire exprès

Je ne sais pas si ça a quelque chose à voir mais il me semble avoir lu
que les sources de la fonte Gonville étaient en Python.
http://www.chiark.greenend.org.uk/~sgtatham/gonville/

Ah mais oui ! Excellent ! Merci mille fois pour avoir mis cela en avant.
Hélas, la logique par classe n'est pas correctement utilisée et la définition des glyphes s'apparente trop à du PostScript.
Néanmoins cette réussite me motive à poursuive dans la voie d'un successeur Python à MetaFont qui serait « class-based ».

Et il y a eu une discussion au sujet de Metafont sur la liste -devel
et Python a été mentionné pour remplacer certaines parties du processus
de génération de fontes.
http://lists.gnu.org/archive/html/lilypond-devel/2012-02/msg00629.html

Ah oui, je ne l'avais pas lu :blush:

Bref, avant de lancer un projet quelconque, pensez à en parler à des
personnes comme Janek Warchoł, Werner "font guru" Lemberg ou encore
Han-Wen Nienhuys.

Je suis plutôt pour faire des essais d'abord, puis en parler si les premiers résultats sont prometteurs.
En tout cas, on pourra faire confiance à Janek pour l'aspect discussion :slight_smile:

À présent, je propose de continuer cette discussion en privé.

À bientôt,
Bertrand

···

Le 15 avril 2012 21:15, Xavier Scheuer <****@****> a écrit :