Почему координаты Y ограничивающей рамки глифа шрифта отрицательны по отношению к восходящему / нижнему элементу? - PullRequest
0 голосов
/ 30 мая 2020

Я работал с парсером шрифтов 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 , хотя вышеупомянутый вопрос был связан с использованием других инструментов, поэтому я не считаю, что это актуально.

...