[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt unicode2charcterstyle (CS6, WIN 7)

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

unicode2charcterstyle (CS6, WIN 7)

cwenet
Beiträge gesamt: 1139

29. Jan 2013, 20:13
Beitrag # 1 von 14
Bewertung:
(3728 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

hiermit würde ich gerne die griechischen Zeichen via Zeichenformat einfrieren.
Nun gibt es ja eine ganze Menge davon.

Wie lässt sich das eleganter lösen, damit nicht die komplette Liste manuell erfasst werden muss?


Code
app.findTextPreferences = app.changeTextPreferences = null;   


se("<0374>","Greek");
se("<0375>","Greek");

usw.


app.findTextPreferences = app.changeTextPreferences = null;

function se(suchenNach, zf_name2) {
app.findTextPreferences.findWhat = suchenNach;

var result = app.activeDocument.findText();
if (app.activeDocument.characterStyles.item(zf_name2) == null) {
if (result.length > 0 ) {
app.activeDocument.characterStyles.add({name:zf_name2} );
}
}
if (result.length > 0 ) {
app.changeTextPreferences.appliedCharacterStyle = zf_name2;
app.activeDocument.changeText();
}
}

alert('Fertig');


Danke und Gruß
Christoph
X

unicode2charcterstyle (CS6, WIN 7)

Martin Fischer
  
Beiträge gesamt: 12783

29. Jan 2013, 20:29
Beitrag # 2 von 14
Beitrag ID: #507508
Bewertung:
(3719 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

schlag den Unicodebereich Deiner griechischen Zeichen nach (z.B. http://www.unicode.org/charts/) und entwickle daraus einen regulären Ausdruck (von - bis).
Teste diesen. Und wenn er funktioniert, baue ihn in Dein Script ein.

An Deinem Skript mußt Du noch etwas rumfeilen,
Überleg nach Deinem Test, wie Du das von Hand am einfachsten erledigen würdest und leite davon Dein Vorgehen per Skript ab.


als Antwort auf: [#507507]
(Dieser Beitrag wurde von Martin Fischer am 29. Jan 2013, 20:33 geändert)

unicode2charcterstyle (CS6, WIN 7)

cwenet
Beiträge gesamt: 1139

29. Jan 2013, 21:12
Beitrag # 3 von 14
Beitrag ID: #507510
Bewertung:
(3680 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Martin,

ich glaube so funktioniert es. Habe es noch etwas erweitert, da ja auch z.B. der fontStyle Bold vorkommen kann.


Code
if( app.activeDocument.characterStyles.item( 'Greek_Bold' ) == null )    
{
app.activeDocument.characterStyles.add( { name : 'Greek_Bold' } );
}

app.findGrepPreferences = NothingEnum.nothing;

app.findGrepPreferences.findWhat = "[\\x{0374}-\\x{1FFE}]";
app.findGrepPreferences.fontStyle = "Bold";
app.changeGrepPreferences.appliedCharacterStyle = "Greek_Bold";
app.activeDocument.changeGrep();

app.findGrepPreferences = NothingEnum.nothing;

alert('Fertig');


Schönen Abend
Christoph


als Antwort auf: [#507508]

unicode2charcterstyle (CS6, WIN 7)

Martin Fischer
  
Beiträge gesamt: 12783

29. Jan 2013, 21:24
Beitrag # 4 von 14
Beitrag ID: #507511
Bewertung:
(3672 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

das sieht gut aus!

Du kannst hinter '[\\x{0374}-\\x{1FFE}]' noch ein '+' ergänzen, dann findet er aufeinanderfolgende griechische Zeichen auf einen Schlag.

Außerdem würde ich in der Vorbereitung auch die GREP-Ersetzeneinstellungen zurückstellen (wahrscheinlich ein Copy & Paste-Problem).


als Antwort auf: [#507510]

unicode2charcterstyle (CS6, WIN 7)

cwenet
Beiträge gesamt: 1139

29. Jan 2013, 21:35
Beitrag # 5 von 14
Beitrag ID: #507513
Bewertung:
(3664 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jetzt muss ich mich nochmals melden.

Das Script sieht jetzt so aus:

Code
var pattern = '[\\x{0374}-\\x{1FFE}]'; 


//unicode2characterstyle (greek)//////////////////////////////BOLD///////////////////////////////////////////////////////
if( app.activeDocument.characterStyles.item( 'Greek_Bold' ) == null )
{
app.activeDocument.characterStyles.add( { name : 'Greek_Bold' } );
}

app.findGrepPreferences = NothingEnum.nothing;

app.findGrepPreferences.findWhat = pattern;
app.findGrepPreferences.fontStyle = "Bold";
app.changeGrepPreferences.appliedCharacterStyle = "Greek_Bold";
app.activeDocument.changeGrep();

app.findGrepPreferences = NothingEnum.nothing;




//unicode2characterstyle (greek)//////////////////////////////BOLD-ITALIC///////////////////////////////////////////////////////
if( app.activeDocument.characterStyles.item( 'Greek_Bold-Italic' ) == null )
{
app.activeDocument.characterStyles.add( { name : 'Greek_Bold-Italic' } );
}

app.findGrepPreferences = NothingEnum.nothing;

app.findGrepPreferences.findWhat = pattern;
app.findGrepPreferences.fontStyle = "Bold Italic";
app.changeGrepPreferences.appliedCharacterStyle = "Greek_Bold-Italic";
app.activeDocument.changeGrep();

app.findGrepPreferences = NothingEnum.nothing;


//unicode2characterstyle (greek)//////////////////////////////ITALIC///////////////////////////////////////////////////////
if( app.activeDocument.characterStyles.item( 'Greek_Italic' ) == null )
{
app.activeDocument.characterStyles.add( { name : 'Greek_Italic' } );
}

app.findGrepPreferences = NothingEnum.nothing;

app.findGrepPreferences.findWhat = pattern;
app.findGrepPreferences.fontStyle = "Italic";
app.changeGrepPreferences.appliedCharacterStyle = "Greek_Italic";
app.activeDocument.changeGrep();

app.findGrepPreferences = NothingEnum.nothing;


//unicode2characterstyle (greek)//////////////////////////////REGULAR///////////////////////////////////////////////////////
if( app.activeDocument.characterStyles.item( 'Greek_Regular' ) == null )
{
app.activeDocument.characterStyles.add( { name : 'Greek_Regular' } );
}

app.findGrepPreferences = NothingEnum.nothing;

app.findGrepPreferences.findWhat = pattern;
app.findGrepPreferences.fontStyle = "Regular";
app.changeGrepPreferences.appliedCharacterStyle = "Greek_Regular";
app.activeDocument.changeGrep();

app.findGrepPreferences = NothingEnum.nothing;



Wie kann ich denn hier sicherstellen, dass das gefundene Zeichen noch kein Zeichenformat hat:
app.findGrepPreferences.appliedCharacterStyle = "[ohne]";

Danke und Gruß
Christoph


als Antwort auf: [#507510]

unicode2charcterstyle (CS6, WIN 7)

cwenet
Beiträge gesamt: 1139

29. Jan 2013, 21:41
Beitrag # 6 von 14
Beitrag ID: #507514
Bewertung:
(3650 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke fürs nochmal anschauen und den Hinweis.

Gruss
Christoph


als Antwort auf: [#507511]

unicode2charcterstyle (CS6, WIN 7)

Martin Fischer
  
Beiträge gesamt: 12783

29. Jan 2013, 21:42
Beitrag # 7 von 14
Beitrag ID: #507515
Bewertung:
(3650 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Wie kann ich denn hier sicherstellen, dass das gefundene Zeichen noch kein Zeichenformat hat:
app.findGrepPreferences.appliedCharacterStyle = "[ohne]";


Achte auf die Groß-/Kleinschreibung:

Code
app.findGrepPreferences.appliedCharacterStyle =  app.documents.firstItem().characterStyles.itemByName('[Ohne]'); 


Da 'Kein Zeichenformat' (bislang) stets das erste ZF ist, geht auch

Code
app.findGrepPreferences.appliedCharacterStyle =  app.documents.firstItem().characterStyles.firstItem(); 



als Antwort auf: [#507513]

unicode2charcterstyle (CS6, WIN 7)

Martin Fischer
  
Beiträge gesamt: 12783

29. Jan 2013, 21:50
Beitrag # 8 von 14
Beitrag ID: #507516
Bewertung:
(3623 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

Antwort auf: danke fürs nochmal anschauen und den Hinweis.


Ich danke Dir für die Ausführung.
Bisher habe ich das immer mit einem gespeicherten Suchausdruck von Hand erledigt – für jeden Schnitt jeweils extra.
In Zukunft kann ich Dein Skript verwenden. ;-)

Falls Du auch noch die Leerzeichen (und andere Weißräume) zwischen griechischen Zeichen mit dem ZF auszeichnen möchtest, hier ein entsprechender Ausdruck:

Code
(?<=[\\x{0374}-\\x{1FFE}])[[:punct:]]?\\s(?=[\\x{0374}-\\x{1FFE}]) 


Der müsste sich über ein Oder-Zeichen mit Deinem Pattern oben verknüpfen lassen.


als Antwort auf: [#507514]

unicode2charcterstyle (CS6, WIN 7)

cwenet
Beiträge gesamt: 1139

29. Jan 2013, 21:53
Beitrag # 9 von 14
Beitrag ID: #507517
Bewertung:
(3621 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin,

so läuft es primstens.

Gruß
Christoph


als Antwort auf: [#507515]

unicode2charcterstyle (CS6, WIN 7)

Martin Fischer
  
Beiträge gesamt: 12783

29. Jan 2013, 22:25
Beitrag # 10 von 14
Beitrag ID: #507518
Bewertung:
(3549 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

ich habe den Code für meine Zwecke noch etwas aufgeräumt und zusammengefasst.
Vielleicht findest Du auch Gefallen daran.

Code
// Greek_unicode2style.jsx 
//DESCRIPTION:Weist griechischen Zeichen (Unicode) Zeichenformate mit den Schriftschnitten 'Bold', 'Bold Italic', 'Italic', 'Regular' zu.

main()

function main()
{
//var _pattern = '[\\x{0374}-\\x{1FFE}]+[[:punct:]]*\\s*';
var _pattern = '[\\x{0374}-\\x{1FFE}]+\\s*';
var _styles = ['Bold', 'Bold Italic', 'Italic', 'Regular'];
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;

for (var i = 0; i < _styles.length; i++)
{
var cs_name = 'Greek_' + _styles[i].replace(/ /gi, '_');
var cs = (app.activeDocument.characterStyles.itemByName(cs_name).isValid)
? app.activeDocument.characterStyles.itemByName(cs_name)
: app.activeDocument.characterStyles.add({name: cs_name, fontStyle:_styles[i], appliedFont: 'Minion Pro'});

app.findGrepPreferences.findWhat = _pattern;
app.findGrepPreferences.fontStyle = _styles[i];
app.changeGrepPreferences.appliedCharacterStyle = cs;
app.activeDocument.changeGrep();
}
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
}



Und mit folgender Variante wird Hebräisch auch gleich verarbeitet.

Code
// Hebrew_unicode2style.jsx 
//DESCRIPTION:Weist hebräischen Zeichen (Unicode) Zeichenformate mit den Schriftschnitten 'Bold', 'Bold Italic', 'Italic', 'Regular' zu.

main()

function main()
{
// var _pattern = '[\\x{0590}-\\x{05FF}\\x{FB00}-\\x{FB4F}]+[[:punct:]]*\\s*';
var _pattern = '[\\x{0590}-\\x{05FF}\\x{FB00}-\\x{FB4F}]+\\s*';
var _styles = ['Bold', 'Bold Italic', 'Italic', 'Regular'];
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;

for (var i = 0; i < _styles.length; i++)
{
var cs_name = 'Hebrew_' + _styles[i].replace(/ /gi, '_');
var cs = (app.activeDocument.characterStyles.itemByName(cs_name).isValid)
? app.activeDocument.characterStyles.itemByName(cs_name)
: app.activeDocument.characterStyles.add({name: cs_name, fontStyle:_styles[i], appliedFont: 'FrankRuhlMFO'});

app.findGrepPreferences.findWhat = _pattern;
app.findGrepPreferences.fontStyle = _styles[i];
app.changeGrepPreferences.appliedCharacterStyle = cs;
app.activeDocument.changeGrep();
}
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
}



als Antwort auf: [#507517]
(Dieser Beitrag wurde von Martin Fischer am 29. Jan 2013, 22:28 geändert)

unicode2charcterstyle (CS6, WIN 7)

cwenet
Beiträge gesamt: 1139

30. Jan 2013, 07:01
Beitrag # 11 von 14
Beitrag ID: #507522
Bewertung:
(3413 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen lieben Dank,

das ist ja 1000mal besser. Hebräisch hatte ich auch bereits in Arbeit.
Aber so ist es natürlich viel pflegeleichter.

Schönen Tag
Christoph


als Antwort auf: [#507518]

unicode2charcterstyle (CS6, WIN 7)

Jabadabadu
Beiträge gesamt: 249

30. Jan 2013, 09:48
Beitrag # 12 von 14
Beitrag ID: #507535
Bewertung:
(3363 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin, hallo Christoph,

klasse, Eure Ideen und Lösungen erleichtern meine Arbeit.

Da ich aber relativ wenig Ahnung von Scripten habe: wie kann ich
Code
(?<=[\\x{0374}-\\x{1FFE}])[[:punct:]]?\\s(?=[\\x{0374}-\\x{1FFE}]) 

einbinden, um auch die Weißräume und Satz-/Sonderzeichen gleich in Greek_Regular etc. zu formatieren?

Mir scheint das Problem bei der griechischen Ellision, dem Apostroph, aufzutauchen, wenn ich im Text die einfachen An- und Abführungszeichen "‹" und "›" (nach französischem Muster) verwende. Diese bleiben mit dem Script unberücksichtigt und tauchen dann im Griechischen z.B. als "all‹" auf – das muss ich also jedes Mal prüfen.

Oder kann man (und wenn ja, wie) auch einzelne Zeichen noch in das Formatierungsscript einbinden?

Danke für's Nachdenken.


als Antwort auf: [#507522]

unicode2charcterstyle (CS6, WIN 7)

Martin Fischer
  
Beiträge gesamt: 12783

30. Jan 2013, 10:35
Beitrag # 13 von 14
Beitrag ID: #507536
Bewertung:
(3337 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörn,

Antwort auf: Mir scheint das Problem bei der griechischen Ellision, dem Apostroph, aufzutauchen, wenn ich im Text die einfachen An- und Abführungszeichen "‹" und "›" (nach französischem Muster) verwende. Diese bleiben mit dem Script unberücksichtigt und tauchen dann im Griechischen z.B. als "all‹" auf – das muss ich also jedes Mal prüfen.


Diese Korrektur würde ich vor der Zuweisung der Formate erledigen.
Dennoch würden auch nach der Korrektur die einfachen Anführungszeichen ‚‘ bzw. ‘’ eine Grenze für den GREP bedeuten.

Lösungsvorschlag:
Code
(?<=[\\x{0374}-\\x{1FFE}])[[:punct:]'"]?\\s['"]?(?=[\\x{0374}-\\x{1FFE}]) 


Du kannst diesen Ausdruck auch im GREP-Suchfeld testen, musst aber vorher die doppelten Backslashes durch einfache ersetzen.

Code
(?<=[\x{0374}-\x{1FFE}])[[:punct:]'"]?\s['"]?(?=[\x{0374}-\x{1FFE}]) 


In den roten Markierungen kannst Du weitere optionale Zeichen vor oder nach dem Leerzeichen einfügen.

Ich bin mir nicht sicher, ob InDesign mit dem Ausdruck ['"] alle Anführungszeichen zuverlässig findet. Du kannst ihn bei Problemen durch einen Ausdruck mit allen einzeln aufgeführten Anführungszeichen [‚‘’„“”›‹»«] ersetzen.


als Antwort auf: [#507535]

unicode2charcterstyle (CS6, WIN 7)

Peter Kahrel
Beiträge gesamt: 182

31. Jan 2013, 11:54
Beitrag # 14 von 14
Beitrag ID: #507639
Bewertung:
(3267 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
app.documents.firstItem().characterStyles.itemByName('[Ohne]'); 


Ah, Martin, that will work only in German versions of Indesign. Better use
Code
app.documents[0].characterStyles[0]; 


Peter


als Antwort auf: [#507515]
(Dieser Beitrag wurde von Peter Kahrel am 31. Jan 2013, 11:55 geändert)
X

Aktuell

InDesign / Illustrator
MTT_300x300_11_2022

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
17.04.2024

Online
Mittwoch, 17. Apr. 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!