Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Alle Glyphen eines Dokuments als Text

Martin Fischer
  
Beiträge gesamt: 12779

5. Jan 2019, 16:52
Bewertung:

gelesen: 2995

Beitrag als Lesezeichen
Hallo Thomas,

wenn Du "alle Glyphen" schreibst, dann meinst Du vermutlich auch alle "Glyphen", also alle Ausprägungen aller verwendeten Zeichen und nicht etwa allein die Zeichen.

Quick & dirty geht das etwa so:
Code
// GlyphenEinerAusgewaehltenSchriftImDokument.jsx 

var doc = app.documents.firstItem(),
arr = [],
i = 0,
tf = null;

if (app.selection.length == 0 || !app.selection[0].hasOwnProperty('baseline'))
{
alert('Bitte ein Zeichen in der gewünschten Schrift auswählen.');
exit();
}

app.findGlyphPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;

tf = doc.pages.firstItem().textFrames.add({geometricBounds: [0,-150,210,-1]});

app.findGlyphPreferences.appliedFont = app.selection[0].characters.firstItem().appliedFont;

for (i = 0; i <= 999999999999999; i++)
{
try
{
app.findGlyphPreferences.glyphID = i;
arr = doc.findGlyph();
if (arr.length > 0)
{
arr[0].duplicate(LocationOptions.AT_END, tf.parentStory);
tf.parentStory.insertionPoints.lastItem().contents = '';
}
}
catch(e)
{
app.findGlyphPreferences = NothingEnum.nothing;
app.select(tf,SelectionOptions.replaceWith);
app.activeWindow.zoomPercentage = app.activeWindow.zoomPercentage;
exit();
}
}


Weil die Glyphen schriftabhängig sind, ist im Skript vorgesehen, dass Du die zu untersuchende Schrift über eine Textauswahl angibst (die Schrift des ersten Zeichens der Textauswahl wird für die Glyphensuche verwendet).

Falls es nicht um Glyphen einer bestimmten Schrift, sondern allgemein um Zeichen gehen sollte, dann könnte dies helfen:

Code
// alleZeichenEinesDokuments.jsx 

var doc = app.documents.firstItem(),
chars = {},
arr = [],
x = 0,
tf = null;

app.findGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '\\S';

arr = doc.findGrep();
app.findGrepPreferences = NothingEnum.nothing;


for (x = 0; x < arr.length; x++)
{
if (chars[arr[x].contents] == undefined)
chars[arr[x].contents] = null;
}

arr = [];

for (x in chars)
arr.push(x);

arr.sort();

tf = doc.pages.firstItem().textFrames.add(
{
geometricBounds: [0,-150,210,-1],
contents: arr.join('\r'),
textFramePreferences:
{
textColumnCount: 6
}
});

app.select(tf,SelectionOptions.replaceWith);
app.activeWindow.zoomPercentage = app.activeWindow.zoomPercentage;



Teste bitte erst mal an einem weniger umfangreichen Testdokument.

(Dieser Beitrag wurde von Martin Fischer am 5. Jan 2019, 17:08 geändert)
Änderungsverlauf:
Beitrag geändert von Martin Fischer (Moderator) am 5. Jan 2019, 17:03
Beitrag geändert von Martin Fischer (Moderator) am 5. Jan 2019, 17:04
Beitrag geändert von Martin Fischer (Moderator) am 5. Jan 2019, 17:08