_                 _      _   _                   _                          
 | |               | |    | | | |                 | |                         
 | |     ___ ___   | | ___| |_| |_ _ __ ___ ___   | | __ _ _ __ __ _  ___ ___ 
 | |    / _ \ __|  | |/ _ \ __| __| '__| _ \ __|  | |/ _` | '__| _` |/ _ \ __|
 | |___|  __/__ \  | |  __/ |_| |_| | |  __/__ \  | | (_| | | | (_| |  __/__ \
 |______|___|___/  |_|\___|\__|\__|_|  \___|___/  |_|\__,_|_|  \__, |\___|___/
                                                 _              __/ |         
                                                | |            |___/          
                     ___ _ __    __  ___ __ ___ | |                           
                    / _ \ '_ \   \ \/ / '_ ` _ \| |                           
                   |  __/ | | |   >  <| | | | | | |                           
                    \___|_| |_|  /_/\_\_| |_| |_|_|                           
Paragraphe

Qu'est-ce qu'une lettre large ?

Trait...

Une lettre large est un assemblage de caractères formant une seule grande lettre ou signe.

   Exemple :
       ___ 
      /   |
     / /| |
    / ___ |
   /_/  |_|

Par ce procédé, une lettre est remplacée par le dessin d'elle même. Cette lettre est devenue un calligramme.

Le mot "Calligramme" a été créé par Guillaume Apollinaire, un grand poète français, dans le livre "Calligrammes" en 1918.

Paragraphe

Lettres larges et xml

Trait...

Les fontes à lettres larges peuvent être stockées dans des fichiers xml. Par exemple, FoxLet utilise le format xml pour stocker des fontes. Notamment, les signatures flx2a et flf2a peuvent être stockées ainsi.

La signature flf2a (FigLet) ne contient pas de paramètres d'opacité des caractères ni de couleurs. La signature flx2a (FoxLet) contient des paramètres d'opacité des caractères et de couleurs.

Etant donné que xml peut supporter ces deux signatures, leurs caractéristiques ont été détaillées sur cette page.

La compatibilité avec les Figfonts de FigLet a fait l'objet d'une étude très rigoureuse. Il était nécessaire de préserver l'apparence originale, quasiment historique, et d'ajouter de nouvelles possibilités. Ce point a nécessité énormément de temps de développement.

Paragraphe

Structure xml

Trait...

Les sous-caractères qui composent une fonte doivent tous être affichables. Ils doivent aussi faire partie du charset indiqué dans l'entête du fichier xml ("encoding").

Voici un exemple d'une fonte à signature flx2a enregistrée en xml.

<?xml version="1.0" encoding="ISO-8859-1"?>
<font xml:space="preserve">
    <info>
      <font-name>Name of the font</font-name>
      <author>Author's name</author>
      <year>2012</year>
      <style>Outline</style>
      <header>flx2a$ 5 6 59 32 12 0 512 153 #000000 #000000 ¨ @</header>
      <signature>flx2a</signature>
      <hardblank>$</hardblank>
      <font-height>5</font-height>
      <baseline>6</baseline>
      <max-length>59</max-length>
      <old-layout>32</old-layout>
      <comment-lines>12</comment-lines>
      <print-direction>0</print-direction>
      <full-layout>512</full-layout>
      <codetag-count>153</codetag-count>
      <color-begin>#000000</color-begin>
      <color-end>#000000</color-end>
      <char-opacity>¨</char-opacity>
      <char-delimiter>@</char-delimiter>
      <comments><![CDATA[
      <!-- Comments of the font are below... -->
      ]]<comments>
    </info>
    <characters><![CDATA[
UDC32
 $@
 $@
 $@
 $@
 $@@
UDC33
  _ @
 |¨|@
 |_|@
 (_)@
    @@

<!-- The others large letters are below... -->
    ]]></characters>
</font>

Les points suivants sont à noter :
- L'instruction "preserve" sert à conserver les espaces qui sont essentiels pour restituer correctement les grandes lettres. Les sauts de ligne seront conservés, permettant facilement des modifications dans un simple éditeur de texte ;
- le header de la fonte est contenu entre les tags "header" ;
- les éléments du header sont séparés entre leurs tags correspondants ;
- par suite, la double entrée du header donne un choix au programmeur, selon ce qu'il préfère utiliser : splittage du header, ou bien parsing des tags xml du header ;
- les tags "font-name", "author", "year", "style" donnent des informations qui pourront être lues aisément par un parser ;
- la fonte est placée entre les tags "characters". Chaque grande lettre est obligatoirement précédée par son unicode.

