xpinyin изменить шрифт

xpinyin изменить шрифт

Я использую пакет xpinyinдля отображения пиньинь, фонетического китайского письма над китайскими иероглифами. Кажется, это работает хорошо, но я хочу изменить шрифт фонетического письма. Я нашел некоторый код впакет документации, хотя это только на китайском:

\xpinyinsetup{ratio=0.5, vsep=1em, multiple={\color{red}}, font=Liberation Sans}

Китайский язык в документации для меня все еще слишком высок, поэтому я просто предполагаю, что он делает следующее:

  1. сделать пиньинь hal размером с основной шрифт
  2. вертикальное разделение 1em, пиньинь отделен от китайского иероглифа ниже на 1em
  3. если для одного символа (多音字) существует несколько пиньинь, то пиньинь будет наиболее вероятным и окрашен в красный цвет
  4. использовать шрифтLiberation Sans

Однако я не знаю, можно ли просто оставить пробел между Liberationи Sans. Основная проблема заключается в следующем результате:

вокал отсутствует

(На этой картинке я использовал , Arialпотому что это достаточно короткое имя, чтобы его можно было прочитать.) Поэтому я подумал: «Это, должно быть, проблема со шрифтом». Я попробовал использовать шрифт Liberation Sansв Libre Office, чтобы проверить, может ли он отображать отсутствующий вокал с тонами. Там он мог отображать его без указания смены шрифта, но я не знаю, скрывает ли он эту информацию, и, возможно, шрифт действительно не может отображать этот вокал.

Также обратите внимание, как каким-то образом имя шрифта было добавлено в фонетический сценарий. Это может быть сделано намеренно, хотя это скорее похоже на ошибку. Хотя я не понимаю документацию.

Как сделать так, чтобы xpinyin отображался правильно, не имея названия шрифта в фонетическом написании первого символа?

Вот пример кода:

\documentclass[10pt, a4paper, parskip=full]{article} % twoside can be added if two sided margin layout is desired
\usepackage[a4paper,vmargin={30mm, 20mm},hmargin={30mm, 25mm},includeheadfoot]{geometry}
\usepackage{amsmath}

\usepackage[UTF8]{ctex}
\usepackage{xpinyin}
\xpinyinsetup{ratio=0.5, vsep=1em, multiple={\color{red}}, font=Liberation Sans}

\usepackage{fontspec,xunicode}
\setCJKmainfont[]{WenQuanYi Micro Hei}

\defaultfontfeatures{Mapping=tex-text, Scale=MatchLowercase} % what does this do? -- influences how quotes are rendered
\setmainfont[Scale=1]{Open Sans}
\setmonofont{Liberation Mono}
\DeclareMathSizes{10}{10}{8}{7}

\usepackage[english, ngerman]{babel}
\selectlanguage{ngerman}

\begin{document}

\begin{pinyinscope}
我有一个送给你的礼物.
\end{pinyinscope}

\end{document}

решение1

Я нашел обходной путь, и, возможно, это можно рассматривать как решение:

\usepackage{xpinyin}
\xpinyinsetup{ratio={.7}, hsep={.5em plus .1em}, vsep={1.1em}, multiple={\color{red}}}

% redefine the pinyinscope environment, so that it uses a font which can display all pinyin syllables and vocals with diacritics
\newenvironment{pinyinscopeboxed}%
{\setmainfont{DejaVu Sans}\begin{pinyinscope}}%
{\end{pinyinscope}\setmainfont{Open Sans}}

Это меняет шрифт на шрифт, который может отображать все диакритические знаки пиньинь, когда среда pinyinscopeboxedначинается, и меняет его обратно на другой шрифт, когда среда заканчивается. Конкретный шрифт нужно будет настроить по желанию, и его, вероятно, можно улучшить, используя переменную для хранения основного шрифта перед его изменением, а затем использовать эту переменную для переключения обратно, но я пока не знаю, как это сделать. Я был бы благодарен за предложения о том, как это сделать, или как улучшить решение в целом.

Это также позволяет избежать ошибочного поведения, приводящего к отображению имени шрифта в рубинах, поскольку не используется fontопция xpinyin.

ПРАВКА №1

Цин Ли рассказал мне, как это правильно сделать.

Не обновляйте среду, но вместо этого вы можете сделать следующее, если используете пакет fontspec:

\usepackage{fontspec}
\newfontfamily{\DVS}{DejaVu Sans}
\usepackage{xpinyin}
\xpinyinsetup{ratio={.7}, hsep={.5em plus .1em}, vsep={1.1em}, multiple={\color{red}}, pysep={.2em}, font=\DVS}

(Другие значения приведены font=только в качестве примера.)

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