Defoma::Common(3) module Defoma fournissant diverses fonctions.

SYNOPSIS

use Defoma::Common;

$h = parse_hints_start( indications... );

$hsub = parse_hints_subhints( table_hachage_indications, police );

$hsub = parse_hints_subhints_inherit( table_hachage_indications, police );

parse_hints_cut( table_hachage_indications, types_indications... );

parse_hints_cut_except( table_hachage_indications, types_indications... );

@hints = parse_hints_build( table_hachage_indications );

$charset = get_charset( xencoding );

$xencoding = get_xencoding( charset, encoding );

@XLFDs = get_xlfd_of_font( police, level => niveau, face => police );

my $num = weight_ascii2integer( chaîne_graisse );

my $num = weight_a2i( chaîne_graisse );

DESCRIPTION

parse_hints_start est une fonction qui permet de convertir des indications contenues dans un tableau vers une table de hachage. Une indication consiste en un type et une ou plusieurs valeurs. Voici des exemples d'indication sous la forme d'un tableau.

--FontName Helvetica-BoldItalic --Family Helvetica --GeneralFamily SansSerif --Weight Bold --Shape NoSerif Italic --Charset ISO8859-1

Dans cet exemple, FontName, Family, GeneralFamily, Weight, Shape et Charset sont les types des indications. Les éléments commençant par deux tirets « -- » sont considérés comme des types d'indication. Les autres sont considérés comme les valeurs. La fonction convertit ce tableau en une table de hachage décrite de la façon suivante :

FontName => 'Helvetica-BoldItalic',
Family => 'Helvetica',
GeneralFamily => 'SansSerif',
Weight => 'Bold',
Shape => 'NoSerif Italic',
Charset => 'ISO8859-1'

Vous voyez que les types d'indication sont utilisés comme clés de hachage, et que la forme (Shape) a plus d'une valeur : NoSerif et Italic. Si un type d'indication a plus d'une valeur, alors elles sont combinées en une unique chaîne, séparées par une espace.

parse_hints_subhints est une fonction qui permet d'obtenir la clé de hachage d'une indication secondaire pointée par police dans la table de hachage table_hachage_indications. Voici un exemple de table de hachage d'indications :

$h = {Inherit => 'Charset Weight',
      FontName => 'Helvetica',
      Charset => 'ISO8859-1',
      Weight => 'Medium',
      Shape => 'Upright',
      FontName1 => 'Helvetica-Bold',
      Weight1 => 'Bold',
      FontName2 => 'Helvetica-Unicode',
      Charset2 => 'ISO10646-1'};

Vous voyez dans cet exemple que certains types d'indication sont numérotés. parse_hints_subhints extrait l'indication ayant le bon numéro. Par exemple, vous pouvez extraire les indications FontName et Charset non numérotées avec :

$hsub = parse_hints_subhints($h, 0);

et le contenu de $hsub sera :

FontName => 'Helvetica',
Charset => 'ISO8859-1',
Weight => 'Medium',
Shape => 'Upright'

Si vous mettez à 1 le deuxième paramètre de parse_hints_subhints, alors le contenu de $hsub sera :

FontName => 'Helvetica-Bold',
Weight => 'Bold'

Notez que le numéro de chaque type d'indication est retiré.

parse_hints_subhints_inherit est presque identique à parse_hints_subhints, à la différence que les indications des types spécifiés dans l'indication de type « Inherit » sont héritées. Voici les résultats de parse_hints_subhints_inherit avec les valeurs 1 et 2 comme second paramètre dans l'exemple donné avec parse_hints_subhints.

FontName => 'Helvetica-Bold',
Weight => 'Bold',
Charset => 'ISO8859-1'
FontName => 'Helvetica-Unicode',
Weight => 'Medium',
Charset => 'ISO10646-1'

parse_hints_cut permet de retirer d'une table de hachage d'indications les types d'indication (et leur valeur) spécifiés par types_indications. Cette fonction est supposée être utilisée conjointement avec parse_hints_build.

parse_hints_cut_except permet de retirer d'une table de hachage d'indications tous les types d'indication (et leur valeur), sauf ceux spécifiés par types_indications. Cette fonction est supposée être utilisée conjointement avec parse_hints_build.

parse_hints_build permet de convertir une table de hachage d'indications en un tableau.

get_charset est une fonction qui permet de convertir un champ X-RegistryEncoding spécifié par xencoding en un Charset. X-RegistryEncoding correspond aux deux derniers éléments d'un XLFD [ NdT : X Logical Font Description, une chaîne de 15 champs séparés par des tirets qui permet de décrire une police ], comme iso8859-1 ou jisx0208.1983-0. Les valeurs de retour pour ces exemples sont respectivement ISO8859-1 et JISX0208.

get_xencoding permet de convertir un jeu de caractères (« Charset ») et un codage (« Encoding ») spécifiés par charset et encoding en un X-RegistryEncoding. encoding est en règle générale omis.

weight_ascii2integer est une fonction qui permet de convertir une graisse de police (Weight) sous forme de chaîne - comme Bold (gras) ou Medium (moyen) - en une valeur numérique (un entier). Medium a toujours la valeur 0, et plus la police est grasse, plus ce nombre est élevé. Par exemple, Bold vaut +2, et Light (léger) vaut -2. weight_a2i est un raccourci pour weight_ascii2integer.

get_xlfd_of_font permet d'obtenir un tableau de XLFD pour une police spécifiée par police. Vous pouvez contrôler la quantité de XLFD obtenue avec les options niveau et face. Le niveau doit être soit « min », soit « normal », ou encore « max ». Lorsque min est spécifié, les XLFD non italique ou gras enregistrés dans la catégorie « xfont » sont retournés. Lorsque normal est spécifié, les XLFD étant gras ou italique (mais pas italique à l'envers) enregistrés dans la catégorie « xfont » sont retournés. Lorsque max est spécifié, tous les XLFD générés sont retournés.

EXEMPLES

$h = parse_hints_start(@_);
@shape = split(/ /, $h->{Shape});
@alias = split(/ /, $h->{Alias});
$priority = $h->{Priority};
$realname = $h->{FontName};
$realname =~ s/ .*//;
parse_hints_cut($h, 'Priority', 'FontName', 'Charset');
@hints = parse_hints_build($h);

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 <[email protected]>, selon le cas, toute erreur dans cette page de manuel.