I file di font e i file di forma (SHX) vengono compilati dai file di definizione della forma (SHP). È possibile creare o modificare i file di definizione della forma utilizzando un editor di testo o un elaboratore di testi che consenta di salvare i file in formato ASCII.
La sintassi della descrizione di forma per ciascuna forma o carattere è la stessa, indipendentemente dall'utilizzo finale (forma o font) al quale è destinata. Se un file di definizione della forma viene utilizzato come file di font, la prima voce del file descriverà il font stesso e non una forma all'interno del file. Se la voce iniziale descrive una forma, il file verrà utilizzato come file di forma.
Ogni riga di un file di definizione della forma può contenere fino a 128 caratteri. Non è possibile compilare righe con un numero superiore di caratteri. Poiché il programma ignora le righe vuote e il testo a destra di un punto e virgola, è possibile inserire commenti nei file di definizione della forma.
Ciascuna descrizione è composta da una riga di intestazione che ha la forma riportata di seguito, seguita da una o più righe contenenti byte di specifica separati da virgole e terminanti con uno 0.
*shapenumber,defbytes,shapenamespecbyte1,specbyte2,specbyte3,...,0
Nell'elenco che segue sono riportati i campi di una descrizione di forma:
Numero, unico all'interno del file, compreso tra 1 e 258 (fino a 32768 per i font Unicode), e preceduto da un asterisco (*). I file di font non Unicode utilizzano i numeri di forma 256, 257 e 258 per gli identificativi simbolici Degree_Sign, Plus_Or_Minus_Sign e Diameter_Symbol. Per i font Unicode questi caratteri sono presenti in corrispondenza dei numeri di forma U+00B0, U+00B1 e U+2205 e fanno parte del sottogruppo Latino esteso A.
I font di testo, ossia i file contenenti definizioni di forme per ciascun carattere, richiedono numeri specifici corrispondenti al valore di ciascun carattere nel codice ASCII. Alle altre forme invece, è possibile assegnare qualsiasi numero.
Il numero di byte di dati ( specbytes ) necessario per la descrizione della forma, compreso lo 0 finale. Il limite è 2.000 byte per ciascuna forma.
Il nome della forma. Per essere riconosciuto, è necessario che sia in maiuscolo. I nomi con caratteri minuscoli vengono ignorati e generalmente utilizzati per assegnare etichette alle definizioni della forma.
Byte di specifica delle forme. Ciascun byte di specifica è un codice che definisce la lunghezza e la direzione di un vettore oppure un codice speciale di una serie. Un byte di specifica può essere espresso nel file di definizione della forma come valore decimale o esadecimale. Se il primo carattere di un byte di specifica è uno 0 (zero), i due caratteri che seguono vengono interpretati come valori esadecimali.