Schrift-Parameter (@param font)
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>")eineSystem.Drawing.Fontmit den EigenschaftenName,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.