.chr
Bevezető[szerkesztés]
A .chr állományok vonalakból kirajzolható (stroked) karakter-leírásokat tartalmaznak. Turbo Pascalban ismeretes a használatuk. A karaktereket a grafikus rendszer a kurzor mozgatásával és vonalrajzoló utasításokkal jeleníti meg. Az állományban bármelyik karakterhez tartozhat rajzolat (#0..#255), és egy-egy karakter bármennyi mozgásból és vonalhúzásból állhat. A saját kezű fontok (betűk) az InstallUserFont függvény hívása után használható.
Az állomány felépítése[szerkesztés]
Egy .chr állomány az alábbi öt részből épül fel:
- Font-leíró rész
- Állomány-leíró rész
- Karakter leírások címtáblázata
- Szélességtábla
- Karakterleírások
Font-leíró rész[szerkesztés]
Ez a terület 128 Byte hosszú, az állományon belül a 00h
címen kezdődik. Az első 4 Byte az állomány azonosítására szolgáló kötött tartalmú terület. Ezt követheti egy bármilyen tartalmú, maximálisan 113 karakteres szöveg, melyet $1A
karakterrel kell zárni.
A további mezők technikai információkat hordoznak.
DB 'PK', 8, 8 ; Négy byte-os azonosító
DB szöveg ; Font teljes neve, copyright információk
DB 1Ah ; A szöveg végét jelző ^Z
karakter
DW 80h ; A fontleíró rész hossza
DB fontnév ; Négy karakteres név, az állománynak is ezt a nevet kell adni
DW állományméret ; Az állomány mérete mínusz 128 ( a fontleíró rész nélküli méret)
DB FA ; Verziószám, az F a fő-, az A pedig az al-verziószám
DB 1, 0 ; Kezdeti verziószám
DB kitöltő byte-ok ; Kitöltő byte-ok, hogy a terület mérete 128 byte legyen
Állomány-leíró rész[szerkesztés]
A rész a 128. byte-on kezdődik és 16 byte hosszú. Tartalmazza a rajzolási mód azonosító karaktert, a karakterek számát, az első karakter kódját és leírásának eltolási címét a 80h
-hoz képest, a kitöltési módot jelző byte-ot, valamint méret és eltolási információkat.
DB '+' ; Rajzolási mód azonosító
DW karakterszám ; Az állományban leírt karakterek száma
DB 0 ; Nem használt
DB karakterkód ; Az első leírt karakter kódja
DW eltolás ; Eltolás a leírásokhoz, 80h + eltolás = első karakter leírása
DB 0 ; Kitöltési mód, mindig nulla
DB nagybetű ; A nagybetűk magassága pontokban
DB alapvonal ; Az alapvonal eltolása pontokban
DB lelógás ; Az alapvonal alá lelógó vonalak mélysége pontokban, ez negatív érték
DB 0, 0, 0, 0, 0 ; Nem használt
Karakter-leírások címtáblázata[szerkesztés]
A táblázatban minden egyes karakterhez egy szavas eltolási érték tartozik, melyből kiderül, hogy a karakter leírása hol található az állományon belül ( 80h + táblázatbeli érték = karakter-leírásának első byte-ja
). A táblázat első szava az állomány-leíró rész 4. byte-ján (karakterkód) megadott karakter leírására mutat. A címtáblázat karakterszám * 2 byte
méretű.
Szélességtábla[szerkesztés]
Minden karakterhez egy 1 byte-os érték tartozik, a karakter szélessége pontokban. A grafikus rendszer ezeket az értékeket használja fel a szöveg szélességének meghatározására.
Lásd Graph modul
TextWith függvénye. A szélességtábla karakterszám
byte méretű.
Karakterleírások[szerkesztés]
Egymás után karakterszám
darab leírás, ahol minden leírás elvben korlátlan hosszú lehet. Minden művelethez mint, mozgás, vonalhúzás, vagy leírás vége - egy szó tartozik.
A byte-ok legfelső bitjei határozzák meg a műveletet, az alsó 7-7 bit pedig előjelesen a relatív koordinátákat. A karakter 0, 0
pontja a legelső művelet előtti grafikus kurzor pozíció. Minden művelet ehhez képest adja meg a koordinátákat. Ha több karaktert rajzoltunk egymás mellé (például az OutText eljárással), akkor a mindenkori következő karakter 0, 0
pontja oda kerül, ahol az előző befejeződött. Ezért fontos, hogy a "vége-kód"
előtt vigyük el a grafikus kurzort a karakter jobb szélére egy MoveTo művelettel, különben nem egymás mellé, hanem kisebb-nagyobb átfedéssel egymásra rajzolódnak.