Autor Thema: Gelöst: Generalbassbezifferung kursiv  (Gelesen 1008 mal)

Joei

  • Gast
Gelöst: Generalbassbezifferung kursiv
« am: Montag, 13. März 2017, 09:37 »
Moin,

ich würde gerne für eine kritische Ausgabe den Generalbass ergänzen - damit man aber meine Ergänzungen als solche erkennt, würde ich die gerne kursiv setzen.
Nun dachte ich, ich sei schlau und habe folgendes versucht:

\override FiguredBass.BassFigure #'font-shape = #'italic
leider ohne Erfolg.

1) Wie sieht die richtige Lösung aus?
2) Wo kann ich mir zusammensuchen welche Attribute es für "FiguredBass.BassFigure" gibt?

Viele Grüße,
Joei
« Letzte Änderung: Dienstag, 14. März 2017, 08:35 von Joei »

harm6

  • Gast
Re: Generalbassbezifferung kursiv
« Antwort #1 am: Montag, 13. März 2017, 11:50 »
Hallo,

ich hab' momentan keine Zeit es auszuarbeiten, aber vielleicht ist folgender thread hilfreich:
https://archiv.lilypondforum.de/index.php?topic=2465.msg13902#msg13902

Gruß,
  Harm

Joei

  • Gast
Re: Generalbassbezifferung kursiv
« Antwort #2 am: Montag, 13. März 2017, 12:46 »
mh - sah zumindest von der Beschreibung passend aus - die vorgeschlagene Lösung analog angewandt funktioniert allerdings nicht:
\version "2.19.40"

\figuremode {
  <_7>4
  \override FiguredBass.BassFigure.font-name = "TeXGyreSchola italic"
  <_7>4
}

  • und ja: der Font ist installiert ;)
  • auch im \Layoutblock blieb's erfolglos

ich probier mal weiter rum...

fugenkomponist

  • Gast
Re: Generalbassbezifferung kursiv
« Antwort #3 am: Montag, 13. März 2017, 13:51 »
Ganz einfach: Du befindest dich nicht in einem FiguredBass-Kontext, sondern in einem Staff-Kontext, deshalb zeigt der \override keine Wirkung.

Lösungsmöglichkeiten:
1. \override Staff.… statt \override FiguredBass.…
2. \figuremode in nen FiguredBass-Kontext setzen
3. die Abkürzung \figures für \new FiguredBass \figuremode verwenden.

Ich würde zu 2. oder 3. raten (genauer gesagt zu 2., wenn Noteneingabe und \score voneinander getrennt sein sollen, ansonsten 3.).

Code für alle drei Versionen:
\version "2.19.56"

\figuremode {
  <_7>4
  \override Staff.BassFigure.font-name = "TeXGyreSchola italic"
  <_7>4
}

\new FiguredBass \figuremode {
  <_7>4
  \override FiguredBass.BassFigure.font-name = "TeXGyreSchola italic"
  <_7>4
}

\figures {
  <_7>4
  \override FiguredBass.BassFigure.font-name = "TeXGyreSchola italic"
  <_7>4
}

Edit: Wenn ein \override keine Auswirkung zeigt, finde ich normalerweise mithilfe von Farbe heraus, ob ich den richtigen Kontext für den \override erwischt habe.
\override FiguredBass.BassFigure.color = #redhatte keinen Effekt, also wußte ich, daß FiguredBass nicht stimmen kann und habs mit Staff probiert (weil ja auch ein Notensystem angezeigt wurde, war das die naheliegendste Variante).
« Letzte Änderung: Montag, 13. März 2017, 13:53 von fugenkomponist »

Joei

  • Gast
Re: Generalbassbezifferung kursiv
« Antwort #4 am: Montag, 13. März 2017, 14:05 »
Lieber Fugenkomponist - vielen Dank, habe ich wieder was gelernt - ich bin immer wieder begeistert, mit wie viel Engagement und Sachkenntnis Du und harm6 (und manch Andere(r)) helft. Joei

Joei

  • Gast
Re: Generalbassbezifferung kursiv
« Antwort #5 am: Montag, 13. März 2017, 15:25 »
...obwohl :( - jetzt lassen sich die Eigenschaften ändern (Farbe, Font-size - alles kein Problem) - aber das mit den Schriftarten erschließt sich mir noch nicht ganz.

Die "TeXGyreSchola italic bold" funktioniert - andere Schriftarten scheinbar nicht

\version "2.19.40"
\new FiguredBass
\figuremode {
  <7>4
  \override FiguredBass.BassFigure.font-size = #+3

  \override FiguredBass.BassFigure.font-name = "TeXGyreSchola italic bold" %funktioniert
  <7>

  \override FiguredBass.BassFigure.font-name = "TeXGyreSchola italic" %funktioniert
  <7>

  \override FiguredBass.BassFigure.font-name = #"Times New Roman" %funktioniert nicht weder mit noch ohne "#"
  <7>

  \override FiguredBass.BassFigure.font-name = #"Times New Roman Bold" %funktioniert nicht
  <7>

  \override FiguredBass.BassFigure.font-name = #"Times New Roman Italic" %funktioniert nicht
  <7>

  \override FiguredBass.BassFigure.font-shape = #'italic %funktioniert nicht
  <7>

  \override FiguredBass.BassFigure.font-name = #"Times New Roman bold italic" %funktioniert nicht
  <7>

}

1) Woher weiß ich, in welcher Form ich den Namen schreiben muss? 
  • Als Datei heißt der obige funktionierende Font teXgyreschola-bolditalic.otf
  • im Fontmanager TeXGyreSchola-Bolditalic


