Я работал с парсером шрифтов TTF, и теперь я работаю над пониманием ограничивающих рамок глифов.
К сожалению, меня немного смущает система координат.
Версия следующего оператора встречается в большей части документации, которую я читал:
подъем : это расстояние от базовой линии до самой высокой / верхней используемой координаты сетки. для размещения точки контура. Это положительное значение из-за ориентации сетки осью Y вверх.
спуск : расстояние от базовой линии до самой низкой координаты сетки, используемой для поместите точку контура. Это отрицательное значение из-за ориентации сетки.
Значения, которые я получаю от парсера, согласуются с этим:
ascent: 79.16667
descent: -20.833334
Но , когда я запрашиваю у синтаксического анализатора ограничивающую рамку для определенных c глифов, те, которые, как я ожидаю, будут выше базовой линии, являются строго отрицательными, а те, у которых есть дочерние элементы, расширяются в положительный диапазон:
x: { min: { x: 1.7083335, y: -45.083336 }, max: { x: 40.41667, y: 0.0 } }
y: { min: { x: 0.91666675, y: -45.083336 }, max: { x: 39.33334, y: 18.208334 } }
Q: { min: { x: 4.541667, y: -61.5 }, max: { x: 53.58334, y: 10.25 } }
Я увидел здесь еще один вопрос, который упоминался при вычислении ограничивающего прямоугольника, который вам нужно было добавить значения x и вычесть значения y, хотя он не объяснил, почему.
Мне нетрудно реализовать то, что мне нужно Чтобы поменять местами знаки, я просто хотел убедиться, что понимаю последствия, тем более что мне не удалось найти никакой документации, объясняющей, почему это так.
Я работаю в Rust с rusttype , хотя вышеупомянутый вопрос был связан с использованием других инструментов, поэтому я не считаю, что это актуально.