(Overleaf および LuaLaTeX) 強勢のある ы は、ときどき正しく動作します (Times New Roman および STIX Two Text を使用)

(Overleaf および LuaLaTeX) 強勢のある ы は、ときどき正しく動作します (Times New Roman および STIX Two Text を使用)

少し前に似たような質問を投稿しました。ы文字が正しく表示されないのはなぜかと質問しました。まったくTNR では、 を使用するときに鋭アクセントを使用します\'ы。私は Chromebook を持っており、Times New Roman の (どうやら) 最新バージョン (7.05) をダウンロードしました。これは、Windows 11 が使用するバージョンと同じように見えます。私が持っているバージョンでは、以前は機能しなかった小文字の大文字とより多くのグリフがサポートされているためです。

TNR 7.05 では、 を使用すると、アクセントが正しい位置に置かれることがあります。しかし、文中で使用すると、うまく機能しないようです。私の例の最初の部分では正しい位置にありますが、なぜ一貫性がないのかわかりません。これは TNR にのみ当てはまるわけではなく、私の例では STIX Two Text も影響を受けます。

\documentclass[letterpaper,12pt]{article}

\usepackage{microtype}
\usepackage{unicode-math} % loads fontspec
    \setmainfont[BoldFont=Timesbd.ttf, ItalicFont=Timesi.ttf, BoldItalicFont=Timesbi.ttf]{Times.ttf}
    \newfontfamily\secondfont[Ligatures=TeX]{STIX Two Text}
\usepackage[main=english,russian]{babel} 

\begin{document}

\foreignlanguage{russian}{
\'ы ы́ 
}

When the unstressed vowels come at the end (\foreignlanguage{russian}{Б\'ыло}), they sound like A.

When the unstressed vowels come at the end (\foreignlanguage{russian}{{\secondfont Б\'ыло}}), they sound like A.

\foreignlanguage{russian}{
ф\'ыф
}

\end{document}

ここに画像の説明を入力してください

Windows をお持ちであれば、\setmainfontTNR バリアントのファイルを Web 経由でダウンロードしたか、他の場所からダウンロードしたかに関係なく、私のコードは動作するはずです。

配置場所によって見た目が変わるのは不思議です。誰か助けていただけませんか? よろしくお願いします。

答え1

ハイフネーション ポイントが削除されないという利点がある別のアプローチがあります (残念ながら、HarfBuzzハイフン付きの言語では期待どおりに動作しないことがあります)。これは変換に基づいています。

\documentclass[letterpaper,12pt]{article}

\usepackage{microtype}
\usepackage{unicode-math} % loads fontspec
    \setmainfont
     [BoldFont=Timesbd.ttf, ItalicFont=Timesi.ttf, BoldItalicFont=Timesbi.ttf]{Times.ttf}
    \newfontfamily\secondfont[Ligatures=TeX]{STIX Two Text}
\usepackage[main=english,russian]{babel} 

% Add this transform, which removes discretionaries
% before combining characters:
\babelposthyphenation{russian}{ |[{0300}-{036F}] }{ remove, {} }

\begin{document}

\foreignlanguage{russian}{
\'ы ы́ 
}

When the unstressed vowels come at the end (\foreignlanguage{russian}{Б\'ыло}), they sound like A.

When the unstressed vowels come at the end (\foreignlanguage{russian}{{\secondfont Б\'ыло}}), they sound like A.

\foreignlanguage{russian}{
ф\'ыф
}

\end{document}

もちろん、これは単なる回避策です。次のようになります: ここに画像の説明を入力してください

答え2

問題はハイフネーションです。https://tex.stackexchange.com/a/340164/2388 そして参考:

この問題は、基本的には解決されるはずです。それまでは、harfbuzz-Renderer を使用すると、問題は解消されます。

\documentclass[letterpaper,12pt]{article}

\usepackage{microtype}
\usepackage{unicode-math} % loads fontspec
    \setmainfont
     [Renderer=Harfbuzz,BoldFont=Timesbd.ttf, ItalicFont=Timesi.ttf, BoldItalicFont=Timesbi.ttf]{Times.ttf}
    \newfontfamily\secondfont[Ligatures=TeX]{STIX Two Text}
\usepackage[main=english,russian]{babel} 

\begin{document}

\foreignlanguage{russian}{
\'ы ы́ 
}

When the unstressed vowels come at the end (\foreignlanguage{russian}{Б\'ыло}), they sound like A.

When the unstressed vowels come at the end (\foreignlanguage{russian}{{\secondfont Б\'ыло}}), they sound like A.

\foreignlanguage{russian}{
ф\'ыф
}

\end{document}

与える

ここに画像の説明を入力してください

答え3

ここに画像の説明を入力してください

この例のルールの下に示すように、結合文字の前にハイフネーションを防ぐパターンを追加できます。

プリアンブルで使用するより良いBabelインターフェースは

\babelpatterns[russian]{8^^^^0301}

ただし、ここでは、テストの例では、より低いレベルの\patternsフォームを使用して、ドキュメントの途中でこのパターンを切り替える場合と切り替えない場合をデモンストレーションできるようにします。

\documentclass[letterpaper,12pt]{article}

\usepackage{microtype}
\usepackage{unicode-math} % loads fontspec
    \setmainfont
     [BoldFont=Timesbd.ttf, ItalicFont=Timesi.ttf, BoldItalicFont=Timesbi.ttf]{Times.ttf}
    \newfontfamily\secondfont[Ligatures=TeX]{STIX Two Text}
\usepackage[main=english,russian]{babel} 

% Add this transform, which removes discretionaries
% before combining characters:
%\babelposthyphenation{russian}{ |[{0300}-{036F}] }{ remove, {} }

\begin{document}

\foreignlanguage{russian}{
\'ы ы́ 
}

When the unstressed vowels come at the end (\foreignlanguage{russian}{Б\'ыло}), they sound like A.

When the unstressed vowels come at the end (\foreignlanguage{russian}{{\secondfont Б\'ыло}}), they sound like A.

\foreignlanguage{russian}{
ф\'ыф
}

\bigskip
\hrule
\bigskip

\foreignlanguage{russian}{
  \patterns{8^^^^0301}
}


\foreignlanguage{russian}{
\'ы ы́ 
}

When the unstressed vowels come at the end (\foreignlanguage{russian}{Б\'ыло}), they sound like A.

When the unstressed vowels come at the end (\foreignlanguage{russian}{{\secondfont Б\'ыло}}), they sound like A.

\foreignlanguage{russian}{
ф\'ыф
}

\end{document}

関連情報