Handbuch durchsuchen:

- Startseite
- Einleitung
- Hallo Welt!
- Grundlagen
  - Erstellen eines Layoutregelwerks
  - Aufbau der Datendatei und des Layoutregelwerks
  - Objekte ausgeben
  - Raster
  - Bereiche auf der Seite (PositioningArea)
  - Dateiorganisation
  - Silbentrennung / Spracheinstellungen
  - Einbinden von Schriftarten
  - Textformate
  - Textformatierung
  - Farben
- Programmierung
- Bilder einbinden
- Tabellen
- Fortgeschrittene Themen
  - Lesezeichen (Bookmarks)
  - Erzeugen von XML-Strukturen
  - Druckausgabe / Schnittmarken
  - CSS
  - Gruppen (virtuelle Objekte)
  - Virtuelle Seiten
  - Rotieren von Inhalten
  - Sortieren von Daten
  - Umfließen von Bildern
  - Seitentypen
  - Starten des Publishers über den Hotfolder
  - Lua-Filter / Datenvorverarbeitung
  - Schemavalidierung
  - Qualitätssicherung (PDF-Vergleich)
  - Fehlersuche / Debugging
  - Servermodus
- Kochbuch
  - Griffmarken
  - Mehrseitige PDF-Dateien einbinden
  - Layoutoptimierung mithilfe von Gruppen
  - Verzeichnisse erstellen
  - Seitenzahlen: Seite x von y
  - Aufzählungslisten nachahmen
- Installationsanleitung
- Voreinstellungen im speedata Publisher
- Starten des Publishers über die Kommandozeile
- Konfiguration des Publishers
- Längenangaben und Maßeinheiten
- XPath- und Layoutfunktionen
- Interne Variablen
- Liste der Änderungen
- Glossar
- Befehlsreferenz
  - A
  - Action
  - AddSearchpath
  - AtPageCreation
  - AtPageShipout
  - AttachFile
  - Attribute
  - B
  - Barcode
  - Bold
  - BoldItalic
  - Bookmark
  - Box
  - Br
  - Case
  - Circle
  - Color
  - Column
  - Columns
  - Compatibility
  - Contents
  - Copy-of
  - DefineColor
  - DefineFontalias
  - DefineFontfamily
  - DefineTextformat
  - Element
  - Fontface
  - ForAll
  - Frame
  - Grid
  - Group
  - Groupcontents
  - HSpace
  - Hyphenation
  - I
  - Image
  - Include
  - Initial
  - InsertPages
  - Italic
  - Layout
  - Li
  - LoadDataset
  - LoadFontfile
  - Loop
  - Makeindex
  - Margin
  - Mark
  - Message
  - NewPage
  - NextFrame
  - NextRow
  - NoBreak
  - Ol
  - Options
  - Otherwise
  - Output
  - Overlay
  - Pageformat
  - Pagetype
  - Paragraph
  - PDFOptions
  - PlaceObject
  - Position
  - PositioningArea
  - PositioningFrame
  - ProcessNode
  - Record
  - Regular
  - Rule
  - SaveDataset
  - SavePages
  - SetGrid
  - SetVariable
  - SortSequence
  - Stylesheet
  - Span
  - Sub
  - Sup
  - Switch
  - Table
  - Tablefoot
  - Tablehead
  - Tablerule
  - Td
  - Text
  - Textblock
  - Tr
  - Trace
  - Transformation
  - U
  - Ul
  - Until
  - URL
  - Value
  - VSpace
  - While

Version 3.2.0
Handbuch durchsuchen:

- Startseite
- Einleitung
- Hallo Welt!
- Grundlagen
  - Erstellen eines Layoutregelwerks
  - Aufbau der Datendatei und des Layoutregelwerks
  - Objekte ausgeben
  - Raster
  - Bereiche auf der Seite (PositioningArea)
  - Dateiorganisation
  - Silbentrennung / Spracheinstellungen
  - Einbinden von Schriftarten
  - Textformate
  - Textformatierung
  - Farben
