Os arquivos de fonte e forma (SHX) são compilados a partir dos arquivos de definição de forma (SHP). Você pode criar ou modificar os arquivos de definição de forma com um processador de palavras ou editor de texto que salva arquivos no formato ASCII.
A sintaxe da descrição de forma para cada forma ou caractere é a mesma independente do uso final (forma ou fonte) para aquela descrição de forma. Se um arquivo de definição de forma for utilizado com um arquivo de fonte, a primeira entrada no arquivo descreve a própria fonte em vez da forma presente nesse arquivo. Se essa entrada inicial descrever uma forma, o arquivo será utilizado como um arquivo de forma.
Cada linha em um arquivo de definição de forma pode conter até 128 caracteres. Linhas muito extensas não podem ser compiladas. Como o programa ignora linhas em branco e texto à direita de um ponto-e-vírgula, você pode incorporar comentários nos arquivos de definição de forma.
Cada descrição de forma tem uma linha de cabeçalho da seguinte forma e é seguida por uma ou mais linhas contendo bytes de especificação, separados por vírgulas e terminados por um 0.
*shapenumber,defbytes,shapenamespecbyte1,specbyte2,specbyte3,...,0
A seguir encontra-se uma descrição dos campos de uma descrição de forma:
Um número, exclusivo para o arquivo, entre 1 e 258 (e até 32768 para fontes Unicode) e precedido por um asterisco (*). Arquivos de fonte diferentes de Unicode utilizam números de forma 256, 257 e 258 para identificadores simbólicos Degree_Sign, Plus_Or_Minus_Sign e Diameter_Symbol. Para fontes Unicode, esse glifos são exibidos em números de forma U+00B0, U+00B1 e U+2205 e fazem parte de um subconjunto “Latin Extended-A”.
As fontes de texto (arquivos contendo definições de forma para cada caractere) exigem números específicos correspondentes ao valor de cada caractere no código ASCII; outras formas podem ser atribuídas a quaisquer números.
O número de bytes de dados ( specbytes ) exigidos para descrever a forma, incluindo a terminação 0. O limite é 2.000 bytes por forma.
O nome da forma. O nome da forma deve estar em letra maiúscula para ser reconhecido. Os nomes com caracteres minúsculos são ignorados e utilizados, normalmente para rotular as definições de forma.
Um byte de especificação da forma. Cada byte de especificação é um código que define um comprimento e uma direção vetorial ou um dos números de códigos especiais. Um byte de especificação pode ser expresso em um arquivo de definição de forma como um valor decimal ou hexadecimal. Se o primeiro caractere de um byte de especificação for 0 (zero), os dois caracteres seguintes serão interpretados como valores hexadecimais.