hilfdirselbst.ch
Facebook Twitter gamper-media
peterhenrich S
Beiträge: 123
12. Dez 2013, 11:55
Beitrag #1 von 6
Bewertung:
(1821 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Fehlermeldung: "Die gewünschte Schriftfamilie ist nicht verfügbar."


Hallo zusammen,

in einem Script von mir bekomme ich immer die Fehlermeldung: "Die gewünschte Schriftfamilie ist nicht verfügbar." Den Fehler bekomme ich, wenn ich als .appliedFont "Museo Sans" sowie als .fontStyle "300" angebe. Mit z. B. "Courier" und "Regular" funktioniert es, als scheint die Syntax richtig zu sein. Überhaupt funktionieren die meisten Schriften, auch kompliziertere Namen mit Leerzeichen - ich hätte aber gerne die Museo. Falschschreibung habe ich dadurch ausgeschlossen, dass ich im ID ein Wort in eben jener Schrift ausgezeichnet und mir per Script die vorgenannten Werte habe anzeigen lassen.

Man probiert ja zunächst alles aus und sucht den Fehler bei sich. Also habe ich mir ein Script zur Erstellung eines Fontkatalogs geladen: FontCatalog.jsx, Designstudio, Philipp Speck - www.destio.de, Copyright (c) 2012 Designstudio, Philipp Speck. Die Fonts werden doch zunächst ausgelesen und scheinen dann beim Anzeigen plötzlich nicht mehr verfügbar. Der Fehler tritt in der Zeile 148 des Scripts auf: fontLocation = appFont.location;

Auch dieses Script schmeißt den gleichen Fehler, zwar bei einer früheren Schrift als der vorgenannten Museo. Aber jene kann auch ich nicht per Script ansteuern.

Was läuft denn da wieder falsch? Getestet habe ich unter CS5.5 und CC - Neustarts des Rechners sowie Programms inklusive. Bin für jeden Hinweis dankbar.

Gruß

Peter
Top
 
X
Uwe Laubender S
Beiträge: 3986
12. Dez 2013, 12:37
Beitrag #2 von 6
Beitrag ID: #520924
Bewertung:
(1794 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Fehlermeldung: "Die gewünschte Schriftfamilie ist nicht verfügbar."


Hallo, Peter!

Was ergibts sich denn, wenn Du explizit den Namen der Schrift per Skript abfragst?

Mal ein formatiertes Textstück anwählen und per ESTK nachfragen:

Code
$.writeln(app.selection[0].appliedFont.fontFamily); 
$.writeln(app.selection[0].appliedFont.fontStyleName);

$.writeln(app.selection[0].appliedFont.name); //= fontFamily + "\t" + fontStyleName


Also: die "name" property des "appliedFont" setzt sich aus drei Teilen zusammen:

1. "fontFamily"
2. genau einem Tabulatorzeichen und
3. dem "fontStyleName" zusammen

Du kannst also (beides=gestrichen,setze:) alle drei Teile gleichzeitig als String zuweisen:

app.
Code
selection[0].appliedFont = "Museo Sans	300"; 


Ich habe die Museo Sans nicht, deshalb kann ich's nicht live testen.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#520918]
(Dieser Beitrag wurde von Uwe Laubender am 12. Dez 2013, 12:43 geändert)
Top
 
peterhenrich S
Beiträge: 123
12. Dez 2013, 13:43
Beitrag #3 von 6
Beitrag ID: #520936
Bewertung:
(1768 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Fehlermeldung: "Die gewünschte Schriftfamilie ist nicht verfügbar."


Hallo Uwe,

vielen Dank,das hat mich ein wenig weitergebracht - es wird zumindest keine Fehlermeldung mehr geschmissen. Allerdings nimmt er jetzt keine Veränderungen mehr vor - weder mit Courier noch Museo.

Da der betreffende Code-Teil ziemlich weit weg von der Variableninitialisierung, deswegen frage ich mit Alert die enthaltenen Punkte ab. Es steht dort z. B. "Courier/Regular/Hamburg" (letzteres ist der darzustellende Wert. Das hier funktioniert aber nicht:

Code
alert(_fontFamily+"/"+_fontStyle+"/"+_myTextFrame.words.everyItem().contents); 
_myTextFrame.words.everyItem().appliedFont.fontFamily = _fontFamily;
_myTextFrame.words.everyItem().appliedFont.fontStyle = _fontStyle;


Der Textblock wird in der Minion dargestellt. Wo habe ich gepatzt?

Gruß

Peter
als Antwort auf: [#520924] Top
 
Uwe Laubender S
Beiträge: 3986
12. Dez 2013, 15:07
Beitrag #4 von 6
Beitrag ID: #520949
Bewertung:
(1745 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Fehlermeldung: "Die gewünschte Schriftfamilie ist nicht verfügbar."


Hallo, Peter!

Eine Zuweisung über die property "word" halte ich für etwas problematisch*.
Falls Du wirklich vor hast alle Texte eines textFrames zu formatieren, hast Du vielleicht bessere Karten über diese beiden Möglichkeiten:

1. Über das texts-Objekt des text frames (vom Typ her ist das eine Collection mit Länge 1, deshalb mit texts[0] oder texts.item(0) ansprechbar)

2. Über die gesamte story, die dem text frame zugeordnet ist

Code
//1. Text des TextFrames: 
_myTextFrame.texts[0].appliedFont = _fontFamily+"\t"+_fontStyle;


oder

Code
//2. Gesamte Story: 
_myTextFrame.parentStory.texts[0].appliedFont = _fontFamily+"\t"+_fontStyle;


Voraussetzung ist natürlich, dass die Variablen auch genau das "sind", was sie semantisch auszudrücken scheinen:

_myTextFrame => [Object TextFrame]
_fontFamily => [String Object fontFamily]
_fontStyle => [String Object fontStyleName]

*Falls Du wirklich "word" meinst, also Leerstellen möglicherweise ausklammern möchtest, dann lies Dir mal den folgenden Artikel durch:

Marc Autret
What Exactly is a Word?

http://www.indiscripts.com/...at-exactly-is-a-word
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#520936] Top
 
peterhenrich S
Beiträge: 123
12. Dez 2013, 16:12
Beitrag #5 von 6
Beitrag ID: #520951
Bewertung:
(1716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Fehlermeldung: "Die gewünschte Schriftfamilie ist nicht verfügbar."


Hallo Uwe,

die zweite Zeile hat den Erfolg gebracht - DANKE!

Allerdings lag der Fehler nicht vor dem Gleichheitszeichen sondern dahinter. Vorne funktioniert beides:

Code
_myTextFrame.words.everyItem().appliedFont = ... 

oder

_myTextFrame.parentStory.texts[0].appliedFont = ...


Trotzdem werde ich mir die Erläuterungen von Marc Autret zu Herzen nehmen.

Das Geheimnis liegt wohl in der gleichzeitigen Zuweisung von _fontFamily und _fontStyle. Packt man das in zwei Zeilen, passiert gar nichts oder ein Fehler kommt, packt man _fontFamily und _fontStyle durch einen Tabulator getrennt in eine Befehlszeile, klappt alles wunderbar:

Code
... = _fontFamily+"\t"+_fontStyle; 


Wer jetzt noch Lust hat, sich den Kopf zu zerbrechen, kann ja mal nachforschen, warum das Script von Philipp Speck nicht läuft. Ist das nur bei mir so? Hier noch mal der Link: http://www.destio.de/tools/fontcatalog/
Das ist aber nur für die B-Note interessant :-)

Gruß

Peter

P.S.: Interessanterweise hatte mein erster Beitrag in diesem Forum auch das Ergebnis, dass die gleichzeitige Zuweisung von Kontur-Attributen besser funktioniert als nacheinander. Wird hoffentlich nicht nochmal passieren.
als Antwort auf: [#520949] Top
 
Uwe Laubender S
Beiträge: 3986
12. Dez 2013, 17:35
Beitrag #6 von 6
Beitrag ID: #520954
Bewertung:
(1690 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Fehlermeldung: "Die gewünschte Schriftfamilie ist nicht verfügbar."


Hallo, Peter!
Ich würde sagen, da muss der Philipp Speck selber durch ;-)
Schreib' ihm ein paar Zeilen zum Problem.

Die Zuweisung des Fonts als String mit den Werten der "name"-Property von "font" funktioniert also in jedem Fall. Bei den "words.everyItem()" werden aber eben nur die geändert. Siehe Definition von "word" bei Autret. Andere Textstellen nicht.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#520951] Top
 
X