Не получается нарисовать круглые круги в Fontforge

Я использую Fontforge для создания шрифта, но у меня есть проблема: я не могу рисовать круглые круги! :(

Я нажимаю на инструмент «Круг», затем рисую круг обычным способом (удерживая Shift, чтобы получился круг, а не эллипс) — но как только я отпускаю левую кнопку мыши, круг меняется и в конечном итоге выглядит как весь. нерегулярно, например:

Некруглый круг, нарисованный в Fontforge.

Предыстория: я работаю над расширением шрифта GNU FreeSans (шрифт Truetype), к которому я добавляю глифы для своей собственной системы письма. Если я открываю новый проект в Fontforge, рисование кругов работает нормально.

Я думаю, это как-то связано с тем фактом, что шрифты PostScript используют кубические кривые Безье, а Truetype использует квадратичные? (Хотя это только мои догадки.)

Согласно меню «Справка > О…», я использую следующую версию Fontforge:

git hash: b9149c13e...
Version: 00:15 UTC 31-Jul-2017

Ответы (3)

FontForge может рисовать круги, но примитив круга не существует для контуров шрифта. Таким образом, они автоматически преобразуются в несколько близкую форму с помощью кривых Безье.

Хотя можно аппроксимировать идеальный круг кривыми Безье, доказано, что это математически невозможно.

Нет никакого преимущества перед использованием кубических или квадратичных кривых, поскольку они эквивалентны кругам.

(Хотя можно рисовать круги совершенно новым шрифтом, вы увидите, что как только вы сохраните такой шрифт как TrueType или Type 1 — единственные типы контуров, которые можно использовать в современных шрифтах OpenType — они преобразуются к тем самым кривым.)

Привет, у меня возникли проблемы с рисованием перпендикулярных линий в fontforge. Есть ли простой способ?

Я думаю, что эта проблема связана как с кубической/квадратичной настройкой, так и с привязкой к сетке. Вы рисуете в очень мелком масштабе?

Обходной путь может заключаться в том, чтобы нарисовать большой круг, а затем уменьшить его. Таким образом, вы сохраните более круглую форму.

Привязывает ли FontForge все точки на кривой и вне ее к ближайшей целочисленной точке? Это не требуется для шрифтов Type 1 (хотя настоятельно рекомендуется), и я не знаю, возможны ли вообще координаты с плавающей запятой для шрифтов TrueType. Это может повлиять на форму любого размера (особенно для относительно небольших кругов на грубой сетке).

Я использую более позднюю версию, 20201107, но на ней вы можете нарисовать красивый круг с помощью инструмента с надписью «Добавить точку кривой» (с красным кружком, а не с красным квадратом). Просто добавьте четыре точки, расположенные в квадрате, и этот инструмент даст вам круг.