HowTo:
Wo fehlt welche Schrift? Fragen Sie den FontFinder.
|
|
Home
Workshop-Seite
|
Die
Text-Engine in Director 7 und 8 gestattet unter anderem, Schriften
ganz oder teilweise in einen Film einzubetten und so ein einheitliches
und von der jeweiligen Plattform unabhängiges Textlayout zu
ermöglichen. Auf Schriften, die weder im aktuellen System installiert
noch im Film zu finden sind, macht Director beim Öffnen des
Films aufmerksam. Die Auskunft, um welche Darsteller es sich dabei
konkret handelt, gibt das Programm allerdings nicht. Bei einer größeren
Anzahl von Textdarstellern kann die manuelle Prüfung im Textfenster
einige Zeit in Anspruch nehmen, so daß es unter Umständen
lohnt, den Vorgang mit einem Skript bzw. Tool-Xtra zu automatisieren.
In
Lingo enthält die Darsteller-Property the missingFonts
eine lineare Liste mit allen Schriften, die im Darsteller zwar verwendet,
aber nicht gefunden werden konnten. Ein Skript, das die zu bearbeitenden
Textdarsteller ermittelt, muß also lediglich alle Darsteller
sämtlicher Besetzungen dahingehend prüfen, ob sie vom
Darstellertyp #text sind und ob die Property the missingFonts einen
von [] verschiedenen Wert hat.
|


 |
|
|
Die
folgende Prozedur übernimmt diese Aufgaben und kann in einem
beliebigen Filmskript gespeichert werden.
on getMissingFonts
errStr = "Fehlende Schriften" & RETURN
clmax = the number of castlibs
repeat with cl = 1 to clmax
mmax = the number of members of castlib
cl
repeat with m = 1 to mmax
if member(m, cl).type
= #text then
fontList
= member(m, cl).missingFonts
if fontList
<> [] then
put
member(m, cl) && member(m,cl).name &": " Â
&
string(fontList) & RETURN after errStr
end
if
end if
end repeat
end repeat
return errStr
end
Sowohl der Aufruf der
Prozedur als auch deren Ausgabe erfolgen im Nachrichtenfenster.
|


 |
|
|
Mehr Komfort in der Handhabung
bringt bei vergleichsweise geringem Mehraufwand - die Integration
der Prozedur in ein Authoring-Tool, das als Movie in a Window (Miaw)
realisiert wird. Wenn Sie die fertige MiaW-Datei in Directors Xtra-Ordner
plazieren, läßt sich das Miaw bequem über das Menü
Xtras öffnen. Diese Variante läßt sich auch einfach
um eine Funktion erweitern, die per Mausklick im Miaw ausgewählte
Darsteller in Directors Textfenster zur Bearbeitung öffnet.
Das Miaw benötigt minimal einen Textdarsteller zur Anzeige
und einen Button zum Start der Überprüfung.
|


 |
|
|
Um die Prozedur getMissingFonts()
im Miaw verwenden zu können, muß sie lediglich um die
Anweisung tell the stage erweitert werden, da die Darsteller
in den Besetzungen des Hauptprogramms (the stage) und nicht die
des Miaw untersucht werden sollen. Für den Fall, dass fehlende
Schriften ermittelt wurden, wird am Ende der Prozedur ein Hilfe-Text
angefügt.
on getMissingFonts
tell the stage
errStr = "teste auf fehlende Schriften..."
& RETURN
clmax = the number of castlibs
repeat with cl = 1 to clmax
mmax = the number of members
of castlib cl
repeat with m = 1 to mmax
if member(m, cl).type
= #text then
fontList
= member(m, cl).missingFonts
if fontList
<> [] then
put
string(member(m, cl)) & ": " ¬
&
string(fontList) & RETURN after errStr
end
if
end if
end repeat
end repeat
put "ok" & RETURN after errStr
if the number of lines of errStr > 3
then
put "(Ein Klick auf einen
Darsteller öffnet" & ¬
"ihn
im Textfenster.)" after errStr
end if
return errStr
end tell
end
|


 |
