(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}

여기에 이미지 설명을 입력하세요

\setmainfont나는 당신이 Windows를 가지고 있다면 웹이나 다른 곳을 통해 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

여기에 이미지 설명을 입력하세요

이 예의 규칙 아래에 표시된 대로 결합 문자 앞에 하이픈 넣기를 방지하는 패턴을 추가할 수 있습니다.

프리앰블에 사용되는 더 나은 바벨 인터페이스는 다음과 같습니다.

\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}

관련 정보