Слишком узкий кернинг с xeCJK

Слишком узкий кернинг с xeCJK

Я пытаюсь набрать японский текст с помощью xelatex и пакета xeCJK. По какой-то причине маленькая кана вызывает странный кернинг в тексте. В следующем примере я получаю слишком узкий интервал между двумя маленькими каной, а также между маленькой каной и знаком препинания. Также очевидно, что они не имеют такой же ширины, как обычная кана.

%!TEX program = xelatex
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{IPAMincho}
\begin{document}
ぎゅっと持った。あっ、そうかも。

あいうえおかきくけこさしすせそ
\end{document}

При компиляции получаю следующее:

Скомпилированный результат

Я пробовал несколько шрифтов с теми же результатами. Я упускаю какие-то важные определения? Ошибаюсь ли я, полагая, что маленькие каны должны быть также моноширинными, как и обычные?

решение1

Похоже, вы обнаружили ошибку xeCJK.

Баг (Выпуск 166) был довольно старым (начиная с версии 2.x). Условные японские стартовые символы (ゃ, ゅ, ょ, っ и т. д.) ошибочно определялись как полные правые знаки препинания для предотвращения переносов строк. Но иногда появлялись дополнительные отрицательные кернинги.

Мы исправим ошибку и xeCJKскоро выпустим новую версию.


Обновлять

Qing Lee загрузил новую версию xeCJK( 2014/12/26 v3.3.0), которая отключает некоторые Kinsoku (禁則) для исправления этой проблемы. Вы можете обновить свой дистрибутив TeX, чтобы использовать новый пакет.

Перед установкой новой версии xeCJKвы можете использовать zxjatypeпакет, оптимизированный для японского набора текста и предоставляющий обходной путь:

% !TEX program = XeLaTeX
% !TEX encoding = UTF-8
\documentclass{article}
\usepackage{xeCJK}
\usepackage{zxjatype}
\setCJKmainfont{IPAMincho}
\begin{document}
ぎゅっと持った。あっ、そうかも。

あいうえおかきくけこさしすせそ
\end{document}

решение2

Мне удалось скомпилировать пример с помощью lualatex. Измененный файл -

\documentclass{article}
\usepackage{luatexja-fontspec}
\setmainjfont{IPAMincho}
\begin{document}
ぎゅっと持った。あっ、そうかも。

あいうえおかきくけこさしすせそ
\end{document}

Строго говоря, luatexja-fontspecздесь это не обязательно, так как fontspecсправится с изменением шрифта так же хорошо. Но это справедливо только для этого маленького примера. В настоящем документе это luatexjaбыло необходимо для обработки переносов строк.

Еще один момент, который стоит упомянуть: в настоящем документе я также использовал пакет ruby. Это работало в xelatex, но для вместо этого следует использовать lualatexпакет .luatexja-ruby

Связанный контент