#fonts #wolfram-mathematica
#шрифты #wolfram-mathematica
Вопрос:
Я пытаюсь наложить глифы из разных шрифтов, но их сложно выровнять. Я уверен, что они должны выстраиваться лучше, чем это. Как я могу это сделать?
Graphics[
{Opacity[0.1],
{Text[Style["a", FontFamily -> "Helvetica", 240]],
Text[Style["a", FontFamily -> "Arial", 240]]}
}]
Кроме того, мне интересно нарисовать контуры — здесь я их выбрал, но я хотел бы их нарисовать.
Редактировать: Спасибо! С вашей помощью я смог добиться большей части того, что я пытался:
Manipulate[
Graphics[{{{Opacity[opacity],
Text[Style["Greats", Red, FontFamily -> "Helvetica", 180], {0,
0}, {Center, Baseline}]}, {Opacity[1 - opacity],
Text[Style["Greats", Blue, FontFamily -> "Arial", 180], {0,
0}, {Center, Baseline}]}}}], {opacity, 0.1, 1, 0.1}]
Ответ №1:
По умолчанию текст центрирован (по горизонтали и вертикали) в точке, а шрифты имеют символы разной высоты, что приводит к смещению текста. Например, сравните следующее:
Graphics[{Opacity[
0.1], {Text[
Style["agÄ", FontFamily -> "Helvetica", 240,
Background -> RGBColor[0.8, 0, 0, 0.2]]],
Text[Style["agÄ", FontFamily -> "Arial", 240,
Background -> RGBColor[0, 0, 0.8, 0.2]]]}
}]
Graphics[{Opacity[
0.1], {Text[
Style["agA", FontFamily -> "Helvetica", 240,
Background -> RGBColor[0.8, 0, 0, 0.2]]],
Text[Style["agA", FontFamily -> "Arial", 240,
Background -> RGBColor[0, 0, 0.8, 0.2]]]}
}]
Если вы расположите текст вдоль края, это может работать лучше для вас, хотя это ни в коем случае не гарантировано:
Graphics[{Opacity[
0.1], {Text[
Style["a", FontFamily -> "Helvetica", 240], {0, 0}, {Center,
Bottom}],
Text[Style["a", FontFamily -> "Arial", 240], {0, 0}, {Center,
Bottom}]}}]
Редактировать
Использование Baseline
, предложенное Хейке:
Graphics[{Opacity[
0.1], {Text[
Style["a", FontFamily -> "Helvetica", 240], {0, 0}, {Center,
Baseline}],
Text[Style["a", FontFamily -> "Arial", 240], {0, 0}, {Center,
Baseline}]}}]
Комментарии:
1. Использование
Baseline
вместоBottom
для смещения в вертикальном направлении может работать даже лучше.2. @Heike Хороший момент, тем более, что этот параметр не задокументирован. (Я немного поискал это, прежде чем ответить, но не нашел в
Text
документах.)3. В
BaseLine
документации есть пример использования этого параметра.4. Спасибо, хотя мне не нравится, что первая графика намного лучше второй! Я уверен, что глифы имеют очень похожие показатели, поэтому я ожидаю, что они будут выстраиваться так же хорошо, как и на первом рисунке.
Ответ №2:
Что касается вашего первого вопроса, добро пожаловать в мир различных шрифтов. У них разные показатели, и так оно и есть. Вы могли бы использовать Overlay
или один из графических параметров, таких как ImagePadding
, чтобы сдвинуть один над другим.
Что касается вашего второго вопроса, второй «аккуратный пример» в документации по JoinedCurve
показывает, как это сделать с помощью ExportString
и ImportString
.