- Programmierung
- Bilder einbinden
- Tabellen
- Fortgeschrittene Themen
  - Lesezeichen (Bookmarks)
  - Erzeugen von XML-Strukturen
  - Druckausgabe / Schnittmarken
  - CSS
  - Gruppen (virtuelle Objekte)
  - Virtuelle Seiten
  - Rotieren von Inhalten
  - Sortieren von Daten
  - Umfließen von Bildern
  - Seitentypen
  - Starten des Publishers über den Hotfolder
  - Lua-Filter / Datenvorverarbeitung
  - Schemavalidierung
  - Qualitätssicherung (PDF-Vergleich)
  - Fehlersuche / Debugging
  - Servermodus
- Kochbuch
  - Griffmarken
  - Mehrseitige PDF-Dateien einbinden
  - Layoutoptimierung mithilfe von Gruppen
  - Verzeichnisse erstellen
  - Seitenzahlen: Seite x von y
  - Aufzählungslisten nachahmen
- Installationsanleitung
- Voreinstellungen im speedata Publisher
- Starten des Publishers über die Kommandozeile
- Konfiguration des Publishers
- Längenangaben und Maßeinheiten
- XPath- und Layoutfunktionen
- Interne Variablen
- Liste der Änderungen
- Glossar
- Befehlsreferenz
  - A
  - Action
  - AddSearchpath
  - AtPageCreation
  - AtPageShipout
  - AttachFile
  - Attribute
  - B
  - Barcode
  - Bold
  - BoldItalic
  - Bookmark
  - Box
  - Br
  - Case
  - Circle
  - Color
  - Column
  - Columns
  - Compatibility
  - Contents
  - Copy-of
  - DefineColor
  - DefineFontalias
  - DefineFontfamily
  - DefineTextformat
  - Element
  - Fontface
  - ForAll
  - Frame
  - Grid
  - Group
  - Groupcontents
  - HSpace
  - Hyphenation
  - I
  - Image
  - Include
  - Initial
  - InsertPages
  - Italic
  - Layout
  - Li
  - LoadDataset
  - LoadFontfile
  - Loop
  - Makeindex
  - Margin
  - Mark
  - Message
  - NewPage
  - NextFrame
  - NextRow
  - NoBreak
  - Ol
  - Options
  - Otherwise
  - Output
  - Overlay
  - Pageformat
  - Pagetype
  - Paragraph
  - PDFOptions
  - PlaceObject
  - Position
  - PositioningArea
  - PositioningFrame
  - ProcessNode
  - Record
  - Regular
  - Rule
  - SaveDataset
  - SavePages
  - SetGrid
  - SetVariable
  - SortSequence
  - Stylesheet
  - Span
  - Sub
  - Sup
  - Switch
  - Table
  - Tablefoot
  - Tablehead
  - Tablerule
  - Td
  - Text
  - Textblock
  - Tr
  - Trace
  - Transformation
  - U
  - Ul
  - Until
  - URL
  - Value
  - VSpace
  - While

# Einbinden von Schriftarten

Das Einbinden von Schriftarten in den gängigen Formaten ist sehr einfach. Unterstützt werden die Formate Type1 (Dateien `.pfb` und `.afm`) sowie TrueType und OpenType (Dateien `.ttf` und `.otf`).

Um dem Publisher Schriftarten bekannt zu machen und zu nutzen, sind zwei Schritte notwendig. Der erste Schritt ist das Laden einer Schriftdatei:

    <LoadFontfile name="MinionRegular" filename="MinionPro-Regular.otf" />

Das weist dem Dateinamen `MinionPro-Regular.otf` den internen Namen `MinionRegular` zu. Im zweiten Schritt nutzt man dann diese internen Namen, um Familien zu definieren:

    <DefineFontfamily name="textfont" fontsize="9" leading="11">
      <Regular fontface="MinionRegular"/>
      <Bold fontface="MinionBold"/>
      <Italic fontface="MinionItalic"/>
      <BoldItalic fontface="MinionBoldItalic"/>
    </DefineFontfamily>

Die lezten drei Schnitte (Fett, Kursiv und Fettkursiv) müssen nicht angegeben werden, wenn sie im Layout nicht benutzt werden. `fontsize` bezeichnet die Schrifthöhe in Punkt, `leading` den Abstand zwischen zwei Grundlinien.

