[Tustep-Liste] Übergesetzte Zeichen anpassen

Wilhelm Ott wilhelm.ott at zdv.uni-tuebingen.de
Do Okt 19 14:52:42 CEST 2006


Liebe Listen-Teilnehmer,

Am 4.10. fragte Oliver Gasperlin:

> gibt es, abgesehen von der Variante, durch ein "%" hinter der jeweiligen
> Schrift bei Parameter GRO die übergesetzten Zeichen um einen Punkt zu
> heben, noch eine andere Möglichkeit, den Abstand der Zeichen zu den
> darunter befindlichen detaillierter zu beeinflussen?

Daran haben sich weitere Fragen und Vorschläge angeschlossen, z.B. der
Hinweis von Giorgio Giacomazzi vom 4.10., wie man den Punkt über dem
Versal-E höher setzen kann, und der Hinweis von Hans Derkits vom 4.10.,
dass

> die meisten der gewöhnlich mit '%' kombinierten Zeichen in
> Unicode-Fonts fertig vorhanden sind

und die Vermutung von Hans Derkits vom 7.10. bezüglich der
Positionierung von fliegenden Akzenten:

> (Soweit ich verstehe, positioniert #SATZ sie mit Hilfe von
> Mittelwerten, welche anscheinend für alle Schriften dieselben
> sind.


Als Programmautor wurde ich gebeten, dazu etwas zu sagen, was
ich hiermit tun möchte - auch wenn das eine etwas längere
mail zur Folge hat.

Also:

Das % hinter der Schriftnummer soll lt. Handbuch verhindern, dass bei
Schriften mit großer x-Höhe "übergesetzte Buchstaben zu niedrig und
Akzente unter dem Buchstaben zu hoch sitzen".

Die Verschiebung bezieht sich also nur auf die über Kleinbuchstaben
ohne Oberlänge übergesetzten Buchstaben, nicht auf Akzente, aber
auch nicht auf über Großbuchstaben übergesetzte Buchstaben.

Über den Umfang der Anhebung ist im Handbuch nichts gesagt.
De facto verschiebt das Programm übergesetzte Buchstaben
derzeit für je 6 Punkt Kegelgröße um 1/2 Punkt nach oben
(d.h.: bis 6 Punkt um 1/2 Punkt, bis 12 Punkt um 1 Punkt,
bis 18 Punkt um 3/2 Punkt...). Der von Oliver Gasperlin
genannte Wert von 1 Punkt stimmt also für die im Werksatz
gängigen Schriftgrößen.

Für die vertikale Positionierung von Akzenten ist der Hinweis
von Oliver Gasperlin vom 5.10. hilfreich:

> Ein Blick in die
> Schrift-Entwickler-Seiten bei Adobe lassen zudem ahnen, dass trotz
> OT-Format verschiedene Positionierungen der floating accents (z. B. über
> Versalien) im Rahmen der im Shop erwerbbaren Schriften gar nicht erst
> vorgesehen sind:

> "When creating the floating accents, it is Adobe's practice to only
> create them with the accents positioned for lowercase characters. If
> accents for uppercase glyphs were needed, these would need to be added
> to the character set."

Das ist seit PostScript-Zeiten so: es gibt in den nach
dem Adobe Standard Encoding kodierten (und den meisten
anderen) PostScript-Fonts nur noch floating accents,
deren vertikale Stellung auf die Höhe der Kleinbuchstaben
des betreffenden Fonts ausgerichtet ist. (Der DIGISET,
für den das Satzprogramm zuerst geschrieben wurde, hatte noch
zwei Sätze von Akzenten je Font, einen für Kleinbuchstaben
und einen für Großbuchstaben, die sich nicht nur in der
Höhe, sondern auch in der Form unterschieden; so waren z.B.
Akut und Gravis über Großbuchstaben stärker geneigt als
über Kleinbuchstaben, Zirkumflex und Hazek flacher).

Für die Positionierung der Akzente über Kleinbuchstaben
verwendet das Satzprogramm also nicht irgendwelche
Mittelwerte für die vertikale Positionierung, sondern lässt
die Akzente, wie ein Blick in die von TUSTEP generierten
PostScript-Dateien jedem Interessierten zeigt, so
stehen wie der Font-Designer es vorgesehen hat.

Für Großbuchstaben (und Kleinbuchstaben mit Oberlänge)
hebt das Programm diese Akzente um einen von der gewählten
Schriftgröße abhängigen Wert (in Halbpunktschritten
um etwa 1/4 der gewählten Schriftgröße). Das ist in der
Tat für sehr groß geschnittene Schriften zu wenig,
wie Michael Trauth in seiner mail vom 4.10. festhält.

Dass auch die Positionierung der Akzente unter den
Buchstaben (außer den %; %;; %,, kodierten) davon
beeinflusst wird, hängt damit zusammen, dass die
Akzentzeichen nach unten verschoben werden müssen
- und zwar um so weiter, je größer die x-Höhe eines
Fonts ist und je höher deshalb die Akzentzeichen
sitzen.

Den Vorschlag von Michael Trauth, ein zweites "%" zuzulassen,
würde ich also so modifizieren, dass dieses zweite "%" sich
nicht auf die x-Höhe, sondern auf die Versalhöhe beziehen
müsste (und damit gleichermaßen die über Versalien übergesetzten
Kleinbuchstaben und die Akzente auf den Versalien beträfe).

(Da ein zweites "%" ohne ein erstes nicht möglich ist, und
damit der Fall einer Schrift mit kleiner x-Höhe, aber großer
Versalienhöhe nicht abgedeckt wäre, schlage ich vor:
   %1 gleichbedeuted mit dem bisherigen % (nur x-Höhe),
   %2 Verschiebung von über Versalien stehenden Zeichen,
   %3 Verschiebung über Klein- und über Großbuchstaben.
Spricht etwas dagegen? Falls der Umfang der Verschiebung
nicht ausreicht, wäre auch noch %% bis %%3 denkbar, um
eine größeren Verschiebung zu verlangen. - Für die Version
2007 möchte ich dies nicht mehr in Angriff nehmen, um sie
nicht zu arg zu verzögern.))

