"Linux Libertine O" ne marche pas sous OS X (Bug #293)


Added by Akim Demaille about 6 years ago. Updated over 4 years ago.


Status:WontFix Start date:07/17/2014
Priority:Normal Due date:
Assignee:Alexis Bienvenüe % Done:

100%

Category:-
Target version:1.3.0

Description

Bonjour,

En mode texte, AMC code en dur le nom de sa police dans le fichier LaTeX généré, "Linux Libertine O". Et ça ne marche pas. Il y a une tonne de commentaire sur StackOverflow au sujet de cette police, qui pose manifestement pas mal de problème (en fait mon kpsearch se plaint même de la présence d'espace dans le nom de fichier comme étant invalide).

Il y a une réponse précieuse de J. Wright ici :

http://tex.stackexchange.com/questions/127240/how-to-install-a-font-on-mactex-2013

(c'est aujourd'hui celle qui est tout en bas).

La partie importante de son message est :

XeTeX uses system-dependent code to load fonts, hence it's quite
possible to see differences between how Windows and Mac installations
find fonts. What will always work is looking not for the 'friendly'
name of the font but the font file name:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Numbers=OldStyle]{LinLibertine_R.otf}
\begin{document}
Testing, 1, 2, 3.
\end{document}

J'ai essayé, et ça marche sur OS X. Je n'ai pas vérifié sur d'autres plateformes, mais quelqu'un comme Joseph Wright a forcément raison :) Je propose donc le patch suivant :

--- /tmp/plain.pm    2014-07-17 12:50:42.000000000 +0200
+++ /opt/local/lib/perl5/vendor_perl/AMC/Filter/plain.pm    2014-07-17 12:51:25.000000000 +0200
@@ -74,7 +74,7 @@
       {'latexengine'=>'xelatex','xltxtra'=>1,
        'questionblocks'=>1,'shufflequestions'=>1,
        'completemulti'=>1,
-       'font'=>'Linux Libertine O',
+       'font'=>'LinLibertine_R.otf',
        'arabicfont'=>'Rasheeq',
        'defaultscoringm'=>'haut=2',
        'l-name'=>__("Name and surname"),

Associated revisions

Revision 1545:443ea7c1a4c2
Added by Alexis Bienvenüe about 6 years ago

AMC-TXT/MacOSX compatibility.
AMC-TXT filter now refers to Linux Libertine font as 'LinLibertine_R.otf'
instead of 'Linux Libertine O', for MacOSX compatibility. Closes #293.

Revision 1712:3b2905073ae0
Added by Alexis Bienvenüe over 5 years ago

Set back "Linux Libertine O" as the default font for AMC-TXT, so that bold and italic texts are displayed properly. Refs #293.

History

Updated by Alexis Bienvenüe about 6 years ago

Est-ce que ça marche en utilisant l'option générale suivante dans le fichier AMC-TXT (au lieu de mofifier le programme lui-même) ?

Font: LinLibertine_R.otf

Updated by Akim Demaille about 6 years ago

Bonjour Alexis,

Alexis Bienvenüe wrote:

Est-ce que ça marche en utilisant l'option générale suivante dans le fichier AMC-TXT (au lieu de mofifier le programme lui-même) ?
[...]

Ça marche sûrement, si cette option existe. J'ai même pas essayé puisque la recherche dans la doc ne donnait rien. Toujours est-il que ça paraît plus pertinent de la part d'amc d'utiliser les noms portables plutôt que de demander aux utilisateurs de penser à modifier la font par défaut. Je maintiens donc ma suggestion de patch.

Updated by Alexis Bienvenüe about 6 years ago

Je suis d'accord avec vous (j'ai intégré votre modification). Je cherchais simplement un moyen de contourner le problème en attendant une mise à jour d'AMC sur MacOSX.

Updated by Akim Demaille about 6 years ago

Bonjour Alexis,

Merci pour la réaction rapide.

Alexis Bienvenüe wrote:

Je suis d'accord avec vous (j'ai intégré votre modification). Je cherchais simplement un moyen de contourner le problème en attendant une mise à jour d'AMC sur MacOSX.

