Autor Thema: Font-Ligaturen  (Gelesen 4334 mal)

prott

  • Member
Font-Ligaturen
« am: Sonntag, 3. Februar 2013, 10:48 »
Liebe Gemeinde,

Zum Thema Textfont und Ligaturen gibt es einige Sachen, die ich nicht verstehe bzw. gerne besser hätte.
Ich benutze Lilypond 2.14.1 unter SuSE11.4 (never change a working system!). Was ich bisher nicht herausgefunden habe:
1) Welchen Font benutzt Lilypond standardmäßig, bzw. wie wird er angesprochen?
2) Warum verwandelt Lilypond ein ff, fi, ffi, fl und ffl nicht automatisch in eine Ligatur?
3) Warum bekomme ich, wenn ich mir die Ligaturen aus der Zeichentabelle hole, für einige, nämlich alle mit doppel-f, einen Zwiebelfisch (Zeichen aus einem falschen Font)?
4) Wo gibt es einen Font, der möglichst so aussieht, wie der Standard (der mir optisch gut gefällt) und mir Problem 4) und evtl. 3) löst?

Peter

Be-3

  • Member
Re: Font-Ligaturen
« Antwort #1 am: Sonntag, 3. Februar 2013, 11:35 »
Hallo Peter,

abgesehen von den speziellen Noten-Fonts (verschiedene Käsesorten, die am Ende "Emmentaler" in verschiedenen Größen werden) enthält die Lilypnd-Distribution verschiedene Text-Fonts, die Du übrigens sehr einfach identifizieren kannst, wenn Du in Deinem PDF Reader unter "Eigenschaften" die Schriften anzeigen läßt.

1) Welchen Font benutzt Lilypond standardmäßig, bzw. wie wird er angesprochen?

Lilypond benutzt mehrere Fonts bzw. Fontfamilien standardmäßig.
Die Default-Textschrift Century Schoolbook wird mit ausgeliefert, bei der serifenlosen und Schreibmaschinen-Schrift bedient sich Lilypond aus dem Fundus des Betriebssystems:
Als Text-Schriften gibt es die drei "font-shapes" \roman (Aniqua), \sans (Serifenlos) und \typwriter (Schreibmaschine). Dahinter stecken:
  • \roman: CenturySchL-Roma
  • \sans: DejaVuSans (Windows: Verdana)
  • \typewriter: DejaVuSansMono (Windows: CourierNewPSMT)

2) Warum verwandelt Lilypond ein ff, fi, ffi, fl und ffl nicht automatisch in eine Ligatur?
Lilypond selbst kümmert sich überhaupt nicht um Ligaturen, das wird vom "Pango-Interface" erledigt - also komplett außerhalb von Lilyponds Einflußbereich. Wenn in einer Schrift keine Ligaturen definiert sind, kommen sie auch nicht. Außerdem gibt es Probleme unter Windows (unter denen ich auch leide).


3) Warum bekomme ich, wenn ich mir die Ligaturen aus der Zeichentabelle hole, für einige, nämlich alle mit doppel-f, einen Zwiebelfisch (Zeichen aus einem falschen Font)?
Wie gesagt: das Zeichen muß im jeweiligen Font vorhanden sein, sonst wird mehr oder weniger elegant nach Ersatz gesucht (deshalb Zwiebelfisch).

4) Wo gibt es einen Font, der möglichst so aussieht, wie der Standard (der mir optisch gut gefällt) und mir Problem 4) und evtl. 3) löst?
Du mußt überhaupt keinen Font nehmen, der nur "ungefähr" so aussieht (das wäre irgendeine Century Schoolbook), Du kannst auch den Original-Font nehmen: CenturySchL-Roma/Ital/Bold. Der muß nur Deinem Betriebssystem bekannt "gemacht werden".

Viele Grüße
Torsten

PS: Ach so, die Standard-Textfonts liegen unter
../share/lilypond/current/fonts/otf
und heißen
  • CenturySchL-Roma.otf
  • CenturySchlL-Ital.otf
  • CenturySchlL-Bold.otf
  • CenturySchlL-BoldItal.otf
« Letzte Änderung: Sonntag, 3. Februar 2013, 11:42 von Be-3 »

