Каким образом отображаются точки глифов в шрифте UFO?

Я пытаюсь захватить точки / пути глифов (без использования шрифта). Я преобразовал глиф в НЛО.

<contour>
  <point x="281" y="646" type="qcurve"/>
  <point x="273" y="599"/>
  <point x="225" y="411"/>
  <point x="216" y="363" type="qcurve"/>
  <point x="320" y="382"/>
  <point x="426" y="445" type="qcurve"/>
  <point x="603" y="552"/>
  <point x="603" y="626" type="qcurve"/>
  <point x="603" y="676"/>
  <point x="502" y="676" type="qcurve"/>
  <point x="420" y="676"/>
</contour>

Согласно инструкции,qcurve означает quadratic curvesполучено из TrueType. Таким образом, мы можем вычислить две контрольные точки Безье из одной квадратичной контрольной точки:

CP1 = QP0 + 2/3 *(QP1-QP0)
CP2 = QP2 + 2/3 *(QP1-QP2)

В этом случае у нас должна быть одна контрольная точка между двумя точками (см. Первые четыре строки; есть две контрольные точки).

Как мы можем преобразовать квадратичную кривую с двумя контрольными точками в кривую Безье?

1 ответ

Решение

Не существует квадратичной кривой с двумя контрольными точками. По определению, у него только один. Однако TryeType имеет сжатое представление точек, которое удаляет точки на кривой, которые лежат точно между контрольными точками последовательных квадратичных кривых, поэтому список точек, который вы видите в файле UFO, просто сопоставляется с собственными "на кривой" и "вне кривой" TrueType. определение точек.

Как поясняется в документации по НЛО, это требует особого обращения, поэтому см. "Почему в контуре глифа появляется несколько последовательных точек вне кривой?" Сообщение Stackru и ответ о том, как интерпретировать подобные последовательности.

Другие вопросы по тегам