Ça va, éditer un bout de Perl ne me fait pas peur :) Il y a cependant deux soucis que je n'ai pas traités :
  • étendre la documentation pour parler de Font:
  • maintenant j'ai un warning inquiétant mais inoffensif au sujet de LinLibertine_R.otf: la procédure utilisée par AMC pour savoir si cette police existe échoue sous ce nom, d'où une fenêtre pop-up pas sympa. Mais pourtant ça marche.

Je ne sais pas quelle est votre procédure pour tester la présence de cette police, mais ceci marche :

$ kpsewhich LinLibertine_R.otf
/opt/local/share/texmf-texlive/fonts/opentype/public/libertine/LinLibertine_R.otf

Updated by Alexis Bienvenüe about 6 years ago

Applied in changeset hg:443ea7c1a4c2.

  • % Done changed from 0 to 100
  • Status changed from New to Resolved

Updated by Alexis Bienvenüe about 6 years ago

éditer un bout de Perl ne me fait pas peur :)

Je pensais aux autres utilisateurs.

la procédure utilisée par AMC pour savoir si cette police existe échoue sous ce nom, d'où une fenêtre pop-up pas sympa. Mais pourtant ça marche.

J'ai affiné la procédure dans le commit hg:443ea7c1a4c2 qui intègre votre modification. Ceci devrait enlever l'avertissement.

Updated by Akim Demaille about 6 years ago

Alexis Bienvenüe wrote:

éditer un bout de Perl ne me fait pas peur :)

Je pensais aux autres utilisateurs.

Ah, désolé, comme je n'avais pas vu d'autres messages à ce sujet…

la procédure utilisée par AMC pour savoir si cette police existe échoue sous ce nom, d'où une fenêtre pop-up pas sympa. Mais pourtant ça marche.

J'ai affiné la procédure dans le commit hg:443ea7c1a4c2 qui intègre votre modification. Ceci devrait enlever l'avertissement.

FWIW Perl fournit une fonction quotemeta, mais je suppose que ça ou "\Q$_\E" est une question de style.

Je n'ai pas le context du patch sous les yeux, mais le print ressemble à du debug qui traîne.

Updated by Alexis Bienvenüe about 6 years ago

Merci pour votre relecture instructive : j'ai corrigé (et appris des choses).

Updated by Akim Demaille about 6 years ago

Alexis Bienvenüe wrote:

Merci pour votre relecture instructive : j'ai corrigé (et appris des choses).

Dans ce cas là, j'en ai une dernière pour vous :) D'une part le $_ est implicite :

$ perl -e 'print map { quotemeta } (".", "|", "\$"), "\n";'   
\.\|\$\

et d'autre part map admet une syntaxe plus légère pour les noms de fonction :

$ perl -e 'print map(quotemeta, ".", "|", "\$"), "\n";' 
\.\|\$

Et finalement, grep permet de filtrer les lignes directement depuis un fichier. C'est moins efficace que de sortir au premier match, c'est vrai. Mais si le fichier est court…

$ perl -e 'my $r = join("|", map(quotemeta, ".", "|", "\$"));
print grep(/$r/, <STDIN>), "\n";' << EOF
1
.
|
$
e
EOF
.
|
$

($ok = grep... dans votre cas).

Updated by Anirvan Sarkar almost 6 years ago

  • Target version set to 1.3.0
  • Assignee set to Alexis Bienvenüe
  • Status changed from Resolved to Closed

Updated by Alexis Bienvenüe over 5 years ago

Je m'aperçois finalement que le correctif rend impossible l'utilisation de textes en italique ou gras (voir Test version, AM-TXT bold and italic options do not work), car il fixe la version de la police de caractères à utiliser avec le _R.
Ceci n'est pas acceptable.
Voyez-vous une autre manière de résoudre ce problème?

  • Status changed from Closed to New

Updated by Akim Demaille over 5 years ago

Salut Alexis,

Alexis Bienvenüe wrote:

Je m'aperçois finalement que le correctif rend impossible l'utilisation de textes en italique ou gras (voir Test version, AM-TXT bold and italic options do not work), car il fixe la version de la police de caractères à utiliser avec le _R.

Arg, mince… Je n'avais pas remarqué.

Ceci n'est pas acceptable.

