предоставляет нам массив всех установленных шрифтов. Однако на моем сайте не все шрифты правильно отображают текст; вместо этого в некоторых шрифтах отображаются только квадраты. Запустите приведенный ниже код, чтобы узнать, есть ли у вас «бесполезные» шрифты.
Теперь я хотел бы отсеять эти шрифты. Но как их обнаружить? Font.canDisplay('A') находит на моем сайте 6 шрифтов, Font.canDisplayUpTo("zÀÿĀ") находит еще 2. Но всего у меня получилось 36 неотображаемых шрифтов. Есть идеи, как получить остальное?
[code]GraphicsEnvironment.getAvailableFontFamilyNames()[/code] предоставляет нам массив всех установленных шрифтов. Однако на моем сайте не все шрифты правильно отображают текст; вместо этого в некоторых шрифтах отображаются только квадраты. Запустите приведенный ниже код, чтобы узнать, есть ли у вас «бесполезные» шрифты. Теперь я хотел бы отсеять эти шрифты. Но как их обнаружить? Font.canDisplay('A') находит на моем сайте 6 шрифтов, Font.canDisplayUpTo("zÀÿĀ") находит еще 2. Но всего у меня получилось 36 неотображаемых шрифтов. Есть идеи, как получить остальное? [code]import java.awt.*; import java.awt.event.*; 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(); } }
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; i=0 && ind