It seems a bug in the fonts: here's the output I get with from the following input (where fixes to the original code are applied):
\documentclass[11pt]{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\begin{document}
Е́сли вы изу́чите
\'{Е}сли вы из\'{у}чите
\'{E}сли вы из\'{y}чите % Here "E" and "y" are Latin glyphs, but this workaround does not
% work with all Cyrillic letters e.g. Я, Ю
\end{document}
LuaLaTeX
XeLaTeX
If I change the main font from Linux Libertine O
into Old Standard
, I get the following (top two lines with Libertine, bottom two lines with Old Standard):
Added January 31, 2016
Until the bug is fixed, I can offer you a workaround: the vowels that need a fix look forward to see whether U+0301 follows and, in this case, the acute accent is placed above them with the legacy \accent
primitive.
Until the bug is solved (it is not with Libertinus, I'm afraid), I can offer a workaround.
\documentclass[12pt,a5paper,openright,twoside]{memoir}
\usepackage{fontspec}
\usepackage{newunicodechar}
\ExplSyntaxOn
\newunicodechar{А}{\paolo_accent_check:n{А}}
\newunicodechar{Е}{\paolo_accent_check:n{Е}}
\newunicodechar{И}{\paolo_accent_check:n{И}}
\newunicodechar{О}{\paolo_accent_check:n{О}}
\newunicodechar{У}{\paolo_accent_check:n{У}}
\newunicodechar{Ы}{\paolo_accent_check:n{Ы}}
\newunicodechar{Э}{\paolo_accent_check:n{Э}}
\newunicodechar{Ю}{\paolo_accent_check:n{Ю}}
\newunicodechar{Я}{\paolo_accent_check:n{Я}}
\newunicodechar{ы}{\paolo_accent_check:n{ы}}
\newunicodechar{ю}{\paolo_accent_check:n{ю}}
\cs_new_protected:Nn \paolo_accent_check:n
{
\peek_charcode_remove:NTF ^^^^0301
{
\accent"00B4 \scan_stop: #1
}
{ #1 }
}
\ExplSyntaxOff
\def\CyrillicAccents{А а А́ а́ \\ Е е Е́ е́ \\ И и И́ и́ \\ О о О́ о́ \\
У у У́ у́ \\ Ы ы Ы́ ы́ \\ Э э Э́ э́ \\ Ю ю Ю́ ю́ \\ Я я Я́ я́}
\begin{document}
\fontspec{Linux Libertine O}
\parbox[t]{3cm}{\CyrillicAccents}
% disable the new macro
\ExplSyntaxOn \cs_set_eq:NN \paolo_accent_check:n \use:n \ExplSyntaxOff
\parbox[t]{3cm}{\CyrillicAccents}
\end{document}
The left column has the adjusted vowels, the right column the default output.
<vowel>+U0301
(combining acute accent).