fugenkomponist

  • Member
Re: Font-Ligaturen
« Antwort #2 am: Sonntag, 3. Februar 2013, 11:40 »
Hallo,

1) Century Schoolbook (sagt mein evince)
2) keine Ahnung, ist halt kein LaTeX ;) Wenn ich nach Ligaturen in Lilypond google, find ich nur Ligaturen in gregorianischer Musik.
3) weil Century Schoolbook zwar Ligaturen für fi und fl enthält, nicht aber für ff.
4) Vielleicht wär die Vollkorn (http://friedrichalthausen.de/?page_id=411) was für dich? Die ist der Century Schoolbook zwar gar nicht mal so ähnlich, ist mir aber grad als erstes eingefallen (vielleicht, weil sie auch ne relativ schwere bold-Variante hat?)

Be-3

  • Member
Re: Font-Ligaturen
« Antwort #3 am: Sonntag, 3. Februar 2013, 12:00 »
Übrigens: gerade nachgeschaut:
Die Century Schoolbook L ist von URW und auch die anderen "Kollegen" von Linotype usw. enthalten grundsätlich auch nur die fi- und fl-Ligatur.
Also alles bestens im Sinne des Erfinders - wo ist das Problem? ;)

Es gibt aber mittlerweile auch die "New Century Schoolbook Pro", die hat auch ff, ffi und ffl.
Wobei ich über das Fehlen von ffi und ffl im allgemenen recht glücklich bin, weil die im Deutschen sowieso grundsätzlich falsch sind. :)

Viele Grüße
Torsten


... und noch 'ne Ergänzung:
HEUREKA!

Es gibt im TeX-Paket die TeX-Gyre-Fonts, von denen die texgyreschola auf der Century Schoolbook L basiert, aber einen stark erweiterten Zeichenvorrat hat:
auch ff, ffi, ffl: - das ist doch, was Du gesucht hast...?

Legal und kostenlos erhältlich z. B. hier: http://www.ctan.org/tex-archive/fonts/tex-gyre/fonts/opentype/public/tex-gyre
« Letzte Änderung: Sonntag, 3. Februar 2013, 12:15 von Be-3 »

prott

  • Member
Re: Font-Ligaturen
« Antwort #4 am: Sonntag, 3. Februar 2013, 16:05 »
Hallo,

Danke an alle, die geantwortet haben; ich werde mich gleich durch die Hinweise arbeiten.

@fugenkomponist: Ja, Ligaturen gibt es in verschiedener Hinsicht. Sie sind leider auch bei Gregorianik (zu großer Abstand danach) und Transkription von Mensuralnotation (Klammer fehlt nach Zeilenwechsel) noch nicht optimal.

@ Torsten: Speziell bei ffi mag Herr Schäffler "grundsätzlich falsch" etwas affig finden.  ;) Für Morpheme interessieren sich nur Sprachwissenschaftler. Auf der anderen Seite erledigt die Silbentrennung im Notensatz das ffl. Aber bei der Hoffnung hätte ich halt gerne die Ligatur.
texgyreschola ist auf meinem Rechner drauf, aber ich hätte nicht geahnt, in welchem Zusammenhang das steht ...

prott

  • Member
Re: Font-Ligaturen
« Antwort #5 am: Montag, 4. Februar 2013, 00:02 »
Es hat Stunden Basteln und Suchen gedauert, bis ich den Font für Lilypond verfügbar machen konnte. Über die Zeichenauswahl, LibreOffice, FontConfig und pango-view konnte ich jeweils den Tex Gyre Schola-Font ansprechen, nur nicht von Lilypond aus. Falls Hilfesuchende vorbeikommen:
Mein System ist SuSE Linux 11.4, ich habe nicht Lilypond aus der Distribution genommen, sondern selbst installiert, weil die Distribution an Lilypond 2.12 festhält und mir die neue vertikale Anordnung wertvoll genug fürs Upgrade war.
Der Knackpunkt ist, daß Lilypond sein eigenes FontConfig hat, mit dem Binary bei mir in .../lilypond/usr/bin/fc-cache, um den Cache zu reorganisieren.
Dann tat es ein symbolischer Link, den ich in /usr/share/fonts auf mein Verzeichnis mit dem Font gesetzt habe (irgendwo unterhalb von texmf für den Font, der aus der TeX-Gegend kommt), sowie ein Aufruf von fc-cache -f, das sich bei den Lilypond-Binaries befindet.

