Cet article fait partie d'un ensemble consacré à la description du codage avancé de textes hiéroglyphiques:

Les cadres ("frames")

La balise #f permet de définir un cadre qui regroupe plusieurs hiéroglyphes.

Par exemple #fz=1;x=1;y=1;h=2;w=3 définit un bloc dont le coin supérieur gauche est en x=1 et y=1, dont la hauteur est 2 et la largeur 3

Nous reviendrons sur le premier paramètre de la balise ('z') qui permet de définir des imbrications.

Une fois un bloc ouvert, on ajoute le codage du texte hiéroglyphique comme à l'habitude

Essayez dans l'éditeur #fz=1;x=1;y=1;h=2;w=3 S34 U28 S29 : vous notez que le premier hiéroglyphe est positionné en x=1 et y=1 puisqu'il est dans le bloc défini par #f.

L'exemple : #fz=1;x=1;y=1 S34 U28 S29 #fz=1;x=5;y=0;o='V' S34 U28 S29 combine deux blocs de même niveau (z=1 pour les deux). Observez dans l'éditeur comment il est affiché

La balise #f utilise les paramètres suivants :

  • d pour fixer la direction d'écriture ('r' ou 'l'),
  • h pour fixer la hauteur du cadre,
  • o pour fixer l'orientation du texte ('V' ou 'H'),
  • w pour fixer la largeur du cadre,
  • x et y pour fixer la position du coin supérieur gauche du cadre.
  • z pour définir le niveau d'imbrication du cadre.

Notez aussi le paramètre f qui sera décrit ultérieurement car il ne s'applique qu'au corpus.

Vous pouvez imbriquer plusieurs cadres :

Le codage #fz=1;x=1;y=1 A1
   #fz=2;x=0;y=1 T11
   #fz=2;x=2;y=0 T12

définit :

  • Une image représentée ci-contre par un dégradé vert,
  • un cadre (A) de niveau 1 positionné en x=1 et y=1 dans l'image et représenté ci-contre par un rectangle noir,
  • deux cadres de niveau 2 imbriqués dans A :
    • le premier (cadre marron en bas à gauche) est situé en x=0 et y=1 dans A donc en x=0 (0+0) et y=2 (1+1) dans l'image finale,
    • le second (cadre marron en haut à droite) est situé en x=2 et y=0 dans A donc en x=3 (1+2) et y=0 (0+0) dans l'image finale,

Un cadre est positionné par rapport au cadre qui le contient.

Essayez dans l'éditeur le codage suivant (insertion de #px=2 T11/cr dans le premier cadre de niveau 2 et ajout de +sc au début pour afficher un quadrillage) :
+sc #fz=1;x=1;y=1 A1
   #fz=2;x=0;y=1 T11 #px=2 T11/cr
   #fz=2;x=2;y=0 T12

Le second T11, que nous avons coloré en rouge, commence en x=2 du cadre qui le contient.

Dans un cadre les coordonnées prennent leur origine au coin supérieur gauche du cadre.

Reprenons le code précédent en supprimant les paramètres x des deux cadres de niveau 2 :+sc #fz=1;x=1;y=1 A1
   #fz=2;y=1 T11 #px=2 T11/cr
   #fz=2;y=0 T12

A l'ouverture de chaque cadre de niveau 2, le paramètre x étant absent, la valeur de x courante dans le cadre de niveau 1 est conservée.

Les paramètres x et y des balises #f prenent par défaut la position courante.

Modifions notre code en (notez les deux changement de taille - #ps=) : +sc #fz=1;x=1;y=1 A1 #ps=50
   #fz=2;y=1 T11 #px=2 #ps=200 T11/cr
   #fz=2;y=0 T12

A l'ouverture du premier cadre de niveau 2, la taille courante est 50% : cette taille est prise en compte par le cadre de niveau 2 et le premier T11 est dimensionné en conséquence.

En continuant dans ce cadre de niveau 2 on voit un #ps=200 qui explique la taille du second T2 (en rouge).

A l'ouverture du second cadre de niveau 1, on reprend la taille 50% qui est celle en cours au niveau 1.

La taille est "héritée" par les cadres mais uniquement dans le sens descendant.

Il en est de même de l'orientation et de la direction d'écriture.

La hauteur et la hauteur d'un cadre sont fixées par les paramètres w et h de la balise #f et, à défaut, calculées en fonction de son contenu.

+sc #fz=1 A1

la largeur et la hauteur du cadre sont calculées pour contenir le hiéro A1

+sc #fz=1;w=3 A1

la largeur fixée par le paramètre w=3 étant plus grande que la largeur nécessaire pour le seul A1, la largeur du cadre est 3.

+sc #fz=1;w=1 A1 A2 A3

la largeur est fixée par w=1 qui est insuffisante pour contenir A1, A2 et A3, il y a donc des passages automatiques à la ligne.

Les trois fonctions spécifiques Rosette suivantes sont à votre disposition pour vous aider à positionner les objets dans les cadres :

  • H : H(100) donne la hauteur du cadre en cours, H(25) donne 25% de la hauteur du cadre en cours,
  • P : pour se positionner dans le cadre en cours sur la base du premier argument de la fonction :
    • bottom : P('bottom') donne l'ordonnée du bas du cadre en cours,
    • centerH : abcisse du milieu (en horizontal),
    • centerV : abcisse du milieu (en vertical)
    • left : abcisse du côté gauche
    • nextH : abcisse du côté droit
    • nextV : ordonnée du côté inférieur
    • pointX : abcisse du point dont le nom est en argument 2
    • pointY : ordonnée du point dont le nom est en argument 2
    • right : abcisse du côté droit
    • top : ordonnée du côté supérieur
       Exemple : +sc #fz=1;h=2;w=3 #palePoint A1 A2 A3 #px=P('pointX','lePoint')+2;y=P('bottom')-2 N35
  • W : identique à la fonction H mais pour la largeur.
       Exemple : +sc #fz=1;h=1;w=1 #ss='r';x=0.1;y=0.1;w=W(50);h=H(30)

Ces fonctions ne peuvent être utilisées que dans un cadre :

  • qui n'en englobe pas d'autre,
  • ou qui utilise le paramètre w ou h dans sa définition.

Les paramètres w et h des balises #f permettent de contrôler largeur et hauteur des cadres.

Les fonctions H, W et P aident à positionner les objets dans un cadre.