Montag, 25. Oktober 2010

Swingen mit Wingdings, Webdings und Symbol

Auf Windowsplatformen gehören die Symbol-Fonts ja irgendwie zum Inventar. Ich erinnere mich an ein frühes Windows und eine Hand voll Fonts, die da mitgekommen sind. Einer davon natürlich Wingdings. Auf meinem guten alten XP finden sich da inzwischen auch noch ein paar mehr Derivate, wie Windings 1 und 2, sowie Symbol. Ich persönlich kann mich nicht erinnern, die Fonts je gebraucht zu haben und in Zeiten von Unicode sind die ja auch zum Teil obsolet geworden. So kann man locker mit einem "\u263b" und Times New Roman einen Smiley zaubern . Nun wurde ich aber mit Zeichen aus den Symbol-Fonts konfrontiert und damit, dass diese nicht darstellbar seien. Datsächlich gibt es dazu auch einen Bugeintrag, der aber nur lapidar erklärt, dass der Font seine Zeichen eben nur in einem bestimmtem Unicodebereich preis gibt. Für viele Benutzer dürfte das eher wie ein Bug aussehen, wenn sie, wie gewohnt, ein 'S' eingeben und trotz Symbol-Font kein Summenzeichen erhalten, wie es in jeder nativen Anwendung der Fall ist. Weil wir das aber brauchen, habe ich da eben mal ein paar Zeilen zu gebastelt. Es ist zwar nicht die feine Englische den String neu zu bauen, aber eine bessere Möglichkeit bietet sich leider nicht. Besser wäre es natürlich, man würde direkt in die View, bei Swing also in die UI-Klassen, eingreifen.

public static String convertToSymbol(final String s) {
        if(s==null) {
            return null;
        }
        
        final StringBuilder sb = new StringBuilder(s.length());
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            sb.append((char)(c | 0x0000F000));
        }
        return sb.toString();
    }

Keine Kommentare:

Kommentar veröffentlichen