2) welchen Unterschied macht das "#" vor dem Schriftnamen - hab's im Netzt mit und ohne gefunden, scheint beides zu funktionieren

3) welchen Font verwendet Lily original für die BassFigures - ich würde ja gerne exakt den nehmen, nur in kursiv

Vielen Dank nochmal, Joei

harm6

  • Gast
Re: Generalbassbezifferung kursiv
« Antwort #6 am: Montag, 13. März 2017, 23:10 »
Zitat
Die "TeXGyreSchola italic bold" funktioniert - andere Schriftarten scheinbar nicht

Nicht ganz, tatsächlich funktioniert "Times New Roman" nicht, denn pango sieht das "Roman" in "Times New Roman" als Spezifikation des Schriftschnitts von "Times New" und nicht als Teil das Namens. "Times New" gibts aber nicht, insoweit nimmt LiyPond ein Fallback.

Zitat
1) Woher weiß ich, in welcher Form ich den Namen schreiben muss? 
Aber man kann es trotzdem hinkriegen. Zu diesem Zwecke kann ein Komma eingefügt werden. Davor ist der Name, danach der Schnitt. Funktioniert tatsächlich meistens auch ohne Komma, nur für "Times New Roman" nicht. Der Name "Times New Roman" ist halt altehrwürdig, aber schlecht für pango...

Folgndes klappt aber:
\markup \column {
  \override #'(font-name . "TeXGyreSchola italic") "TeXGyreSchola italic"
  \override #'(font-name . "TeXGyreSchola, italic") "TeXGyreSchola italic"
  \override #'(font-name . "TeXGyreSchola bold") "TeXGyreSchola bold"
  \override #'(font-name . "TeXGyreSchola, bold") "TeXGyreSchola bold"
  \override #'(font-name . "TeXGyreSchola italic bold") "TeXGyreSchola italic bold"
  \override #'(font-name . "TeXGyreSchola, italic bold") "TeXGyreSchola italic bold"
  \override #'(font-name . "Times New Roman") "Not Times New Roman"
  \override #'(font-name . "Times New Roman,") "Times New Roman"
  \override #'(font-name . "Times New Roman, italic") "Times New Roman"
  \override #'(font-name . "Times New Roman, italic") "Times New Roman italic"
  \override #'(font-name . "Times New Roman, bold") "Times New Roman bold"
  \override #'(font-name . "Times New Roman, italic bold") "Times New Roman italic bold"
}

Zitat
2) welchen Unterschied macht das "#" vor dem Schriftnamen - hab's im Netzt mit und ohne gefunden, scheint beides zu funktionieren
Sobald der LilyPond-parser "#" sieht wird der nachfolgende Ausdruck an den scheme-interpreter weitergereicht.
Bei strings ist das #-Zeichen aber seit einiger Zeit häufig nicht mehr nötig. Leider gibt es noch Gegenbeispiele, z.B.
gibt
\markup \simple "simple"
einen error aus.

Zitat
3) welchen Font verwendet Lily original für die BassFigures - ich würde ja gerne exakt den nehmen, nur in kursiv
Das war etwas schwieriger herauszukriegen, denn es wird überhaupt kein grob-property bzgl der Schriftart für BassFigure gesetzt.
Allerdings gibt es das context property 'figuredBassFormatter' welches zur procedure 'format-bass-figure' gestzt wird.
Wenn man sich diese procedure ansieht, so sieht man einen Haufen markup-commands wie 'slashed-digit', 'backslashed-digit' und 'number', die alle mit font-encoding fetaText arbeiten und einzelne Teile der BassFigure formatieren.

fetaText hat aber keine kursiv-Variante.
Aber zumindest gibt es
https://sourceforge.net/p/testlilyissues/issues/5074/
welches indirekt eine Folge des von mir oben schon verlinkten threads ist.


Gruß,
  Harm






Joei

  • Gast
Re: Generalbassbezifferung kursiv
« Antwort #7 am: Dienstag, 14. März 2017, 08:35 »
Lieber Harm,

auch Dir ein fettes DANKE für diese ausführliche und zielführende Antwort. Menschen wie Du sind ein wesentlicher Grund dafür, das Lilypond derart großartig ist.

Joei