Несколько шрифтов xeCJK

Несколько шрифтов xeCJK

Я установил основной шрифт для xeCJK на HanWangMingMedium, чтобы иметь доступ к символам старого стиля. Но в результате у меня больше нет доступа к японской кане: в MWE катакана отображается как пробел:

введите описание изображения здесь

Шрифт xeCJK по умолчанию не создает этой проблемы, но не дает мне некоторые символы, которые мне нужны (например, 烝). Как изменить шрифты xeCJK в тексте документа, и как называется шрифт xeCJK по умолчанию?

Возможно, относится к ответу: Я пишу о системах письма. Поэтому мне нужны только отдельные символы. У меня нет длинных разделов китайского текста.

% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{fontspec}
\usepackage{xeCJK}
   \setCJKmainfont{HanWangMingMedium}
\begin{document}

東風フォント

\end{document}

Обновление. Вот хак: представьте, что альтернативный шрифт — это вариант без засечек. Но я все равно хотел бы получить правильное решение.

% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{fontspec}
\usepackage{xeCJK}
   \setCJKmainfont{HanWangMingMedium}
   \setCJKsansfont{AozoraMinchoRegular}

\begin{document}

東風\sf フォント.

\end{document}

решение1

В babel, вы можете переключаться между различными идеографическими алфавитами, включая японский и традиционный китайский:

\documentclass{standalone} % Replace with the real class.
\usepackage[english]{babel}
\usepackage{fontspec}

% A bug in Babel 3.22 requires setting the script= option to CJK and Kana,
% respectively.
\babelprovide{chinese-traditional}
\babelprovide{japanese}

\defaultfontfeatures{Scale = MatchUppercase}
\babelfont{rm}[Scale = 1.0,
               Ligatures = {Common, TeX},
               Language = Default
              ]{Latin Modern Roman}
\babelfont{sf}[Ligatures = {Common, TeX},
               Language = Default]{Latin Modern Sans}
\babelfont[chinese-traditional]{rm}{NotoSerifCJKtc-Regular}
\babelfont[chinese-traditional]{sf}{NotoSansCJKtc-Regular}
\babelfont[japanese]{rm}{NotoSerifCJKjp-Regular}
\babelfont[japanese]{sf}{NotoSansCJKjp-Regular}

\begin{document}

\otherlanguage{chinese-traditional}{東風}
\otherlanguage{japanese}{フォント}

\end{document}

Образец шрифта Noto

Для этого требуется XeLaTeX и babel3.27 или выше. (В babel3.22 необходимо вручную установить Script=CJKи Script=Kanaобойти ошибку.) Я заменилшрифты Noto CJK.

Более простой вариант Babel, который не требует от вас писать \otherlanguageвезде, это ucharclasses. Вы также можете объявить \newfontfamily, задать ему [Script = Kana, Language = Japanese]параметры и выбрать его.

Обновлять

Начиная с 2021 года в LuaLaTeX 1.12 или более поздней версии можно использовать несколько идеографических скриптов. Теоретически вы можете настроить документ на переключение между языками без тегирования. На практике это не работает надежно для китайского и японского языков, поскольку Консорциум Unicode решил использовать одни и те же кодовые точки для кандзи и китайского языка. (Первоначальный грех Unicode заключался в том, что они думали, что смогут втиснуть все в 16 бит.)

В этом конкретном примере, если из японского нам нужны только хиригана и катакана, а все идеографические символы китайские, мы можем babelправильно определить японский, китайский и английский языки:

\documentclass{standalone} % Replace with the real class.
\usepackage[english]{babel}
\usepackage[svgnames, HTML]{xcolor}
\usepackage{fontspec}

% A bug in Babel 3.22 requires setting the script= option to CJK and Kana,
% respectively.
\babelprovide[import, onchar=ids fonts]{japanese}
\babelprovide[import, onchar=ids fonts]{chinese-traditional}

\defaultfontfeatures{ Scale = MatchUppercase,
                      Ligatures=TeX }
\babelfont{rm}
          [Scale = 1.0,
           Ligatures = Common,
           Language = Default
          ]{Latin Modern Roman}
\babelfont{sf}
          [Ligatures = Common,
           Language = Default
          ]{Latin Modern Sans}
\babelfont[chinese-traditional]{rm}
          [Renderer=HarfBuzz, Color=DarkGreen]{NotoSerifCJKtc-Regular}
\babelfont[chinese-traditional]{sf}
          [Renderer=HarfBuzz, Color=DarkGreen]{NotoSansCJKtc-Regular}
\babelfont[japanese]{rm}
          [Renderer=HarfBuzz, Color=NavyBlue]{NotoSerifCJKjp-Regular}
\babelfont[japanese]{sf}
          [Renderer=HarfBuzz, Color=NavyBlue]{NotoSansCJKjp-Regular}

\begin{document}

東風
\textsf{フォント}

\end{document}

Образец Noto CJK

Здесь я задал каждому языку свой цвет, чтобы сделать переключение языков более очевидным.

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