
Silbentrennung / Spracheinstellungen
Silbentrennung ist in den meisten westlichen Sprachen notwendig, um ein akzeptables Erscheinungsbild für schmale Texte zu haben. Silbentrennung ist ein integraler Bestandteil des Umbruchalgorithmus, beispielsweise weil vermieden werden soll, dass mehrere Trennungen in aufeinanderfolgenden Zeilen auftreten.
Die Silbentrennung wird im Publisher über die Sprache gesteuert und musterbasiert vorgenommen.
Die Sprache kann man global einstellen über <Options mainlanguage="…">
oder Absatzweise.
<Options mainlanguage="German" />
stellt das gesamte Dokument auf deutsche Trennmuster um, während
<Paragraph language="German">
<Value>Autobahn</Value>
</Paragraph>
nur für einen Absatz die Sprache umstellt.
Die verfügbaren Sprachen sind in der Befehlsreferenz unter <Options>
beschrieben.
Alternativ zu den ausgeschriebenen Namen wie German
kann auch der Sprachcode verwendet werden.
Die beiden Beispiele oben können auch wie folgt benutzt werden:
<Options mainlanguage="de" />
<Paragraph language="de">
<Value>Autobahn</Value>
</Paragraph>
Möchte man testen, ob die Wörter richtig getrennt werden, kann man mit <Trace hyphenation="yes" />
kleine Markierungen erzeugen lassen.
<Layout
xmlns="urn:speedata.de:2009/publisher/en"
xmlns:sd="urn:speedata:2009/publisher/functions/en">
<Options mainlanguage="German" />
<Trace hyphenation="yes" />
<Record element="data">
<PlaceObject>
<Textblock width="3">
<Paragraph>
<Value>Autobahn</Value>
</Paragraph>
</Textblock>
</PlaceObject>
</Record>
</Layout>
ergibt folgendes:
Mittels
<Hyphenation>er-go-no-mic</Hyphenation>
kann man für einzelne Wörter Trennvorschläge bzw. -ausnahmen definieren. So werden die Wörter dann nur an den mit Bindestrich angegebenen Stellen getrennt.
Mit optischem Randausgleich, der im Abschnitt Optischer Randausgleich beschrieben ist, kann man die Anzahl der Silbentrennungen im Dokument etwas verringern. |
Trennungen für Absätze ausschalten
Für einzelne Absätze kann man die automatische Silbentrennung ausschalten, in dem man ein Textformat definiert mit hyphenate="no"
<DefineTextformat name="nohyphen" hyphenate="no"/>
In so markierten Absätze werden keine Wörter getrennt. Die Anwendung von Textformaten ist in einem eigenen Abschnitt beschrieben.
Das Zeichen für die Silbentrennung kann man ebenfalls über ein Textformat verändern:
<DefineTextformat name="dothyphen" hyphenchar="•"/>
Verschiedene Sprachen innerhalb eines Absatzes benutzen
Man kann die Sprache für einen Textblock, einen Absatz und sogar für Teile eines Absatzes setzen. Dazu umgibt man den Text mit <Span language="…">
und </Span>
.
<Paragraph language="en">
<Span language="de">
<Value>Also schön, Guido Heffels,
nachfolgend meine Textempfehlung
für das Blindtextbuch.
</Value>
</Span>
<Br />
<Span>
<Value>A wonderful serenity has taken
possession of my entire soul, like these sweet
mornings of spring which I enjoy with my whole
heart.
</Value>
</Span>
</Paragraph>
Trennungen nur an bestimmten Zeichen zulassen
Eine Eigenschaft von <Paragraph>
erlaubt die Zeichen einzugrenzen, an denen ein Zeilenumbruch eingefügt werden darf.
Das ist bei technischen Daten oft wichtig, wo z. B. Typenbezeichnungen in der Form 12-345/AB
vorkommen, und nicht getrennt werden sollen.
Im folgenden Beispiel darf nur hinter einem Schrägstrich umbrochen werden:
<Paragraph allowbreak="/">
<Value>https://download.speedata.de/publisher/development/</Value>
</Paragraph>
Die Voreinstellung für allowbreak
ist " -"
, also ein Umbruch an einem Leerzeichen oder einem Trennstrich.
Das ist ein experimentelles Feature im Publisher. Wahrscheinlich wird dies in einer zukünftigen Version einem Textformat zugeordnet werden. |
Spracheinstellungen für nicht-westliche Sprachen
Manche Sprachen haben besondere Satzregeln, die sich nicht auf die Silbentrennung auswirken, sondern auf das Erscheinungsbild des Textes. So können die Zeichen ihre Form oder Position verändern, je nach dem wo sie im Wort stehen. Um dieses Feature zu nutzen müssen folgende Bedingungen erfüllt sein:
-
mode="harfbuzz"
muss bei<LoadFontfile>
aktiviert sein. -
Die Sprache muss korrekt eingestellt sein. Falls die Sprache nicht in der Liste der unterstützten Sprachen vorhanden ist, muss
Other
oder--
(zwei Striche) eingestellt werden. - Die gewählte Schriftart muss die entsprechenden Zeichen enthalten.
<Layout xmlns="urn:speedata.de:2009/publisher/en"
xmlns:sd="urn:speedata:2009/publisher/functions/en"
version="4.1.7">
<LoadFontfile name="NotoSansBengali-Regular"
filename="NotoSansBengali-Regular.ttf"
mode="harfbuzz" />
<DefineFontfamily fontsize="10" leading="12" name="text">
<Regular fontface="NotoSansBengali-Regular" />
</DefineFontfamily>
<Record element="data">
<PlaceObject>
<Textblock>
<Paragraph>
<!-- No language set, wrong output! -->
<Value>আমি</Value>
</Paragraph>
</Textblock>
</PlaceObject>
</Record>
</Layout>
<PlaceObject>
<Textblock>
<Paragraph language="Other">
<Value>আমি</Value>
</Paragraph>
</Textblock>
</PlaceObject>