%20%D1%8B%20%D1%81%20%D0%BE%D1%81%D1%82%D1%80%D1%8B%D0%BC%20%D1%83%D0%B4%D0%B0%D1%80%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%B8%D0%BD%D0%BE%D0%B3%D0%B4%D0%B0%20(%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8F%20Times%20New%20Roman%20%D0%B8%20STIX%20Two%20Text)%20.png)
Некоторое время назад я опубликовал похожий вопрос, где спрашивал, почему символ ы отображается неправильно.совсемна 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}