将特殊字符组合成连字的字体

将特殊字符组合成连字的字体

在德语中,有三个特殊字符 ä、ö 和 ü,通常写成两个: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 文件中。

请注意,出于两个原因,重命名字体是必要的:

  1. 避免原始字体与更改后的字体混淆
  2. 它是 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}

相关内容