D7WS HOMEPAGE WORKSHOP NEUE XTRAS GALERIE WORKSHOP Automatic Translation LESERSERVICE BUCH NEWS

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)





Directorworkshop.de ist © Joachim Gola & Gerd Gillmaier 1998-2002. Alle Rechte vorbehalten.