Los archivos de tipo de letra y forma (SHX) se compilan a partir de archivos de definición de forma (SHP). Los archivos de definición de forma se pueden crear o modificar con un editor o procesador de texto que permita guardar los archivos en formato ASCII.
La sintaxis de la descripción de forma para cada forma o carácter es la misma con independencia del uso final (como forma o tipo de letra) de esa descripción. Si un archivo de definición de forma se va a utilizar como archivo de tipo de letra, la primera entrada del archivo describe el tipo de letra, en lugar de una forma del archivo. Si esta entrada inicial describe una forma, el archivo se utilizará como archivo de forma.
Cada línea de un archivo de definición de forma puede tener un máximo de 128 caracteres. No es posible compilar líneas más largas. Puesto que el programa pasa por alto las líneas en blanco y el texto situado a la derecha de los signos de punto y coma, puede insertar comentarios en los archivos de definición de forma.
Cada descripción de forma incluye una línea de encabezado con el siguiente formato seguida por una o varias líneas con bytes de especificación separados por comas y terminadas con un 0.
*shapenumber,defbytes,shapenamespecbyte1,specbyte2,specbyte3,...,0
En la siguiente lista se definen los campos de una descripción de forma:
Un número, único para cada archivo, comprendido entre 1 y 258 ( 32768 en los tipos de letra Unicode), y precedido por un asterisco (*). Los archivos cuyos tipos de letra no son Unicode utilizan los números de forma 256, 257 y 258 para los identificadores de símbolos Degree_Sign, Plus_Or_Minus_Sign y Diameter_Symbol. En los tipos de letra Unicode, estos caracteres aparecen en los números de forma U+00B0, U+00B1 y U+2205, y son parte del subconjunto “Latino ampliado-A”.
Los tipos de letra de texto (archivos que contienen las definiciones de forma de cada carácter) requieren números específicos correspondientes al valor de cada carácter en el código ASCII; las otras formas pueden tener asignado cualquier número.
Número de bytes de datos ( specbytes ) requeridos para describir la forma, incluido el 0 final. Hay un límite de 2.000 bytes por forma.
Nombre de la forma. Los nombres de formas deben escribirse en mayúsculas para que se reconozcan. Los nombres con caracteres en minúsculas se pasan por alto y se suelen emplear para asignar un rótulo a las definiciones de formas de tipos de letra.
Byte de especificación de forma. Cada byte de especificación es un código que define la longitud y dirección de un vector, o uno de los varios códigos especiales posibles. Un byte de especificación se puede expresar en el archivo de definición de forma como un valor decimal o hexadecimal. Si el primer carácter de un byte de especificación es 0 (cero), los dos caracteres siguientes se interpretan como valores hexadecimales.