Schriftgröße und Zeilenabstand

Benutzt wird die Schriftart auf verschiedene Weise: in den Befehlen `<Textblock>`, `<Text>`, `<Paragraph>`, `<Table>`, `<NoBreak>` und `<Barcode>` kann mit dem Attribut `fontface` eine Schriftart mitgegeben werden, z. B. `<Paragraph fontface="textschrift">`. Temporär kann mit dem Befehl `<Fontface fontfamily=".​..">` auf eine andere Familie umgeschaltet werden:

    <Paragraph>
      <Fontface fontfamily="title">
        <Value>Preface</Value>
      </Fontface>
      <Value> more text</Value>
    </Paragraph>

## Textauszeichnung im Layoutregelwerk

Um auf die Schnitte Fett, Kursiv und Fett-kursiv umzuschalten, gibt es verschiedene Möglichkeiten. Die direkteste ist mit den Befehlen `B` und `I` umzuschalten, diese können auch ineinander geschachtelt werden:

    <PlaceObject>
      <Textblock fontface="textfont">
        <Paragraph>
          <Value>A wonderful </Value>
          <B><Value>serenity</Value></B>
          <Value> has taken possession </Value>
          <I><Value>of my</Value>
            <Value> </Value>
            <B><Value>entire soul,</Value></B>
          </I>
          <Value> like these sweet mornings.</Value>
        </Paragraph>
      </Textblock>
    </PlaceObject>

Auszeichnungen im Layout. Unterstreichen (nicht gezeigt) geht mit dem Befehl `<U>`.

## Textauszeichnung in den Daten

Sind in den Daten Auszeichnungen vorhanden (z. B. als HTML-Tags), dann geht das prinzipiell genau so:

    <PlaceObject>
      <Textblock fontface="textschrift">
        <Paragraph>
          <Value select="."/>
        </Paragraph>
      </Textblock>
    </PlaceObject>

mit den dazugehörigen Daten:

    <data>Mit <b>Blindheit</b> per <i>Definition <b>geschlagen,</b></i>
      dennoch nicht unsichtbar.</data>

Das Ergebnis ist dasselbe wie oben. In den Daten können die Tags auch groß geschrieben werden: `<B>` anstatt `<b>`. Schachtelung ist ebenfalls erlaubt und auch hier wird mit `<u>` unterstrichen.

| Sollten die Daten nicht als wohlgeformtes XML sondern beispielsweise im HTML Format vorliegen, kann man die Layoutfunktion `sd:decode-html()` benutzen, sie zu interpretieren.

## OpenType Features

Das OpenType Format kennt sogenannte OpenType Features, wie z. B. Mediävalziffern oder Kapitälchen. Manche dieser Features können bei `LoadFontfile` aktiviert werden.

    <!-- Mediävalziffern -->
    <LoadFontfile name="MinionRegular" filename="MinionPro-Regular.otf" oldstylefigures="yes" />

    <!-- Kapitälchen -->
    <LoadFontfile name="MinionRegular" filename="MinionPro-Regular.otf" smallcaps="yes" />

Mediävalziffern (links) machen das Lesen der Ziffern oftmals angenehmer. Echte Kapitälchen (rechts) unterscheiden sich deutlich von rechnerisch verkleinerten Großbuchstaben. Die Strichstärke und Proportionen müssen angepasst werden.

## Optischer Randausgleich

Mit dem Parameter `marginprotrusion` (Prozentangabe) beim Befehl `<LoadFontfile>` kann man bestimmen, wie weit bestimmte Zeichen (Komma, Punkt und Bindestrich) rechts in den Rand hineinragen. Damit kann man einen optisch ruhigeren Rand bei Blocksatz erreichen:

    <Layout
      xmlns="urn:speedata.de:2009/publisher/en"
      xmlns:sd="urn:speedata:2009/publisher/functions/en">

      <Options mainlanguage="German" />
      <LoadFontfile name="main"
                    filename="MinionPro-Regular.otf"
                    marginprotrusion="100" />

      <DefineFontfamily name="text" fontsize="10" leading="12">
        <Regular fontface="main"/>
      </DefineFontfamily>

      <Record element="data">
        <PlaceObject>
          <Textblock width="4">
            <Paragraph>
              <Value select="."/>
            </Paragraph>
          </Textblock>
        </PlaceObject>
      </Record>
    </Layout>

