Várias fontes xeCJK

Várias fontes xeCJK

Eu configurei minha fonte principal para xeCJK como HanWangMingMedium, para poder acessar caracteres de estilo antigo. Mas, com isso, não tenho mais acesso ao kana japonês: no MWE, o katakana aparece como espaço em branco:

insira a descrição da imagem aqui

A fonte xeCJK padrão não cria esse problema, mas não fornece certos caracteres necessários (como 烝). Como altero as fontes xeCJK no corpo do documento e como é chamada a fonte xeCJK padrão?

Possivelmente relevante para uma resposta: estou escrevendo sobre sistemas de escrita. Então, só preciso de caracteres isolados. Não tenho longas seções de texto em chinês.

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

東風フォント

\end{document}

Atualizar. Aqui está um truque: finja que a fonte alternativa é a variante sem serifa. Mas eu ainda gostaria de uma solução adequada.

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

\begin{document}

東風\sf フォント.

\end{document}

Responder1

No babel, você pode alternar entre diferentes alfabetos ideográficos, incluindo japonês e chinês tradicional:

\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}

Exemplo de fonte Noto

Isso requer XeLaTeX e babel3.27 ou superior. (Com babel3.22, você deve definir manualmente Script=CJKeScript=Kana solucionar um bug.) Eu substituías fontes Noto CJK.

Uma opção mais simples para Babel que não exige que você escreva \otherlanguageem todos os lugares seria ucharclasses. Você também pode declarar um \newfontfamily, fornecer as [Script = Kana, Language = Japanese]opções e selecioná-lo.

Atualizar

A partir de 2021, é possível usar vários scripts ideográficos no LuaLaTeX 1.12 ou posterior. Em teoria, você pode configurar seu documento para alternar entre os idiomas sem marcação. Na prática, isso não funciona de forma confiável para chinês e japonês, porque o Consórcio Unicode optou por usar os mesmos pontos de código para Kanji e chinês. (O pecado original do Unicode foi pensar que poderia caber tudo em 16 bits.)

Neste exemplo específico, se o único japonês que precisamos for Hirigana e Katakana, e todos os caracteres ideográficos forem chineses, podemos babeldetectar japonês, chinês e inglês corretamente:

\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}

Amostra Noto CJK

Aqui, defino cada idioma com uma cor diferente para tornar a troca de idioma mais óbvia.

informação relacionada