Polices japonaises

Composez le seul caractère 漢 en Harano Aji Mincho, Hiragino Mincho ProN puis IPAex Mincho, mesurez la largeur : les trois donnent exactement 10,0 pt — un cadratin pleine chasse à 10 pt. C’est pourquoi remplacer une police japonaise ne remet jamais une ligne en mouvement, tout à l’inverse du latin, où changer de police change la justification. La vraie question, quand on choisit une police japonaise dans LaTeX, n’est donc pas son allure mais si elle est réellement présente sur la machine d’en face, et si elle est bien incorporée au PDF. Cette page établit par la mesure quelles polices japonaises TeX Live 2024 possède à coup sûr, puis traite leur désignation sous LuaLaTeX, XeLaTeX et (u)pLaTeX, et la vérification de l’incorporation avec pdffonts.

Quelles polices japonaises sont garanties présentes dans TeX Live

Seules trois lignées sont livrées avec TeX Live — Harano Aji, IPA et IPAex — et Noto CJK ni Source Han n’en font partie. Ce n’est pas une supposition : c’est ce qu’affiche kanji-config-updmap-sys status. Lancée sous TeX Live 2024, la commande indique haranoaji comme réglage courant et énumère haranoaji, ipa et ipaex comme familles en attente. Des polices commerciales comme Hiragino ou Morisawa restent utilisables si elles sont installées sur le système, mais TeX Live ne les distribue pas.

terminal
$ kanji-config-updmap-sys status
CURRENT family for ja: haranoaji (variant: -04)
Standby family : haranoaji
Standby family : ipa
Standby family : ipaex

# asking for a font that is not installed fails loudly
$ lualatex noto.tex
luaotfload | db : Reload initiated; reason: Font "NotoSerifCJKJPRegular" not found.
! Package fontspec Error: The font "NotoSerifCJKJPRegular" cannot be found.

Cette frontière casse réellement des documents. Un fichier minimal écrit avec \usepackage[noto]{luatexja-preset}, passé dans LuaLaTeX, s’est arrêté sur ! Package fontspec Error: The font "NotoSerifCJKJPRegular" cannot be found. — le nom de préréglage existe, mais sans la police réelle cela s’arrête là. Donc pour un manuscrit remis à un coauteur ou à une revue, indiquer haranoaji (ou ipaex) est le seul choix sûr. Pour utiliser Noto CJK ou Source Han, il faut installer la police séparément et communiquer ce prérequis à l’autre partie.

PoliceOrigineLivrée avec TeX Live 2024 ?
Harano AjiPolice libre de Masamichi Hosoda, renumérotant les CID de Source Han vers Adobe-Japan1Oui — le défaut ; 7 graisses de Mincho et 7 de Gothic, réparties entre haranoaji et haranoaji-extra
IPAexPolice libre distribuée par l’agence japonaise IPAOui — ipaexm.ttf (Mincho) et ipaexg.ttf (Gothic) ; défaut avant TeX Live 2020
Noto CJK / Source HanPolices pan-CJK open source publiées par Google et AdobeNon — seules les cartes de fontes sont livrées ; les polices doivent être installées à part
HiraginoPolices commerciales fournies avec macOSNon — disponibles seulement sous macOS, appelées via des préréglages comme hiragino-pron
MorisawaPolices commerciales de Morisawa, standard de l’impression commercialeNon — une licence doit être achetée ; des préréglages comme morisawa-pr6n existent

Mincho et Gothic — basculer avec \textmc et \textgt

La composition japonaise repose sur deux familles. Mincho a des horizontales fines, des verticales épaisses et de petits terminaux triangulaires au bout des traits — les uroko, « écailles » — ce qui en fait l’équivalent d’une sérif occidentale ; elle porte le corps du texte. Gothic présente des traits presque uniformes et sans terminaux, équivalent d’une sans-serif, et convient aux titres, emphases, légendes et libellés dans figures et tableaux. Le basculement suit les conventions des commandes de fontes occidentales : les déclaratifs \mcfamily / \gtfamily et les commandes à portée d’argument \textmc{...} / \textgt{...}. Ici mc abrège mincho et gt abrège gothic.

latex
本文は明朝体で組みます。\textgt{ここだけゴシック体}で強調できます。

{\gtfamily この波括弧の中はすべてゴシック体になります。}

見出しなどは \textbf{太字} にすると、和文では自動的にゴシック体になります。

