如何防止组合字符?

如何防止组合字符?

“EB Garamond”字体将ʿ字符和其前面的字母组合在一起。请考虑以下文档:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{EB Garamond}
\begin{document}

   aʿ bʿ cʿ dʿ eʿ fʿ gʿ hʿ iʿ jʿ kʿ lʿ mʿ nʿ oʿ pʿ qʿ rʿ sʿ tʿ uʿ vʿ wʿ xʿ yʿ zʿ

\end{document}

在此处输入图片描述

如何防止ʿ(MODIFIER LETTER LEFT HALF RING) 和前面的字母混淆?(在上图中,只有b,d,i,j渲染正确。)

更新经过三十多次测试,这是唯一一款存在此问题的字体。不幸的是,这只适合包含大量 Unicode 字形的纸张。◕︵◕

答案1

在需要的情况下,作为一种临时的局部修复,您可以在字符前放置一个字距,以将其与前一个字母隐藏起来。

  a\kern0ptʿ

无法结合。

答案2

很抱歉,这是一个疏忽,已在 v0.015b 中修复,我刚刚将其上传到https://bitbucket.org/georgd/eb-garamond/downloads

答案3

XeTeX 唯一的“解决方案”是使用映射文件,创建一个文件half-ring.map,告诉 XeTeX 在排版中的任何修饰符半环前插入一个发丝空格:

LHSName "Modifier Half Ring"
RHSName "UNICODE"
pass(Unicode)

U+02BF <> U+200A U+02BF;

然后使用它来编译它teckit_compile(应该包含在 TeX Live 中),并将字体命令修改为\setmainfont[Mapping=half-ring]{EB Garamond}

请注意,XeTeX 目前每个字体只能应用一个映射文件,因此如果您使用其他映射文件(或Ligature=TeX字体选项),则必须在上述文件中复制该映射。

答案4

如果你愿意换用 LuaLaTeX,米科即将推出selnolig包(在 GitHub 上)是你的好朋友。它实际上旨在全局避免意外连字,但也可以用于此。如果你加载它时没有语言选项,它不会改变任何其他内容:

\documentclass{article}
\usepackage{fontspec}
    \setmainfont{EB Garamond}

\usepackage{selnolig}
    \nolig{ʿ}{|ʿ}
\begin{document}

   aʿ bʿ cʿ dʿ eʿ fʿ gʿ hʿ iʿ jʿ kʿ lʿ mʿ nʿ oʿ pʿ qʿ rʿ sʿ tʿ uʿ vʿ wʿ xʿ yʿ zʿ

\end{document}

输出

有关更多背景信息selnolig,请参阅新的软件包 selnolig,可以自动抑制印刷连字

从另一个角度来看问题:我对这个特定的 Unicode 字符一无所知,但如果 EB Garamond 确实在这里出了问题,而且它是唯一出现问题的字体,你应该在其开发地点

相关内容