![Несколько шрифтов xeCJK](https://rvso.com/image/392334/%D0%9D%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D1%88%D1%80%D0%B8%D1%84%D1%82%D0%BE%D0%B2%20xeCJK.png)
Я установил основной шрифт для 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}
Для этого требуется XeLaTeX и babel
3.27 или выше. (В babel
3.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}
Здесь я задал каждому языку свой цвет, чтобы сделать переключение языков более очевидным.