NOM
Defoma::Id - module Defoma pour la gestion des bases de référence.
SYNOPSIS
use Defoma::Id;
$Id = defoma_id_open_cache( suffixe, nom_paquet );
defoma_id_close_cache( id_objet );
defoma_id_register( id_objet,
type => type,
font => police,
id => identifiant,
priority => priorité,
category => catégorie,
origin => origine,
depend => dépendance,
hints => indications );
defoma_id_unregister( id_objet,
type => type,
font => police,
id => identifiant );
@index = defoma_id_grep_cache( id_objet, type-recherché,
id => identifiant,
font => police,
type => type,
category => catégorie,
depid => depid,
depfont => depfont );
@hints = defoma_id_get_hints( id_objet, index );
defoma_id_set( id_objet, identifiant, police, flag );
defoma_id_unset( id_objet, identifiant, police );
DESCRIPTION
Defoma::Id est un module Defoma pour la gestion des identifiants de
police et des bases de référence. Il fournit les fonctions listées
ci-dessous, qui sont supposées être appelées par les scripts de
configuration Defoma.
Une base de référence est une sorte de base de données dont le but est
d’éviter les conflits de noms. Les applications accèdent souvent aux
polices avec leurs propres identifiants, il est donc préférable qu’un
identifiant pointe vers une seule police. C’est une contrainte
importante pour une configuration automatique, parce qu’il peut
facilement arriver que plusieurs polices aient le même identifiant. Les
scripts de configuration automatique peuvent difficilement détecter
quelle est la meilleure police pour porter le nom d’un identifiant, ou
même pour savoir si cette situation se produit. Defoma::Id est une aide
pour résoudre ce type de problème.
Voici comment Defoma::Id fonctionne dans les grandes lignes :
1. Ouverture d’une base de référence avec la commande init d’un script
de configuration Defoma.
2. Enregistrement de(s) l’identifiant(s) pour une police avec la
commande register du script.
3. Recherche dans la base de référence par Defoma::Id pour vérifier si
une autre police fournit le même identifiant, et rappel du script afin
de faire le choix le plus approprié de la police qui fournira
l’identifiant, à l’aide des commandes do-install- et do-remove-.
TYPE D’IDENTIFIANTS
Il peut gérer trois types d’identifiants : RealName, Alias et
Substituted.
RealName est le nom réel d’une police et est généralement pris dans
l’indication FontName. Si vous voulez enregistrer une police à une base
de références, au moins un nom réel doit être enregistré. Vous pouvez
fournir les indications aux options lorsque vous enregistrez un
RealName.
Alias est un autre nom pour une police, qui est généralement pris dans
l’indication Alias. Vous devez spécifier le nom réel (RealName) de la
police avec le paramètre origine lorsque vous enregistrez un Alias.
Substituted est encore un autre nom d’une police, qui contrairement à
Alias n’est ni pris dans les indications de la police, ni directement
enregistré dans une base de référence par les scripts de configuration
Defoma. Il est plutôt pris dans une règle de substitution (subst-rule),
qui est gérée par le module Defoma::Subst, et est enregistrée par le
module. Si vous voulez qu’une police particulière se substitue à un
autre identifiant, vous devez enregistrer la police (et son nom réel)
auprès d’un cache de substitution (subst-cache). Pour plus de détails,
veuillez consulter la page de manuel Defoma::Subst.
DÉTAIL SUR LE FONCTIONNEMENT DE DEFOMA::ID
L’enregistrement et le désenregistrement des identifiants d’une police
sont généralement effectués par les scripts de configuration Defoma
avec les commandes register et unregister respectivement, mais
l’installation et le retrait de certains identifiants ne doivent pas
être effectués lors de l’appel aux commandes register et unregister,
mais lors de l’appel aux commandes do-install-(real,alias,subst) et
do-remove-(real,alias,subst) respectivement. Les exemples suivants
montrent comment les identifiants des polices sont enregistrés dans une
base de référence et comment il en sont retirés.
1.Enregistrement
Le module Defoma::Id enregistre l’identifiant, la police, le
type, la priorité et encore d’autres informations dans une base
de référence.
1.2 Le module recherche les polices qui fournissent l’identifiant de
la base de référence, et prend la première d’entre elles. Les
noms réels (RealName) sont toujours prioritaires par rapport aux
Alias, et les Alias par rapport aux noms substitués
(Substituted).
1.3 Si aucune police n’est installée pour cet identifiant, le module
rappelle le script avec la commande do-install-<type>. Si le
script réussit l’installation de la police pour l’identifiant,
le module marque l’identifiant et la police comme INSTALLED
(installé).
1.4 Si une autre police est déjà marquée INSTALLED (installée) pour
l’identifiant, le module rappelle le script avec la commande
do-remove-<type> pour retirer l’ancienne police prioritaire pour
cette identifiant, et retire la marque INSTALLED. Ensuite, le
module rappelle le script avec la commande do-install-<type>
pour installer la police comme prioritaire pour cet identifiant.
En cas de succès de l’installation de la police pour
l’identifiant, le module marque l’identifiant et la police comme
étant INSTALLED.
2.Désenregistrement
Si la police est installée pour l’identifiant, le module
Defoma::Id rappelle le script avec la commande do-remove-<type>
afin de retirer la police pour cet identifiant, et retire la
marque INSTALLED. Ensuite, le module recherche les polices qui
fournissent l’identifiant dans la base de référence. Si
l’identifiant est fourni par d’autres polices, le module
recherche la plus prioritaire d’entre elles, et l’installe comme
mentionné dans la section 1.3 précédente.
2.2 Le module retire l’entrée correspondant à l’identifiant et la
police.
Ces processus permettent de n’avoir qu’une seule police, la plus
appropriée, qui fournit un identifiant donné, de telle sorte qu’il n’y
ait pas de conflit de nom.
FORMAT D’UNE BASE DE RÉFÉRENCE
Une base de référence contient huit champs pour chaque entrée : id
(identifiant), font (police), type, priority (priorité), category
(catégorie), depid, depfont et hints (indications).
Le type représente le type d’une entrée à l’aide d’une combinaison de
lettres. Une base de référence gère des entrées de polices et de
marques. Ce dernier type d’entrée permet d’installer des polices moins
prioritaires pour certains identifiants (qui sont marqués USE -
utilisé), ou pour conserver une police installée pour un certain
identifiant (marqué comme EXCLUDE - exclu). Elles sont supposées être
placées par les utilisateurs, et ne doivent pas être utilisées dans les
scripts de configuration Defoma, juste pour une utilisation interne.
Les entrées de polices contiennent des informations sur certains
identifiants d’une police et peuvent être utilisées dans les scripts.
Le type consiste en deux ou trois lettres. La première lettre
représente le type d’entrée, qui est soit S (pour les polices), soit M
(pour les marques). Si la première lettre est un S, ce qui signifie
qu’il s’agit de l’entrée d’une police, la deuxième lettre peut être un
r (nom réel), un a (un alias) ou un S (pour une police de
substitution). Si la première lettre est un M, ce qui signifie qu’il
s’agit de l’entrée d’une marque, la seconde lettre est soit un u (USE)
soit un x (EXCLUDE). Pour les entrées de polices (dont la première
lettre est un S), si la police et l’identifiant de l’entrée sont
marqués INSTALLED, il y a une troisième lettre, qui est I.
depid et depfont représentent les dépendances envers un identifiant ou
une police. Une police n’est jamais installée, à moins que la police
depfont soit installée pour l’identifiant depid. Les paramètres origine
et depend de defoma_id_register affectent ces champs. Si l’identifiant
d’une police ne dépend d’aucun autre identifiant ou police, alors ces
champs valent « . ».
Le champ hints (indications) représente les indications d’un
identifiant. Il est spécifié par l’argument indications de
defoma_id_register. Vous devez utiliser defoma_id_get_hints pour
accéder à la valeur de ce champ.
Les champs de chaque entrée d’une base de référence sont accessibles
par les champs de l’id-object dont les clefs sont e_id, e_font, e_type,
e_priority, e_category, e_depid, et e_depfont. Par exemple :
$Id->{e_font}->[3] permet d’accéder à la police de la troisième entrée
de l’id-object $ID.
Voici un exemple de base de référence :
# e_id e_font e_type e_priority e_category ...
0 Helvetica a.pfa SrI 20 type1 ...
1 Courier a.pfa Sa 20 type1 ...
2 Times-Roman b.ttf SrI 30 truetype ...
3 Courier b.ttf SaI 30 truetype ...
Cette base montre que a.pfa a deux identifiants : Helvetica comme
RealName et Courier comme Alias. b.ttf a également deux identifiants :
Times-Roman comme RealName et Courier comme Alias.
Deux polices ont le même identifiant Courier, mais cette base de
référence fait pointer Courier vers b.ttf (autrement dit, c’est b.ttf
qui fournit Courier).
FONCTIONS
defoma_id_open_cache permet d’ouvrir une base de référence. Les bases
de référence dépendent des applications. Les scripts de configuration
Defoma d’une application ne peuvent pas ouvrir les bases de référence
d’une autre application. Chaque application peut avoir plusieurs bases
de référence, qui sont identifiées par un suffixe unique pour une
application. Vous pouvez omettre le suffixe pour une application
n’utilisant qu’une seule base de référence. nom_paquet doit être omis
dans la plupart des cas. La fonction retourne un objet id_object
utilisé comme descripteur pour les opérations suivantes.
defoma_id_close_cache permet de fermer une base de référence. En
interne, cela permet d’écrire le contenu d’une base de référence dans
un fichier identifié par id_object.
defoma_id_register permet d’enregistrer une police et un de ses
identifiants dans la base de référence id_object. Vous devez au moins
fournir les paramètres type, font, id et priority. type peut prendre
les valeurs « real », « alias » ou « subst » qui correspondent à des
noms réels (RealName), des Alias, ou des polices de substitution
(Substituted), comme mentionné précédemment. « subst » ne devrait être
utilisé que par le module Defoma::Subst, ce qui ne laisse donc que le
choix « real » et « alias ». Si « alias » est utilisé comme type de
police, alors vous devez spécifier le nom réel de la police dans le
paramètre origine. Il est obligatoire de spécifier l’origine pour les
identifiants ne correspondant pas à un nom réel, parce que ces
identifiants ne doivent pas être installés, à moins que le nom réel de
la police le soit. Si « real » est utilisé comme type, alors vous devez
spécifier les indications de la police.
defoma_id_unregister permet de retirer un identifiant (ou tous) d’une
police d’une base de référence. Si id est spécifié, seul cet
identifiant de la police spécifiée est retiré de la base de référence
id_object. Sinon, tous les identifiants de la police sont retirés.
defoma_id_grep_cache permet de rechercher dans la base de référence
id_object un certain identifiant, police, catégorie, depid ou depfont
et de retourner la liste des index. Le paramètre search-type peut être
« real », « alias », « subst », « font », « installed » ou « mark »
pour limiter les sujets de la recherche. Les paramètres id, font, type,
category, depid et depfont permettent de préciser des valeurs de
recherche pour ces différents champs. Il n’est pas nécessaire de
préciser aucun de ces paramètres.
defoma_id_get_hints permet d’obtenir les indications de l’index
spécifié dans la base de référence id_object. Si l’index d’un Alias ou
d’une police de substitution (Substituted) est spécifié, cette fonction
retourne les indications de la police dont le nom réel (RealName) est
spécifié par le paramètre origine de defoma_id_register lorsque cet
alias ou cette police de substitution a été enregistré.
defoma_id_set permet de faire fournir un id à une police, ou d’empêcher
une police de fournir un identifiant. Le paramètre flag peut valoir
install ou exclude. defoma_id_unset permet de supprimer le drapeau de
l’identifiant et de la police spécifiés.
EXEMPLES
# Ouvre une base de référence avec « test » comme suffixe.
$Id = defoma_id_open_cache(’test’);
# enregistrement des identifiants avec la commande register.
my $police = shift;
my $h = parse_hints_start(’Alias’, @_);
my $nom_police = $h->{FontName};
my @alias = split(/ /, $h->{Alias});
my $pri = $h->{Priority};
defoma_id_register($Id,
type => ’real’,
font => $police,
id => $nom_police,
priority => $pri,
hints => join(’ ’, @_));
foreach my $i (@alias) {
defoma_id_register($Id,
type => ’alias’,
font => $police,
id => $i,
priority => $pri,
origin => $nom_police);
}
# retire des identifiants.
defoma_id_unregister($Id, type => ’alias’, font => $police);
defoma_id_unregister($Id, type => ’real’, font => $police);
# fermeture d’une base de référence
defoma_id_close_cache($Id);
# liste des index de polices ayant « Helvetica » comme identifiant.
my @liste = defoma_id_grep_cache($Id, ’installed’, id => ’Helvetica’);
VOIR AUSSI
defoma(1), defoma-font(1), Defoma::Font(3pm), defoma-subst(1),
Defoma::Subst(3pm)
TRADUCTION
Ce document est une traduction, réalisée par Nicolas François le 29
juillet 2005 et mise à jour par Cyril Brulebois en janvier 2007.
L’équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité.
La version anglaise la plus à jour de ce document est toujours
consultable en ajoutant l’option « -L C » à la commande man.
N’hésitez pas à signaler à l’auteur ou à la liste de traduction
<debian-l10n-french@lists.debian.org>, selon le cas, toute erreur dans
cette page de manuel.