Bien sûr.

Voyez-vous une autre manière de résoudre ce problème?

En cherchant un peu, j'ai trouvé ça : http://tex.stackexchange.com/questions/31739/specify-different-fonts-for-bold-and-italic-with-fontspec . Du coup, après un petit `ls` pour voir les fichiers sur ma machine, je propose:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[
  Ligatures=TeX,
  Numbers=OldStyle,
  BoldFont={LinLibertine_RB.otf}, 
  ItalicFont={LinLibertine_RI.otf},
  BoldItalicFont={LinLibertine_RBI.otf}
  ]{LinLibertine_R.otf}
\begin{document}
Testing, 1, 2, 3.

\emph{Testing, 1, 2, 3.}

\textbf{Testing, 1, 2, 3.}

\textbf{\emph{Testing, 1, 2, 3.}}
\end{document}

Updated by Alexis Bienvenüe over 5 years ago

Est-ce que ça marche en remplaçant le \setmainfont par le code suivant ?

\usepackage{libertine}
\usepackage[T1]{fontenc}

Ou avec biolinum au lieu de libertine ?

Updated by Akim Demaille over 5 years ago

Alexis Bienvenüe wrote:

Est-ce que ça marche en remplaçant le \setmainfont par le code suivant ?

Non : pas d'italique etc.

Ou avec biolinum au lieu de libertine ?

Cette fois, oui.

\documentclass{article}
\usepackage{biolinum}
\usepackage[T1]{fontenc}

\begin{document}
Testing, 1, 2, 3.

\emph{Testing, 1, 2, 3.}

\textbf{Testing, 1, 2, 3.}

\textbf{\emph{Testing, 1, 2, 3.}}
\end{document}

Updated by Joël Brogniart over 5 years ago

Ah, voilà qui permet de résoudre mon problème. Sur mon installation (OS X 10.10.3, AMC @ commit 7fc79da), si j'utilise le fichier source suivant, les parties en gras et italique apparaissent correctement.

# AMC-TXT source
# Examen de Truc, session 1, janvier 2015

PaperSize: A4
Lang: FR
#OK 
#Font: Helvetica
Font: Linux Libertine O

Title: Examen de Truc, session 1, janvier 2015

Presentation:

Veuillez répondre aux questions [*ci-dessous*] [_du mieux que vous pouvez_].

* Quelle est la capitale du [*Cameroun*] ?
+ Yaoundé
- Douala
- Kribi

** Parmi les nombres suivants, lesquels sont [_positifs_] ?
+2
- -2
+ 10

Il faudrait que je fasse un peu de nettoyage sur ma machine pour voir quelle est la version de la police qui est prise en compte (celle que j'ai installé dans OS X ou celle installée avec le package TexLive).

Updated by Alexis Bienvenüe over 5 years ago

Comment avez-vous installé la police Linux Libertine ? D'après les références ci-dessus, il semblerait que ce ne soit pas évident de la faire fonctionner avec LaTeX…

Updated by Akim Demaille over 5 years ago

Alexis Bienvenüe wrote:

Comment avez-vous installé la police Linux Libertine ? D'après les références ci-dessus, il semblerait que ce ne soit pas évident de la faire fonctionner avec LaTeX…

C'est pas clair auquel d'entre nous vous parlez. Au cas où :

$ port provides /opt/local/share/texmf-texlive/tex/latex/libertine/TS1LinuxLibertineT-TLF.fd
/opt/local/share/texmf-texlive/tex/latex/libertine/TS1LinuxLibertineT-TLF.fd is provided by: texlive-fonts-extra

Updated by Joël Brogniart over 5 years ago

Alexis Bienvenüe wrote:

Comment avez-vous installé la police Linux Libertine ? D'après les références ci-dessus, il semblerait que ce ne soit pas évident de la faire fonctionner avec LaTeX…

Je suppose que c'est pour moi. Je viens juste de voir la question.

J'ai installé la police dans le dossier /Library/Fonts (voir Installation_d'AMC_sous_OS_X) pour qu'elle soit bien prise en compte.

Updated by Alexis Bienvenüe over 4 years ago

  • Status changed from New to WontFix

Also available in: Atom PDF