根据现有角色创建新角色

根据现有角色创建新角色

简而言之。是否有一种相对简单的方法可以利用现有角色的部分来构建角色?

理由。(La)TeX 语言学家需要广泛的字符集,例如 ⟨ɳ⟩ (U+0273)、⟨ɲ⟩ (U+0272)、⟨ʁ⟩ (U+0281)、⟨ɱ⟩ (U+0271)、⟨ə⟩ (U+0259),Rei Fukui 的tipa软件包通常可以满足他们的要求。但是,tipa它不提供斜体形状,并且仅限于 Computer Modern。这会导致问题。出版商经常要求使用 Computer Modern 以外的字体,并且几乎普遍的惯例是使用斜体进行文内引用。结果令人不满意且视觉上不吸引人(并且经常导致出版物中的字体和/或字体形状混杂)。 (有些出版商确实拥有全套斜体 IPA 字体,但这些字体通常是特别委托的,并非免费提供;例如,OUP 的 Minion 套装。)

例子。\textipa{@}以下是使用 Times Roman 时调用 schwa via 所获得的字体和形状的混合:

在此处输入图片描述

为了解决这个问题,我采取了rotating.sty旋转的方法e

\newlength{\schwawidth}
\newlength{\schwaheight}
\newcommand{\x}{%
    \settowidth{\schwawidth}{\it e}%
    \settoheight{\schwaheight}{\it e}%
    \makebox[\schwawidth][r]{%
    \raisebox{\schwaheight}{%
    \turnbox{180}{e}}}%
    }

\schwawidth请注意,这也会获得合理的字距调整(这就是定义而\schwaheight不是使用所谓的旋转框的原因?):

在此处输入图片描述

问题。 当字符的部分必须组合在一起时,这种方法就失效了。以 ⟨ɺ⟩ (U+027A) 为例。你可以像中音符一样旋转 ⟨r⟩,然后将其叠加在 ⟨l⟩ 上,但 ⟨l⟩ 的尾部会不舒服地突出:

在此处输入图片描述

你真正需要的是把 ⟨l⟩ 的顶部砍掉,然后把它粘贴到旋转的 ⟨r⟩ 上,然后将结果视为单个字符。 有没有简单的方法可以做到这一点?


更新。 的作者expex.sty让我想起了我在 Word 中常用的一个技巧:用白框覆盖部分字母,在 TeX 中可以用 复制pstricks.sty。下面是获取上述 ⟨ɺ⟩ (U+027A) 的方法:

\documentclass[12pt]{article}
\usepackage{rotating,mathptmx,pstricks}

\begin{document}

\newlength{\rwidth}
\newlength{\rheight}
\newcommand{\turnedr}{%
    \settowidth{\rwidth}{\it r}%
    \settoheight{\rheight}{\it r}%
    \makebox[\rwidth][r]{%
    \raisebox{\rheight}{%
    \turnbox{180}{r}}}%
    }
\def\cutr{\leavevmode\hbox{\turnedr}%
    \psframe*[linecolor=white](0,0)(-.15em,1.1ex)%
    \psframe*[linecolor=white](0,-.1ex)(-.24em,.2ex)%
    \psframe*[linecolor=white](0,-.1ex)(-.26em,.1ex)%
    }
\def\turnedlongr{\cutr\kern-.27eml}

\noindent \it 
\verb|\cutr| --- \cutr \\
\verb|\turnedlongr| --- \turnedlongr \\
\verb|\l\turnedlongr d| --- l\turnedlongr d

\end{document}

在此处输入图片描述

我怀疑这是否适用于所有字母,并且我确信纯粹主义者在阅读本文后需要冲洗眼睛......


承诺。 如果我在这方面取得进展,我就会开始在我的网页(链接到的网页)上发布我创造/拼凑/科学怪人的任何角色(您可以通过谷歌搜索我的名字找到)。

笔记。 这个问题很普遍,因为:

  1. 许多 IPA 字符都是常见字符的组合(⟨j⟩+⟨n⟩=⟨ɲ⟩、⟨m⟩+⟨j⟩=⟨ɱ⟩ 等)。
  2. 不匹配的问题不仅适用于 Times 斜体:它还影响其他所有字体中的 Computer Modern 斜体和罗马斜体。

这个问题最初是这个问题。尽管找到了解决方法,但砍掉现有字符的位(在这种情况下,是来自 ⟨f⟩ 的横线)的大问题仍然存在。


\documentclass[12pt]{article}
\usepackage{rotating,mathptmx, tipa}

\begin{document}

\newlength{\schwawidth}
\newlength{\schwaheight}
\newcommand{\x}{%
    \settowidth{\schwawidth}{\it e}%
    \settoheight{\schwaheight}{\it e}%
    \makebox[\schwawidth][r]{%
    \raisebox{\schwaheight}{%
    \turnbox{180}{e}}}%
    }

\noindent \it 
e\x e --- all Times italic\\
e\textipa{@}e --- Times italic with slanted Computer Modern schwa\\
\textipa{e@e} --- all Computer Modern slanted\\
\underline{e \footnotesize\x\ \normalsize\x\ \Large\x}\ \normalsize --- various sizes

\newlength{\rwidth}
\newlength{\rheight}
\newcommand{\turnedr}{%
    \settowidth{\rwidth}{\it r}%
    \settoheight{\rheight}{\it r}%
    \makebox[\rwidth][r]{%
    \raisebox{\rheight}{%
    \turnbox{180}{r}}}%
    }
\ \\
$\turnedr + l \stackrel{_?}{=} \turnedr\kern-.265eml$

\end{document}

答案1

使用“预组合”字符总是比尝试拼凑某些字符要好。这可能涉及一些字体工具的工作,而此列表中的其他工具比我更能解决这个问题。

不过,许多为语言环境而创建的字体都可以从西尔国际公司,我建议在尝试“自己动手”之前先去那里看看。

更新:进一步的问题是,“使用 Charis SIL 访问 IPA 字符“egreg 回答说,只要文件编码为 utf-8 并\usepackage{fontspec}指定,就可以直接使用 ipa 字符。该问题、答案和评论提供了其他有用信息,并且 op 报告说现在一切都运行正常。

相关内容