Avant de voir dans le détail les différences, précisons que nos tests ont été réalisés sur Mac OS X 10.5.8, avec la version 5.0.4 d’InDesign CS3, et la police True Type Arial Unicode MS (compatible Unicode v. 2.1). La comparaison a été faite avec la même version d’InDesign sous Windows XP, version 2002, Service Pack 3.

Pour voir en un coup d’oeil quels caractères sélectionne tel ou tel métacaractère GREP, nous avons utilisé le JavaScript de Peter Kahrel grep_mapper. Il permet de choisir des caractères en fonction de leur bloc Unicode, puis de voir aussitôt quels caractères sont effectivement sélectionnés par tel ou tel caractère spécial GREP. Nous reviendrons sûrement sur la présentation de cet outil, mais vous pouvez dès à présent découvrir son fonctionnenment et le télécharger ici.

1) Les Caractères génériques

\d (Chiffre quelconque)

Dans notre environnement, \d sélectionne bien les chiffres arabes 0 à 9 du bloc Latin de base, mais il ignore ces mêmes chiffres dans les alphabets non latins, comme l’arabe, le bangali ou le gujarati. En revanche, il sélectionne les chiffres cerclés 0 à 20 du bloc Alphanumériques cerclés.

\w (Caractère de mot quelconque)

Sous l’environnement Mac, la plage des caractères alphanumériques sélectionnés est beaucoup moins étendue. Parmi les caractères latins, remarquons l’absence du a et du e dans l’o (respectivement blocs Supplément Latin-1 Latin étendu-A) ; le bloc Latin étendu-B est quasiment non reconnu. Le sont aussi les blocs Alphabet phonétique international, Formes numérales, Symboles lettrés et surtout les chiffres et les lettres des alphabets non latins (arabe, grec, cyrillique, copte, asiatiques, etc.). En revanche, lettres et chiffres cerclés sont sélectionnés et l’underscore (_) n’est pas oublié.

\u (Lettre capitale quelconque)

Les lettres capitales du bloc Latin de base sont bien sélectionnées comme les capitales accentuées des blocs Supplément Latin-1 et Latin étendu-A (sauf A et E dans l’O). De nombreuses capitales des blocs Latin étendu-B et Latin additionnel sont absentes. De même, \u ignore les lettres capitales du bloc Symboles lettrés (sauf K, symbole du kelvin) et celles des blocs Grec et Grec additionnel, Cyrillique et copte. En revanche, les vingt-six lettres capitales cerclées sont retournées.

\l (Lettre minuscule quelconque)

En plus du a et du e dans l’o, l’esszett (ß) n’est pas sélectionné, comme de nombreux caractères accentués des blocs Latin étendu-B ou Latin additionnel. En toute logique, les caractères en bas de casse du bloc Alphabet phonétique international sont laissés de côté, commes les quelques symboles lettrés minuscules et la totalité des caractères grec, cyrillique ou copte.

\s (Espace quelconque)

Sûrement l’une des plus grosses lacunes de la sélection. Alors que sous Windows, \s sélectionne les douze espaces existantes dans la liste du sous-menu Espace du menu Caractères spéciaux pour la recherche du panneau Rechercher/Remplacer, sous Mac, \s se limite au caractère sécable obtenu en appuyant sur la barre d’espace. En d’autres termes, il faut préciser à chaque fois le type précis d’espace recherché.

2) Les Complémentaires

Dans la mesure où les caractères génériques sélectionnent moins de caractères sous Mac que sous PC, en toute logique, les complémentaires en sélectionnent plus.

\W (Tout sauf un caractère de mot quelconque)

Signes de ponctuation, symboles, fractions, exposants, indices des blocs Latin de base et Supplément Latin-1 sont normalement sélectionnés. Comme le sont tous les signes diacritiques, les flèches, les symboles monétaires ou mathématiques, voire les signes de ponctuation de l’arabe, du grec ou du bengali par exemple. En revanche, \W considère ici comme n’étant pas un caractère alphanumérique un chiffre ou une lettre des alphabets non latins et un nombre important de lettres accentuées des blocs Latin étendu-B ou Latin additionnel. Et puisque \w interprète un alphanumérique cerclé comme une lettre ou un chiffre, \W ne le sélectionne donc pas. La même logique préside pour la sélection par \W des chiffres romains du bloc Formes numérales.

\U (Tout sauf une lettre capitale quelconque)

Ce que \u ignore comme lettre capitale dans les blocs précités, il est naturel que son contraire les sélectionne ici, mais laisse de côté les lettres cerclées.

\L (Tout sauf une lettre minuscule quelconque)