C’est ici que le japonais s’écarte décisivement du latin : le traitement du gras. Le Mincho japonais n’a pas de graisse grasse par défaut, si bien que \bfseries et \textbf{} sont en pratique redirigés vers un passage en Gothic (même les défauts de LuaTeX-ja pointent la série grasse des deux familles vers le medium de Gothic). Le japonais n’a par ailleurs pratiquement aucune notion d’italique ou d’oblique : les glyphes penchés à l’occidentale ne sont pas fournis. \textmc et \textgt ne déplacent que la famille ; la graisse (series) et la forme (shape) en sont indépendantes. Certaines classes et certains paquets peuvent être réglés pour que \rmfamily / \sffamily basculent aussi Mincho / Gothic — dans LuaTeX-ja, l’option match de luatexja-fontspec.

Au-delà de ces deux familles existent les styles au pinceau. Kaisho est l’écriture régulière « en blocs », tracée trait par trait en levant le pinceau ; Gyosho est la semi-cursive fluide, aux traits liés et légèrement abrégés. On les trouve sur les certificats, dans les allocutions officielles et sur les invitations, partout où l’on veut une tonalité traditionnelle. Il y a aussi Maru Gothic, le Gothic arrondi, accessible par \mgfamily / \textmg{...}. Mais peu de polices contiennent réellement un Gothic arrondi, et Harano Aji n’en a pas : même avec l’option deluxe vue plus bas, seuls Mincho et Gothic sont incorporés. Pour les articles et livres courants, ces deux-là restent l’essentiel.

Harano Aji — Source Han renumérotée vers Adobe-Japan1

Harano Aji, c’est Source Han (Source Han Serif et Source Han Sans) dont les CID ont été renumérotés vers Adobe-Japan1. Le README fourni le dit en une phrase : les polices ont été obtenues en remplaçant les CID Adobe-Identity-0 (AI0) par des CID Adobe-Japan1 (AJ1). C’est le point décisif : il ne s’agit pas d’« une autre police d’aspect voisin » mais d’une renumérotation. Le monde de (u)pLaTeX et dvipdfmx appelle les caractères par numéro de CID ; une police non numérotée en Adobe-Japan1 ne peut donc pas emprunter le flux de travail traditionnel. C’est exactement pour cela que Noto CJK ne pouvait pas devenir simplement le défaut.

L’auteur est Masamichi Hosoda. Selon le README, il y a en tout 14 fontes — sept graisses pour Mincho et sept pour Gothic — que TeX Live répartit sur deux paquets. haranoaji contient les sept utilisées par les préréglages (Mincho Light, Regular, Bold ; Gothic Regular, Medium, Bold, Heavy), et haranoaji-extra les sept autres (Mincho ExtraLight, Medium, SemiBold, Heavy ; Gothic ExtraLight, Light, Normal). Un ls sur les deux répertoires montre cette répartition telle quelle, sous forme de fichiers.

terminal
$ ls texmf-dist/fonts/opentype/public/haranoaji/
HaranoAjiGothic-Bold.otf    HaranoAjiGothic-Heavy.otf
HaranoAjiGothic-Medium.otf  HaranoAjiGothic-Regular.otf
HaranoAjiMincho-Bold.otf    HaranoAjiMincho-Light.otf
HaranoAjiMincho-Regular.otf

$ ls texmf-dist/fonts/opentype/public/haranoaji-extra/
HaranoAjiGothic-ExtraLight.otf  HaranoAjiGothic-Light.otf
HaranoAjiGothic-Normal.otf      HaranoAjiMincho-ExtraLight.otf
HaranoAjiMincho-Heavy.otf       HaranoAjiMincho-Medium.otf
HaranoAjiMincho-SemiBold.otf

Le Mincho du corps est par défaut HaranoAjiMincho-Regular, le Gothic HaranoAjiGothic-Medium. L’argument pratique en faveur de Harano Aji ne tient pas qu’à la qualité : le PDF obtenu est d’un ordre de grandeur plus petit que le même texte composé en IPAex. Pour un document de sept caractères seulement, le PDF Harano Aji faisait 5 617 octets et le PDF IPAex 155 880 octets. pdffonts les signale respectivement comme CID Type 0C (Harano Aji, OpenType/CFF) et CID TrueType (IPAex). Les fichiers de police source pèsent 6,4 Mo et 7,8 Mo — sensiblement autant — de sorte que l’écart vient non de la police mais du format et de l’efficacité du sous-ensemble.

