Ошибка в Фонтенке (или Либертине)?

Ошибка в Фонтенке (или Либертине)?

Я работаю над книгой с примерно 200+ страницами формата A5. В процессе перехода с pdflatex на xelatex я заметил некоторые серьезные различия в макете. В попытке отследить проблему я пришел к следующему MWE для pdflatex.

\documentclass[paper=a5,pagesize,fontsize=13pt]{scrbook}
\usepackage{showframe}
\usepackage[T1]{fontenc}
\usepackage[osf]{libertine}

\begin{document}
Hello, here is some text without a meaning. This text
should show what a printed text will look like at this place.
\end{document}

Если

\usepackage[T1]{fontenc}

в силе, то первая текстовая строка заканчивается на "Этот текст". Если закомментировано, то заканчивается на "Этот текст должен", также создавая переполненное поле.

решение1

Разница возникает из-за

ОТ1:

.\OT1/LinuxLibertineT-TOsF/m/n/13 i
.\OT1/LinuxLibertineT-TOsF/m/n/13 n
.\OT1/LinuxLibertineT-TOsF/m/n/13 g
.\OT1/LinuxLibertineT-TOsF/m/n/13 .
.\glue 3.7921 plus 4.875 minus 0.36096
.\OT1/LinuxLibertineT-TOsF/m/n/13  (ligature Th)
.\OT1/LinuxLibertineT-TOsF/m/n/13 i
.\OT1/LinuxLibertineT-TOsF/m/n/13 s
.\glue 3.25 plus 1.625 minus 1.08289
.\OT1/LinuxLibertineT-TOsF/m/n/13 t
.\OT1/LinuxLibertineT-TOsF/m/n/13 e
.\kern-0.091
.\OT1/LinuxLibertineT-TOsF/m/n/13 x
.\OT1/LinuxLibertineT-TOsF/m/n/13 t

Т1:

....\T1/LinuxLibertineT-TOsF/m/n/13 i
....\T1/LinuxLibertineT-TOsF/m/n/13 n
....\T1/LinuxLibertineT-TOsF/m/n/13 g
....\T1/LinuxLibertineT-TOsF/m/n/13 .
....\glue 3.7921 plus 4.875 minus 0.36096
....\T1/LinuxLibertineT-TOsF/m/n/13 T
....\T1/LinuxLibertineT-TOsF/m/n/13 h
....\T1/LinuxLibertineT-TOsF/m/n/13 i
....\T1/LinuxLibertineT-TOsF/m/n/13 s
....\glue 3.25 plus 1.625 minus 1.08289
....\T1/LinuxLibertineT-TOsF/m/n/13 t
....\T1/LinuxLibertineT-TOsF/m/n/13 e
....\kern-0.091
....\T1/LinuxLibertineT-TOsF/m/n/13 x
....\T1/LinuxLibertineT-TOsF/m/n/13 t

то есть шрифт OT1 имеет лигатуру Th, которая отсутствует в шрифте T1. Это несколько удивительно, но не обязательно ошибка. После этого длины слов немного отличаются, что достаточно, чтобы заставить разделитель строк абзаца выбрать другой путь.

Вы могли бы избежать лигатуры, как

\documentclass[paper=a5,pagesize,fontsize=13pt]{scrbook}
\usepackage{showframe}
%\usepackage[T1]{fontenc}
\usepackage[osf]{libertine}

%\showoutput

\begin{document}
Hello, here is some text without a meaning. T{}his text
should show what a printed text will look like at this place.
\end{document}

решение2

Вы можете отключить ужасную лигатуру Th в шрифтах OT1, загрузив microtypeи выполнив команду

\DisableLigatures[T]{encoding=OT1}

Однако здесь есть недостаток: кернинг по отношению к T также отключается, как показано в следующем примере.

\documentclass[paper=a5,pagesize,fontsize=13pt]{scrbook}
\usepackage{showframe}
\usepackage[T1]{fontenc}
\usepackage[osf]{libertine}

\usepackage{microtype}
\DisableLigatures[T]{encoding=OT1}

\begin{document}

\fontencoding{OT1}\selectfont

Hello, here is some text without a meaning. This text
should show what a printed text will look like at this place.

To

\fontencoding{T1}\selectfont

Hello, here is some text without a meaning. This text
should show what a printed text will look like at this place.

To

\end{document}

введите описание изображения здесь

Так что нет реального решения вашей проблемы. Вы можете попросить сопровождающего пакета libertineдобавить опцию для отключения лигатуры Th в кодировке OT1 (нужен новый набор виртуальных шрифтов). По моему мнению, это было быоченьхорошая особенность, так как лигатура мне кажется просто ужасной.

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