Подтвердить что ты не робот

Каково текущее состояние субпиксельной точности в основных браузерах?

Я работаю над графическим приложением, которое требует высоких уровней точности, и мне интересно, какая из основных платформ браузера (включая элемент HTML Canvas и Flash) дает наилучшую точность подпиксельной компоновки, как для (прямоугольники в Canvas или Flash, абсолютно позиционированные DIV в браузере) и для текста.

Есть несколько сообщений, связанных с этим, как на этом сайте, так и на других (см. список внизу), но многие из них довольно старые, и ни одна из них не суммирует текущую ситуацию.

Я понимаю, что Flash имеет встроенную поддержку подпиксельного позиционирования, используя twips для размещения объектов до одной двадцатой пикселя, и что при использовании TextLayoutFramework эта точность также распространяется на текст. Однако есть хотя бы один отчет о том, что это не работает должным образом в Chrome. Кто-нибудь может это подтвердить?

Мое понимание ситуации в браузерах заключается в том, что Firefox 14+ поддерживает подпиксельное позиционирование для текстовых и рисованных элементов, как в макете страницы, так и в Canvas, но я не смог выяснить, насколько это точно.

Я понимаю, что Chrome (с версии v21) не поддерживает подпиксельное позиционирование вообще.

Я понимаю, что IE9 не поддерживает подпиксельное позиционирование, но он появляется из сообщения в блоге MS, связанного ниже, что IE10 будет.

Я не знаю, есть ли в этом разница в Mac/PC, и я не знаю также, если точность Flash зависит от платформы и/или браузеров.

Я понимаю, что такой сводный вопрос может спровоцировать некоторые дебаты, но я считаю, что это достаточно специфично для людей, чтобы давать полезные ответы, и надеемся, что этот поток может быть ссылкой для состояния точности позиционирования до сих пор.

Некоторые ссылки:

http://blogs.msdn.com/b/ie/archive/2012/02/17/sub-pixel-rendering-and-the-css-object-model.aspx

Подпиксельная рендеринг в Chrome Canvas

http://johnblackburne.blogspot.co.uk/2011/11/twips.html

http://ejohn.org/blog/sub-pixel-problems-in-css/

Позиционирование CSS подкатегория

https://productforums.google.com/forum/?fromgroups=#!topic/chrome/pRt3tiVIkSI

4b9b3361

Ответ 1

В настоящее время вы можете ожидать, что лучшая поддержка округления и субпикселя будет поступать из Mozilla с IE в качестве занявшего второе место. IE может быть более точно настроен, но их циклы выпуска настолько велики, что Mozilla скорее всего будет опережать их.

Что касается создания субпиксельной компоновки, вы можете преследовать wisp, потому что преимущество субпикселя улучшает проблемы сглаживания, а не точность определения местоположения. Ваше изображение никогда не будет более точным, чем 1 пиксель от истинной позиции, независимо от поддержки субпикселей.

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

Ответ 2

Короткий ответ:
Нет. Это невозможно/документально.
И даже если он будет определен экспериментально, он НЕ гарантированно останется в будущем.

Длинный ответ:
При субпиксельной точности существует множество различий между браузерами/ОС/HW о том, как ввод/вывод данных. При ускорении h/w в большинстве современных браузеров существует большое количество вариантов рендеринга на разных ПК, работающих с разными браузерами в разных операционных системах. Настолько, что можно даже идентифицировать каждого уникального пользователя несколькими разными вариантами рендеринга вывода общего образца.

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

  • Разрешить редактирование изображения на увеличенных/увеличенных уровнях.

  • Создайте метод привязки к сетке для элементов.

Update:
Операцией "масштабирования" была бы ваша пользовательская реализация, а НЕ функция базовых фреймворков. Поэтому, если вам нужна субпиксельная точность порядка 1/10 пикселя, нужно будет иметь 10x_zoom(), реализованный как часть вашего веб-приложения, которое будет отображать данные из

1-й пиксель → 10x10 пикселей в (0,0),
2-й пиксель → 10x10 пикселей, начиная с (11,11).

Таким образом, у вас будет очень увеличенный вид данных, но структура блаженно не знает обо всем этом и делает точный для экранного пикселя (который в нашем случае теперь составляет 1/10 пикселя изображения).

Также важно отметить, что эта операция будет потреблять много памяти, если она будет сделана для всего изображения одновременно. Следовательно, делая это ТОЛЬКО видимая часть изображения в "окне масштабирования" будет быстрее и будет менее интенсивным в памяти процессом.

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