Jetzt setze ich meine Hoffnung auf Ligaturen ...

prott

  • Member
Re: Font-Ligaturen
« Antwort #6 am: Montag, 4. Februar 2013, 21:35 »
Hallo,

Eine Frage hätte ich dann noch: Da ich keinen Grund sehe, weiter an Century Schoolbook L festzuhalten (der Font löst mir nämlich einen noch nervigeren Zwiebelfisch beim Schwa), würde ich gerne den Standard-Font wechseln, also nicht als Befehl im \paper-Block und nach jedem Bug #1189. Gibt es einen eleganten/vorgesehenen Weg (eine Art ini-Datei oder so)? Oder kann ich Tex Gyre Schola in CenturySchlL-Roma umbenennen und nach .../lilypond/current/fonts/otf kopieren, ohne das ganze System zu zerschießen?

harm6

  • Member
Re: Font-Ligaturen
« Antwort #7 am: Montag, 4. Februar 2013, 23:46 »
Hallo,

ich bin wahrlich kein Experte für fonts etc. und habe auch nicht auspropiert was in diesem Thread besprochen/vorgeschlagen wurde, mit einer Ausnahme:

In /scm/font.scm (v2.17.10) gibt es:

(define-public (make-century-schoolbook-tree factor)
  (make-pango-font-tree
    "Century Schoolbook L"
    "sans-serif" "monospace" factor))

Ich habe "Century Schoolbook L" durch "Purisa" ersetzt.
Scheint zu funktionieren. FWIW

Wird natürlich bei jedem LilyPond-upgrade überschrieben werden.


Gruß,
  Harm

prott

  • Member
Re: Font-Ligaturen
« Antwort #8 am: Dienstag, 5. Februar 2013, 00:28 »
Danke, Harm. So, wie die Bezeichner hardcoded sind, wird es wohl nicht besser gehen. Und einmal pro Update ist weitaus seltener als ein- bis dreimal pro Datei!

Arnold

  • Member
Re: Font-Ligaturen
« Antwort #9 am: Mittwoch, 6. Februar 2013, 10:35 »
Noch ein kleine informativer Nachtrag:

1) Bei der Windows-Installation sind unter <Lilypond-Dir>\usr\etc\fonts... auch noch Font-Konfiguartionen zu finden. Ohne die Details zu kennen, vermute ich, daß in einem Unterverzeichnis die Font-Such-Richtlinien, im anderen die Font-Such-Ergebnisse von Pango abgelegt sind.

2) Textligaruten (z. Bsp. in markups) kann man durch einfügen des »ZERO WIDTH NON JOINER« unterbinden. Dieses Zeichen mit der Unicode-Codierung U+200C kann man z. Bsp. in Windows Notepad aus der Zeichentabelle hineinpasten, aber man sieht es nicht in diesem Editor, es fällt allenfalls auf, daß der Curser mit den Cursortasten bewegt einmal an der Stelle verweilt.

Ab Version 16 (soweit ich mich entsinne) gibt es noch andere Möglichkeiten, solche Sonderzeichen einzugeben:
\version "2.16.0"
\paper {
  #(include-special-characters)
}
\markup { Auf&zwnj;lage }

Sind das einem zu viele Zeichen, kann man noch eigene Mappings definieren:
\version "2.16.0"
\paper {
  #(include-special-characters)
  #(add-text-replacements!
   '(
     ("¦" . "‌")        ; 2nd string is &zwnj; = U+200C !!! Probably not displayed correctly in this browser!
   ))
}
\markup { Auf¦lage }

