[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Schriftenkatalog

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

Schriftenkatalog

mb_new
Beiträge gesamt: 95

19. Aug 2014, 13:13
Beitrag # 1 von 2
Bewertung:
(1870 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen!

ich habe ein Skript am Laufen, das einen Schriftenkatalog erstellt.
Das Skript ist von http://www.typomedia.org/adobe/indesign/fontcatalog/

Das funktioniert eigentlich sehr gut, doch ich möchte folgendes ändern:
Ich möchte eigentlich nur für neue Schriften Katalogseiten erstellen (meine Systemschriften etc. habe ich schon)

Meine Herangehensweise wäre: ich erstelle im Indesign Font Ordner einen Unterordner "NEU" und das Skript soll nur auf Schriften in diesem Ordner zugreifen.
Mit meinen bescheidenen Skriptkenntnissen schaff ich das nicht.

Hat jemand eine Idee?
danke
Martin
Code
/* 
Adobe InDesign Script - FontCatalog.jsx
Erstellt einen Schriftartenkatalog
Designstudio, Philipp Speck - www.destio.de
Copyright (c) 2012 Designstudio, Philipp Speck
*/

var doc=app.documents.add();
var appFonts=app.fonts;

if (File.fs == "Windows") {
var sysRoot=Folder.system.parent.fsName;
var sysFontDir=sysRoot+"\\Fonts\\";
var appFontDir=Folder.startup.fsName+"\\Fonts\\";
} else {
var sysRoot=Folder.system.fsName;
var libFontDir="/Library/Fonts/";
var sysFontDir=sysRoot+"/Library/Fonts/";
var appFontDir=Folder.startup.fsName+"/Fonts/";
}

var sampleTitle="Typography";

var sampleText="Letterforms have tone, timbre, character, just as words and sentences do. The moment a text and a typeface are chosen, two streams of thought, two rhythmical systems, two sets of habits, or if you like, two personalities intersect. They must not live together contentedly forever, but they must not as rule collide.";

var sampleLetters="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&0123456789$€!?@#%§.;:,{}";

fontCatalog();

function fontCatalog() {
setupDocument();
setupMasterSpread();
skipCount=-1;
docCount=0;
insertTextFrame();
getFontList();
}

function setupDocument() {
// Einheiten auf Millimeter setzen
with (doc.viewPreferences) {
horizontalMeasurementUnits=MeasurementUnits.MILLIMETERS;
verticalMeasurementUnits=MeasurementUnits.MILLIMETERS;
rulerOrigin=RulerOrigin.PAGE_ORIGIN;
}

// A4 Dokument ertsellen
with (doc.documentPreferences) {
pageWidth="210mm";
pageHeight="297mm";
}

// Farben hinzufügen
doc.colors.add( {
name: "Dunkelrot",
model: ColorModel.PROCESS,
colorValue: [0, 100, 60, 40]
} );

// Zeichenformate setzen
doc.characterStyles.add({name:"Fußzeile"});
with (doc.characterStyles.item("Fußzeile")) {
pointSize=10;
fillColor = "Black";
}

doc.characterStyles.add({name:"Pagina"});
with (doc.characterStyles.item("Pagina")) {
pointSize=10;
fillColor = "Black";
}

// Absatzformate setzen
doc.paragraphStyles.add({name:"Schriftname"});
with (doc.paragraphStyles.item("Schriftname")) {
pointSize=12;
justification=Justification.leftAlign;
fillColor = "Black";
spaceAfter = "3mm";
ruleBelow=true;
ruleBelowOffset="2mm";
ruleBelowColor="Dunkelrot";
}

doc.paragraphStyles.add({name:"Schriftinfo"});
with (doc.paragraphStyles.item("Schriftinfo")) {
pointSize=8;
justification=Justification.leftAlign;
}

doc.paragraphStyles.add({name:"Typografie"});
with (doc.paragraphStyles.item("Typografie")) {
pointSize=24;
fillColor = "Black";
spaceAfter = "2mm";
hyphenation = false;
leading=24;
}

doc.paragraphStyles.add({name:"Schriftmuster"});
with (doc.paragraphStyles.item("Schriftmuster")) {
pointSize=10;
fillColor = "Black";
justification=Justification.LEFT_JUSTIFIED;
spaceAfter = "2mm";
hyphenation = false;
}

doc.paragraphStyles.add({name:"Zeichensatz"});
with (doc.paragraphStyles.item("Zeichensatz")) {
pointSize=14;
justification=Justification.leftAlign;
fillColor = "Black";
}
}

function setupMasterSpread() {
with(doc.masterSpreads.item(0)) {
with (pages.item(0).marginPreferences) {
top=15;
right=15;
bottom=20;
left=20;
}
with (textFrames.add()) {
geometricBounds = [285, 20, 280, 140];
textFramePreferences.verticalJustification=VerticalJustification.BOTTOM_ALIGN;
insertionPoints.item(0).contents = "Designstudio Typeface Library | www.destio.de/typo";
parentStory.appliedCharacterStyle="Fußzeile";
}
with (textFrames.add()) {
geometricBounds = [285, 180, 280, 195];
textFramePreferences.verticalJustification=VerticalJustification.BOTTOM_ALIGN;
insertionPoints.item(0).contents = SpecialCharacters.autoPageNumber;
insertionPoints.item(0).contents = SpecialCharacters.THIN_SPACE;
insertionPoints.item(0).contents = String.fromCharCode(0x25A0);
paragraphs.item(0).justification = Justification.rightAlign;
parentStory.appliedCharacterStyle="Pagina";
}
}
}

function getFontList() {
for ( i = 0 ; i < appFonts.length; i++) {
appFont=appFonts[i];
fontName=appFont.name;
fontLocation=appFont.location;
fontVersion=appFont.version;
fontType=appFont.fontType;
if (File.fs == "Windows") {
fontVersion=appFont.version.substr(0, fontVersion.indexOf(';'));
fontFilename=fontLocation.substr(fontLocation.lastIndexOf('\\')+1, fontLocation.length);
fontFilepath=fontLocation.replace(fontFilename, '');
(fontFilepath === sysFontDir) ? delete appFont : insertFontList();
} else {
fontVersion=appFont.version.substr(0, fontVersion.indexOf(';'));
fontFilename=fontLocation.substr(fontLocation.lastIndexOf('/')+1, fontLocation.length);
fontFilepath=fontLocation.replace(fontFilename, '');
(fontFilepath === sysFontDir || fontFilepath === libFontDir ) ? delete appFont : insertFontList();
}
}

function insertFontList() {
skipCount++;
with (doc.pages[docCount].textFrames.item(0).parentStory) {
insertionPoints.item(-1).contents=fontName.replace(/\t/, ' ')+"\r";
paragraphs.item(skipCount).appliedParagraphStyle="Schriftname";
}
skipCount++;
with (doc.pages[docCount].textFrames.item(0).parentStory) {
insertionPoints.item(-1).contents=fontVersion+", "+getFontType(appFont)+", "+fontFilename+"\r";
paragraphs.item(skipCount).appliedParagraphStyle="Schriftinfo";
}
skipCount++;
with (doc.pages[docCount].textFrames.item(0).parentStory) {
insertionPoints.item(-1).contents=sampleTitle+"\r";
paragraphs.item(skipCount).appliedParagraphStyle="Typografie";
paragraphs.item(skipCount).appliedFont=fontName;
}
skipCount++;
with (doc.pages[docCount].textFrames.item(0).parentStory) {
insertionPoints.item(-1).contents=sampleText+"\r";
paragraphs.item(skipCount).appliedParagraphStyle="Schriftmuster";
paragraphs.item(skipCount).appliedFont=fontName;
}
skipCount++;
with (doc.pages[docCount].textFrames.item(0).parentStory) {
insertionPoints.item(-1).contents=sampleLetters+"\r";
paragraphs.item(skipCount).appliedParagraphStyle="Zeichensatz";
paragraphs.item(skipCount).appliedFont=fontName;
}
skipCount++;
with (doc.pages[docCount].textFrames.item(0).parentStory) {
insertionPoints.item(-1).contents=" \r";
paragraphs.item(skipCount).pointSize=10;
}
if(doc.pages[docCount].textFrames.item(0).overflows) {
with (doc.pages[docCount].textFrames.item(0).parentStory.paragraphs) {
item(skipCount-1).remove();
item(skipCount-2).remove();
item(skipCount-3).remove();
item(skipCount-4).remove();
item(skipCount-5).remove();
item(skipCount-6).remove();
}
doc.pages.add();
docCount++;
insertTextFrame();
skipCount=-1;
}
}
}

function insertTextFrame() {
with (doc.pages[docCount].textFrames.add()) {
geometricBounds=[15, 20, 277, 195];
}
}

function getFontType(appFont) {
switch(appFont.fontType) {
case FontTypes.TYPE_1:
return "PostScript Type 1";
case FontTypes.CID:
return "PostScript CID";
case FontTypes.OCF:
return "PostScript OCF";
case FontTypes.OPENTYPE_CFF:
return "OpenType CFF";
case FontTypes.OPENTYPE_CID:
return "OpenType CID";
case FontTypes.OPENTYPE_TT:
return "OpenType TT";
case FontTypes.TRUETYPE:
return "TrueType";
case FontTypes.BITMAP:
return "Bitmap";
case FontTypes.ATC:
return "Bitmap ATC";
case FontTypes.UNKNOWN:
return "Unknown Type";
default:
return "Unknown Type";
}
}

X

Schriftenkatalog

mx
Beiträge gesamt: 161

19. Aug 2014, 18:09
Beitrag # 2 von 2
Beitrag ID: #531222
Bewertung:
(1820 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

eine Idee wäre eine Liste der bereits irgendwann mal ausgegebenen Fonts zu speichern und nur die neuen (hier: neuer Dateiname oder an einem neuen Ort) auszugeben.

Dazu müsste z.B. folgende Funktion noch zu dem bestehenden Programm dazu:

Code
function fontCache() { 
var FontCacheFilePath = "c:\\temp\\";
try{
FontCacheFilePath = File(app.activeScript).path;
}
catch(e){
FontCacheFilePath = File(e.fileName).path;
}
var FontCache = [];
var FontCacheNew = [];
var newFonts = [];
if (FontCacheFilePath != "") {
FontCacheFilePath = FontCacheFilePath + "/FontCache.txt";
FontCacheFile = new File(FontCacheFilePath);
var FontCacheFileValid;
if (FontCacheFile.exists) {
FontCacheFileValid = FontCacheFile.open("r", undefined, undefined);
while (FontCacheFileValid && !FontCacheFile.eof) {
FontCache[FontCacheFile.readln()] = true;
}
FontCacheFile.close();
} else {
FontCacheFileValid = FontCacheFile.open("w", undefined, undefined);
FontCacheFile.close();
}
}

if (FontCacheFileValid != true)
return;

for (var i = 0; appFonts.length > i; i++) {
if(FontCache[appFonts[i].location] == undefined){
FontCacheFileValid = FontCacheFile.open("a", undefined, undefined);
FontCacheFile.writeln(appFonts[i].location);
FontCacheFile.close();
newFonts.push(appFonts[i]);
}
}
appFonts = newFonts;
}


Damit entsteht im Scriptverzeichnis eine Textdatei FontCache.txt mit den Pfaden zu den vorhandenen Schriften.
Nur für Schriften die nicht bereits darin aufgelistet sind wird dann der Rest des Programms ausgeführt.

Für den Aufruf muss das noch in die erste Funktion des ursprünglichen Programms mit dazu, bevor es zu der Ausgabe kommt:
Code
function fontCatalog() {  
setupDocument();
setupMasterSpread();
skipCount=-1;
docCount=0;
insertTextFrame();


fontCache();


getFontList();
}


Viele Grüße
Jo


als Antwort auf: [#531194]

Aktuell

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
25.01.2021 - 26.01.2021

Digicomp Academy AG, Bern oder Zürich
Montag, 25. Jan. 2021, 08.30 Uhr - Dienstag, 26. Jan. 2021, 17.00 Uhr

Kurs

In diesem Basic-Kurs lernen Sie das Wichtigste über den Aufbau und die Funktionsweise von Photoshop. Zusammen mit den notwendigen Grundlagen von Farbenlehre bis Bildauflösung lernen Sie zudem die kreativen Möglichkeiten von Photoshop kennen.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/PHOTM1

Veranstaltungen
25.01.2021 - 26.01.2021

Digicomp Academy AG, Zürich oder virtuell
Montag, 25. Jan. 2021, 08.30 Uhr - Dienstag, 26. Jan. 2021, 17.00 Uhr

Kurs

Im Kurs lernen Sie die Schritte vom Import des Rohmaterials bis zum fertig exportierten Clip kennen. Dazu zählen die Materialverwaltung, das Trimmen für Roh- und Feinschnitt, Blenden, Titel und Effekte und eine Übersicht über die wichtigsten Formate.

Preis: CHF 1'700.-
Dauer: 2 Tage

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/AP6

Neuste Foreneinträge


PSD CS6 (!) Mac: Dialog "Dateiinformationen" Fenster leer und Sackgasse

Inhalt Textrahmen verbinden

iPhone Farbprofil

Exel ohne leeres Tabellenblatt starten

Text- oder Grafikrahmen nach Position und Größe suchen und ändern

Illustrator Skript Übersatztext - Hilfe benötigt

[GREP] beliebige Zeichen finden und durch selbe Anzahl an Leerzeichen oder Anzahl Zeichen "x" ersetzen

InDesign 2021 – Suchen/Ersetzen: Farbe

Langsamer MacMini

Netzwerklaufwerke verbinden -> Bei nicht verfügbar Fehlermeldung unterdrücken
medienjobs