Re: Font evolution
In article <slrnkj76o7.cmg.fredrik@biggles.jonson.org>,
Fredrik Jonson <fredrik@jonson.org> wrote:
John B. Matthews wrote:
Roedy Green <see_website@mindprod.com.invalid> wrote:
What happens in Java apps when a glyph is missing from the
specified font?
I think you're supposed to see a WHITE SQUARE, which "may be
used to represent a missing ideograph."
I don't do Java GUI programming very often, but in logs and terminals
I regularily stumble upon U+FFFD in output from java code with broken
charset conversion. U+FFFD is the unicode replacement character and
is represented by a black rhomb with a white question mark inside.
https://en.wikipedia.org/wiki/U%2BFFFD
class Sscce {
static public void main(String[] arg) {
String foo = new String(new byte[] { (byte) -1 });
javax.swing.JOptionPane.showMessageDialog(null, foo);
}
}
Good point; your example illustrates a declaration in
sun.font.CharToGlyphMapper, used by Font#canDisplay():
public??static??final??int??UNINITIALIZED_GLYPH??=??-1;
Here's a variation that show a typical page with spotty coverage on some
platforms:
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
class Sscce {
public static final int N = 16;
public static final int BASE = 0x1D100; // Musical Symbols
static public void main(String[] arg) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
display();
}
});
}
private static void display() {
JPanel p = new JPanel(new GridLayout(N, N));
JLabel label = new JLabel("");
Font f = label.getFont().deriveFont(36f);
int[] a = new int[1];
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++) {
a[0] = N * r + c + BASE;
label = new JLabel(new String(a, 0, 1));
label.setFont(f);
label.setToolTipText("\\u"
+ Integer.toHexString(a[0])
+ " " + f.canDisplay(a[0]));
p.add(label);
}
}
JOptionPane.showMessageDialog(null, p);
}
}
Granted, I'm not sure it is entirely correct to equate a missing
ideograph with a unrepresentable chacacter?
I have a penchant for using an ideograph as a glyph, at least until it
turns up missing.
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>