Désigner les polices sous LuaLaTeX et XeLaTeX — luatexja-preset et zxjafont

Sur un moteur Unicode, le plus court est de passer un nom de préréglage à luatexja-preset, issu de LuaTeX-ja (luatexja), sous LuaLaTeX, ou zxjafont sous XeLaTeX. L’un comme l’autre établit l’appariement « Mincho c’est ceci, Gothic c’est cela » en un seul mot. Les noms de préréglages concordent largement : haranoaji, ipa/ipaex, hiragino-pro/hiragino-pron, noto/noto-otc, sourcehan, ms, yu-win10, morisawa-pr6n, kozuka-pr6n et d’autres sont définis. À la mesure, un document avec \usepackage[haranoaji]{zxjafont} a compilé sans accroc sous XeLaTeX et incorporé un sous-ensemble de HaranoAjiMincho-Regular.

document.tex
% LuaLaTeX
\documentclass{ltjsarticle}
\usepackage[haranoaji]{luatexja-preset}
% add deluxe for multiple weights of Mincho and Gothic:
% \usepackage[haranoaji,deluxe]{luatexja-preset}

% XeLaTeX
% \documentclass[a4paper]{bxjsarticle}
% \usepackage[haranoaji]{zxjafont}

\begin{document}
本文は明朝体。\textgt{見出しはゴシック体}\end{document}

Ajouter l’option deluxe permet d’utiliser plusieurs graisses de Mincho et de Gothic dans le corps. À la mesure, le PDF issu de \usepackage[haranoaji,deluxe]{luatexja-preset} a incorporé quatre fontes : HaranoAjiMincho-Regular, HaranoAjiMincho-Bold, HaranoAjiGothic-Regular et HaranoAjiGothic-Medium. Notez que les classes ltjs*, comme ltjsarticle, composent le japonais légèrement plus petit que le texte latin — le message Package luatexja-preset Warning: Japanese fonts will be scaled by 0.924715. à la compilation, c’est précisément cela, et c’est voulu, non un problème.

Pour nommer une police directement plutôt que d’utiliser un préréglage, chargez luatexja-fontspec sous LuaLaTeX. Ses commandes répondent à celles de fontspec : \setmainjfont (Mincho, fonte du corps), \setsansjfont (Gothic), \setmonojfont (monospace), \newjfontfamily, et \jfontspec pour un usage ponctuel. Les options s’écrivent comme dans fontspecScale=, Path=, etc. — de sorte que ce que l’on sait du côté latin se transpose. On peut indiquer un nom de police ou un nom de fichier ; en collaboration, le nom de fichier (HaranoAjiMincho-Regular.otf) est la forme la plus sûre.

document.tex
\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec}
% naming files, not family names, keeps it reproducible
\setmainjfont{HaranoAjiMincho-Regular.otf}
\setsansjfont{HaranoAjiGothic-Medium.otf}
% \setmainjfont{Hiragino Mincho ProN}   % macOS only
\begin{document}
明朝の本文。\textsf{ゴシックの見出し}\textbf{太字}\end{document}

Désigner les polices sous (u)pLaTeX + dvipdfmx — kanji-config-updmap et le paquet otf

Dans le (u)pLaTeX traditionnel, c’est un réglage système, et non le document, qui décide de ce qui est incorporé. Les métriques (largeurs de caractères) des polices japonaises servant à la composition sont fixées virtuellement, et aucun nom de police réelle n’apparaît dans le source. L’outil qui modifie ce réglage est kanji-config-updmap, fourni avec TeX Live : il réécrit les cartes de fontes (updmap.cfg) que consulte dvipdfmx et remplace d’un coup les polices réelles de Mincho et Gothic. Pour tous les utilisateurs, kanji-config-updmap-sys (droits administrateur requis) ; pour vous seul, kanji-config-updmap-user, le réglage utilisateur primant.

terminal
# show the current setting and the candidates found on this system
kanji-config-updmap-sys status

# switch to Harano Aji (the TeX Live default)
sudo kanji-config-updmap-sys haranoaji

# other examples
sudo kanji-config-updmap-sys ipaex
sudo kanji-config-updmap-sys hiragino-pron

# use the JIS X 0213:2004 glyph shapes
sudo kanji-config-updmap-sys --jis2004 haranoaji

# embed nothing, or auto-detect what is installed
sudo kanji-config-updmap-sys nofont
sudo kanji-config-updmap-sys auto