Um dann wieder dieser Broken Bar Line die Sonderfunktion lokal zu entziehen (damit man es drucken kann) hilft folgende markup-Funktions-Definition \allowBBar:
% Helper function
#(define-public (internal-remove-bbar-replacement props)
  (let*
   ((dummy-replacements (alist-copy (chain-assoc-get 'replacement-alist props '())))
    (new-replacements (assoc-remove! dummy-replacements "¦")))
   (prepend-alist-chain 'replacement-alist new-replacements props)))

% allow the broken bar again
#(define-markup-command (allowBBar layout props text) (markup?)
  (interpret-markup
   layout
   (internal-remove-bbar-replacement props)
   (markup text)))

Und zu guter letzt mein (noch nicht besonders glücklich implementierter) Workaround, damit in bestimten Abschnitten gar keine Ligaturen mehr verwendet werden. In meinem alten Duden steht z. Bsp. "Keine Ligaturen in lateinischen Texten verwenden". Für die lateinischen Texte (ohne Umlaute) reicht diese Markup-Funktion:
% workaround to inhibit all (or most?) ligatures
#(define-markup-command (noLigatures layout props text) (markup?)
  "Mask all basic chars to prevent pango using ligatures."
  (interpret-markup layout props
   #{\markup \replace #'(("A" . "A‌")  ("a" . "a‌")  ; here is &zwnj; = U+200C
                         ("B" . "B‌")  ("b" . "b‌")  ; appended to all letters
                         ("C" . "C‌")  ("c" . "c‌")  ; this may be invisible in
                         ("D" . "D‌")  ("d" . "d‌")  ; your editor
                         ("E" . "E‌")  ("e" . "e‌")  ; or incorrectly displayed
                         ("F" . "F‌")  ("f" . "f‌")  ; in some browsers
                         ("G" . "G‌")  ("g" . "g‌")
                         ("H" . "H‌")  ("h" . "h‌")
                         ("I" . "I‌")  ("i" . "i‌")
                         ("J" . "J‌")  ("j" . "j‌")
                         ("K" . "K‌")  ("k" . "k‌")
                         ("L" . "L‌")  ("l" . "l‌")
                         ("M" . "M‌")  ("m" . "m‌")
                         ("N" . "N‌")  ("n" . "n‌")
                         ("O" . "O‌")  ("o" . "o‌")
                         ("P" . "P‌")  ("p" . "p‌")
                         ("Q" . "Q‌")  ("q" . "q‌")
                         ("R" . "R‌")  ("r" . "r‌")
                         ("S" . "S‌")  ("s" . "s‌")
                         ("T" . "T‌")  ("t" . "t‌")
                         ("U" . "U‌")  ("u" . "u‌")
                         ("V" . "V‌")  ("v" . "v‌")
                         ("W" . "W‌")  ("w" . "w‌")
                         ("X" . "X‌")  ("x" . "x‌")
                         ("Y" . "Y‌")  ("y" . "y‌")
                         ("Z" . "Z‌")  ("z" . "z‌")) \concat { \char ##x200c $text }#}))

Arnold





prott

  • Member
Re: Font-Ligaturen
« Antwort #10 am: Freitag, 8. Februar 2013, 00:07 »
Und zu guter letzt mein (noch nicht besonders glücklich implementierter) Workaround, damit in bestimten Abschnitten gar keine Ligaturen mehr verwendet werden. In meinem alten Duden steht z. Bsp. "Keine Ligaturen in lateinischen Texten verwenden".

Wie der Duden (der sich für mich als einer der Schuldigen der Rechtschreibdeform eh disqualifiziert hat) auf die Idee kommt, ist mir unklar. Meine lateinische Grammatik (~1980 gedruckt) verwendet jedenfalls Ligaturen auch im Lateinischen da, wo sie die Schrifttype hergibt (mit Serifen; im Stichwortverzeichnis). Sinnvoll ist das Vermeiden von Ligaturen im Lateinischen nur da, wo Längen eigens markiert werden (da benutzt meine Grammatik eine serifenlose Type). Die Drucke aus dem frühen 16. Jahrhundert verwenden sehr viele Ligaturen, sind aber nicht unbedingt maßgeblich für heute.

fugenkomponist

  • Member
Re: Font-Ligaturen
« Antwort #11 am: Freitag, 8. Februar 2013, 09:41 »
Tatsächlich wurde ja sogar die ſs-Ligatur bzw. das ß als solches auch in französischen und lateinischen Texten verwendet.