Inutile de s’étendre. Ce caractère complémentaire reconnaît tous les caractères que \l ne reconnaît pas comme une lettre minuscule. L’esszett, qui n’a pourtant pas de capitale, est ici sélectionné.

\D (Tout sauf un chiffre quelconque)

Si ce complémentaire laisse bien de côté les chiffres 0 à 9 du bloc Latin de base, il sélectionne les mêmes chiffres dans les blocs non latins, comme l’Arabe ou le Bengali.

\S (Tout sauf une espace)

En raison du problème de \s, son complémentaire sélectionne bien les douze espaces non reconnues comme telle par \s.

3) Les Posix

Le comportement des posix est sensiblement identique aux caractères génériques équivalents.

[[:alnum:]]

Ce Posix étant l’équivalent, à quelques nuances près, de \w, on pourrait s’attendre à de mêmes résultats. c’est vrai dans l’ensemble sauf pour des caractères des blocs Latin étendu-B et Latin additionnel où moins de caractères sont reconnus.

[[:alpha:]]

Il ne reconnaît pas l’ensemble des lettres en minuscule ou en capitale des blocs Unicode de notre sélection. On relève des lacunes plus ou moins nombreuses dans tous les blocs latins (excepté Latin de base) et dans ceux des caractères non latins, à savoir Arabe, Grec, Cyrillique et copte, Bengali, Gujarati, etc. Comme \l et \u, le posix sélectionne les lettres cerclées.

[[:digit:]]

Parent pauvre des Posix, il ne reconnaît que les dix chiffres du bloc Latin de base (0 à 9). Aucun des trois chiffres en exposant (SUPERSCRIPT) du bloc Supplément latin-1. Mais il sélectionne les chiffres cerclés.

[[:lower:]]

Dans la mesure où ce posix est l’équivalent de \l, les résultats de ce métacaractère valent tout autant dans le cas présent.

[[:punct:]]

Certainement moins riche que sous Windows, la sélection de ce posix correspond davantage à ce que l’on attend, traditionnellement, du « signe de ponctuation » en ne sélectionnant pas, par exemple, les symboles monétaires ou les fractions du bloc Supplément Latin-1. Mais il ignore totalement les caractères du bloc Unicode Ponctuation.

[[:space:]]

Inutile d’espérer mieux que \s, le posix reconnaît la même espace, à savoir l’espace sécable simple.

[[:upper:]]

Sans trop s’attarder dans les détails, on peut appliquer pour ce posix les résultats de \u pour l’ensemble des blocs Unicode.

[[:word:]]

En plus des lacunes dans les blocs Latin étendu-B, Latin additionnel, on en constate aussi dans les blocs API, Formes numérales, Symboles lettrés, Arabe, Grec, Cyrillique et copte, etc. Ce posix, comme \w, se rattrape dans le bloc des Alphanumériques cerclés.

[[:xdigit:]]

Certainement le moins cohérent des posix puisque l’étendue de la sélection va bien au-delà des caractères rentrant dans la composition des hexadécimaux, avec notamment des lettres accentuées des blocs Supplément Latin-1, Latin étendu-A et étendu-B, Latin additionnel, sans parler des lettres et chiffres cerclés.

[[=a=]]

Les résultats sont pour ainsi dire identiques à six caractères près, dont trois a du bloc API, non reconnus sous environnement Mac. Mais le a surmonté d’un point du bloc Latin étendu-B est reconnu sous Mac.

4) Jeu de caractères

[a-z] (jeu de caractères)

Avec ce jeu de caractères, on constate une autre incongruïté. Sous Mac, [a-z] ne se contente pas de retourner les vingt-six lettres de l’alphabet du bloc Latin de base, autrement dit les lettres minuscules comprises entre a et z inclus. La sélection court aussi sur les blocs Supplément latin, Latin étendu-A, étendu-B et additionnel. Ce qui explique les sélections du posix [[:xdigit:]]



Conclusion

Quantitativement, les métacaractères GREP sous environnement Mac sélectionnent moins de caractères que sous Windows. Dans la pratique, ces différences ont certainement un impact quasi nul, sauf pour le métacaractère Espace quelconque (\s) et l’étendue du Jeu de caractère comme [a-z] qui ne respecte pas la logique Unicode.


Ces différences sont-elles un bien ou un mal ? On regrettera, à coup sûr, les lacunes de \s. On pourra apprécier dans un texte multilingue associant caractères latins et non latins, que \w ne sélectionne que les premiers sous environnement Mac.


Quoi qu’il en soit, on peut parler d’anomalies, car ces différences entre les deux systèmes d’exploitation ne se rencontrent plus sous InDesign CS4. Les métacaractères GREP, sous Mac, se comportent comme sous Windows.