Schrift-Parameter (@param font)

Erstellt: 2026-07-12 · Aktualisiert: 2026-07-12

Mit dem Parametertyp font öffnet der Parameter-Dialog den Windows-Standard-Schriftdialog. Der Benutzer wählt Schriftart, Größe und Stil (Fett/Kursiv/Unterstrichen); das Script bekommt eine fertige Schrift und wendet sie auf Text an — auf ein ganzes Shape oder nur teilweise (z. B. nur die Größe).

Ergänzung zu color

@param font ist das Schrift-Pendant zu @param color (Farbwähler). Farbe wird bewusst nicht mitgeführt — dafür einen separaten @param color verwenden. Siehe Abschnitt Schrift und Farbe kombinieren.


Syntax

// @param font <name> "<Label>" [default="Name,Größe,Stil"] [tooltip="…"]
  • default — Startwert im Format Schriftname,Größe,Stil. Größe in Punkten; Stil optional: Bold, Italic, Underline, Strikeout (mehrere durch Leerzeichen). Beispiele: default="Segoe UI,24,Bold" · default="Arial,32" · default="Calibri,18,Bold Italic"
  • Im Script liefert Params.GetFont("<name>") eine System.Drawing.Font mit den Eigenschaften Name, Size (Punkte), Bold, Italic, Underline.

Ganze Formatierung anwenden

Wendet alle Eigenschaften der gewählten Schrift auf den Text aller selektierten Shapes an. Der Helper ppptools.SetFont(shape, font) setzt Name, Größe, Fett, Kursiv und Unterstrichen in einem Aufruf:

// @param font schrift "Schrift" default="Segoe UI,24,Bold" tooltip="Öffnet den Windows-Schriftdialog"
// @button Anwenden

var f   = Params.GetFont("schrift");
var sel = ppptools.GetSelectedRange();
for (int i = 1; i <= sel.Count; i++)
    ppptools.SetFont(sel[i], f);

Beim Ausführen erscheint der Parameter-Dialog mit dem Feld „Schrift" und einem Button, der die aktuelle Auswahl zeigt (z. B. Segoe UI, 24 pt Fett). Ein Klick öffnet den Windows-Schriftdialog.


Nur Teile übernehmen (z. B. nur die Größe)

Du musst nicht die ganze Schrift anwenden — greife einzelne Eigenschaften ab. Hier bleibt Schriftart und Stil unverändert, nur die Größe aus dem Dialog wird übernommen:

// @param font gr "Schriftgröße wählen" default="Arial,32"
// @button Größe setzen

var f   = Params.GetFont("gr");
var sel = ppptools.GetSelectedRange();
for (int i = 1; i <= sel.Count; i++)
    sel[i].TextFrame.TextRange.Font.Size = f.Size;   // nur die Größe

Analog für einzelne Eigenschaften:

Eigenschaft Anwenden
Schriftart …Font.Name = f.Name;
Größe …Font.Size = f.Size;
Fett …Font.Bold = f.Bold ? MsoTriState.msoTrue : MsoTriState.msoFalse;
Kursiv …Font.Italic = f.Italic ? MsoTriState.msoTrue : MsoTriState.msoFalse;
Unterstrichen …Font.Underline = f.Underline ? MsoTriState.msoTrue : MsoTriState.msoFalse;

Auf Textteile statt ganzes Shape

sel[i].TextFrame.TextRange ist der gesamte Text. Für einen Ausschnitt TextRange.Runs(start, länge) oder .Paragraphs(n) verwenden und dort .Font setzen.


Schrift und Farbe kombinieren

Der Windows-Schriftdialog führt in PPPTools keine Farbe mit — die Farbauswahl ist im Dialog bewusst ausgeblendet, und ein System.Drawing.Font trägt ohnehin keine Farbe. Params.GetFont(...) liefert also nie eine Farbe.

Soll ein Snippet Schrift und Farbe setzen, kombinierst du @param font mit einem separaten @param color:

// @param string SearchString "Suchbegriff"       tooltip="Zu formatierender Text"
// @param bool   CaseSensitive "Gross-/Kleinschreibung beachten?" tooltip="o ≠ O, type ≠ Type"
// @param font   FormatFont    "Schrift"           default="Calibri,18,Bold"
// @param color  FormatColor   "Farbe"             default="#FF0000"
// @button Anwenden

string searchString  = Params.GetString("SearchString", "");
bool   caseSensitive = Params.GetBool("CaseSensitive", false);
var    fmt      = Params.GetFont("FormatFont");
var    fmtColor = Params.GetColor("FormatColor");

MsoTriState matchCase = caseSensitive ? MsoTriState.msoTrue : MsoTriState.msoFalse;

foreach (dynamic oShape in ppptools.GetAllShapes())
{
    if ((int)oShape.HasTextFrame != (int)MsoTriState.msoTrue) continue;
    dynamic tr = oShape.TextFrame.TextRange;

    dynamic found = tr.Find(searchString, 0, matchCase, MsoTriState.msoFalse);
    while (found != null)
    {
        // Schrift aus dem Font-Dialog …
        found.Font.Name      = fmt.Name;
        found.Font.Size      = fmt.SizeInPoints;
        found.Font.Bold      = fmt.Bold      ? MsoTriState.msoTrue : MsoTriState.msoFalse;
        found.Font.Italic    = fmt.Italic    ? MsoTriState.msoTrue : MsoTriState.msoFalse;
        found.Font.Underline = fmt.Underline ? MsoTriState.msoTrue : MsoTriState.msoFalse;
        // … Farbe aus dem separaten Farbwähler
        found.Font.Color.RGB = System.Drawing.ColorTranslator.ToOle(fmtColor);

        int after = found.Start + found.Length - 1;
        found = tr.Find(searchString, after, matchCase, MsoTriState.msoFalse);
    }
}

Original beibehalten (nur teilweise ändern)

Der Parameter-Dialog liefert immer einen Wert — es gibt kein „nichts ausgewählt". Soll Schrift oder Farbe optional bleiben, steuerst du das über je eine Checkbox und wendest den Block nur bei aktiver Checkbox an: csharp // @param bool ChangeFont "Schrift ändern?" default="true" // @param bool ChangeColor "Farbe ändern?" default="false" … if (Params.GetBool("ChangeFont", true)) { /* found.Font.Name = … usw. */ } if (Params.GetBool("ChangeColor", false)) { found.Font.Color.RGB = System.Drawing.ColorTranslator.ToOle(fmtColor); } Inaktive Checkbox = Original-Schrift bzw. -Farbe der Treffer bleibt unverändert.


Als Action speichern

Solche Formatierungs-Skripte passen typischerweise in den Action-Manager (sie tun etwas, statt ein Objekt zu erzeugen). Mit // @button Anwenden heißt der Dialog-Button passend, und die Action lässt sich später über Galerie/Suche wiederverwenden.


Verwandte Seiten