在德语中,有三个特殊字符 ä、ö 和 ü,通常写成两个:ae、oe、ue。
是否有一种字体,只要出现字母“ae”就会显示“ä”?
我认为这可以通过将两个字母组合在一起的伪连字来解决。
答案1
据我所知,没有。
此外,这个“功能”带来的麻烦比好处还多,因为德语中有很多单词不需要连字,例如,当前,鲍尔,新,劳埃,奥斯陆,贝布拉尔,...
如果您确实想创建这种字体,您可以自由地这样做:将给定字体复制到新名称,使用该实用程序将 tfm(TeX Font metrics)文件转换tftopl
为属性列表,然后通过编辑属性列表添加连字。属性列表的相关部分如下(此处取自字体 ecrm1000 中的字母 f):
(LIGTABLE
(LABEL C f)
(LIG C i O 34)
(LIG C f O 33)
(LIG C l O 35)
这样你就可以轻松地将连字符添加到改名字体像
(LABEL C a)
(LIG C e O 304)
并使用 将其转换回有效的 tfm 文件tftopl
。(事实上,您可能会在(LABEL C a)
字母后面找到启动字距调整部分的语句A在 tfm 文件中。
请注意,出于两个原因,重命名字体是必要的:
- 避免原始字体与更改后的字体混淆
- 它是 TeX 发行版附带的典型字体(例如,Computer Modern 字体或 ec 字体)的许可证所要求的。
答案2
您可以使用 LuaLaTeX 在输入处理过程中全局替换“ae”、“oe”和“ue”字符串。但是,我不建议任何人真正这样做。以下示例句子说明了为什么这不是一个好主意。
% arara: lualatex
\documentclass{article}
\usepackage{fontspec,luacode,luatexbase}
\begin{luacode}
function double_vowel_to_umlaut ( x )
x = string.gsub ( x, "ae", "ä")
x = string.gsub ( x, "oe", "ö")
x = string.gsub ( x, "ue", "ü")
return ( x )
end
\end{luacode}
\AtBeginDocument{\directlua{%
luatexbase.add_to_callback( "process_input_buffer",
double_vowel_to_umlaut, "doublevowel_to_umlaut")}}
\begin{document}
Samuel, Joel, und Rafael trafen sich beim Taekwondo zu neuen Duellen.
\end{document}