Пункты, пиксели, миллиметры и их преобразования.

Resolutions По велению судьбы довелось мне разрабатывать интернет магазин печатной продукции. Главная фитча которого в том, что пользователь с помощью конструктора может создать себе визитку, буклет или фотоальбом и тут же заказать эту прелесть. Само собой этот конструктор подразумевает генерацию превью на JS (для пользователя) и генерацию PDF (для печати продукции).

Наша задача: вывести пару простых формул для преобразования единиц измерения, а именно миллиметров, пунктов и пикселей для заданной разрешающей способности устройства печати.

В XML шаблоне продукта мы задаем размеры и координаты объектов в миллиметрах, а кегль шрифта в пунктах. Для того, чтобы генерировать превью продукта средствами HTML с помошью JS, нам нужно привести все размеры в пиксели.

Давайте для начала разберемся с основными понятиями.
DPI (Dots per Inch) – количество точек (пикселей) на дюйм.
Дюйм (Inch) – есть единица меры расстояния в некоторых европейских неметрических системах. 1 дюйм = 25.4 мм.
Типографический пункт” (Pt) – единица измерения кегля шрифта. 1 пункт = 1/72 дюйма.

Возьмем, к примеру, разрешающую способность 300 dpi. Определим константу D = 300.
Так как 1 дюйм 25.4 мм, при разрешении D в одном пикселе (25.4/D) миллиметров.

SizeMM = (SizePixels * 25.4) / D;
SizePixels = (SizeMM * D) / 25.4;

С размерами разобрались, теперь займемся кеглем шрифта.
Так как 1 пункт есть 1/72 дюйма, то при разрешении D 1 пункт будет равен D/72 пикселям.
Получим прямую и обратную зависимости:

FontPixels = FontPT * (D / 72);
FontPT = FontPixels * (72 / D);

Спасибо за внимание.

Leave a Reply




*