Avantages
note L'archivage en xml autorise le tri des fontes par auteur, année de création et style d'une fonte, sur les serveurs. Pour cela, il suffit d'utiliser des parsers qui iront lire directement entre les tags xml.
note xml autorise une séparation parfaitement définie de tous les champs de données.
note xml est un format de stockage universellement connu.
note Des scripts de parsing sont disponibles sur Internet pour différents langages de programmation.

Remarque
Avec un navigateur Internet, les sauts de ligne et les espaces entre les grandes lettres ne seront pas visibles. Par contre, ils apparaîtront avec un éditeur de texte ou un éditeur xml.

Paragraphe

Les champs des grandes lettres en xml

Trait...

Chaque grande lettre sans exception est précédée par son unicode, comme ceci :

UDC32
 $@
 $@
 $@
 $@
 $@@
UDC33
  _ @
 |¨|@
 |_|@
 (_)@
    @@

Cela permet d'isoler facilement les lettres larges lors du parsing, puisqu'un délimiteur de début (trois lettres devant l'unicode) et un délimiteur de fin de ligne double (@@) sont disponibles. Le délimiteur de fin de ligne utilisé est indiqué dans le header de la fonte.

Codes de stockage de l'Unicode

UDCunicode décimal
UHXunicode hexadécimal
AHXansi hexadécimal
HEXhexadécimal
OCToctal

Afin d'obtenir une forme standard, seul l'unicode décimal (UDC) est utilisé actuellement. Rien n'interdit de stocker l'unicode autrement, à condition qu'il soit précédé du code correspondant dans le tableau.

Remarque
Les grandes lettres sont stockées en bloc entre les tags "characters". Cela évite d'augmenter la taille des fichiers plus que nécessaire, XML étant un langage verbeux.

Paragraphe

Font Header

Trait...

L'ordre des données d'un header de Figfont a été, bien évidemment, conservé pour les raisons de compatibilité évoquées plus haut (en bleu). Une nouvelle partie (en vert) apporte des paramètres d'opacité et de couleur qui ajoutent de nouvelles possibilités.

         flx2a$ 5 6 59 32 12 0 512 153 #000000 #000000 ¨ @
           |  | | | |  |  |  |  |   |   |       |      |  \
           |  | | | |  |  |  |  |   |   |       |       \  Char Delimiter
           |  | | | |  |  |  |  |   |   |        \       Char Opacity
           |  | | | |  |  |  |  |   |    \        End Color
          /  /  | | |  |  |  |  |    \    Begin color
 Signature  /  /  | |  |  |  |   \    Codetag_Count
   Hardblank  /  /  |  |  |   \   Full_Layout
        Height  /   |  |   \   Print_Direction
        Baseline   /    \   Comment_Lines
         Max_Length      Old_Layout

Si une Figfont doit être archivée en xml, de nouveaux paramètres seront ajoutés (Begin color, End color, Char Opacity, Char Delimiter), même s'ils ne sont pas utilisés.

Si une fonte utilise plusieurs Char Delimiter, le Char Delimiter à indiquer dans le header, sera celui utilisé le plus souvent. Si deux Char Delimiter différents sont présents dans un nombre de grandes lettres identique, celui utilisé en premier sera à indiquer dans le header.

Compatibilité du header

Signature La signature doit comporter 5 caractères. Les 3 premiers indiquent la version majeure, le 4e est la sous-version, le 5e est une option (le plus souvent "a") qui doit figurer même s'il n'est pas utilisé.
Hardblank Le Hardblank représente un espace insécable qui ne sera pas effacé lors de la compression de lignes. Par convention, le "$" est utilisé, mais il peut être remplacé par n'importe quel autre caractère affichable.
Height Hauteur des caractères mesurée en sous-caractères. Tous les caractères d'une fonte doivent avoir la même hauteur, cela incluant les espaces.
Baseline Nombre de lignes de sous-caractères depuis la Baseline jusqu'au sommet du plus grand caractère. C'est la hauteur d'un caractère sans le jambage des lettres minuscules (g, j, p, q). Cette valeur est indispensable lors de la compression verticale des lignes.
Max Length Longueur maximale du caractère le plus large + 2 à cause des signes de fin de ligne. Cette valeur pourra être plus grande que nécessaire pour plus de souplesse.
Old Layout Voir Layout Parameters
Comment Lines Nombre de lignes de commentaire utilisées pour décrire les particularités ou l'historique d'une fonte.
Print Direction Sens de lecture horizontal d'une fonte. 0 signifie une lecture de gauche à droite, 1 une lecture de droite à gauche.
Full Layout Voir Layout Parameters
Codetag Count Nombre de caractères non-requis contenus dans la fonte. C'est le nombre total de caractères de la fonte, moins 102.
Begin Color (flx) Couleur de début des caractères.
End Color (flx) Couleur de fin des caractères. Elle peut être égale à la couleur de début. Dans ce cas, aucun gradient ne sera initialisé par défaut.
Char opacity (flx) Caractère d'opacité des lettres.
Char Delimiter (flx) Le caractère de fin de ligne est indiqué dans le header : soit il s'agit d'un Char Delimiter unique pour tout le fichier, soit de celui le plus utilisé, soit de celui utilisé en premier, dans cet ordre de priorité. Dans la plupart des cas, le Char Delimiter est "@".
Paragraphe

Règles de compression des lignes

Trait...

La compatibilité avec les règles du Smush des Figfonts a été conservée.

Le terme Spring (ressort) a été choisi à la place du terme Smush de FigLet, considéré comme intraduisible dans d'autres langues. Les règles restent numérotées selon l'ordre initial.

Le Spring agit dans le sens horizontal et vertical. Il peut avoir des valeurs positives ou négatives, permettant la compression déjà existante (valeurs négatives), ou bien un écartement variable des grandes lettres (valeurs positives).

Les 6 règles de compression horizontale (source)

Règle Nom Valeur Description
1 EQUAL 1 Si deux caractères sont identiques, ils sont fusionnés dans le même caractère. Cela n'inclut pas le Hardblank.
2 LOWLINE 2 Un tiret bas ("_") sera remplacé, lors de la compression, par un sous-caractère parmi ceux-ci : "|", "/", "\", "[", "]", "{", "}", "(", ")", "<" or ">".
3 HIERARCHY 4 Une hiérarchie de 6 classes est utilisée : "|", "/\", "[]", "{}", "()", and "<>". Quand deux sous-caractères appartiennent à des classes différentes, celui de la dernière classe est utilisé lors de la compression.
4 PAIR 8 Fusionne deux caractères de parenthèses "[]" ou "][", "{}" or "}{", "()" or ")(" par une barre verticale ("|").
5 BIG X 16 Fusionne "/\" en "|", "\/" en "Y", et "><" en "X". "<>" n'est pas fusionné par cette règle.
6 HARDBLANK 32 Fusionne deux hardblanks ensemble, en les remplaçant par un seul.
Les 5 règles de compression verticale (Source)
Règle Nom Valeur Description
1 EQUAL 256 Identique à la règle 1 horizontale.
2 LOWLINE 512 Identique à la règle 2 horizontale.
3 HIERARCHY 1024 Identique à la règle 3 horizontale.
4 MIDDLE LOW 2048 Fusionne les paires "-" et "_" en un seul "=".
5 SUPERSMUSHING 4096 Fusionne les lignes verticales en remplaçant les sous-caractères par des barres verticales ("|"), pour donner l'illusion qu'une lettre glisse par dessus l'autre. Les résultats obtenus sont, le plus souvent, décevants, car le supersmush n'est pas possible dans la majorité des cas.

UNIVERSAL est une règle pratiquée par défaut, résolvant la plupart des options de fusion des caractères lors de la compression.

Paragraphe

Layout Parameters

Trait...

La compatibilité du Layout avec les Figfonts a pu être conservée.

Old_Layout : valeurs admises de -1 à 63 (Source)

-1 Full-width layout par défaut : pas de compression horizontale.
0 Horizontal fitting (kerning) : pas de compression horizontale (kerning), pas de compression verticale (fitting).
1 Applique la compression horizontale règle 1 par défaut
2 Applique la compression horizontale règle 2 par défaut
4 Applique la compression horizontale règle 3 par défaut
8 Applique la compression horizontale règle 4 par défaut
16 Applique la compression horizontale règle 5 par défaut
32 Applique la compression horizontale règle 6 par défaut

Full_Layout : valeurs admises 0 à 32767 (Source)

1 Applique la compression horizontale règle 1 par défaut
2 Applique la compression horizontale règle 2 par défaut
4 Applique la compression horizontale règle 3 par défaut
8 Applique la compression horizontale règle 4 par défaut
16 Applique la compression horizontale règle 5 par défaut
32 Applique la compression horizontale règle 6 par défaut
64 Pas de compression horizontale par défaut (kerning)
128 Compression horizontale par défaut (écrase 64)
256 Applique la compression verticale règle 1 par défaut
512 Applique la compression verticale règle 2 par défaut
1024 Applique la compression verticale règle 3 par défaut
2048 Applique la compression verticale règle 4 par défaut
4096 Applique la compression verticale règle 5 par défaut
8192 Pas de compression verticale par défaut (fitting)
16384 Vertical smushing by default (écrase 8192)

Remarque
Old Layout gère la compression horizontale. Full Layout peut gérer à la fois la compression horizontale et verticale. Les deux peuvent être employés ensemble dans une fonte. Si tel est le cas, utilisez Old Layout pour indiquer la compression horizontale d'une fonte, et Full Layout pour indiquer la compression verticale d'une fonte.

Paragraphe

Hardblank

Trait...

Le Hardblank des Figfonts a été conservé, toujours pour des raisons de compatibilité.

Lors de la compression horizontale, le harblank est un espace insécable que la fusion de caractères ne fera pas disparaître. Un espace normal est considéré comme vacant, ce qui fusionne les lettres comme dans l'exemple ci-dessous.

      ______                         ______
     / ____/                        / ____/
    / __/  ______       ==>        / __/______ 
   / /___ /_____/                 / /__/_____/
  /_____/                        /_____/

Le tiret se trouve fusionné avec le "E": ce n'est pas bon. Dans le cas d'un "C-", celui-ci pourrait être confondu avec un "G", à cause du tiret placé trop près de la lettre. L'utilisation d'un harblank résoud le problème comme ceci :

      ______                         ______
     / ____/                        / ____/
    / __/ $______       ==>        / __/ ______ 
   / /___ /_____/                 / /___/_____/
  /_____/                        /_____/

Pour arriver à ce résultat, le hardblank doit être placé ainsi dans la fonte :

   UDC67
      ______@
     / ____/@
    / __/ $ @
   / /___   @
  /_____/   @

Lors de l'affichage, le Hardblank sera remplacé par un espace. Par conséquent, il ne sera plus visible.

Paragraphe

Opacité des caractères

Trait...

La signature flx indique que l'opacité des caractères est gérée quand une lettre en recouvre une autre, lors de la compression verticale. L'opacité des caractères est une caractéristique fondamentale de la signature flx.

Par convention, le sous-caractère d'opacité conseillé est un tréma ("¨").

Lorsque le caractère d'opacité n'est pas présent, on obtient ceci 
(notez le haut du "l" en 2e ligne, traversé par la lettre en dessous):
    __  __       __ __                 
   / / / /___   / // /____             
  / /_/ // _ \ / // // __ \            
 / __  //  __// // // /_/_/     __   __
/_/ /_/ \___//_//_/_\___///____/ /  / /
| | /| / // __ \ / ___// // __  /  / / 
| |/ |/ // /_/ // /   / // /_/ /  /_/  
|__/|__/ \____//_/   /_/ \__,_/  (_)

L'opacité des caractères permet de résoudre ce problème :
    __  __       __ __                 
   / / / /___   / // /____             
  / /_/ // _ \ / // // __ \            
 / __  //  __// // // /_/_/     __   __
/_/ /_/ \___//_//_/_\___/ /____/ /  / /
| | /| / // __ \ / ___// // __  /  / / 
| |/ |/ // /_/ // /   / // /_/ /  /_/  
|__/|__/ \____//_/   /_/ \__,_/  (_)

Pour obtenir ce résultat, le "l" contient le caractère d'opacité ("¨")
aux endroits à opacifier, comme ceci :

UDC108
    __@
   /¨/@
  /¨/ @
 /¨/  @
/_/   @
      @@

Avantages
note Les grandes lettres ne sont plus traversées lors de la compression verticale des lignes.
note La compression verticale des lignes sur plusieurs niveaux s'en trouve facilitée.

Remarque
Le caractère d'opacité concerne uniquement les lettres à contours (style Outline) qui contiennent des espaces à l'intérieur. Les espaces internes de la lettre sont remplis par le caractère d'opacité.

Paragraphe

Caractères requis dans une fonte

Trait...

Pour des raisons de compatibilité, les caractères requis dans une fonte sont les suivants :

32 (blank/space) 64 @             96  `
33 !             65 A             97  a
34 "             66 B             98  b
35 #             67 C             99  c
36 $             68 D             100 d
37 %             69 E             101 e
38 &             70 F             102 f
39 '             71 G             103 g
40 (             72 H             104 h
41 )             73 I             105 i
42 *             74 J             106 j
43 +             75 K             107 k
44 ,             76 L             108 l
45 -             77 M             109 m
46 .             78 N             110 n
47 /             79 O             111 o
48 0             80 P             112 p
49 1             81 Q             113 q
50 2             82 R             114 r
51 3             83 S             115 s
52 4             84 T             116 t
53 5             85 U             117 u
54 6             86 V             118 v
55 7             87 W             119 w
56 8             88 X             120 x
57 9             89 Y             121 y
58 :             90 Z             122 z
59 ;             91 [             123 {
60 <             92 \             124 |
61 =             93 ]             125 }
62 >             94 ^             126 ~
63 ?             95 _
(source)

Il est à conseiller qu'une fonte contienne cette liste de caractères. Des caractères spéciaux suivants peuvent être ajoutés à cette liste :

196 (umlaut "A" -- deux points sur la lettre "A")
214 (umlaut "O" -- deux points sur la lettre "O")
220 (umlaut "U" -- deux points sur la lettre "U")
228 (umlaut "a" -- deux points sur la lettre "a")
246 (umlaut "o" -- deux points sur la lettre "o")
252 (umlaut "u" -- deux points sur la lettre "u")
223 ("ess-zed")
                 ___ @
                /¨_¨\@
   Ess-zed     |¨|/¨/@
    with       |¨|\¨\@
 Char-Opacity  |¨||_/@
               |_|   @
Paragraphe

Ajouter des lettres dans une fonte

Trait...

Il est possible d'ajouter d'autres lettres appartenant à d'autres alphabets. Dans ce cas, vous devez indiquer le code Unicode de ces lettres au dessus de chacune d'elles, comme ceci :

   UDC188
     _   __    @
    /¨| /¨/ _  @
    |¨|/¨/¨|¨| @
    |_/¨/|_¨¨_|@
     /_/   |_| @
               @@

L'unicode de chaque grande lettre doit précéder celle-ci, sans exception.

Paragraphe

Support de l'Unicode

Trait...

L'étendue de caractères autorisée est de 65 536 caractères répartis de -2 147 483 648 jusqu'à +2 147 483 647. En pratique, les codes 32 jusqu'à 255 sont, le plus fréquemment, utilisés dans les fontes à grandes lettres.

L'umlaut est supporté.

La Table de caractères de FoxLet permet d'accéder à la totalité des lettres d'une fonte, même dans le cas de cns.flf qui contient plus de 13 000 caractères.

Paragraphe

Foxfiles ou Foxfonts ?

Trait...

Les fichiers de lettres larges en XML pour FoxLet ont été baptisés "FoxLet files" (et non pas "Foxfiles" ni "Foxfonts" !).

Paragraphe

Sources

Trait...

Les informations concernant les Figfonts ont été écrites d'après notre étude de la documentation Figfonts. La documentation Figfonts est fournie dans la distribution Figlet.

   _____  .__  .__      __  .__             ___.                   __    ._.
  /  _  \ |  | |  |   _/  |_|  |__   ____   \_ |__   ____   ______/  |_  | |
 /  /_\  \|  | |  |   \   __\  |  \_/ __ \   | __ \_/ __ \ /  ___/   __\ | |
/    |    \  |__  |__  |  | |   Y  \  ___/   | \_\ \  ___/ \___ \ |  |    \|
\____|__  /____/____/  |__| |___|  /\___  >  |___  /\___  >____  >|__|    __
        \/                       \/     \/       \/     \/     \/         \/

FoxLet Team & FoxLet author, 26/11/2012.

 
Valid XHTML 1.0 Strict