[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Absatzformat per Skript erzeugen / Befehl für Laufweite?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Absatzformat per Skript erzeugen / Befehl für Laufweite?

sleepless
Beiträge gesamt: 152

4. Apr 2011, 17:12
Beitrag # 1 von 15
Bewertung:
(7986 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe da ein kleines Problem: Ich erstelle mit app.activeDocument.paragraphStyles.add(); ein neues Absatzformat, das mit with ( abs_for ) { mehrere Eigenschaften zugewiesen bekommt. Name, Font, Farbe, Schriftgröße, ZAB ist alles kein Problem, aber bei der Laufweite steig ich aus:
Die Zeile desiredLetterSpacing = -35; bringt die Meldung "Daten liegen außerhalb des gültigen Bereichs."; seltsamerweise tun sie das auch beim Wert 0 (aber der sollte doch gehen, oder?). Im Objektmodell-Viewer heißt es:

Zitat The desired letter spacing, specified as a percentge of the built-in space between letters in the font. (Range: -100 to 500)

das heißt doch, der Wert -35 sollte kein Problem sein, oder? Ich habe den Verdacht, desiredLetterSpacing ist nicht die Laufweite. Mit Google bin ich nicht weitergekommen; wo ich die Laufweite im Absatzformat einstellen muss, weiß ich ja, aber wie lautet der entsprechende Skript-Befehl?

Vielen Dank schonmal für Eure Hilfe,

Gruß
Stephan

PS: Hab das Wichtigste mal wieder vergessen: Mac OS X (10.5.8); ID CS4/CS5.

(Dieser Beitrag wurde von sleepless am 4. Apr 2011, 17:25 geändert)
X

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Gerald Singelmann
  
Beiträge gesamt: 6269

4. Apr 2011, 17:24
Beitrag # 2 von 15
Beitrag ID: #468371
Bewertung:
(7983 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
desiredLetterSpacing ist das, was im Dialog "Abstände" eingetragen wird.

"Laufweite" ist im Englischen "Tracking"


als Antwort auf: [#468367]

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Martin Fischer
  
Beiträge gesamt: 12778

4. Apr 2011, 17:37
Beitrag # 3 von 15
Beitrag ID: #468372
Bewertung:
(7975 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

ergänzend zu Geralds Angaben:
desiredLetterSpacing ist umgeben von
minimumLetterSpacing und maximumLetterSpacing.

desiredLetterSpacing darf minimumLetterSpacing nicht unterschreiten und maximumLetterSpacing nicht überschreiten.

Mit der Zuweisung des Werts -35 unterschreitet desiredLetterSpacing wahrscheinlich den Wert von minimumLetterSpacing.

Deswegen die Fehlermeldung.


als Antwort auf: [#468367]

Absatzformat per Skript erzeugen / Befehl für Laufweite?

sleepless
Beiträge gesamt: 152

4. Apr 2011, 17:37
Beitrag # 4 von 15
Beitrag ID: #468373
Bewertung:
(7975 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

vielen Dank, genau das ist es, was ich suchte. Hat Adobe eigentlich irgendwo eine Liste veröffentlicht, in dem die ganzen Skriptbefehle für die Absatz- bzw. Zeichenformate beschrieben sind, am besten sortiert nach ihrem Auftauchen im Fenster "Absatzformatoptionen" bzw. "Zeichenformatoptionen"?

Auf meiner Suche nach dem Befehl habe ich einen Thread aus dem Jahre 2006 gefunden, in dem Martin Fischer schrieb, er sende dem TO eine Liste per PM, weil es nicht hierher gehöre... :-)) Was man über Google alles so findet; nur nicht das was man braucht.

Vielen Dank nochmal.

Viele Grüße und frohes Schaffen
Stephan


als Antwort auf: [#468371]

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Martin Fischer
  
Beiträge gesamt: 12778

4. Apr 2011, 17:44
Beitrag # 5 von 15
Beitrag ID: #468375
Bewertung:
(7970 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,
Antwort auf: Hat Adobe eigentlich irgendwo eine Liste veröffentlicht, in dem die ganzen Skriptbefehle für die Absatz- bzw. Zeichenformate beschrieben sind, am besten sortiert nach ihrem Auftauchen im Fenster "Absatzformatoptionen" bzw. "Zeichenformatoptionen"?


Ich weiß von keiner Liste, welche die Eigenschaften nach dem Auftauchen im Fenster Absatzformatoptionen bzw. Zeichenformatoptionen aufweist.

Aber im Extendscript Toolkit (Debugger für JavaScript für Adobe Anwendungen) gibt es einen Objektmodellbrowser, in dem Du die Klassen und Befehle alphabetisch sortiert nachschlagen kannst.

Sehr empfohlen sei die CHM- oder die HTML-Objektübersicht von Jongware zum Nachschlagen: InDesign JavaScript Reference Guide.

Bei Peter Kahrel findest Du die Script Dictionaries ab InDesign CS2 aufwärts.


als Antwort auf: [#468373]

Absatzformat per Skript erzeugen / Befehl für Laufweite?

sleepless
Beiträge gesamt: 152

4. Apr 2011, 17:49
Beitrag # 6 von 15
Beitrag ID: #468376
Bewertung:
(7964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

mit diesen drei Befehlen definiere ich meine Blocksatzeinstellungen, richtig?
Was ich nur nicht verstehe, ist, wenn ich als Wert "0" zuweise, entspricht das den Standardvoreinstellungen, trotzdem bekam ich auch eine Fehlermeldung. Leider weiß ich jetzt nicht mehr welche; wollte es gerade ausprobieren, aber jetzt klappt es natürlich.
Manchmal denke ich, Skripte funktionieren nur dann, wenn man sie wirklich versteht und ansonsten aus Prinzip nicht.

Nun ja, wieder was gelernt :-)

Gruß
Stephan


als Antwort auf: [#468372]

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Martin Fischer
  
Beiträge gesamt: 12778

4. Apr 2011, 18:01
Beitrag # 7 von 15
Beitrag ID: #468379
Bewertung:
(7948 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

Antwort auf: mit diesen drei Befehlen definiere ich meine Blocksatzeinstellungen, richtig?

Wie Gerald oben geschrieben hat, entsprechen diese Klassen den Wortabstandseinstellungen im Dialog 'Abstände'.

Optimal wirkt auch bei Nicht-Blocksatz.
Die anderen beiden nur bei Blocksatz.


Antwort auf: Manchmal denke ich, Skripte funktionieren nur dann, wenn man sie wirklich versteht und ansonsten aus Prinzip nicht.

Es kommt auch vor, daß Skripte funktionieren und man versteht nicht warum. ;-)


Antwort auf: Nun ja, wieder was gelernt :-)

Dieser Satz begleitet mich bei jedem neuen Skript.


als Antwort auf: [#468376]
(Dieser Beitrag wurde von Martin Fischer am 4. Apr 2011, 18:02 geändert)

Absatzformat per Skript erzeugen / Befehl für Laufweite?

sleepless
Beiträge gesamt: 152

5. Apr 2011, 13:46
Beitrag # 8 von 15
Beitrag ID: #468450
Bewertung:
(7869 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
Zitat Es kommt auch vor, daß Skripte funktionieren und man versteht nicht warum. ;-)

Ja, durch mein Trial-and-Error-Verfahren beim Skripten dürfte das in der Hälfte meiner Codezeilen der Fall sein ;-)

Jetzt habe ich aber noch eine Frage: Gestern abend hat das Anlegen eines Absatzformates per Skript wunderbar funktioniert; heute wollte ich noch ein zweites anlegen nur mit einer anderen Schrift (Rotis Sans Serif). Ich bekomme die Fehlermeldung "Die gewünschte Schriftfamilie ist nicht verfügbar." Ich habe im FontExplorer Pro nach dem Postscript-Namen gesucht und wieder die gleiche Fehlermeldung bekommen. Die Schrift ist aber definitiv geladen und im InDesign verwendbar.

Code
abs_for[1]    = app.activeDocument.paragraphStyles.add();  
with ( abs_for[1] ) {
name = 'Fließtext';
appliedFont = app.fonts.item("Rotis Sans Serif");
fontStyle = "55";
pointSize = 8;
leading = 9;
fillColor = "Paper";
tracking = 0;
justification = Justification.LEFT_ALIGN; }


Ich habe schon einiges ausprobiert, aber nichts hat geholfen. Ist das ein Problem mit der Schrift?

Vielen Dank schonmal,

Stephan


als Antwort auf: [#468379]

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Neil77
Beiträge gesamt: 287

5. Apr 2011, 14:09
Beitrag # 9 von 15
Beitrag ID: #468451
Bewertung:
(7862 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

formatiere doch einmal in einem Dokument Text mit der Schrift, markiere den Text und lass das folgende Skript laufen:

Code
alert(app.selection[0].appliedFont.fontFamily); 


Das sollte dir eigentlich die funktionierende Bezeichnung ausgeben.

Grüße, Martin


als Antwort auf: [#468450]

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Martin Fischer
  
Beiträge gesamt: 12778

5. Apr 2011, 14:18
Beitrag # 10 von 15
Beitrag ID: #468452
Bewertung:
(7853 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

appliedFont erwartet einen Font (= Schriftschnitt) und nicht eine Schriftfamilie.

Versuch's mal damit:
Code
appliedFont   = app.fonts.item("Rotis Sans Serif\t55"); 

Die Definition des Schriftschnitts mit fontStyle erübrigt sich dann.


als Antwort auf: [#468450]
(Dieser Beitrag wurde von Martin Fischer am 5. Apr 2011, 14:27 geändert)

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Neil77
Beiträge gesamt: 287

5. Apr 2011, 14:24
Beitrag # 11 von 15
Beitrag ID: #468454
Bewertung:
(7844 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

das mit dem Tab ist interessant.

Tatsächlich funktioniert in meiner Test-Anordnung beides, also (in meinem Fall) sowohl
appliedFont = app.fonts.item("Rotis Sans Serif Std");
als auch
appliedFont = app.fonts.item("Rotis Sans Serif Std\t55 Regular");

Übrigens funktionieren auch beide Varianten, wenn appliedFont gleich der String zugewiesen wird (also ohne app.fonts.item...). Da ist InDesign also wohl recht flexibel und tolerant.

[edit: am saubersten finde ich aber tatsächlich deine Variante, den genauen Schnitt in einem Aufwasch zuzuweisen]

Grüße, Martin


als Antwort auf: [#468452]
(Dieser Beitrag wurde von Neil77 am 5. Apr 2011, 14:25 geändert)

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Martin Fischer
  
Beiträge gesamt: 12778

5. Apr 2011, 14:28
Beitrag # 12 von 15
Beitrag ID: #468456
Bewertung:
(7837 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Antwort auf: Übrigens funktionieren auch beide Varianten, wenn appliedFont gleich der String zugewiesen wird (also ohne app.fonts.item...). Da ist InDesign also wohl recht flexibel und tolerant.


Du hast Recht.

Aber weshalb hat es bei Stephan nicht funktioniert?
Hat möglicherweise die Familie nicht zum voreingestellten Schnitt gepasst?
Der passende wird ja erst nach Definition des appliedFont zugewiesen.


als Antwort auf: [#468454]
(Dieser Beitrag wurde von Martin Fischer am 5. Apr 2011, 14:29 geändert)

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Martin Fischer
  
Beiträge gesamt: 12778

5. Apr 2011, 14:35
Beitrag # 13 von 15
Beitrag ID: #468457
Bewertung:
(7824 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

schau Dir mal im ESTK die Definitionen der beiden Varianten an.
Code
var f1 = app.fonts.item("Rotis Sans Serif"); 
var f2 = app.fonts.item("Rotis Sans Serif\t55");
$.bp();


f1 hat bei mir den Index -1 und keine fonttypischen Eigenschaften.

Es ist also wahrscheinlich eine Frage der Toleranz, dass InDesign bei appliedFont (manchmal) auch die Schriftfamilie ohne den Schnitt akzeptiert.


als Antwort auf: [#468454]

Absatzformat per Skript erzeugen / Befehl für Laufweite?

Neil77
Beiträge gesamt: 287

5. Apr 2011, 14:42
Beitrag # 14 von 15
Beitrag ID: #468458
Bewertung:
(7811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ah, das ist interessant. Ja, nach der Dokumentation soll item() ja auch nur den name (also die Langform) akzeptieren, ist also die sicherste Methode. (lustig, dass die Zuweisung eines quasi ungültigen Fonts ans Abastzformat dann dennoch funktioniert)

Es wäre die Frage, wo in der "Toleranz" Unterschiede zwischen
.fontFamily
.fullName
.fullNameNative
.platformName
.postscriptName
liegen.

fontFamily und platformName haben bei meinem Fall den gleichen Wert (und die andern funktionieren nicht), wenn hier unterschiedliche Werte vorliegen, wird wahrscheinlich nur einer akzeptiert – das könnte es in Stephans Fall sein.

Grüße, Martin


als Antwort auf: [#468457]

Absatzformat per Skript erzeugen / Befehl für Laufweite?

sleepless
Beiträge gesamt: 152

5. Apr 2011, 14:51
Beitrag # 15 von 15
Beitrag ID: #468459
Bewertung:
(7803 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
Code
appliedFont   = app.fonts.item("Rotis Sans Serif\t55"); 

Mit dem \t funktioniert das Ganze. Ich habe den Tabulator auch probiert, aber mir war nicht klar, dass ich ihn so schreiben muss. Ich habe die Tab-Taste gedrückt, was im ExtendTool Kit dazu führte, dass zwei Leerzeichen gesetzt wurden.
Jedenfalls funktioniert das so und eigentlich ist die Syntax logisch. Vielleicht hat es auch was mit der CS5-Version des ETKs zu tun, denn in der CS4-Version wird mit Tab auch tatsächlich ein Tabulator gesetzt. Allerdings ist das wohl nicht gerade die "reine Lehre".
Jedenfalls werde ich mein anderes Absatzformat auch so definieren; sicher ist sicher.

Nun, danke an alle
Einen schönen Tag noch

Gruß
Stephan


als Antwort auf: [#468456]
X