Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Manuela am Mittwoch, 3. Juli 2019, 17:04

Titel: Markup Formatierung im Header funktioniert nicht - gelöst
Beitrag von: Manuela am Mittwoch, 3. Juli 2019, 17:04
Ich möchte den Titel standardmäßig mit Kapitälchen und fett formatieren, aber die Anweisungen \bold \caps werden ignoriert, was mache ich falsch?

\version "2.19.82"

\paper {
  bookTitleMarkup = \markup
  {
    \fill-line {
      \abs-fontsize #20 \caps
      \fromproperty #'header:title
      \null
    }
  }
}

\header {
  title = \markup \left-column
  {
    "sollte 20px bold caps sein"
    \abs-fontsize #20 \bold \caps
    "das ist 20px bold caps"
  }
}

\markup \null
Titel: Antw:Markup Formatierung im Header funktioniert nicht
Beitrag von: Malte am Mittwoch, 3. Juli 2019, 19:05
Hm ... gute Frage. Sowohl \caps als auch \fontCaps werden ignoriert, \bold funktioniert. Und was auch geht ist
\override #'(font-features . ("smcp"))
Das setzt voraus, daß du einen OpenType-Font mit echten Kapitälchen nutzt. \caps/\smallCaps macht dir falsche – oder eben anscheinend manchmal auch gar keine ;)
Titel: Antw:Markup Formatierung im Header funktioniert nicht
Beitrag von: Manuela am Mittwoch, 3. Juli 2019, 19:56
Zitat von: Malte am Mittwoch,  3. Juli 2019, 19:05
Das setzt voraus, daß du einen OpenType-Font mit echten Kapitälchen nutzt. \caps/\smallCaps macht dir falsche – oder eben anscheinend manchmal auch gar keine ;)

Danke Malte. Was wäre denn ein OpenType-Font mit echten Kapitälchen, und noch wichtiger, wie kriege ich den in Linux gebacken? (Ubuntu)
Titel: Antw:Markup Formatierung im Header funktioniert nicht
Beitrag von: Malte am Mittwoch, 3. Juli 2019, 21:12
Der Standard-LilyPond-Font TeX Gyre Schola hat sowas, hätt ich vielleicht erwähnen sollen. Ansonsten finde ich auf meinem System gerade z. B. Vollkorn, Linux Libertine, EB Garamond, und es gibt sicher zahlreiche weitere.
\version "2.21.0"

\markup {
  \column \override #'(font-features . ("smcp")) {
    "echte Kapitälchen"
    \override #'(font-name . "Vollkorn") "echte Kapitälchen"
    \override #'(font-name . "Linux Libertine") "echte Kapitälchen"
    \override #'(font-name . "EB Garamond") "echte Kapitälchen"
  }
  \column {
    \caps "falsche Kapitälchen"
    \override #'(font-name . "Vollkorn") \caps "falsche Kapitälchen"
    \override #'(font-name . "Linux Libertine") \caps "falsche Kapitälchen"
    \override #'(font-name . "EB Garamond") \caps "falsche Kapitälchen"
  }
}

Wie du siehst, funktionieren Umlaute bei LilyPonds falschen Kapitälchen nicht ... das liegt aber an LilyPond, andere Programme können das. Ein weiterer entscheidender Unterschied ist aber das Aussehen: Bei echten Kapitälchen sind die kleineren Buchstaben eigens entworfene Zeichen, deren Proportionen und Strichstärken zu den Großbuchstaben passen, bei falschen Kapitälchen werden einfach Großbuchstaben kleiner skaliert und sind dadurch schlanker.

Ich hab schon lang nicht mehr Ubuntu/Mint genutzt, deshalb weiß ich nicht, obs die alle als Software-Pakete gibt, ich meine aber schon. Ansonsten die Fonts online suchen, runterladen und (vermutlich) per Doppelklick installieren.
Titel: Antw:Markup Formatierung im Header funktioniert nicht
Beitrag von: Malte am Mittwoch, 3. Juli 2019, 21:34
Zur ursprünglichen Frage: Du machst nichts falsch, es ist einfach blöd, daß LilyPond offenbar \caps anders als \bold, \override etc. nicht auf alle Teile eines Markups bezieht. In meinem letzten Post hatte ich für die zweite Spalte erst analog zum \override folgendes probiert:  \column \caps {
    "falsche Kapitälchen"
    \override #'(font-name . "Vollkorn") "falsche Kapitälchen"
    \override #'(font-name . "Linux Libertine") "falsche Kapitälchen"
    \override #'(font-name . "EB Garamond") "falsche Kapitälchen"
  }
Das scheitert jedoch, nur für den ersten Font sind Kapitälchen aktiviert. Ist meiner Meinung nach ein Bug, und zwar derselbe, der deinen ursprünglichen Code scheitern läßt.
Titel: Antw:Markup Formatierung im Header funktioniert nicht
Beitrag von: Manuela am Donnerstag, 4. Juli 2019, 05:38
\caps scheint ohnehin ein eigenes Kapitel zu sein, denn es muss immer zum Schluss kommen, sonst wirkt es nicht.
\version "2.19.82"

\markup {
  \caps \bold "zuerst caps dann bold"
  \bold \caps "zuerst bold dann caps"
}


Update: dann wollte ich eine Funktion schreiben, damit ich die Header-Formatierung wenigstens zentral verwalten kann.
\version "2.19.82"

#(define-markup-command (headmark layout props kopf)
   (string?)
   #{
     \markup {
       \abs-fontsize #20 \bold \caps $kopf
     }
   #}
   )

\header {
  title = \markup
  \concat {
    \abs-fontsize #20 \bold \caps "Kapitälchen"
    \headmark "Header mit command"
  }
}

\markup "test"


Die Funktion \headmark liefert überhaupt keine Ausgabe, was mache ich falsch?
Titel: Antw:Markup Formatierung im Header funktioniert nicht
Beitrag von: Manuela am Donnerstag, 4. Juli 2019, 06:04
Und plötzlich funktioniert es

\version "2.19.82"

\paper {
  bookTitleMarkup = \markup
  {
    \fill-line
    \override #'(font-features . ("smcp"))
    {
      \abs-fontsize #20 \bold
      \fromproperty #'header:title
      \null
    }
  }
}

\header {
  title = \markup \left-column
  {
    "20px bold echte kapitälchen"
    \abs-fontsize #20 \bold \caps
    "20px bold falsche kapitälchen"
  }
}

\markup \null
Titel: Antw:Markup Formatierung im Header funktioniert nicht
Beitrag von: Malte am Donnerstag, 4. Juli 2019, 07:13
Zitat von: Manuela am Donnerstag,  4. Juli 2019, 06:04
Und plötzlich funktioniert es
Falls sich einer wundert, daß bei den falschen Kapitälichen das Ä jetzt doch groß ist: Vorher wurde ja auf echte Kapitälchen umgeschaltet, d. h. die Kleinbuchstaben sind durch kleine Großbuchstaben ersetzt und das Ä ist das einzige echte zwischen lauter falschen ;)