Die dazugehörige Datendatei (`data.xml`) ist folgende:

    <data>Also schön, Guido Heffels, nachfolgend meine Textempfehlung
        für das Blindtextbuch. Sie mögen denken, aus welchem Anlass es
        unbedingt eine solche poesiealbumhafte Antiquität sein muss, und
        genau das sollen Sie ja auch.</data>

Links: Komma und Bindestrich ragen in den rechten Rand hinein. Rechts: ohne optischen Randausgleich.

## In welchem Verzeichnis müssen die Schriftdateien liegen?

Die Organisation der Dateien, und damit der Schriftarten, wird im Verzeichnis Dateiorganisation beschrieben. Mit `sp --systemfonts` beim Aufruf des Publishers kann man auf die systemweiten Schriftdateien zugreifen.

## Tipps und Tricks

Um sich Arbeit bei der Schriftdefinition zu sparen, kann man den Befehl

    $ sp list-fonts --xml

benutzen. Dieser listet dann alle gefundenen Schriftdateien auf, zusammen mit einer Zeile, die direkt in das Layout übernommen werden kann.

    $ sp list-fonts --xml
    <LoadFontfile name="DejaVuSans-Bold"
                  filename="DejaVuSans-Bold.ttf" />
    <LoadFontfile name="DejaVuSans-BoldOblique"
                  filename="DejaVuSans-BoldOblique.ttf" />
    <LoadFontfile name="DejaVuSans-ExtraLight"
                  filename="DejaVuSans-ExtraLight.ttf" />
    ...

| Wenn keine Schriftart für einen Absatz oder einen Textblock (etc.) angegeben wird, nutzt das System die Schriftfamilie `text`, die im Publisher auch vordefiniert ist und überschrieben werden kann. Sie den Anhang Voreinstellungen im Publisher.

## Aliasnamen

Es gibt einen Befehl, um einen alternativen Namen für einen existierenden Fontnamen zu der Liste der bekannten Fontnamen hinzuzufügen:

    <DefineFontalias existing="..." alias="..."/>

Die Befehle

    <LoadFontfile name="DejaVuSerif"
            filename="DejaVuSerif.ttf" />
    <LoadFontfile name="DejaVuSerif-Bold"
            filename="DejaVuSerif-Bold.ttf" />
    <LoadFontfile name="DejaVuSerif-BoldItalic"
            filename="DejaVuSerif-BoldItalic.ttf" />
    <LoadFontfile name="DejaVuSerif-Italic"
            filename="DejaVuSerif-Italic.ttf" />

    <DefineFontalias existing="DejaVuSerif" alias="serif"/>
    <DefineFontalias existing="DejaVuSerif-Bold" alias="serif-bold"/>
    <DefineFontalias existing="DejaVuSerif-Italic" alias="serif-italic"/>
    <DefineFontalias existing="DejaVuSerif-BoldItalic"
             alias="serif-bolditalic"/>

erlauben es nun, die Schriftfamilien allgemein wie folgt zu definieren:

    <DefineFontfamily name="title" fontsize="15" leading="17">
      <Regular fontface="serif"/>
      <Bold fontface="serif-bold"/>
      <BoldItalic fontface="serif-bolditalic"/>
      <Italic fontface="serif-italic"/>
    </DefineFontfamily>

also unabhängig von der tatsächlich genutzten Schriftart. Mit den im Abschnitt Layoutregelwerke in einzelne Dateien teilen beschriebenen Möglichkeiten kann man nun die Fontdefinition in eine separate Datei auslagern und bei Bedarf schnell zwischen verschiedenen Schriftarten wählen, in dem die gewünschten Dateien eingebunden werden.

- Silbentrennung / Spracheinstellungen
- Textformate