% Settings
\AtBeginDocument{\setromanfont{Times New Roman}}
-\AtBeginDocument{\setsansfont{Gilroy}}
+\AtBeginDocument{\setsansfont{Roboto}}
\AtBeginDocument{\setmonofont{Consolas}}
\setbeamercolor*{title page header}{fg=white}
-\setbeamerfont*{title}{size*={32pt}{1},family=\sffamily}
+\setbeamerfont*{title}{size*={40pt}{1},family={\fontspec{Roboto-Medium}}}
\setbeamercolor*{author}{fg=white}
-\setbeamerfont*{author}{size*={18pt}{1},family=\sffamily}
+\setbeamerfont*{author}{size*={14pt}{1},family=\sffamily}
\setbeamercolor*{frametitle}{fg=cyan}
\setbeamerfont*{frametitle}{size*={22pt}{1},family=\sffamily,series=\bfseries}
%\definecolor{text}{HTML}{595959}
\AtBeginDocument{\usebeamerfont{normal text}}
\setbeamertemplate{itemize items}{\textbullet}% отключает кошмарные синие треугольники
\setbeamercolor{itemize/enumerate body}{fg=text}
+
+
+% Макросы воспроизводят поведение LibreOffice Impress при размещении текста
+% в текстовом блоке: LibreOffice использует usWinAscent как First Baseline
+% Offset — расстояние от верхней границы блока до базовой линии первой строки.
+% Пространство над заглавной буквой (gap) при этом равно:
+% gap = round(usWinAscent × fontSize / unitsPerEm)
+% - round(sCapHeight × fontSize / unitsPerEm)
+% где round реализован как целочисленное (a + unitsPerEm/2) / unitsPerEm.
+%
+% Макрос вычисляет gap для текущего активного шрифта (\f@size),
+% поэтому должен вызываться после \usebeamerfont{...}.
+%
+% Параметры шрифтов получены командой: ttx -t OS/2 -t head <font.ttf>
+% Для нового шрифта взять usWinAscent, sCapHeight, unitsPerEm из вывода
+% ttx и добавить аналогичный макрос.
+%
+% USE_TYPO_METRICS (fsSelection bit 7) у всех трёх не установлен —
+% LibreOffice использует Win-метрики. Проверить: в выводе ttx -t OS/2
+% убедиться что бит 7 fsSelection = 0.
+%
+% Roboto-Regular.ttf: usWinAscent=1946, sCapHeight=1456, unitsPerEm=2048
+% Roboto-Medium.ttf: usWinAscent=1946, sCapHeight=1456, unitsPerEm=2048
+% RobotoMono-Regular.ttf: usWinAscent=2146, sCapHeight=1456, unitsPerEm=2048
+
+\newcommand{\RobotoRegularBaselineGap}{\dimexpr
+ \numexpr (1946 * \f@size + 1024) / 2048 \relax pt -
+ \numexpr (1456 * \f@size + 1024) / 2048 \relax pt
+\relax}
+
+\newcommand{\RobotoMediumBaselineGap}{\dimexpr
+ \numexpr (1946 * \f@size + 1024) / 2048 \relax pt -
+ \numexpr (1456 * \f@size + 1024) / 2048 \relax pt
+\relax}
+
+\newcommand{\RobotoMonoRegularBaselineGap}{\dimexpr
+ \numexpr (2146 * \f@size + 1024) / 2048 \relax pt -
+ \numexpr (1456 * \f@size + 1024) / 2048 \relax pt
+\relax}
+
+
\mode
<all>