othree
14 years ago
4 changed files with 17 additions and 105 deletions
@ -1,99 +0,0 @@ |
|||||||
/* |
|
||||||
* TypeHelpers version 1.0 |
|
||||||
* Zoltan Hawryluk, Nov 24 2009. |
|
||||||
* @see http://www.useragentman.com/blog/2009/11/29/how-to-detect-font-smoothing-using-javascript/
|
|
||||||
* |
|
||||||
* Released under the MIT License. http://www.opensource.org/licenses/mit-license.php
|
|
||||||
* |
|
||||||
* Works for |
|
||||||
* - IE6+ (Windows), |
|
||||||
* - Firefox 3.5+ (Windows, Mac, Linux), |
|
||||||
* - Safari 4+ (Windows, Mac OS X), |
|
||||||
* - Chrome 3.0+ (Windows). |
|
||||||
* Opera 10.10 and under reports unknown support for font-smoothing. |
|
||||||
* |
|
||||||
* Modified by Christian Beier (www.beier-christian.eu) to detect the ClearType technology. |
|
||||||
* |
|
||||||
* Required: jQuery 1.3.x |
|
||||||
* |
|
||||||
* |
|
||||||
* METHODS |
|
||||||
* ------- |
|
||||||
* |
|
||||||
* hasSmoothing() returns: |
|
||||||
* true if font smoothing is enabled |
|
||||||
* false if font smoothing isn't enabled |
|
||||||
* null if it cannot detect if it's on or not. |
|
||||||
* |
|
||||||
* addClasses() adds the following classes to the html tag: |
|
||||||
* "hasFontSmoothing-true" if font smoothing is enabled |
|
||||||
* "hasFontSmoothing-false" if it isn't |
|
||||||
* "hasFontSmoothing-unknown" if it cannot detect it. |
|
||||||
* |
|
||||||
*/ |
|
||||||
|
|
||||||
var TypeHelpers = new function(){ |
|
||||||
var me = this; |
|
||||||
|
|
||||||
me.hasSmoothing = function(){ |
|
||||||
// IE has screen.fontSmoothingEnabled - sweet!
|
|
||||||
if (typeof(screen.fontSmoothingEnabled) != "undefined") { |
|
||||||
return screen.fontSmoothingEnabled; |
|
||||||
} else { |
|
||||||
try { |
|
||||||
// Create a 35x35 Canvas block.
|
|
||||||
var canvasNode = document.createElement("canvas"); |
|
||||||
canvasNode.width = "35"; |
|
||||||
canvasNode.height = "35" |
|
||||||
|
|
||||||
// We must put this node into the body, otherwise
|
|
||||||
// Safari Windows does not report correctly.
|
|
||||||
canvasNode.style.display = "none"; |
|
||||||
document.body.appendChild(canvasNode); |
|
||||||
var ctx = canvasNode.getContext("2d"); |
|
||||||
|
|
||||||
// draw a black letter "O", 32px Arial.
|
|
||||||
ctx.textBaseline = "top"; |
|
||||||
ctx.font = "32px Arial"; |
|
||||||
ctx.fillStyle = "black"; |
|
||||||
ctx.strokeStyle = "black"; |
|
||||||
|
|
||||||
ctx.fillText("O", 0, 0); |
|
||||||
|
|
||||||
// start at (8,1) and search the canvas from left to right,
|
|
||||||
// top to bottom to see if we can find a non-black pixel. If
|
|
||||||
// so we return true.
|
|
||||||
for (var j = 8; j <= 32; j++) { |
|
||||||
for (var i = 1; i <= 32; i++) { |
|
||||||
var imageData = ctx.getImageData(i, j, 1, 1).data |
|
||||||
var alpha = imageData[3]; |
|
||||||
|
|
||||||
if (alpha != 255 && alpha != 0 && alpha > 180) { |
|
||||||
return true; // font-smoothing must be on.
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
// didn't find any non-black pixels - return false.
|
|
||||||
return false; |
|
||||||
} |
|
||||||
catch (ex) { |
|
||||||
// Something went wrong (for example, Opera cannot use the
|
|
||||||
// canvas fillText() method. Return null (unknown).
|
|
||||||
return null; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
$(document).ready(function() { |
|
||||||
var result = me.hasSmoothing(); |
|
||||||
if (result == true) { |
|
||||||
$('html').addClass('hasFontSmoothing-true'); |
|
||||||
} else if (result == false) { |
|
||||||
$('html').addClass('hasFontSmoothing-false'); |
|
||||||
} else { // result == null
|
|
||||||
$('html').addClass('hasFontSmoothing-unknown'); |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
Loading…
Reference in new issue