Wie geht man richtig mit fehlenden Schriftarten um?Nehmen wir an, ich habe ein schönes Skript geschrieben, das einige Schriftarten verwendet – Standardschriftarten, die Sie auf fast jedem Computer finden, aber nicht die JMP-Standardschriftarten.
Ich habe dieses Skript an meine Benutzer verteilt und begann, Feedback zu Fehlermeldungen über fehlende Schriftarten zu erhalten.
Es scheint, dass es in der Organisation Computer gibt, auf denen nur eine sehr geringe Anzahl an Schriftarten installiert ist.
Also habe ich jede Font-Nachricht in eine Try()-Anweisung eingeschlossen, etwa so:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
Try((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" )) << Set Font( "Agency FF", 13 ), Write("No Font"));
Das Problem ist, dass ich immer noch eine Fehlermeldung erhalte.

Wie schreibe ich Folgendes richtig:
Wenn eine Schriftart installiert ist, stellen Sie sie wie angegeben auf die GUI-Elemente ein, andernfalls verwenden Sie die Standardschriftart.
Verbraucher- und MarktforschungDatenmischung und -bereinigungQualitäts- und VerfahrenstechnikBetreff: Wie gehe ich richtig mit fehlenden Schriftarten um?In diesem Beispiel scheint das zu funktionieren. Lassen Sie mich sehen, wie es in einem echten Drehbuch aussehen wird.
Betreff: Wie gehe ich richtig mit fehlenden Schriftarten um?Das wird funktionieren, Und Geben Sie einen Hinweis, wenn der <
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
Batch Interactive( 1 );
x = Log Capture( ((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" ))) << Set Font( "Comic Sans MS1", 13 ) );
Batch Interactive( 0 );
if(x!="",Show( x ));
Beachten Sie, dass es kein try(...) gibt, da <
Betreff: Wie gehe ich richtig mit fehlenden Schriftarten um?Sehr komisch. Ich denke, die nächstbeste Antwort besteht darin, Batch Interactive (0) auszukommentieren.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
show(Batch Interactive(1));
((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" ))[1]) << Set Font( "Comic Sans MS1", 13 );
//show(Batch Interactive(0));
Ich kann nicht erklären, was passiert, aber ich denke, es könnte daran liegen, dass die Schriftart erst getestet wird, wenn sie benötigt wird ... aber ich kann nicht herausfinden, wie ich einen wait(1) ausführen kann, der das Problem behebt.
Bearbeiten: Habe eine Nachricht an das Entwicklerteam gesendet.
Edit2: Die nächste Idee ist besser ...
Betreff: Wie gehe ich richtig mit fehlenden Schriftarten um?Seltsamerweise funktioniert das hier nicht:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
Batch Interactive(1);
Try((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" )) << Set Font( "Agency FF", 13 ), (rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" )) << Set Font( "Agency FB", 13 ));
Batch Interactive(0);
während das funktioniert:
Batch Interactive(1);
throw("Test");
Batch Interactive(0);
Betreff: Wie gehe ich richtig mit fehlenden Schriftarten um?Wie verhindere ich, dass JMP-Benachrichtigungen angezeigt werden?ist ein Ausgangspunkt, nicht der beste ...
Es gibt eine Funktion,
batch Interactive(1);
das setzt JMP in Charge Modus, der davon ausgeht, dass sich kein Benutzer an der Tastatur befindet, und die Standardtastenantwort verwendet. Das ist ein wenig unerwünscht interaktiv Modus, da Sie möglicherweise keine Meldung im Protokoll bemerken. Sie können ihn direkt nach der Anweisung auf 0 setzen, was möglicherweise einen halb erwarteten, aber unerwünschten Dialog auslöst.
Jeder Aufruf gibt auch den vorherigen Wert zurück, wenn Sie einen stapelähnlichen Mechanismus zum Wiederherstellen des Werts verwenden möchten.
Betreff: Wie gehe ich richtig mit fehlenden Schriftarten um?Ich konnte ohne große Erklärung nur einen Beitrag über Python mit diesem Codeabschnitt finden:
# Set the matplotlib.pyplot interactive flag to false
_JMPpp.interactive(False)
Jede Hilfe wäre sehr dankbar.
Betreff: Wie gehe ich richtig mit fehlenden Schriftarten um?Außerhalb meines Computers, aber ich glaube, dass die Antwort darin besteht, das Batch-Interaktionsflag zu verwenden, um den Dialog zu unterdrücken. Ich denke, die Flagge ist noch nicht dokumentiert und Sie müssen in dieser Community suchen, um zu sehen, wie sie funktioniert. Möglicherweise finden Sie es auch nützlich, die Protokollerfassungsfunktion zu verwenden, um den Text im Dialogfeld zu erfassen, um zu diagnostizieren, was passiert ist, oder Sie sind mit der Standardschriftart zufrieden, die Sie trotzdem erhalten.
Bearbeiten: Link zu Wendys Anmerkung zu Batch Interactive