|
|
Die
beim Start des Films automatisch ausgeführte Prozedur prepareMovie
stellt hier lediglich den Fenstertyp des Miaw ein und löscht
den Inhalt des zur Anzeige verwendeten Textdarstellers display.
on prepareMovie
(the activeWindow).windowType = 49
member("display").text = " "
end
Das
Behavior des Buttons "Textdarsteller testen..." beschreibt
den Textdarsteller display mit dem Ergebnis des Aufrufs der Prozedur
getMissingFonts().
on mouseUp
member("display").text = getMissingFonts()
end
Mit
Hilfe des im Lieferumfang von Director enthaltenen Xtra UiHelper
lassen sich u.a. Darsteller in den programminternen Editoren zur
Bearbeitung öffnen. Eine vollständige Liste der Funktionen
dieses Xtras erhalten Sie durch die Eingabe der folgenden Befehlszeile
in das Nachrichtenfenster:
put interface(Xtra "UIHelper")
Beachten
Sie beim Einsatz dieses Xtras für andere Zwecke allerdings,
dass die Verwendung außerhalb der Autorenumgebung von Macromedia
offiziell nicht unterstützt wird.
Wir nutzen also die Xtra-Funktion activateMediaEditor dazu,
bei einem Mausklick auf eine der angezeigten Darstellerreferenzen
im Miaw den entsprechenden Darsteller im Textfenster zu öffnen.
Diese Funktion erwartet die Nummer des Darstellers sowie die Nummer
der Besetzung als Parameter beim Aufruf.
|


 |
|
|
Im
folgenden Behavior des Textdarstellers wird zunächst die Nummer
der ausgewählten Textzeile ermittelt und als Trennzeichen der
Doppelpunkt vereinbart, da dieser die Trennung zwischen Darstellerreferenz
und der Liste mit den fehlenden Schriften darstellt. Danach wird
der erste Teil der aktuellen Textzeile (die Darstellerreferenz)
in die Variable memRef geschrieben. Die folgenden Anweisungen
werden per tell the stage vom Hauptprogramm ausgeführt.
Zuerst werden die Nummern des Darstellers und der Besetzung aus
der Variablen memRef extrahiert und in memNum bzw.
clibNum gespeichert. Anschließend wird mit Hilfe der
Prozedur xtraTest() geprüft, ob das Xtra UIHelper installiert
ist und im Erfolgsfall dessen Funktion activateMediaEditor aufgerufen.
property myMem
on beginSprite me
myMem = sprite(me.spritenum).member
end
on mouseUp me
ml = pointToLine(sprite me.spritenum, the mouseLoc)
if ml < 1 then exit
id = the itemdelimiter
the itemdelimiter = ":"
-- ausgewählte Darstellerreferenz lesen
memRef = (myMem).line[ml].item[1]
if NOT(memRef contains "member") then exit
the itemdelimiter = id
tell the stage
memRef = memRef.value
memNum = memRef.memberNum
clibNum = memRef.castLibNum
-- Test, ob Xtra UIHelper verfügbar
if xtraTest("uiHelper") then
-- Darsteller im Textfenster
per
-- UIHelper-Xtra öffnen
activateMediaEditor (memNum,
clibNum)
else
alert "Das UIHelper-Xtra
ist nicht installiert!"
end if
end tell
end
|


 |
|
|
Die
Prozedur xtraTest() ermittelt, ob das als Parameter "xtraName"
angegebene Lingo-Xtra tatsächlich installiert ist. Dazu werden
in einer Repeat-Schleife alle Xtrabezeichnungen mit dem Inhalt von
"xtraName" verglichen.
on xtraTest xtraName
present = 0
repeat with m = 1 to the number of xtras
if the name of xtra m = xtraName then
present = 1
exit repeat
end if
end repeat
return present
end
Fertigen
Director 8-Film fontfinder.dir
(32 kB) downloaden (Sichern unter...)
(Gerd)
|


 |
|