Caron Accent \v{a} не отображается без \usepackage{xeCJK}

Caron Accent \v{a} не отображается без \usepackage{xeCJK}

Я столкнулся со странной проблемой. Я хочу создать составных персонажей, таких какǎс использованием newunicodecharпакета. Однако, это дает результат только в сочетании с xeCJKпакетом.

Этот код создает пропущенные символы:

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

Если я загружаю xeCJKпакет, то символы отображаются нормально. Почему так? И как генерировать составные символы без именованного пакета?

Примечание:

  • это воспроизводится с другими шрифтами, которые не содержат символы Unicode (например, Adobe Garamond Pro)
  • Миньон Просодержитсимвол карона (юникод 02C7, индекс 136)

решение1

В настройках по умолчанию используется не Unicode U+02C7, а комбинирующий акцент U+030C, которого нет в вашем шрифте. xecjk содержит некоторый код для использования U+02C7 вместо него, но, похоже, использует этот код только в том случае, если также загружен xunicode, что немного неудобно, поскольку обычно его больше не следует использовать.

Вы можете клонировать код xeCJK, используя \add@accent. Если задействовано больше шрифтов, некоторые из которых имеют объединяющий акцент, вероятно, потребуются некоторые дополнительные проверки существования глифов.

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

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

решение2

На основетрюк от Egreg, это использует \accentпримитив. Я решил просто переопределить \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}

ǚ Ǚ ǎ Ǎ ǒ Ǒ

Я выбрал Cardo как распространенный шрифт, содержащий ударение карон, но не содержащий предбукву ǚ.

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