Kapitälchen und Änderung des Fontnamens font-name

Begonnen von Manuela, Sonntag, 27. Oktober 2019, 11:20

« vorheriges - nächstes »

Manuela

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

harm6

Warum nicht ly-Syntax?

Ich danke an (ungetestet):
#{
  \markup
    \column {
      \override #'(font-size  . 2) $fname
      \override #`(font-name  . ,fname) $text)
    }
#}

HTH,
  Harm

Manuela

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

harm6

Zitatdie Angabe eines Font-Names überschreibt anscheinend irgendwie die font-features

Nicht jede Schriftart unterstützt font-features...

Gruß,
  Harm

Manuela

Funktioniert auch mit Fonts nicht, die font-features unterstützen, z.B. Linux Libertine wie Malte in diesem Thread 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
Danke für eure Hilfe
viele Grüße
-- Manuela

harm6

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

Manuela

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

Malte

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?

Manuela

Hallo Malte

ich kriege das Ergebnis wie im beigefügten Bild. Der Code kompiliert, aber wo sind die Kapitälchen?
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

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?

harm6

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

harm6

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

Manuela

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

Malte

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.

Manuela

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