[GastForen Programme Print/Bildbearbeitung Adobe InDesign komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

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

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Bastian Nail
Beiträge gesamt: 11

26. Mär 2008, 21:17
Beitrag # 1 von 25
Bewertung:
(12908 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich möchte in Indesign CS2 (notfalls CS3) ein Script schreiben, das mir alle Glyphen eines Fonts in ein Textfeld schreibt (am besten in Javascript, die anderen beiden Sprachen gehen aber auch wenn jemand eine Lösung parat hat):

Theoretisch sollte das so ablaufen:

1. per Script einen Font auswählen
(nimm Font XY für das was folgt)

2. eine bestimmte Glyphe diesem Font (per Glyphen-ID, nicht per Unicode-Wert da nicht alle Glyphen einen solchen haben!) ansprechen/auswählen
(wähle die Glyphe mit der ID 123)

2a. das ganze mittels for/while-Schleife so lange machen bis alle Glyphen in einer Variable aneinandergereiht sind.

3. diese in ein Textfeld einfügen
(häng die gewählte Glyphe an den Text im markierten Textfeld an)

Schritt 1 kann auch entfallen, wenn standardmäßig der im Textfeld eingestellte Font verwendet wird. Es muss nicht vollautomatisch laufen, ich möchte mir nur die 1000x-Klicken-Arbeit für eine komplette Glyphenliste eines etwas umfangreicheren Fonts sparen ...


Ich bin jetzt seit 2-3 Stunden am recherchieren, und habe nicht mal im Ansatz eine Lösung gefunden...
Da ich bezüglich Scripting in Indesign völliger Anfänger bin weiß ich nicht mal wo beginnen. Generell kann ich programmieren, nur finde ich mich im Objektbaum von Indesign nicht zurecht. Die Scripting Reference, Guides, Tutorials von Adobe habe ich hier, aber ... :?:

Für jedweden Hinweis bin ich dankbar...
X

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Martin Fischer
  
Beiträge gesamt: 12783

26. Mär 2008, 22:10
Beitrag # 2 von 25
Beitrag ID: #343202
Bewertung:
(12893 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Bastian,

vor etwa einer Woche hatte ich einen ähnlichen Plan: Fetching all available characters of a font

Um festzustellen, ob eine bestimmte Glyphe in einem Font enthalten ist, kannst Du das Zeichen per Skript erzeugen, es in einen Pfad umwandeln und prüfen, ob es noch vorhanden ist. Wenn ja, dann ist es ein in diesem Font darstellbares Zeichen; wenn nein, dann nicht.

Schau Dir mal das Skript InDiCode.jsx an.
Vielleicht ist Dir dann die Entwicklung eines eigenen Skripts nicht mehr so dringend.

Wie Peter Kahrel im o.g. Thread angegeben hat, kannst Du in einer Schleife im Hexadezimalformat durch die Zeichen wandern:
Code
for (i = 0x0100; i < 0x017F; i++) $.writeln (String.fromCharCode(i)); 


Antwort auf: Da ich bezüglich Scripting in Indesign völliger Anfänger bin weiß ich nicht mal wo beginnen.


Da hast Du Dir für den Anfang einen schweren Brocken zur Aufgabe gemacht.
Auf Deine Fortschritte bin ich neugierig.
Vielleicht weckst Du dabei nochmal mein Interesse, in dieses Thema selbst aktiv einzusteigen.


als Antwort auf: [#343195]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Gerald Singelmann
  
Beiträge gesamt: 6269

26. Mär 2008, 22:12
Beitrag # 3 von 25
Beitrag ID: #343203
Bewertung:
(12892 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich kann mich irren, aber so weit ich weiß hat ein Script keine Kenntnis davon, welche Glyphen in einem Font umgesetzt wurden.
Der einzige Ansatz der bleibt: alle (!) Unicodes einfügen, zu versuchen, das Zeichen in Pfade umzuwandeln, wenns keinen Fehler gibt, ist die Glyphe vorhanden.


als Antwort auf: [#343195]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Martin Fischer
  
Beiträge gesamt: 12783

26. Mär 2008, 22:29
Beitrag # 4 von 25
Beitrag ID: #343207
Bewertung:
(12885 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: alle (!) Unicodes einfügen


Wir sprechen hier immerhin von einer Größenordnung von 99.089 Zeichen in Unicode 5.0 (http://de.wikipedia.org/wiki/Unicode).

Bei einer Zahl von 3.000 bis 3.500 Zeichen pro Seite könnte man damit gut 30 Seiten vollschreiben. Dann jedes Zeichen einzeln in Pfad umwandeln und ggf. löschen. Das was übrig bleibt, ist im Font als Zeichen enthalten.


als Antwort auf: [#343203]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Bastian Nail
Beiträge gesamt: 11

26. Mär 2008, 23:20
Beitrag # 5 von 25
Beitrag ID: #343218
Bewertung:
(12861 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die bisherigen Rückmeldungen. Ich werde sie morgen im Detail durchsehen und schauen ob ich so weiterkomme.

Bezüglich Unicodes und GID (Glyphen-ID) eines Zeichens: ich entwerfe selbst Opentype-Fonts, kenne mich also mit diesem Aspekt relativ gut aus.

Das ganze ist so: In Opentype-Fonts können Glyphen (Bildchen) mit oder ohne Unicode-Wert (also eine Kodierung die dieses Bildchen einem logischen Zeichen zuweist) abgelegt werden. Je nachdem ob sie einen haben oder nicht, lassen sich die Glyphen über ihren Unicode ansprechen (mit allen "normalen" Programmen möglich), oder aber nur mittels Opentype-Ersetzungsfeature darauf zugreifen (z.B. haben Kapitälchen-Buchstaben keinen Unicode-Wert, da es sich nur um eine Formvariation der Versalien handelt, nicht aber um Zeichen mit eigenständiger Bedeutung).
Indesign kann auch Glyphen, die keinen Unicode-Wert zugewiesen haben, wie normale Zeichen einfügen und verwenden, kopiert man diese Zeichen aber in eine andere Anwendung, so haben sie dort keine Codierung, keine Bedeutung, --> keine Existenz. Indesign verwaltet da also nur "Bildchen" die wie Buchstaben aussehen.
Trotzdem müssen die Glyphen in einem Font irgendwie "sortiert" sein. Das funktioniert über die Font-interne "Glyphen-ID", kurz GID. Das ist einfach eine Durchnummerierung aller enthaltenen Bildchen (0 bis ...), und anhand dieser orientiert sich auch Indesign bei Bildchen ohne Unicode-Wert. Die Reihenfolge der Glpyhen und somit deren ID kann ich in Fontlab frei festlegen, das Problem ist: ich kann diese Bildchen ohne Unicode-Wert nicht so mir nichts dir nichts nach Indesign kopieren... Programme kommunizieren nach außen immer über die Zeichencodierung, ein Austausch zwischen den Programmen ist nur über diese möglich. Keine Codes für die Bildchen --> keine Identifikationsmöglichkeit für das Zielprogramm.
In Fontlab kann ich mir eine Liste aller Zeichen anzeigen lassen und diese kopieren, nur kriege ich die uncodierten Zeichen nicht nach Indesign rüber. Das ganze muss also innerhalb von Indesign vonstatten gehen, alles andere hilft mir nicht...

Nun möchte ich aber in Indesign mir alle Bildchen meines Fonts anzeigen lassen, ob codiert oder uncodiert. Ich kann das manuell machen: ca. 1200x klicken, und wenn ich keine Fehler mache habe ich am Ende alle meine Bildchen in Indesign eingefügt ;-)
Das Problem: das gibt Krämpfe, ist fehleranfällig und langweilig ...
Mehrere Glyphen kann ich in der Palette nicht gleichzeitig einfügen, somit bleibt nur der Weg über ein Script.

Es gibt laut Script-Referenz eine Eigenschaft "glyphID", d.h. igendwie sind die Glyphen über diese ID offenbar ansprechbar. Die ID ist auch in der Glyphenpalette für jedes Zeichen zu sehen wenn man wartet bis der Mouseover erscheint: hier ist die GID, ein eventueller Unicode-Wert, bzw. bei uncodierten Glyphen der Unicode-Wert von deren "Mutter-Zeichen", sowie ein eventuelles Opentype-feature, das vom Mutterzeichen zu diesem Zeichen führt, angegeben.

Das einzige was ich schaffen müsste ist also:

"mach das alles mit dem Font namens HansWurst"
var allezeichen=glyphID(0)+glyphID(1)+glyphID(2)+...
textrahmen.inhalt=allezeichen

einzig es fehlt mir der korrekte syntax, und ich finds nicht raus ...


als Antwort auf: [#343203]
(Dieser Beitrag wurde von Bastian Nail am 26. Mär 2008, 23:33 geändert)

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Gerald Singelmann
  
Beiträge gesamt: 6269

26. Mär 2008, 23:39
Beitrag # 6 von 25
Beitrag ID: #343221
Bewertung:
(12851 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Es gibt laut Script-Referenz eine Eigenschaft "glyphID",


Da haben Sie aber nicht vollständig zitiert. Die glyphID gibt es nur als Eigenschaft von FindGlyphPreferences und ChangeGlyphPreference.
Was Sie bräuchten wäre eine Collection als Untermenge von "Font", und die bietet die Script-Schnittstelle nicht an.

Bleiben zwei Möglichkeiten: Sie schauen, ob Sie per Glyph-Suche/Ersetzung ans Ziel kommen (wobei mir zu dieser Stunde unklar ist, ob und wie das gehen soll, da ich FindGlyh noch nicht gescriptet habe)
Oder -- wenn Sie sich mit der Erzeugung von OpenType auskennen -- Sie lesen den Font außerhalb InDesigns aus und geben entsprechende Zeichen ein. Auch hier bleibt mir unklar, ob das zum Erfolg führen kann.
Ich kenne nur eine Möglichkeit, einen Unicode in eine story einzufügen, aber nicht direkt eine Glyphe über die GlyphID.


als Antwort auf: [#343218]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Martin Fischer
  
Beiträge gesamt: 12783

26. Mär 2008, 23:45
Beitrag # 7 von 25
Beitrag ID: #343222
Bewertung:
(12851 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Es gibt laut Script-Referenz eine Eigenschaft "glyphID"


Hast Du auch herausgefunden, welches Objekt diese Eigenschaft besitzt?
Der character ist es nicht.
glyphID kenne ich nur als Eigenschaft der FindGlyphPreference.
Und damit läßt sich im Hinblick auf das Einfügen von Zeichen wenig anfangen.

Hast Du einen Weg gefunden, per Skript auf die Gyphenpalette zuzugreifen?
Etwa über die panels?


als Antwort auf: [#343218]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Martin Fischer
  
Beiträge gesamt: 12783

26. Mär 2008, 23:53
Beitrag # 8 von 25
Beitrag ID: #343223
Bewertung:
(12850 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Im Scripting Guide konnte ich noch folgende Info finden:

Inserting Special Characters
=====================
Because the ExtendScript Toolkit supports Unicode, you can simply enter Unicode characters in text strings you send to InDesign. Alternately, you can use the JavaScript method of explicitly entering Unicode characters by their glyph ID number: \unnnn (where nnnn is the Unicode code for the character). The following script shows several ways to enter special characters. (We omitted the myGetBounds function from this listing; you can find it in the examples in “Creating a Text Frame” on page 39” or the SpecialCharacters tutorial script.)

Code
//Shows how to enter special characters in text. 
var myDocument = app.documents.add();
//Create a text frame on page 1.
var myTextFrame = myDocument.pages.item(0).textFrames.add();
//Set the bounds of the text frame.
myTextFrame.geometricBounds = myGetBounds(myDocument, myDocument.pages.item(0));
//Entering special characters directly.
myTextFrame.contents = "Registered trademark: ®\rCopyright: ©\rTrademark: ™\r";
//Entering special characters by their Unicode glyph ID value:
myTextFrame.parentStory.insertionPoints.item(-1).contents = "Not equal to: \u2260\rSquare root: \u221A\rParagraph: \u00B6\r";
//Entering InDesign special characters by their enumerations:
myTextFrame.parentStory.insertionPoints.item(-1).contents = "Automatic page number marker:";
myTextFrame.parentStory.insertionPoints.item(-1).contents = SpecialCharacters.autoPageNumber;
myTextFrame.parentStory.insertionPoints.item(-1).contents = "\r";
myTextFrame.parentStory.insertionPoints.item(-1).contents = "Section symbol:";
myTextFrame.parentStory.insertionPoints.item(-1).contents = SpecialCharacters.sectionSymbol;
myTextFrame.parentStory.insertionPoints.item(-1).contents = "\r";
myTextFrame.parentStory.insertionPoints.item(-1).contents = "En dash:";
myTextFrame.parentStory.insertionPoints.item(-1).contents = SpecialCharacters.enDash;
myTextFrame.parentStory.insertionPoints.item(-1).contents = "\r";



als Antwort auf: [#343222]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Gerald Singelmann
  
Beiträge gesamt: 6269

27. Mär 2008, 00:11
Beitrag # 9 von 25
Beitrag ID: #343226
Bewertung:
(12838 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Da scheint der Autor aber eine große Verwirrung von GlyphID und Unicode zu haben und benutzt beide, als bedeuteten sie das gleiche.

\unnnn gibt auch nur den Unicode ein.


als Antwort auf: [#343223]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

olaflist
Beiträge gesamt: 1400

27. Mär 2008, 00:40
Beitrag # 10 von 25
Beitrag ID: #343233
Bewertung:
(12813 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry fuer die evtl. bloed klingenden Fragen, aber...:

- Warum das Ganze?
- Warum unbedingt in Indesign?

Olaf Druemmer


als Antwort auf: [#343195]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Gerald Singelmann
  
Beiträge gesamt: 6269

27. Mär 2008, 07:29
Beitrag # 11 von 25
Beitrag ID: #343239
Bewertung:
(12754 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
>Warum das Ganze?

Was der OP erreichen will, weiß ich nicht.
Mein ursprünglicher Hintergrund der Diskussion ist ein Preflight-Gedanke: prüfen, ob irgendwo Das Blöde Rosa auftaucht, weil eine Glyphe durch Schriftwechsel nicht mehr angezeigt werden kann.


als Antwort auf: [#343233]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Bastian Nail
Beiträge gesamt: 11

27. Mär 2008, 08:48
Beitrag # 12 von 25
Beitrag ID: #343248
Bewertung:
(12729 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Einen Weg auf die Glyphenpalette zuzugreifen habe ich leider nicht, das wäre ja sehr elegant: geh in die palette, wähle Glyphe 1, füg sie ein, wähle Glyphe 2, füg sie ein, ...

stimmt, ich habe die "glyphID" im "CS3 ScriptingGuide JS" gefunden.
Dort heißt es:

Code
//Clear glyph search preferences.  
app.findGlyphPreferences = NothingEnum.nothing;
app.changeGlyphPreferences = NothingEnum.nothing;
var myDocument = app.documents.item(0);
//You must provide a font that is used in the document for the
//appliedFont property of the findGlyphPreferences object.
app.findGlyphPreferences.appliedFont = app.fonts.item("Times New Roman Regular");
//Provide the glyph ID, not the glyph Unicode value.
app.findGlyphPreferences.glyphID = 374;
//The appliedFont of the changeGlyphPreferences object can be
//any font available to the application.
app.changeGlyphPreferences.appliedFont = app.fonts.item("ITC Zapf Dingbats Medium");
app.changeGlyphPreferences.glyphID = 85;
myDocument.changeGlyph();
//Clear glyph search preferences.
app.findGlyphPreferences = NothingEnum.nothing;
app.changeGlyphPreferences = NothingEnum.nothing;


Ich könnte mir folgendes vorstellen (probier das nacher mal, ist aber Stochern im Dunkeln für mich):
Ich erstelle ein Textfeld mit 1205 Leerzeichen darin (so viele Glyphen hat mein Font momentan), und schaue dann dass ich mittels "find next" und aufsteigender GlyphID bei "changeGlyphPreferences.glyphID" mit einer Schleife diese Leerzeichen der Reihe nach durch die Zeichen aus meinem Font ersetzen kann.

Und wie gesagt, das Ansprechen über den Unicode hilft mir leider nicht, da ich Glyphen im Font habe, die keine Unicode-Entsprechung haben (z.B. spanische nautische Symbole aus dem 16. Jahrhundert). Ich könnte diesen Zeichen einen Code aus der Private Use Area des Unicodes zuweisen, da dort aber Wildwuchs herrscht, nicht mal Konventionen, ergibt das völliges Chaos wenn man die Schrift wechselt und die Schriftgestalter nicht exakt die selbe Belegung verwendet haben. Es sollte also schon die GID sein...
Deshalb kann ich das alles auch nicht außerhalb von Indesign (in Fontlab) generieren lassen und dann nach Indesign kopieren: Die Zeichen ohne Unicode-Wert lassen sich nicht transportieren, die GID ist etwas Font-spezfisches (Durchnummerierung aller enthaltenen Zeichen), nichts informationsspezifisches (Codierung dieser Zeichen damit sie eindeutige Bedeutung erhalten).


Und warum das ganze?

Ich entwickle wie gesagt Fonts, und erstelle dazu Checklisten, Testdokumente und Präsentationsblätter/Bücher in Indesign. Es geht darum, die Schrift in einer Anwendungsumgebung zu testen.

Da die Schrift sich im Aufbau befindet, ist der Zeichensatz noch nicht vollständig. Ergänze ich im Font 30 neue Zeichen, muss ich diese in Indesign in meinem Testdokument ebenfalls manuell nachtragen, meistens sogar mehrfach da ich die Zeichen in unterschiedlichen Situationen durchteste (alle auf einer Seite, 1 Zeichen pro Seite, ...). Die Synchronisation ist je nach Erweiterung im Font nicht trivial, die Übersichtlichkeit geht sehr schnell verloren, und wenn man nicht ganz konsequent bei jeder Ergänzung oder Löschung gleich in Indesign mitkorrigiert hat man sehr schnell ein veraltetes Testdokument.

Deshalb hätte ich eben gerne ein Script, das mir zumindest halb-automatisch schnell alle Glyphen aus dem Font in Indesign einfügt - komplett und in der selben Reihenfolge wie sie im Font hinterlegt sind.


Auch wenn ich noch keine Lösung habe: ich bin schon dankbar für die Hinweise die ich hier erhalte, ich kann die Sache so zumindest gedanklich weiterentwickeln.


als Antwort auf: [#343239]
(Dieser Beitrag wurde von Bastian Nail am 27. Mär 2008, 08:50 geändert)

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Martin Fischer
  
Beiträge gesamt: 12783

27. Mär 2008, 09:02
Beitrag # 13 von 25
Beitrag ID: #343254
Bewertung:
(12722 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Bastian,

Dein Projekt finde ich spannend.
Danke für die Hintergrundinformationen.

An den von Dir vorgestellten Lösungsweg habe ich auch schon gedacht, aber mir bislang noch keinen konkreten Workflow vorstellen können, da der changeGlyph()-Befehl alle Zeichen innerhalb eines definierten Objekts betrifft.

Als ich diesen Ansatz bei Dir nochmal gelesen habe, kam mir in den Sinn, daß man eben den Bereich, innerhalb dessen der changeGlyph()-Befehl ausgeführt werden soll, entsprechend einschränken muß. Man kann den Ändern-Vorgang in der Schleife ja jeweils auf ein Zeichen beschränken ( myStory.characters[i].changeGlyph() ).


als Antwort auf: [#343248]

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Martin Fischer
  
Beiträge gesamt: 12783

27. Mär 2008, 09:23
Beitrag # 14 von 25
Beitrag ID: #343258
Bewertung:
(12707 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Bastin,

auf den ersten Blick scheint dieser Weg zu funktionieren.

Hier das Gerüst für meinen Versuch:
Code
app.findGlyphPreferences = NothingEnum.nothing; 
app.changeGlyphPreferences = NothingEnum.nothing;
var myFont = 'Times New Roman\tRegular';
app.findGlyphPreferences.appliedFont = app.changeGlyphPreferences.appliedFont = myFont;
var t = app.activeDocument.textFrames.add({geometricBounds:[0,0,210,148] });
var s = t.parentStory;
var c = fillStory( s, 150)
var startGlyphID = 3;
app.findGlyphPreferences.glyphID = startGlyphID;

for ( i = 0; i < c.length; i++ )
{
app.changeGlyphPreferences.glyphID = i + startGlyphID;
c[i].changeGlyph();
}

function fillStory( aStory, aCounter )
{
aStory.contents = '';
for ( i = 0; i < aCounter; i++ )
aStory.insertionPoints[-1].contents = ' ';
aStory.texts[0].appliedFont = myFont;
return aStory.characters;
}


Das Skript erzeugt einen neuen Textrahmen, der zunächst mit einer bestimmten Anzahl von Leerzeichen gefüllt wird:
var c = fillStory( s, 100 ); // die Zahl der Zeichen ist hier 100

Die GlyphID des Leerzeichens ist 3.
Sie dient als gesuchte GlyphID und als Start für den zu erzeugenden Glyphensatz.
Der Rest ist leicht zu erkennen.

Es sieht fast so aus, als ob es so funktionieren könnte. ;-)


als Antwort auf: [#343254]
(Dieser Beitrag wurde von Martin Fischer am 27. Mär 2008, 12:20 geändert)

komplette Glyphenliste eines Fonts per Script in Textfeld schreiben lassen

Bastian Nail
Beiträge gesamt: 11

27. Mär 2008, 12:36
Beitrag # 15 von 25
Beitrag ID: #343306
Bewertung:
(12670 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
app.findGlyphPreferences = NothingEnum.nothing;  
app.changeGlyphPreferences = NothingEnum.nothing;
app.findGlyphPreferences.appliedFont = app.fonts.item("Garamond Premier Pro Italic");
app.changeGlyphPreferences.appliedFont = app.fonts.item("Garamond Premier Pro Italic");

var t = app.activeDocument.textFrames.add({geometricBounds:[0,0,210, 148] });

var glyphenzahl = 2555;
var s = t.parentStory;
var c = fillStory( s, glyphenzahl );
var startGlyphID = 1;
app.findGlyphPreferences.glyphID = startGlyphID;

for ( i = 1; i <= glyphenzahl; i++ )
{
app.changeGlyphPreferences.glyphID = i;

c[i].changeGlyph();
}



function fillStory( aStory, aCounter )
{
aStory.contents = '';
for ( i = 0; i < aCounter; i++ )
aStory.insertionPoints[-1].contents = ' ';
return aStory.characters;
}



Das ist es ;-) Es funktioniert mit der Garamond Premier Pro Italic, einer der umfangreichsten (2555 Glyphen) und kompliziertesten Opentype-Schriften die derzeit verfügbar sind (naturlich gibt es noch größere Monster, aber zum Testen ist sie ein wichtiger Indikator ob es funktioniert).
Es werden mir (in CS3!) alle Glyphen, ob codiert, uncodiert oder kombiniert (Ligaturen die aus mehreren anderen Codepoints bestehen) ausgegeben.


Anpassungen:

- Font-Familienname und Stilname können angegeben werden. Familienname und Stil müssen durch einen Tabulator (!!) voneinander getrennt werden. Das war einiges an Rätselraten ;-)
Achtung: im leeren Dokument muss zuvor ebenfalls die richtige Schrift als "Default" (also fürs ganze Dokument) ausgewählt werden. Das ließe sich sicher noch optimieren.

- var glyphenzahl: gibt die Glyphenzahl des Fonts an. Bei verwendung von c.length bin ich bei meinen Tests manchmal in Endlosschleifen geraten, kann aber auch an meinen stümperhaften Versuchen gelegen haben ...

- var startGyphID: je nach Font beginnt das bei 0 oder 1 für das Leerzeichen. Egal welche ID hier angegeben wird: in der Function "fillStory()" muss das entsprechende Zeichen eingegeben werden, sonst chaos ;-). Ließe sich sicher auch noch optimieren.


Nun geht's ans Testen mit meinem eigenen Font ...

Vielen Dank!


als Antwort auf: [#343258]
(Dieser Beitrag wurde von Martin Fischer am 27. Mär 2008, 12:57 geändert)
X