Há algum tempo, respondi uma pergunta de pilha sobre uma fonte que exibia indevidamente uma palavra no idioma do Laos. Eu escrevi uma GUI de swing para responder à pergunta da pilha.
Se você não conhece o Java Swing, o Oracle tem um excelente tutorial para começar, criando uma GUI com JFC/Swing. Pule a seção NetBeans.
Decidi escrever uma GUI mais geral de seletor de fontes por dois motivos.
Eu queria escolher uma fonte de script para uma GUI diferente que eu estava criando. Eu tive que usar o OpenOffice para olhar minhas fontes disponíveis.
Eu pensei que seria uma boa aplicação de giro para o Github.
Aqui está a GUI do seletor de fontes mostrando quais fontes no meu computador exibem uma frase em inglês. Eu tenho 432 variações de fonte que podem exibir o texto da amostra do JTextfield.

Na parte superior da GUI, você pode digitar ou copiar / colar o texto da amostra. Você pode selecionar entre vários tamanhos de fonte comuns. Depois de clicar à esquerda no Display Fontes JButton, você vê uma amostra de cada fonte e, na parte superior, o número total de fontes disponíveis reconhece.
Aqui está a GUI do seletor de fontes mostrando quais fontes no meu computador exibem uma palavra no idioma Lao. Você pode ver as caixas no texto de amostra JTextfield. Minha fonte de GUI de balanço padrão não pode exibir a palavra. Apenas 11 variações de fonte no meu sistema podem, e apenas a fonte Dejavu pode exibir a palavra com os glifos na posição correta.

A GUI do balanço consiste em quatro classes; FontSelectorgui, FonttableCellRenderer, FontDisplayListener e FontDisplayRunnable.
A classe FontSelectorgui é a principal classe da GUI. O JFrame, a entrada JPanel e o Display JPanel são criados nesta classe. O JFrame é criado no método Run e os JPanels são criados em métodos separados. A entrada JPanel usa um BoxLayout, enquanto o display JPanel usa um BorderLayout.
A classe FonttableCellRenderer é a classe de renderizador de células JTable responsável por renderizar as células jtable nas diferentes fontes.
A classe FontDisplayListener responde ao JButton da entrada JPanel. Como a criação das linhas jtable leva um tempo, um FontDisplayRunnable separado atualiza as linhas jtable em um encadeamento separado. Fazer isso mantém a GUI responsiva.