如何防止組合字元?

如何防止組合字元?

「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;

然後使用(應包含在 TeX Live 中)對其進行編譯teckit_compile,並將字體命令修改為\setmainfont[Mapping=half-ring]{EB Garamond}.

請注意,XeTeX 目前只能為每個字體應用一個映射文件,因此如果您使用其他映射文件(或Ligature=TeX字體選項),則必須在上述文件中複製該映射。

答案4

如果你同意切換 LuaLaTeX,米科即將推出selnoligpackage(在 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 確實在這裡做錯了什麼,並且它是唯一這樣做的字體,您應該在以下位置提交錯誤報告:其開發地點

相關內容