status liste le réglage courant et les polices candidates trouvées sur le système. auto cherche une police commerciale ou libre utilisable, la configure pour l’incorporation, et revient à l’absence d’incorporation s’il n’en trouve aucune. --jis2004 choisit les formes JIS X 0213:2004 (« 2004 JIS ») ; le variant: -04 de la sortie status ci-dessus désigne le même choix. S’il faut des polices différentes par document plutôt que par machine, le paquet pxchfon permet de faire ce choix depuis le préambule sans toucher au réglage système.

Pour utiliser plusieurs familles et graisses dans le corps et atteindre le jeu de caractères élargi Adobe-Japan1, chargez le paquet otf (japanese-otf) de Shuzaburo Saito — sous upLaTeX, nommez explicitement le moteur : \usepackage[uplatex]{otf}. Adobe-Japan1 est la collection standard de glyphes des polices japonaises ; elle comprend variantes, symboles et anciens caractères qui ne tiennent pas dans JIS X 0208. Deux commandes désignent directement les caractères : \UTF{...} prend un point de code Unicode (hexadécimal à quatre ou cinq chiffres) et \CID{...} un numéro CID Adobe-Japan1 en décimal. On peut ainsi produire de façon fiable, par sa valeur de code, un glyphe difficile à saisir — un ancien caractère dans un nom propre, par exemple. La même fonctionnalité existe sous LuaTeX-ja avec luatexja-otf.

latex
\UTF{9DD7}\CID{7652}飾区
葛城市、\CID{1481}城駅

Les options d’otf méritent aussi d’être connues. deluxe déverrouille sept fontes en tout — trois graisses de Mincho, trois de Gothic et une de Maru Gothic — et ajoute \mgfamily / \textmg{...} pour le Gothic arrondi. expert active des glyphes supplémentaires comme la ponctuation verticale et les variantes, et jis2004 choisit les formes 2004 JIS. Utiliser réellement plusieurs graisses suppose que des polices réelles correspondantes soient configurées côté kanji-config-updmap. Les encodages de fontes japonaises sont par ailleurs JY3 pour l’horizontal et JT3 pour le vertical.

Vérifier avec pdffonts que la police est bien incorporée

Donnez un PDF à pdffonts et il affiche une ligne par police incorporée. Trois colonnes comptent : emb vaut yes si la police est incorporée, sub vaut yes si un sous-ensemble a été extrait (seuls les glyphes utilisés), et uni indique la présence d’une correspondance inverse vers Unicode. De plus, un préfixe de six majuscules du type NWYKMN+ devant le nom de la police signale un sous-ensemble. Sur chacune des voies essayées avec TeX Live 2024, ces six lettres sont apparues sans exception.

Une dernière chose mérite confirmation par la mesure : des voies différentes donnent le même résultat. Prenez le même source jlreq, traitez-le une fois par uplatexdvipdfmx et une fois directement par lualatex, puis regardez pdffonts : les deux ont incorporé un sous-ensemble de HaranoAjiMincho-Regular. L’effet du sous-ensemble est spectaculaire : la HaranoAjiMincho-Regular.otf d’origine pèse 6,4 Mo, alors que le PDF d’un document de sept caractères ne fait que 5 617 octets. Bref, il n’y a guère lieu de craindre qu’un PDF japonais destiné à la diffusion n’enfle à plusieurs mégaoctets.

terminal
# same jlreq source, two routes, same embedded font
$ uplatex doc.tex && dvipdfmx doc.dvi && pdffonts doc.pdf
UCCFIG+HaranoAjiMincho-Regular-Identity-H  CID Type 0C  yes yes
KXFDXT+LMRoman9-Regular                    Type 1C      yes yes

$ lualatex doc.tex && pdffonts doc.pdf
NWYKMN+HaranoAjiMincho-Regular             CID Type 0C  yes yes
PNHTXY+LMRoman9-Regular                    CID Type 0C  yes yes

Enfin, faites cette vérification vous-même, à chaque fois. Presque tous les retours du type « les caractères ne s’affichent pas » ou « c’est illisible » à propos d’un PDF japonais remontent à un PDF dont les polices n’ont jamais été incorporées. Un réglage kanji-config-updmap-sys nofont resté en place, ou une option de non-incorporation quelque part dans le préambule, se traduit par no dans la colonne emb de pdffonts. Un seul passage de pdffonts avant l’envoi supprime toute cette catégorie d’incidents.