使用 tipa 和 fontspec 自定义拼音字体

使用 tipa 和 fontspec 自定义拼音字体

我一直在尝试排版一份文件,其中很多的音标,我尝试使用 Tex Gyre Bonum 来表示主体,使用 Charis SIL 来表示音标。我尝试用 来加载这些fontspec,但因涉及tipa时不配合而闻名。fontspec

我最初的尝试(基于 egreg 对问题)是重新定义textipa命令以使用自定义字体:

\newfontfamily{\ipafont}{Charis SIL}
\AtBeginDocument{
  \renewcommand\textipa[1]{{\ipafont\tipaencoding #1}}
}

但那没有用(见下图如何它不起作用)。奇怪的是,如果我在一个全新的命令中使用相同的指令并使用默认命令,它确实起作用了textipa。但这当然意味着源代码不再可以使用常规命令进行编译tipa...

所以,我如何才能重新定义textipa使用我选择的字体而不必自己输入一些字符?

以下 MWE 显示了所有不同类型的失败:

\documentclass{article}
\usepackage{tipa}
% \expandafter\def\csname [email protected]\endcsname{}
\usepackage{fontspec}

\setmainfont{TeX Gyre Bonum}
\newfontfamily{\ipafont}{Charis SIL}

\newcommand{\mytipa}[1]{{\ipafont \textipa{#1}}}

\begin{document}

\begin{itemize}

\item This works only without \texttt{fontspec}:
  \textipa{\t{\=*{t}S}}

\item With \texttt{fontspec} and custom \texttt{ipafont}
  this fails:
  {\ipafont \textipa{\t{\=*{t}S}}}
  ; but this works: 
  {\ipafont \textipa{\t{ṯS}}}

\item Likewise, with a custom command,
  this fails:
  \mytipa{\t{\=*{t}S}}
  ; but this works:
  \mytipa{\t{ṯS}}

\renewcommand\textipa[1]{{\ipafont \tipaencoding #1}}

\item But with a redefined \texttt{textipa} command
  this fails:
  \textipa{\t{\=*{t}S}}
  ; and this \textit{also} fails:
  \textipa{\t{ṯS}}

\end{itemize}

\end{document}

输出结果如下:

在此处输入图片描述

另外:在后续问题Joseph Wright 最近提供了一个解决方案,用于解决编译 MWE 时出现的类似问题(即开头的注释行)。但是,通过取消注释,您可以看到,尽管它使所有行都正常工作(源代码中的行除外),但它使它们使用默认tipa字体工作,这不是我想要的。

答案1

对你的问题的一个间接回答可能是根本不使用 TIPA。你可以改用 SIL 提供的 IPA 键盘来轻松输入 IPA 字符。

您可以在IPA Unicode 键盘

答案2

xunicode包将 tipa 符号转换为 Unicode。

组合变音符号,至少是倒置双短音符 (U+0361),需要帮助。(我还没有测试整个 CDM 块。)

xunicode 中的 tipa

xunicode包(在 xelatex 是唯一支持 UTF8 的引擎时设计的)可以在 LuaLatex 下运行,只需增加一行(参见 MWE)。

CMU Serif 字体是“tipa 字体”的 Unicode 版本并嵌入 tipa 符号(注意:对于某些字形,使用私有使用区域,对于非标准 Unicode 字形,如“turned f”,位于 U+F16C)。

平均能量损失

\documentclass{article}
\usepackage{xcolor}
\usepackage{fontspec}
\def\XeTeXpicfile{}%so can compile with LuaLatex
\usepackage{xunicode}

\newcommand\ipafontname{Charis SIL}
\newcommand\fnamea{TeX Gyre Bonum}
\newcommand\fnameb{Noto Serif}
\newcommand\fnamec{CMU Serif}

\setmainfont{\fnamea}
\newfontfamily{\ipafont}{\ipafontname}[Colour=red]
\newfontfamily{\ffontb}{\fnameb}[Colour=blue]
\newfontfamily{\ffontc}{\fnamec}[Colour=brown]
\newfontfamily{\fmain}{\fnamea}

\newcommand\cdmdoubleinvertedbreve{\symbol{865}}
\renewcommand{\t}{\cdmdoubleinvertedbreve}

\newcommand\ttext{\textipa{\*k\*f\*t\*r\*w -- {\=*{t}\t S}}}


\begin{document}
 
\begin{quotation}

The command

\verb|\textipa{\*k\*f\*t\*r\*w -- {\=*{t}\t S}}}}|

gives:

\begin{quotation}
\begin{tabular}{ll}
Font & Result \\
\ipafontname & \ipafont\ttext \\
\fnameb & \ffontb\ttext \\
\fnamec & \ffontc\ttext \\
\end{tabular}
\end{quotation}
\end{quotation}

\fmain In Unicode, some of the turned letters are:

\begin{quotation}
\ffontb 
Ɯ ǝ Ʌ ɐ ɒ ɥ ɯ ɰ ɹ ɺ ɻ  ʇ ʌ ʍ ʎ ʞ ʮ ʯ oʴ oʵ ᴂ ᴈ ᴉ ᴔ ᴚ oᵄ oᵆ oᵌ oᵎ oᵚ ᵷ oᶛ oᶣ oᶭ oᶺ (\fnameb\ font)

\ffontc
Ɯ ǝ Ʌ ɐ ɒ ɥ ɯ ɰ ɹ ɺ ɻ  ʇ ʌ ʍ ʎ ʞ ʮ ʯ oʴ oʵ ᴂ ᴈ ᴉ ᴔ ᴚ oᵄ oᵆ oᵌ oᵎ oᵚ ᵷ oᶛ oᶣ oᶭ oᶺ (\fnamec\ font)
\end{quotation}

\end{document}

答案3

尝试新的tipauni包裹:

\documentclass[12pt]{article}
\usepackage[%
  documentfont=TeX Gyre Bonum% Note that this isn't usually
                             % recommended as you'll have to
                             % use the font command for IPA
                             % every time you type
                             % IPA. Using a uniform IPA font
                             % e.g. Doulos SIL/Gentium might
                             % be the best choice. Charis
                             % SIL is the default one loaded
                             % by tipauni.
]%
{tipauni}% This automatically loads package fontspec.
\newfontfamily\ipafont{CharisSIL}
\newcommand\mytipa[1]{\ipafont\textipa{#1}}

\begin{document}
\begin{itemize}
\item With \texttt{fontspec} and a custom \texttt{ipafont}
  this works:

  \verb|{\ipafont\textipa{\t{{\=*{t}}S}}}|:
  {\ipafont\textipa{\t{{\=*{t}}S}}};

  and this works too:

  \verb|{\ipafont\textipa{\t{ṯS}}}|:
  {\ipafont\textipa{\t{ṯS}}}

\item Likewise, with a custom command, this works:

  \verb|\mytipa{\t{{\=*{t}}S}}|:
  \mytipa{\t{{\=*{t}}S}};

  and this one too:

  \verb|\mytipa{\t{ṯS}}| \mytipa{\t{ṯS}}
\end{itemize}
\end{document}

请注意,正如指出的那样这里, 经过斯基尔蒙您获取 ṯ͡ʃ 的 TIPA 语法不正确。您应该使用\textipa{\t{{\=*{t}}S}}}来获得正确的结果。

相关内容