So viel zum Thema "fliegende Akzente" bzw. "übergesetzte
Buchstaben".

Hans Derkits hat am 4.10. zu Recht darauf hingewiesen, dass

> die meisten der gewöhnlich mit '%' kombinierten Zeichen in
> Unicode-Fonts fertig vorhanden sind.

Dies gilt nicht nur für Unicode-Fonts, sondern auch für
viele Type-1-Fonts. Sofern diese nicht nach dem Adobe
Standard Encoding Vector, sondern z.B. nach dem
ISOLatin1 Encoding Vector kodiert sind (vgl. die
PostScript Lnguage Reference, third editon,
http://www.adobe.com/products/postscript/pdfs/PLRM.pdf
auf S. 799) oder ein "font specific encoding" aufweisen,
sind diese Akzent-Buchstaben-Kombinationen ohne weitere
Maßnahmen auch für das Satzprogramm zugänglich, und
zwar über die Anweisung &!(##mmmmm/nnn), die man sich
zweckmäßigerweise in ein Makro packt. Damit kann man
bei Bedarf die "precomposed characters" nutzen - und
für in Unicode (noch) nicht vorgesehenen Akzent-Buchstaben-
Kombinationen weiterhin mit fliegenden Akzenten arbeiten.

Am 4.10. fragte Hans Derkits, warum das Satzprogramm

> Unicode-Fonts einfach ignoriert, obwohl sie in diesem
> Bereich fast der Stein der Weisen sind...

Die Unterstützung von OpenType-Fonts durch das Satzprogramm,
nach der im Lauf des Jahres Jahres schon einmal gefragt wurde,
ist leider nicht so einfach wie Giorgio Giacomazzi am 4.10.
suggeriert:

> Lieber ... fände ich die
> grundsätzliche Eröffnung des Zugangs zu den professionellen
> OpenType-Fonts in tustep. Dazu genügt vermutlich ein neuer
> Standardmakros analog zu "psfont", ein "otfont".

Für Type1-Fonts kann sich das Satzprogramm in der Tat auf
die Information beschränken, die in der zu jedem Font
gehörenden .afm-Datei enthalten ist: Das Makro *psfont
entnimmt dieser Datei außer dem exakten Font-Namen
die Dicktenwerte der einzelnen Zeichen und macht sie
dem Satzprogramm zugänglich. Das Satzprogramm benutzt
diese Werte zur Berechnung des Zeilenumbruchs und für
alle sonstigen horizontalen Positionsberechnungen.
Andere in den Font-Daten enthaltenen Informationen
werden nicht benötigt.

Für OpenType-Fonts gibt es nun aber keine .afm-Dateien.
OpenType-Fonts bestehen immer aus nur einer Datei,
das alle Informationen für Fonts mit PostScript-Konturen
im binären, nicht ohne Zusatzsoftware lesbaren
Compact Font Format enthält, "a format that is
suitable for compactly representing one or more Type 1
or CID-keyed fonts ... allows multiple fonts to be stored
in an unit called a FontSet. Principal space savings
are a result of using a compact binary representation
for most of the information, sharing of common data
between fonts, and defaulting frequently occurring
dat" (aus der CFF-Spezifikation).

Doch das ist nicht der einzige Unterschied. Hinweise
dazu hat schon Michael Trauth am 4.10. gegeben:
PostScript benutzt

> Type-1-Schriften - und
> Type-1-Schriften wiederum sind per definitionem *alle*
> ohne Ausnahme 1-Byte-Schriften (mit 256 Zeichenadressen),
> also *keine* Unicode-Fonts.

Selbst wenn man die sonstigen neuen Eigenschaften
 von OpenType-Fonts nicht nutzen will, genügt es
also nicht, die Dicktenwerte der Zeichen aus der
Font-Datei zu extrahieren. Wie PostScript arbeitet
das Satzprogramm selbst mit max. 256 Zeichen pro Font.
Im Satzprogramm (und in *PSAUS) müssten also die
(bis zu 65.000) Zeichen von OpenType-Fonts auf die für
PostScript erforderlichen 1-Byte-Adressen abgebildet
werden (was bei einem großen Font sehr viele solcher
Adressräume von je 256 Zeichen bedeuten kann); die Fonts
müssen entsprechend umgebaut werden, bevor sie genutzt
werden können; dazu kommt, dass offensichtlich nicht
jeder OpenType-Font den gleichen Zeichenvorrat enthält.

Der Aufwand für dies alles ist nicht ganz unerheblich
und der Hauptgrund, warum der Programmautor im Mai
dieses Jahres gesagt hat, dass derzeit keine Pläne
zur Unterstützung von OpenType-Fonts bestehen.

Eine weitere in der Diskussion geweckte Erwartung muss
ich aber doch etwas dämpfen:

> eine "Monotype Garamond" als
> OpenType-Font finden Sie auf jedem Windows-Rechner seit 2000

(so Giorgio Giacomazzi am 4.10), bzw.

> - Eine recht umfangreiche und weitgehend internationalisierte
>   2-Byte-Schrift ist z.B. die mit Windows ausgelieferte Times New
>   Roman - die man ja ebenfalls für sich noch erweitern kann.

(so Hans Derkits am 7.10.). Hier wurde möglicherweise übersehen,
dass es sich in beiden Fällen um Fonts im TrueType-Format handelt
(File-Namen: TIMES.TTF bzw. GARA.TTF im Schriftarten-Verzeichnis),
nicht in dem für PostScript erforderlichen Type1- bzw. CFF-Format
(letztere haben die Dateiendung .otf). Man wird also diese
Fonts nicht ohne weiteres in der PostScript-Umgebung nutzen
können.

Der Programmautor wird dennoch über eine Lösung nachdenken,
die auch die in OpenType-Fonts vorhandenen Zeichen
zugänglich macht. Die Bedienung des Satzprogramms
(bzw. die Einrichtung der notwendigen Umgebung, zu der
bisher im Wesentlichen der Kauf der Fonts und das
Bereitstellen der Dicktenwerte für das Satzprogramm
und für *PSAUS durch *PSFONT gehört) wird dadurch
vermutlich auch etwas aufwändiger werden. - Einen
Termin für eine Lösung kann er noch nicht in Aussicht
stellen.

Mit freundlichen Grüßen

Wilhelm Ott

----------------------------------------------------------------------
Prof. Dr. Wilhelm Ott               phone: +49-7071-2970307
Universitaet Tuebingen              fax:   +49-7071-295912
c/o Zentrum fuer Datenverarbeitung  e-mail: wilhelm.ott at uni-tuebingen.de
Waechterstrasse 76
D-72074 Tuebingen




Mehr Informationen über die Mailingliste Tustep-Liste