Код: Выделить всё
GraphicsEnvironment.getAvailableFontFamilyNames()Теперь я хотел бы отсеять эти шрифты. Но как их обнаружить? Font.canDisplay('A') находит на моем сайте 6 шрифтов, Font.canDisplayUpTo("zÀÿĀ") находит 2, выходящие за рамки ASCII (без квадратов). Но всего у меня получилось 36 неотображаемых шрифтов. Есть идеи, как получить остальное?
Код: Выделить всё
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
public class FontsMany extends JFrame {
boolean first= true;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Insets insets;
JScrollPane scroll;
String fontList[] = ge.getAvailableFontFamilyNames();
int count= fontList.length;
public FontsMany() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(640, 700);
setTitle(String.valueOf(fontList.length)+" installierte Fonts");
MyPanel mp= new MyPanel();
scroll = new JScrollPane(mp);
ScrollBarListener sbl= new ScrollBarListener();
scroll.getHorizontalScrollBar().addAdjustmentListener(sbl);
scroll.getVerticalScrollBar().addAdjustmentListener(sbl);
add(scroll, BorderLayout.CENTER);
setVisible(true);
}
// With "void main(String args[])" the frame was displayed twice.
public static void main(String args[]) {
EventQueue.invokeLater(FontsMany::new);
}
class ScrollBarListener implements AdjustmentListener {
public void adjustmentValueChanged(AdjustmentEvent evt) {
scroll.repaint();
}
}
class MyPanel extends JPanel {
MyPanel() {
setPreferredSize(new Dimension(600, count/3*14));
}
public void paintComponent(Graphics g) {
if (insets == null) insets = getInsets();
g.translate(insets.left, insets.top);
Font theFont;
FontMetrics fm;
int fontHeight = 0;
int[] arr= new int[count];
int iend= count/3;
if (count%3 >0) iend++;
int idif= iend*2;
if (count%3 == 1) idif--;
int iUndisplayable= 0;
for (int i= 0; i0 && ind
Подробнее здесь: [url]https://stackoverflow.com/questions/79887779/how-to-programmatically-detect-whether-a-font-renders-characters-as-squares[/url]
Мобильная версия