如果沒有 \usepackage{xeCJK},卡隆口音 \v{a} 不會呈現

如果沒有 \usepackage{xeCJK},卡隆口音 \v{a} 不會呈現

我遇到了一個奇怪的問題。我想創建複合字符,例如使用該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 字元的其他字體重現(例如 Adob​​e Garamond Pro)
  • 小小兵專業版確實包含一個抑揚符字元(unicode 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

基於埃格雷格的一個技巧,這使用了\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 作為常用字體,包含 caron 重音符號,但不包含預先組合的 ǚ。

相關內容