Можно ли обнаружить аппаратное ускорение браузером в JavaScript?

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

Можно ли использовать JavaScript или библиотеку JS для определения того, что аппаратное ускорение включено (или отключено) в браузере?

Modernizr, похоже, не предлагает такого выбора.


person Andrew Weir    schedule 23.03.2011    source источник
comment
ИМО вы задаете неправильный вопрос. Вам никогда не придется заботиться об аппаратном ускорении.   -  person CodesInChaos    schedule 23.03.2011
comment
Связанный с этим вопрос: stackoverflow.com/questions/4972074/ . Хотя это было бы дубликатом, если бы вы просто следовали названию, вопрос, который он действительно хотел знать, был: достаточно ли это быстро? тогда как на самом деле этот вопрос заключается в том, делает ли это так, как я хочу?   -  person CodesInChaos    schedule 23.03.2011


Ответы (4)


Отрисовка шрифта зависит от браузера, ОС и пользовательских настроек. Таким образом, ваш веб-сайт должен изящно справляться с такими различиями, а не полагаться на точную отрисовку шрифта с точностью до пикселя. Аппаратное ускорение — еще один источник таких различий.

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

person CodesInChaos    schedule 23.03.2011
comment
Действительно, я думаю, я не был полностью уверен, куда направить свои ресурсы для решения проблемы - все, что я знал, это то, что проблема действительно нуждается в решении. Приветствия для ввода. - person Andrew Weir; 23.03.2011

Поскольку вас интересует только разница в размере шрифта в разных браузерах и платформах, возможно, стоит изучить методы нормализации размера шрифта.

Единственный, с которым я лично знаком, — это Шрифты YUI CSS. Я использую его во всех своих проектах, и он используется в проекте HTML5Boilerplate.

Существуют также фреймворки типографики css, такие как Baseline, Typogridphy, Blueprint (я изучил это и рекомендую, если вы идете по этому пути) и, наконец, ататонический

person xzyfer    schedule 23.03.2011

Вместо обходных путей для медленного рендеринга, почему бы не использовать подчеркивание для сокращения количества обновлений?

person NoBugs    schedule 21.01.2014

<script type="text/javascript">
<!--
window.onload=function(){
        if(window.screen.availHeight>700 && window.screen.availWidth>1000)
        {
        document.body.style.fontSize="15px";
        }
.................
//another conditions
}
//-->
</script>

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

<script type="text/javascript">  

 var number=10;  
 var i;  
 var start = (new Date).getTime();  
 //code here  
     for(i=0;i<10000;i++)  
     {  
      number=number*10;  
     }  
 var diff = (new Date).getTime() - start;  
 alert(diff);  

 start = (new Date).getTime();  
 //code here  
     while(i<10000)  
     {  
      number=number*10;  
      i++;  
     }  

diff = (new Date).getTime() - start;  
alert(diff);  

 </script> 
person Abdalmohaymen    schedule 23.03.2011
comment
Разве любой приличный компилятор не оптимизирует весь ваш цикл? И первая функция выглядит так, как будто она вызовет изменение размера следующей в момент завершения загрузки страницы. Ужасный пользовательский опыт. - person CodesInChaos; 23.03.2011
comment
Скорость вычислений вашего цикла занятости (я уверен, что вашим посетителям это понравится) не имеет никакого отношения к аппаратному ускорению рендеринга шрифтов (что на самом деле является лишь одним конкретным экземпляром проблемы, о которой писал первоначальный плакат). пытается решить). - person sarnold; 23.03.2011
comment
И я ожидаю, что разница во времени будет равна нулю, даже если цикл не оптимизирован. В Windows функции времени не очень точны. В зависимости от того, какие другие программы работают, он может обновляться только каждые 16 мс. И ваш цикл, безусловно, займет меньше времени, чем это. - person CodesInChaos; 23.03.2011