javascripthtmlcanvasopera-miniopera-presto

Detecting canvas text API support (Opera Mini)


Although Opera Mini does not display canvas text, a typical test indicates that it has an implementation of the text API functions. Is there an alternative technique to check for support?

Current method:

var context = document.createElement("canvas").getContext("2d");
var canvasTextSupport = typeof context.fillText == "function"; // true in Opera Mini

An example you can use to see if text shown: tutorialspoint


Solution

  • As suggested by @kangax, you can test by drawing text to a canvas and then making sure that pixels have been drawn.

    var canvasTextSupported = function() {
      var canvas = document.createElement("canvas");  
      var context = canvas.getContext("2d");
    
      context.fillText("X", 5, 5);     
      var imageData = context.getImageData(0, 0, 10, 10);
    
      for(var i = 0, l = imageData.data.length; i < l; i++) {
        if(imageData.data[i] !== 0)
          return true;
      }
      return false;
    }