lunes, 4 de noviembre de 2013

Cómo saber si una fuente es monoespaciado en Java

La biblioteca de clases estándar para el lenguaje de programación Java incluye soporte para una interfaz gráfica de usuario se accede a través del Abstract Window Toolkit (AWT). Entre otras abstracciones, AWT permite al código Java para seleccionar caracteres distintos de los instalados de forma local en el equipo. Cada fuente tiene un conjunto de propiedades tales como el nombre y el peso. En particular, se puede determinar si una fuente se monoespaciado (es decir, si todos los caracteres ocupan el mismo espacio horizontal) mediante pruebas de las propiedades de la fuente de que se trate a partir de código Java especialmente diseñado. 

Monoespaciado



Incluya la siguiente línea en el inicio de su código Java:



importar java.awt *.;



Inicialice las variables, que se utilizarán más adelante para determinar si la fuente está monoespaciado:



Cadena myFontName = "TimesNewRoman";



BufferedImage myBI nueva BufferedImage = (1, 1, BufferedImage.TYPE_INT_ARGB);



Gráficos gráficos myBI.createGraphics = ();



booleano monoespaciado = true;



int fontStyle = Font.PLAIN;



fontSize int = 12;



Fuente MyFont = new Fuente (myFontName, fontStyle, fontSize);



FontMetrics myFontMetrics = graphics.getFontMetrics (MyFont);



Reemplazar "TimesNewRoman" por el nombre de la fuente que desea comprobar.



Determinar si el tipo de letra monoespaciado está haciendo un bucle sobre todas las letras y dígitos en la parte inferior 7 bits de código de punto de la fuente mientras que el seguimiento de si usted ha visto más de una anchura de caracteres hasta ahora. El siguiente código de ejemplo implementa el algoritmo:



theWidth int = 0;



booleano theWidthIsDefined = false;



for (int charCode = 0; charCode 128; charCode + +) {



if (Character.isValidCodePoint (charCode) er.isLetter (charCode) | | Character.isDigit (charCode))) {



currChar = (char) charCode carbón;



int currWidth = myFontMetrics.charWidth (currChar);



if (theWidthIsDefined) {



if (currWidth! = theWidth) {



monospaced = false;



break;



}



} Else {



theWidth = currWidth;



theWidthIsDefined = true;



}



}



}



}



Al final de este bucle, la variable "monoespaciado" seguirá siendo verdadera si y sólo si la fuente seleccionada en el paso dos se monoespaciado.



 

No hay comentarios:

Publicar un comentario