Хотите немного затемнить шрифт?

Хотите немного затемнить шрифт?

Я вижу, где мое описание могло ввести в заблуждение, поэтому вот исправленный вопрос. Я хочу сделать "dog" немного темнее обычного текста. Я не хочу, чтобы он был таким же темным, как "fox". Я использую fontspec с lualatex.

Я пытаюсь подобрать курсив шрифта к другому, который немного темнее. Можно ли это сделать с помощью FakeBold? В примере ниже «dog» такой же темный, как «fox», но я хочу только немного затемнить его.

(GentiumPlus используется здесь просто в качестве примера. Это не мой настоящий шрифт.)

\documentclass[12pt]{article}
\usepackage{fontspec}

\setmainfont{GentiumPlus}

\newfontfamily{\fbgentium}{GentiumPlus}[%
  ItalicFeatures={FakeBold=1.5},
  Scale = MatchLowercase]

% Want this to be just slightly dark
\newfontfamily{\ltgentium}{GentiumPlus}[%
  ItalicFeatures={FakeBold=1.05}, % specify a small amount here (tried 0.05)
  Scale = MatchLowercase]

\begin{document}
\itshape
The quick brown {\fbgentium fox}
jumps over the lazy {\ltgentium dog.}
\end{document}

решение1

Я только что отправил issue #498 на страницу GitHub для latex3/fontspec. Связано с этой веткой в ​​SE. Когда они ответят мне, я прокомментирую здесь. Тем временем, обходной путь (работает с lualatex):

В большинстве случаев, особенно для текста нормального или почти нормального размера, визуальное восприятие веса более тесно связано с вертикальными штрихами, чем с горизонтальными. Это связано с тем, что большинство символов имеют более толстые вертикальные штрихи.

Настройка fontspecдля FakeStretchработает хорошо. Все, что она делает, это горизонтальное масштабирование, что является простым линейным преобразованием и максимально безошибочно. Поэтому для небольшого изменения веса я бы использовал FakeStretchпока и подождал разрешения на FakeBold.

Если вам также необходимо изменить толщину горизонтальных штрихов, это невозможно сделать с помощью FakeStretch. Но при необходимости вы можете увеличить размер шрифта с помощью ScaleAgainи компенсировать это значением FakeStretch.

Связанное примечание: Я использую комбинацию ScaleAgainи FakeStretchдля создания синтетических капителей для шрифтов, в которых их нет. Не идеально, но хорошо.

решение2

Оба движка TeX [XeTeX] и [LuaTeX с luaotfload] поддерживают функцию шрифта, реализованную движком, embolden=decimal_numberдля шрифтов OpenType. Стандарт PDF определяет две основные процедуры рисования для замкнутых кривых: fillи stroke. Процедура вставляет чернила только внутрь замкнутой кривой, а штрих рисует кривую линией, ее ширина должна быть объявлена. По умолчанию fillрисование букв шрифтов выполняется только процедурой . Когда установлена ​​функция шрифта, зависящая от движка, то буквы используемого шрифта рисуются обеими процедурами: плюс и ширина линии процедуры устанавливается равной .fillembolden=decimal numberfillstrokestrokedecimal_number/100 em

Например, вы можете попробовать использовать using xetex:

\font\fa=[lmroman10-regular]
\font\fb=[lmroman10-regular]:embolden=1.7

\fa Default: only fill is used.

\fb Special: fill plus stroke is used.

\bye

Пакет LaTeX fontspec преобразует свой особый синтаксис FakeBold=decimal numberво embolden=decimal_numberвнутреннюю функцию шрифта.

Для большей ясности я добавляю следующее изображение, показывающее, как работают процедуры заливки и обводки:

заполнение и обводка

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