Ghylard a écrit : ↑26 janvier 2026, 15:37
Bon, là, outre le fait que je ne sais pas encore comment modifier cette *bip* de police, ça commence à devenir une véritable usine à gaz.
voici comment la lire :
avec le code source de Scummvm, c'est le fichier "font.cpp" qui te dit comment la lire (ou la construire) :
- les 5 premiers octets : tu mets ce que tu veux, ce n'est pas utilisé (les espagnols ont mis 'FONT' + 00)
- le 6ème octet est utilisé ici :
la hauteur de la police dans certains cas ??
les espagnols ont mis 0x17
ensuite c'est une table indexée, on dirait que le nombre d'index est variable, donc possible de mettre le nombre de caractères que tu veux
Code : Tout sélectionner
Font::ChrData Font::getChrData(byte chr) const {
chr -= 32;
uint16 chrOffset = 4 * chr + 6;
ChrData chrData;
chrData._width = _fontData[chrOffset + 2];
chrData._height = _fontData[chrOffset + 3];
chrData._pixels = _fontData + READ_LE_UINT16(_fontData + chrOffset);
la table indexée est construite ainsi :
- (2 octets) position dans le fichier raw
- (1 octet) largeur du caractère
- (1 octet) hauteur du caractère
pour savoir la position d'un caractère donné, il faut connaître son code ascii
exemple :
touche espace : 32 => chrOffset = 4 * (32 - 32) + 6 = 6
la largeur sera à l'octet 9 ( 6 + 2 +1) (le +1 c'est parce que le 1er octet est à la position 0)
la hauteur sera à l'octet 10 ( 6 + 3 +1)
la position sera aux octets 7 et 8
dans leur fichier :
largeur = 0x08
hauteur = 0x01 (normal pour un espace)
position de l'image : 0x0386
ainsi de suite pour les autres caractères
il suffit de faire pointer la 1ère image à la fin de la table indexée et de ne pas envoyer de caractères supérieurs au code ascii du dernier
pour l'image :
ça commence à l'octet indiqué dans la table des matières
ensuite c'est ligne par ligne (et autant de fois qu'il y de hauteur)
il y a 3 valeurs possibles : 0, 1 ou 2
( 0 = transparent, 1 = noir [le contour], 2 = cyan [la couleur de la lettre])
pour espace, tu auras donc 8 0x00 consécutifs
j'espère que mon explication est claire
