Hi,
ich möchte verschiedene Fonts ausprobieren und habe ein Markup-Command geschrieben, das den Namen des Fonts zusammen mit einem Testtext ausgibt:
#(define-markup-command (font-show layout props fname text) (string? markup?)
"demonstrates a font."
(interpret-markup layout props
(markup #:override '(font-size . 2) fname
#:override `(font-name . ,fname) text)))
Wie kriege ich einen Zeilenumbruch zwischen den Fontnamen und den Text?
Warum nicht ly-Syntax?
Ich danke an (ungetestet):
#{
\markup
\column {
\override #'(font-size . 2) $fname
\override #`(font-name . ,fname) $text)
}
#}
HTH,
Harm
Danke für deine Antwort, Harm.
Zitat von: harm6 am Sonntag, 27. Oktober 2019, 11:39
Warum nicht ly-Syntax?
Weil ich (irrtümlich) dachte, dass mit der anderen Syntax folgendes funktioniert:
\override #'(font-features . ("smcp"))
\override #'(font-name . "Courier New")
Tut es aber nicht, die Angabe eines Font-Names überschreibt anscheinend irgendwie die font-features.
Zitatdie Angabe eines Font-Names überschreibt anscheinend irgendwie die font-features
Nicht jede Schriftart unterstützt font-features...
Gruß,
Harm
Funktioniert auch mit Fonts nicht, die font-features unterstützen, z.B. Linux Libertine wie Malte in diesem Thread (https://lilypondforum.de/index.php/topic,507.msg2956/topicseen.html) schreibt
\override #'(font-features . ("smcp"))
\override #'(font-name . "Linux Libertine")
In den Internals steht, dass font-name die Eigenschaften font-family, font-series und font-shape überschreibt, von font-features ist nicht die Rede:
3.2.36 font-interface (http://lilypond.org/doc/v2.19/Documentation/internals/font_002dinterface)
Ich fürchte ich kann hier nicht weiterhelfen, ich bin wahrlich kein font-Experte.
Aber noch eine Beobachtung: Es scheint auch Versions-abhängig zu sein. 2.21.0 (master) ist 2.19.83, der letzten release, deutlich überlegen.
Gruß,
Harm
Danke für deine Bemühungen, Harm.
Echte Kapitälchen \override #'(font-features . ("smcp" )) und Fontänderung \override #'(font-name . "Vollkorn") gehen anscheinend nicht zusammen, egal in welcher Syntax das Markup definiert ist. Falsche Kapitälchen \caps hingegen funktionieren, allerdings mit dem bekannten Umlaut-Problem.
Es war in diesem Fall eh nur die Instrumentenbezeichnung, die ich aufhübschen wollte.
Hallo Manuela,
ich kann dein Problem nicht nachvollziehen, folgender Code tut was er soll:\version "2.19.83"
\markup
\override #'(font-features . ("smcp"))
\override #'(font-name . "Linux Libertine")
"Test"
\markup
\override #'(font-features . ("smcp"))
\override #'(font-name . "Vollkorn")
"Test"
Gleiches für 2.21.0. Hast du ein Minimalbeispiel, wo es nicht geht?
Hallo Malte
ich kriege das Ergebnis wie im beigefügten Bild. Der Code kompiliert, aber wo sind die Kapitälchen?
Es scheint so, als sei bei dir Linux Libertine gar nicht installiert (oder zumindest finde LilyPond ihn nicht). Bei mir gibts mit beiden Fonts Kapitälchen. Sicher, daß du Version 2.19.83 verwendest? Mit 2.18.2 gehts noch nicht. Ansonsten: Ich hab hier ein Manjaro Linux (64 bit), vielleicht gibts da irgendwelche Probleme mit anderen Betriebssystemen?
Malte, ich hab aus Deinem Code das Beispiel für "Vollkorn" gestrichen (diesen font hab' ich nicht) und dann getestet.
Mit 2.19.83 keine Kapitälchen!
Mit 2.21.0 klappt es.
Ich bin auf Ubuntu 18.04 - 64 bit
Irgendwo ist der Wurm drin :((
Gruß,
Harm
Siehe auch den output von:
{
\override TextScript.after-line-breaking =
#(lambda (grob)
(pretty-print (ly:stencil-expr (ly:grob-property grob 'stencil))))
b-\markup
\override #'(font-features . ("smcp"))
\override #'(font-name . "Linux Libertine")
"Test"
}
Zitat von: 2.19.83
(translate-stencil
(0.0 . 0.0)
(glyph-string
#<Font_metric (#f . 1.0)>
"DejaVuSans"
3.865234375
#f
'((0.956012598425197
(0.0 . 1.63887874015748)
0.0
0.0
"T")
(1.36573228346457
(-0.0341433070866142 . 1.22915905511811)
0.0
0.0
"e")
(1.16087244094488
(-0.0341433070866142 . 1.22915905511811)
0.0
0.0
"s")
(0.853582677165354
(0.0 . 1.53644881889764)
0.0
0.0
"t"))))
Zitat von: 2.21.0
(translate-stencil
(0.0 . 0.0)
(glyph-string
#<Font_metric (#f . 1.0)>
"LinLibertineO"
3.865234375
#f
'((1.29744566929134
(0.0 . 1.46816220472441)
0.0
0.0
"T")
(1.05844251968504
(-0.0341433070866142 . 1.05844251968504)
0.0
0.0
"e.sc")
(0.921869291338583
(-0.0341433070866142 . 1.05844251968504)
0.0
0.0
"s.sc")
(1.16087244094488
(0.0 . 1.05844251968504)
0.0
0.0
"t.sc"))))
Sieht so aus als fände 2.19.83 nicht den angegebenen font ..
Gruß,
Harm
Vollkorn habe ich auf jeden Fall, findet sich in der Liste der verfügbaren Fonts.
Harm, wo kriege ich die 2.21 her? Bevor ich mir auf der Lilypond Homepage einen Wolf suche....
Ich habe jetzt noch mal einen Test gemacht
\version "2.19.82"
\language "deutsch"
\paper {
tagline = ##f
indent = #0
#(set-paper-size "tall")
oddFooterMarkup = ##f
oddHeaderMarkup = ##f
evenFooterMarkup = ##f
evenHeaderMarkup = ##f
markup-markup-spacing.padding = #2
}
\markup "Test simple"
\markup \override #'(font-features . ("smcp")) "Test smcp"
\markup
\override #'(font-features . ("smcp"))
\override #'(font-name . "TeX Gyre Schola")
"Test TeX Gyre Schola"
\markup
\override #'(font-features . ("smcp"))
\override #'(font-name . "TeXGyrePagella")
"Test TeXGyrePagella"
\markup
\override #'(font-features . ("smcp"))
\override #'(font-name . "Vollkorn")
"Test Vollkorn"
\markup
\override #'(font-features . ("smcp"))
\override #'(font-name . "Arial")
"Test Arial"
Ergebnis im Anhang
Update: ich habe den Betreff des Threads geändert
Hm ... es scheint so, als nutzt du eine andere Version von Vollkorn als ich. Wie hast du den Font denn installiert? Auf http://vollkorn-typeface.com/ steht, daß man z. B. bei Google Fonts die Kapitälchen in separaten Font-Dateien bekommt, da müßte dann der entsprechende font-name-override angepaßt werden. Auf der Seite des Fonts selbst bekommt man alles in einer Datei, d. h. da müßte der font-features-override funktionieren.
Für mich siehts so aus, als hätten auch dein TeXGyrePagella (ohne Leerzeichen richtig?) und Arial keine Kapitälchen in der Fontdatei selbst. font-features können nur OpenType-Fonts und auch da wird die Möglichkeit offenbar (siehe Vollkorn) nicht immer genutzt.
Zitat von: Malte am Montag, 28. Oktober 2019, 13:03
Hm ... es scheint so, als nutzt du eine andere Version von Vollkorn als ich. Wie hast du den Font denn installiert?
Für mich siehts so aus, als hätten auch dein TeXGyrePagella (ohne Leerzeichen richtig?) und Arial keine Kapitälchen in der Fontdatei selbst. font-features können nur OpenType-Fonts und auch da wird die Möglichkeit offenbar (siehe Vollkorn) nicht immer genutzt.
Ich habe gar keinen Font installiert, das ist eine Ubuntu Standard-Installation. Muss ich mich mal schlau machen...
Zitat von: ManuelaHarm, wo kriege ich die 2.21 her?
Dazu mußt Du das git-repository runterladen und selbst kompilieren. Empfiehlt sich aber nur auf Linux oder in einer LilyDev (siehe CG).
2.21.0 ist dann der aktuelle master. Sobald 2.20.0 als neue stable raus ist, wird 2.21.0 dann die erste neue devel-Version.
Gruß,
Harm
Danke für die Info, Harm. Es ist gefühlte 100 Jahre her, seitdem ich das letzte Mal Code selbst übersetzt habe. Und dieser war bedeutend einfacher als Lilypond. Mit anderen Worten: ich warte.
Inzwischen habe ich eine Lösung gefunden, die Instrumentennamen mit Kapitälchen ansprechender zu gestalten, ich ziehe den Text einfach mit \scale etwas in die Höhe.