2010-09-02 3 views
18

Ich verwende den Unicode 'CHECK MARK' (U + 2713) in einem HTML-Dokument. Ich finde, dass es in den meisten Browsern in Ordnung ist, aber gelegentlich begegne ich jemandem mit einer fehlenden Schriftart auf seinem PC. Gibt es irgendwelche HTML/JS-Tricks, um ein alternatives Anzeigezeichen (oder ein Bild) anzugeben, wenn die Schriftart fehlt?Verschlechterung von Unicode-Zeichen für Webbrowser mit fehlenden Schriftarten

+2

Ich mag diese Frage. Genau diese richtige Mischung von Problemen auf verschiedenen Abstraktionsebenen in einem komplexen System. –

+0

(Und nein, ich kann es nicht beantworten.) –

Antwort

6

Es gibt keinen direkten Weg zu sagen, ob ein bestimmtes Zeichen auf eine nützliche Weise gerendert wurde. Alles, was Sie von JavaScript aus tun können, ist, ein <span> zu erstellen, das ein (oder mehrere) des Zielzeichens in der Zielschriftart enthält, und seine Breite mit einer anderen <span> zu vergleichen, die die gleiche Anzahl von Zeichen enthält, die Sie nicht sinnvoll darstellen (*) . Wenn sie die gleiche Breite haben, haben Sie wahrscheinlich eine Menge Boxen oder Fragezeichen, so dass Sie Backup-Maßnahmen wie das Hinzufügen eines Bildes ergreifen können.

Da dies eine Menge Ärger ist, ziehen Sie vielleicht vor, nur für das Bild zu gehen. Oder Sie könnten versuchen, @font-face Einbettung in modernen Browsern zu verwenden, um eine allgemein bekannte Schriftart zu verwenden. Da es normalerweise IE gibt, der eine schlechte Unicode-Schriftart-Fallback-Unterstützung hat, stellen Sie sicher, eine EOT-Schriftart einzuschließen.

(*: Du könntest einen Charakter versuchen, der momentan nicht zugewiesen ist und hoffentlich so bleiben wird, zB U + 08FF, oder ein garantiert-ungültiges Zeichen wie U + FFFF, obwohl es fraglich ist, ob du das setzen darfst in einem HTML-Dokument.)

-1

Unicode ist ziemlich Standard, verwende ich immer unicodemap.org. Hier ist das Zeichen, das Sie verwenden [link] Dies wird Ihnen alle Codes mit dem Häkchen zugeordnet. Wenn Sie vollständige Abwärtskompatibilität wünschen, müssen Sie ein tatsächliches Bild verwenden. 1 Bilddatei für ein Häkchen ist leichter als ein Javascript Hack/Plugin. Wahrscheinlich deine beste Alternative.

+1

Die ersten beiden Sätze sind in einer Antwort auf diese Frage ziemlich falsch. Ich bin mir ziemlich sicher, dass Sie davon ausgehen können, dass sie in der Lage sind, ein Zeichen korrekt in ein Dokument einzubetten, und sie haben ausdrücklich festgestellt, dass fehlende Schriftarten ein Problem sind, nicht etwas anderes. – Joey

+0

Ich habe alternative Codes zur Verfügung gestellt, falls das hilft, das Problem zu beheben, da dieses Häkchen mit einem anderen Code implementiert werden könnte. Und ich habe auch eine Lösung bereitgestellt, die für 100% der Benutzer da draußen funktioniert und die Website nicht mit einem Hack herunterlädt. – stephenway

0

wenn Sie einen Weg aus der Ferne zu überprüfen, ob MS Office 2000 oder höher installiert ist ersinnen können, sollten Sie davon ausgehen können, dass Arial Unicode MS installiert ist und somit in einer Schriftart diesen Code Punkt (solange Sie die CSS-Schriftfamilie auf "Arial Unicode MS, Arial, Sans-Serif" eingestellt haben.

Ich glaube, das nur in Microsoft Internet Explorer arbeiten, aber Sie sollten versuchen, eine Word-Installation zu erkennen, die Lage sein, sein ActiveX-Objekt in JavaScript zu erstellen:

if(new ActiveXObject("Word.Application")) 
{ 
    window.alert("Word is installed, go ahead and use the Unicode check mark in HTML"); 
} 
else 
{ 
    window.alert("Word is not installed, use your image of a check mark."); 
} 

Aber da dies wirklich funktioniert nur in IE, wird wahrscheinlich eine Sicherheitswarnung in IE8 werfen, und Sie benötigen immer noch einen Fallback-Mechanismus für andere Browser oder IE-Browser ohne MS Office, ein Bild die ganze Zeit verwenden ist wahrscheinlich der beste Weg zu gehen.

+0

Ist das Word-ActiveX-Steuerelement sogar für das Skripting sicher markiert? Ich bezweifle das. Darüber hinaus ist Arial Unicode MS eine schreckliche Wahl, um Benutzer zu erzwingen. Es schafft mehr Schaden als Nutzen. – Joey

+0

@Joey - Ich glaube, dass es in Skripten in IE6 und IE7 verwendet werden kann. IE8 löst eine Sicherheitswarnung aus. Dies ist eine praktikable Lösung für ein Problem, das nicht wirklich auf herkömmliche Weise gelöst werden kann (es gibt keine "ist diese Schriftart installiert" oder "ist dieses Zeichen im Browser verwendete Schriftart" -Funktionen in JavaScript/HTML). Ich bin mir nicht sicher, warum Sie etwas abstimmen sollten, das eine brauchbare Lösung ist. Der beste, wahrscheinlich nicht (ich denke, die andere Antwort, die ich gepostet habe, ist wahrscheinlich besser). Ich bin mir auch nicht sicher, warum Arial Unicode MS so eine schreckliche Wahl ist, wenn Sie wissen, dass es das Unicode-Zeichen hat, solange Sie richtig zurückfallen. – userx

4

Das ist nicht ganz, was Sie fragen, aber es könnte Ihr Problem lösen (vorausgesetzt, Ihr Ziel ist es, die Ausgabe von HTML, ohne es auf außen Bilder angewiesen zu sein, usw.)

Haben Sie Bilddaten-URLs (auch als RFC2397 bekannt): http://www.ietf.org/rfc/rfc2397.txt

Statt mit:

&#x2713; 

ein Häkchen darzustellen, verwenden Sie:

Dies erfordert keine bestimmten Unicode-Schriftarten mit dem CHECK MARK-Zeichen, das auf der Clientseite installiert wird, ABER es funktioniert nicht in Internet Explorer 7 oder niedriger. (Internet Explorer 8, Firefox, Safari usw.sollte gut funktionieren)

+1

+1 Schön! Wie haben Sie die Unicode-Schriftart in die Basis-64-Codierung konvertiert? Haben Sie zuerst ein GIF-Image erstellt? – kol

+1

@kol - Ja, es ist einfach ein Bild des Charakters. Aber da 3 Jahre vergangen sind, seit diese Antwort gegeben wurde, wäre der bessere Weg, um JETZT zu gehen, [WOFF] (http://en.wikipedia.org/wiki/Web_Open_Font_Format) anstelle meines schmutzigen Hacks zu verwenden. – userx