Herramientas de usuario

Herramientas del sitio


tipografia

Tipografías en AGE

AGE incluye diferentes opciones que permiten cambiar las tipografías (fuentes) con las que se muestra tanto el campo de entrada de la aventura (Prompt) como el texto de salida.

Control básico de la tipografía

El entorno de desarrollo integrado PUCK permite cambiar la tipografía general de una aventura de forma sencilla y sin tocar una línea de código, mediante formularios. Para ello, hacemos click en alguna parte del mapa que esté vacía (es decir, que no contenga ninguna entidad ni relación) para seleccionar el objeto mundo. Hecho esto, tendremos el panel de mundo a mano derecha. Seleccionando la pestaña “Presentación”, en la parte de abajo del panel hay una sección de “Tipografía” con tres campos de formulario, que nos permiten especificar “Fuente”, “Fichero” o “Tamaño”. Estos campos se utilizan para cambiar la fuente por defecto en la que se mostrarán todos los textos de la aventura (también se puede cambiar la fuente puntualmente para mostrar textos con diferentes tipografías en la misma aventura; pero esto no se puede hacer mediante formularios sino sólo programando, véase “Control avanzado de la tipografía”).

El campo “Fuente” se utiliza para especificar el nombre de una fuente que se suponga instalada en el sistema operativo del jugador. Por ejemplo, podemos teclear Courier New y, si el usuario tiene instalada una fuente con ese nombre, los textos de la aventura se le mostrarán con dicha fuente. En el caso de que el usuario no tenga instalada la fuente, este campo no tendrá efecto, y simplemente se utilizará la fuente por defecto de AGE.

El campo “Fichero” se usa si, en lugar de llamar a una fuente instalada en el sistema, se quiere incluir un fichero de fuente TrueType con la aventura. Por ejemplo, podemos incluir un fichero de fuente TrueType “Biergarten.ttf” en el directorio de mundo, y en este campo teclearíamos Biergarten.ttf para utilizar esa fuente.

NOTA: Los tipos de fuentes soportados con Java pueden variar un poco según la versión de la máquina virtual Java y del sistema operativo. Por lo que he visto, muchas fuentes TrueType funcionan en todas las VM's (Windows, Linux y Mac); aunque hay una minoría que no funcionan (¿tal vez dependiendo de la versión del estándar?) En cualquier caso, si por un motivo u otro la fuente especificada en el fichero no funciona, no se producirá ningún error desagradable sino que simplemente el cambio de fuente no tendrá efecto.

Por último, el campo “Tamaño” se utiliza para especificar el tamaño de la letra, tanto en las fuentes dadas mediante el campo “Fuente” como en las dadas mediante el campo “Fichero”.

En el caso de que se teclee algo tanto en el campo “Fichero” como en el campo “Fuente”, tomará prioridad el campo “Fichero”. Si no se puede obtener una fuente a partir del fichero (sea porque éste no existe o porque su formato no es válido), se utilizará el campo “Fuente”. Si éste tampoco funciona, se usará la fuente por defecto de AGE.

Control avanzado de la tipografía

La clase ColoredSwingClient cuenta con los siguientes métodos para cambiar de forma dinámica la tipografía:

public void setOutputAreaFont ( URL u , int fontSize )
public void setInputFieldFont ( URL u , int fontSize )
public void setCurrentOutputFont ( URL u , int fontSize )
 
public void setOutputAreaFont ( Font f )
public void setInputFieldFont ( Font f )
public void setCurrentOutputFont ( Font f )
 
public void setOutputAreaFont ( InputStream is , int fontSize )
public void setInputFieldFont ( InputStream is , int fontSize )
public void setCurrentOutputFont ( InputStream is , int fontSize )

Estos métodos permiten cambiar la tipografía de tres maneras:

  • Los métodos llamados setInputFieldFont cambian la tipografía con la que se escribe en el campo de entrada de texto.
  • Los métodos llamados setOutputAreaFont cambian la tipografía de toda el área de salida de texto (es decir, todo el texto existente en dicha área pasa a dibujarse con la fuente dada).
  • Los métodos llamados setCurrentOutputFont cambian la tipografía actual del área de salida de texto. Esto quiere decir que el texto que haya sido mostrado hasta ahora en dicha área no cambia; pero a partir de ahora los nuevos textos que se muestren tendrán la nueva tipografía. Se puede utilizar este método para mezclar diferentes tipografías en el mismo juego.

Cada uno de los métodos tiene tres variantes diferentes según el tipo de los parámetros que le pasemos.

A la primera variante le pasamos una URL al fichero de fuente junto con el tamaño de la fuente. La URL puede especificar la localización del fichero de fuente en el disco duro local, en una página web, en un archivo zip, etc. Esta variante es la más sencilla para cargar un fichero de fuente que incluyamos junto con nuestro mundo, dado que podemos utilizar el método world.getResource(“nombreFichero.ttf”) para obtener su URL. Así, podemos hacer:

client.setCurrentOutputFont(world.getResource("fuente3.ttf"),16);

Y se usará un fichero de fuente “fuente3.ttf” almacenado en el directorio del mundo.

Las otras dos variantes, más complejas, son:

  • Uno al que le pasamos un objeto de la clase Font, el objeto que en Java se utiliza para representar una fuente (incluyendo tipo de letra, tamaño y otras características como negrita o cursiva). La API de Java nos permite obtener objetos Font de muchas maneras. Por ejemplo:
Font f = Font.createFont ( Font.TRUETYPE_FONT , new File("C:\\Fuentes\\miFuente.ttf" );
  • Uno al que le pasamos un objeto de la clase InputStream con los datos de la fuente y un tamaño de fuente. El InputStream se puede obtener de un fichero de fuente, de una URL, de un fichero zip, etc.

Estas dos últimas variantes serán útiles para los usuarios avanzados que necesiten crear o manipular fuentes directamente, utilizando la API de Java para ello.

Es importante recordar que los métodos mencionados en esta sección sólo existen en la clase ColoredSwingClient, que implementa el cliente de ventanas Swing para AGE. Otros clientes (como el que se utiliza para jugar por IRC o por telnet) no soportan cambio de fuentes. Así pues, es importante asegurarse de que el cliente que usa el jugador es realmente un ColoredSwingClient antes de llamar a cualquiera de estos métodos:

InputOutputClient client = jugador.getIO();
if ( client instanceof ColoredSwingClient )
  client.setOutputAreaFont(world.getResource("fuente3.ttf"),16);
tipografia.txt · Última modificación: 2011/03/29 13:55 por al-khwarizmi