(Overleaf и LuaLaTeX) ы с острым ударением работает правильно только иногда (используя Times New Roman и STIX Two Text)

(Overleaf и LuaLaTeX) ы с острым ударением работает правильно только иногда (используя Times New Roman и STIX Two Text)

Некоторое время назад я опубликовал похожий вопрос, где спрашивал, почему символ ы отображается неправильно.совсемна TNR с острым ударением при использовании \'ы. У меня Chromebook, и я загрузил (на вид) последнюю версию (7.05) Times New Roman, которая, похоже, является той же версией, что используется в 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, мой \setmainfontкод должен работать независимо от того, загрузили ли вы файлы для вариантов TNR через Интернет или откуда-то еще.

Странно, что он будет выглядеть по-разному в зависимости от того, где его разместить, может кто-нибудь помочь с этим? Я был бы очень признателен.

решение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 иhttps://github.com/latex3/luaotfload/issues/267.

Проблема действительно должна быть решена в целом. До тех пор, если вы используете 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}

Связанный контент