Estou encontrando um problema estranho. Quero criar personagens compostos comoǎusando o newunicodechar
pacote. No entanto, só produz resultado em combinação com o xeCJK
pacote.
Este código produz caracteres ausentes:
\documentclass[a4paper,12pt,article,oneside]{memoir}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage[british]{babel}
\setmainfont[Ligatures=TeX]{Minion Pro}
\usepackage{newunicodechar}
\newunicodechar{ǚ}{\v{ü}}
\newunicodechar{Ǚ}{\v{Ü}}
\newunicodechar{ǎ}{\v{a}}
\newunicodechar{Ǎ}{\v{A}}
\newunicodechar{ǒ}{\v{o}}
\newunicodechar{Ǒ}{\v{O}}
\begin{document}
ǚ Ǚ ǎ
\end{document}
Se eu carregar o xeCJK
pacote, os caracteres serão renderizados perfeitamente. Por que é que? E como gerar caracteres compostos sem o pacote nomeado?
Observação:
- isso é reproduzível com outras fontes que não contêm caracteres unicode (por exemplo, Adobe Garamond Pro)
- Minion Procontémum caractere caron (unicode 02C7, índice 136)
Responder1
A configuração padrão não usa unicode U+02C7, mas o acento combinador U+030C que está faltando na sua fonte. xecjk contém algum código para usar U + 02C7, mas parece usar esse código apenas se o xunicode também estiver carregado - o que é um pouco chato, já que normalmente não se deve mais usá-lo.
Você pode clonar o código xeCJK usando \add@accent
. Se mais fontes estiverem envolvidas, algumas com acento combinado, provavelmente serão necessárias algumas verificações adicionais para a existência de glifos.
\documentclass[a4paper,12pt,article,oneside]{memoir}
\usepackage{fontspec}
\usepackage[british]{babel}
\setmainfont[Ligatures=TeX]{MinionPro-Regular.otf}
\usepackage{newunicodechar}
\makeatletter
\newunicodechar{ǚ}{\add@accent{`^^^^02c7}{ü}}
\newunicodechar{Ǚ}{\add@accent{`^^^^02c7}{Ü}}
\newunicodechar{ǎ}{\add@accent{`^^^^02c7}{a}}
\makeatother
%\newunicodechar{Ǎ}{\v{A}}
%\newunicodechar{ǒ}{\v{o}}
%\newunicodechar{Ǒ}{\v{O}}
%
\begin{document}
abc
ǚ Ǚ ǎ
\end{document}
Responder2
Baseado emum truque de Egreg, isso usa o \accent
primitivo. Eu escolhi simplesmente redefinir \v
.
\documentclass{standalone}
\usepackage{fontspec, newunicodechar}
\usepackage[british]{babel}
\setmainfont[Ligatures=TeX]{Cardo}
\renewcommand\v[1]{\accent\string"02C7 #1}
\newunicodechar{ǚ}{\v{ü}}
\newunicodechar{Ǚ}{\v{Ü}}
\newunicodechar{ǎ}{\v{a}}
\newunicodechar{Ǎ}{\v{A}}
\newunicodechar{ǒ}{\v{o}}
\newunicodechar{Ǒ}{\v{O}}
\begin{document}
ǚ Ǚ ǎ Ǎ ǒ Ǒ
\end{document}
Escolhi Cardo como uma fonte comum que contém o acento caron, mas não o ǚ pré-composto.