我正在寻找来自语音转录系统的某些变音符号德语瑞士语言书(瑞士德语语言地图集)。该系统类似于有时被称为条顿主义者。以下是 Rudolf Hotzenköcherle (1962) 拍摄的(质量较差的)照片:德语瑞士语入门. B部分。伯尔尼,第87、80页:
角色列表
以下字符尚未采用 Unicode(例如,您可以在N4081:在 UCS 中对“Teuthonista”语音字符进行编码的修订提案):
- 下方括号内的点
- 下面的括号分音符
- 下方有 lenis 标记(与 ogonek 相似的变音符号)
- 下方带括号的 lenis 标记
- 下方有双镜头标记
- 下方带括号的双引号
这个是 Unicode 的,但是我还没能在 LaTeX 中找到一个很好的解决方案:
- U+0353 结合以下 x
这些是可用的tipa
(为了完整性,我在这里仅列出它们):
\textsubdot
\textsubumlaut
\textsyllabic
(下方有竖线)
我初步的糟糕解决方案
基于tipaman.pdf
,我实现了这个:
使用以下代码:
\documentclass{scrartcl}
\usepackage{tipa}
\begin{document}
\tipaLoweraccent[.2ex]{\textsf{\super{x}}}{b}
b
\textsyllabic{b}
\tipaUpperaccent[.4ex]{\super{b}}{p}
\tipaLoweraccent[.2ex]{\textsf{\super{x}}}{p}
p
\=p
\textsuperscript{p}p
pp\par
\tipaLoweraccent[.2ex]{\textsf{\super{\textit{\textiota\textiota}}}}{i}
\tipaUpperaccent[.4ex]{\super{i}}{e}
\textsubumlaut{e}
\tipaLoweraccent[.2ex]{\textsf{\super{($\cdot\cdot$)}}}{e}
\textsubdot{e}
\tipaLoweraccent[.2ex]{\textsf{\super{($\cdot$)}}}{e}
e
\tipaLoweraccent[.2ex]{\textsf{\super{(\textit{\textiota})}}}{e}
\textpolhook{e}
\tipaLoweraccent[.2ex]{\textsf{\super{(\textit{\textiota\textiota})}}}{e}
\tipaLoweraccent[.2ex]{\textsf{\super{\textit{\textiota\textiota}}}}{e}
\ae{}
\textsubumlaut{a}
\end{document}
我怎样才能得到更好的结果?括号太大了。这\textiota
是一个非常粗糙的解决方案(我认为更接近 ogonek 的东西会更接近上图)。
答案1
支持条顿主义者已添加到 2014 年(或大约)发布的 Unicode 标准 7.0 版中。因此,在现代 LaTeX 环境中,您可以直接插入这些特殊字符,例如通过它们的 Unicode 代码点,使用 的符号表示\char"1AB7
法combining open mark below
。
困难的部分是找到一种真正支持条顿主义者. 即使是为语言学家制作的字体Brill 字体,君主制或者Junicode不完全支持这些字体(据我所知)。据我所知,唯一完全支持 Teuthonista 的公开字体是诺托衬线由谷歌委托,它确实提供了所有字符和标记,并且在印刷上几乎正确,除了变音符号的括号放错了位置(见下图)。
要编译的示例xelatex
:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\begin{document}
b\char"0353{} b b\char"0329{} p\char"1DE8{} p\char"0353{} p p\char"0304{} \textsuperscript{p}p pp
i\char"1AB8{} e\char"0365{} e\char"0324{} e\char"0324\char"1ABD{} e\char"0323{} e\char"0323\char"1ABD{} e{} e\char"1AB7\char"1ABD{} e\char"1AB7{} e\char"1AB8\char"1ABD{} e\char"1AB8{} æ a\char"0324{}
\end{document}
结果(上面两行是 Noto Serif):
答案2
可以再稍微调整一下但是......
\documentclass{scrartcl}
\usepackage{tipa,graphics}
\makeatletter
\providecommand\xloweraccent{\@ifnextchar[{\lower@accent x\empty}%
{\lower@accent x\empty[\z@]}}
\def\brak#1{\xloweraccent{%
\raisebox{-.3ex}{\resizebox{!}{.6ex}{\bfseries(}}%
{\fontencoding{T3}\selectfont\char12}%
\raisebox{-.3ex}{\resizebox{!}{.6ex}{\bfseries)}}%
}{#1}}
\def\brakk#1{\xloweraccent{%
\raisebox{-.3ex}{\resizebox{!}{.6ex}{\bfseries(}}%
\scalebox{.7}{\fontencoding{T3}\selectfont\char12\kern-.1em\char12}%
\raisebox{-.3ex}{\resizebox{!}{.6ex}{\bfseries)}}%
}{#1}}
\def\tipakk#1{\xloweraccent{%
{\fontencoding{T3}\selectfont\char12\kern-.1em\char12}%
}{#1}}
\def\brauml#1{\xloweraccent[.3ex]{%
\raisebox{1.1ex}{\resizebox{!}{.6ex}{\bfseries(}}%
{\kern-.1em\fontencoding{T3}\selectfont\char4\kern-.1em}%
\raisebox{1.1ex}{\resizebox{!}{.6ex}{\bfseries)}}%
}{#1}}
\def\bradot#1{\xloweraccent[.3ex]{%
\raisebox{1.1ex}{\resizebox{!}{.6ex}{\bfseries(}}%
{\kern-.1em\fontencoding{T3}\selectfont\char10\kern-.1em}%
\raisebox{1.1ex}{\resizebox{!}{.6ex}{\bfseries)}}%
}{#1}}
\makeatother
\begin{document}
\tipaLoweraccent[.2ex]{\tiny\textsf{x}}{b}
b
\textsyllabic{b}
\tipaUpperaccent[.3ex]{\tiny b}{p}
\tipaLoweraccent[.2ex]{\tiny\textsf{x}}{p}
p
\=p
\textsuperscript{p}p
pp\par
\tipakk{i}
\tipaUpperaccent[.3ex]{\tiny i}{e}
\textsubumlaut{e}
\brauml{e}
\textsubdot{e}
\bradot{e}
e
\brak{e}
\textpolhook{e}
\brakk{e}
\tipakk{e}
\ae{}
\textsubumlaut{a}
\end{document}
答案3
非常感谢,David Carlisle!从您的回答中了解了它的工作原理后,我能够做出自己的调整:我使用分别由 、 和tipa
生成的字符\textsublhalfring
,\textsubrhalfring
而不是括号和 x \textovercross
。我还强制括号内的变音符号始终直立,因此斜体时字距不会混乱。
\documentclass{scrartcl}
\usepackage{tipa,graphicx}
\newcommand{\subpardot}[1]{\tipaLoweraccent[.2ex]
{\upshape\fontencoding{T3}\selectfont
\char21
\raisebox{-1.15ex}{\kern-.12em\char10\kern-.09em}%
\kern-.05em\char20}
{#1}}
\newcommand{\subpardotdot}[1]{\tipaLoweraccent[.2ex]
{\upshape\fontencoding{T3}\selectfont
\char21
\raisebox{-1.15ex}{\kern-.19em\char4}%
\kern-.18em\char20}
{#1}}
\newcommand{\subhook}[1]{\tipaloweraccent[.2ex]{12}{#1}}
\newcommand{\subparhook}[1]{\tipaLoweraccent[.17ex]
{\upshape\fontencoding{T3}\selectfont
\char21
\kern-.1em\raisebox{.5ex}{\char12}%
\kern-.1em\char20}
{#1}}
\newcommand{\subhookhook}[1]{\tipaloweraccent[.2ex]
{12\kern-.1em\char12}
{#1}}
\newcommand{\subparhookhook}[1]{\tipaLoweraccent[.17ex]
{\upshape\fontencoding{T3}\selectfont
\char21
\kern-.1em\raisebox{.45ex}{\scalebox{.7}{\char12\kern-.1em\char12}}%
\kern-.1em\char20}
{#1}}
\newcommand{\subx}[1]{\tipaloweraccent[.15ex]{24}{#1}}
\begin{document}
\subx{b}
b
\textsyllabic{b}
\tipaUpperaccent[.3ex]{\tiny b}{p}
\subx{p}
p
\=p
\textsuperscript{p}p
pp
\subhookhook{i}
\tipaUpperaccent[.3ex]{\tiny i}{e}
\textsubumlaut{e}
\subpardotdot{e}
\textsubdot{e}
\subpardot{e}
e
\subparhook{e}
\subhook{e}
\subparhookhook{e}
\subhookhook{e}
\ae{}
\textsubumlaut{a}
\emph{\subx{b}
b
\textsyllabic{b}
\tipaUpperaccent[.3ex]{\tiny b}{p}
\subx{p}
p
\=p
\textsuperscript{p}p
pp}
\emph{\subhookhook{i}
\tipaUpperaccent[.3ex]{\tiny i}{e}
\textsubumlaut{e}
\subpardotdot{e}
\textsubdot{e}
\subpardot{e}
e
\subparhook{e}
\subhook{e}
\subparhookhook{e}
\subhookhook{e}
\ae{}
\textsubumlaut{a}}
\end{document}
答案4
HarfBuzz 字体渲染引擎现在被 LuaLatex 和 XeLatex 所使用,因此两个编译器都有望产生类似的输出。
使用 Noto Serif 字体组第 2 版(通过 LuaLatex 编译)可得到三种随机字体:
XeLatex 几乎与输出相匹配,但在少数情况下未对齐,其中变音符号被解释为可堆叠:
平均能量损失
\documentclass{article}
\usepackage{fontspec}
\newcommand\fname{NotoSerif-ExtraCondensedMediumItalic.ttf}
\setmainfont{\fname}
\newcommand\fnameb{NotoSerif-SemiCondensedExtraBold.ttf}
\newfontface{\ffb}{\fnameb}
\newcommand\fnamec{Noto Serif}
\newfontface{\ffc}{\fnamec}
\begin{document}
LuaLatex + \fname
b\char"0353{} b b\char"0329{} p\char"1DE8{} p\char"0353{} p p\char"0304{} \textsuperscript{p}p pp
i\char"1AB8{} e\char"0365{} e\char"0324{} e\char"0324\char"1ABD{} e\char"0323{} e\char"0323\char"1ABD{} e{} e\char"1AB7\char"1ABD{} e\char"1AB7{} e\char"1AB8\char"1ABD{} e\char"1AB8{} æ a\char"0324{}
\bigskip
\ffb
LuaLatex + \fnameb
b\char"0353{} b b\char"0329{} p\char"1DE8{} p\char"0353{} p p\char"0304{} \textsuperscript{p}p pp
i\char"1AB8{} e\char"0365{} e\char"0324{} e\char"0324\char"1ABD{} e\char"0323{} e\char"0323\char"1ABD{} e{} e\char"1AB7\char"1ABD{} e\char"1AB7{} e\char"1AB8\char"1ABD{} e\char"1AB8{} æ a\char"0324{}
\bigskip
\ffc
LuaLatex + \fnamec
b\char"0353{} b b\char"0329{} p\char"1DE8{} p\char"0353{} p p\char"0304{} \textsuperscript{p}p pp
i\char"1AB8{} e\char"0365{} e\char"0324{} e\char"0324\char"1ABD{} e\char"0323{} e\char"0323\char"1ABD{} e{} e\char"1AB7\char"1ABD{} e\char"1AB7{} e\char"1AB8\char"1ABD{} e\char"1AB8{} æ a\char"0324{}
\bigskip
\end{document}
**附录**
XeLatex 有一个解决办法:
先在下方加上括号。这样就可以在堆叠方面立即修复点下方的问题:
e\char"1ABD{}\char"0323{}
下面的括号 + 下面的分音符可以单独使用,因此将它们重叠:
e\char"1ABD{}\llap{e\char"0324{}}
平均能量损失
\documentclass{article}
\usepackage{fontspec}
\newcommand\fname{NotoSerif-ExtraCondensedMediumItalic.ttf}
\setmainfont{\fname}
\newcommand\fnameb{NotoSerif-SemiCondensedExtraBold.ttf}
\newfontface{\ffb}{\fnameb}
\newcommand\fnamec{Noto Serif}
\newfontface{\ffc}{\fnamec}
\begin{document}
XeLatex + \fname
b\char"0353{} b b\char"0329{} p\char"1DE8{} p\char"0353{} p p\char"0304{} \textsuperscript{p}p pp
i\char"1AB8{}
e\char"0365{}
e\char"0324{}
e\char"1ABD{}\llap{e\char"0324{}}
%e\char"1ABB{}\char"1AB4{}
e\char"0323{}
e\char"1ABD{}\char"0323{}
e{}
e\char"1AB7\char"1ABD{}
e\char"1AB7{}
e\char"1AB8\char"1ABD{}
e\char"1AB8{}
æ
a\char"0324{}
\bigskip
\ffb
XeLatex + \fnameb
b\char"0353{} b b\char"0329{} p\char"1DE8{} p\char"0353{} p p\char"0304{} \textsuperscript{p}p pp
i\char"1AB8{}
e\char"0365{}
e\char"0324{}
e\char"1ABD{}\llap{e\char"0324{}}
e\char"0323{}
e\char"1ABD{}\char"0323{}
e{}
e\char"1AB7\char"1ABD{}
e\char"1AB7{}
e\char"1AB8\char"1ABD{}
e\char"1AB8{}
æ
a\char"0324{}
\bigskip
\ffc
XeLatex + \fnamec
b\char"0353{} b b\char"0329{} p\char"1DE8{} p\char"0353{} p p\char"0304{} \textsuperscript{p}p pp
i\char"1AB8{}
e\char"0365{}
e\char"0324{}
e\char"1ABD{}\llap{e\char"0324{}}
e\char"0323{}
e\char"1ABD{}\char"0323{}
e{}
e\char"1AB7\char"1ABD{}
e\char"1AB7{}
e\char"1AB8\char"1ABD{}
e\char"1AB8{}
æ
a\char"0324{}
\bigskip
\end{document}