Markup Formatierung im Header funktioniert nicht - gelöst

Begonnen von Manuela, Mittwoch, 3. Juli 2019, 17:04

« vorheriges - nächstes »

Manuela

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
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

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 ;)

Manuela

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)
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

#3
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.

Malte

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.

Manuela

#5
\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?
Danke für eure Hilfe
viele Grüße
-- Manuela

Manuela

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
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

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 ;)