Skip to content

Instantly share code, notes, and snippets.

@Costava
Forked from joubertnel/gist:870190
Last active January 14, 2017 15:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Costava/97e24be70b23a0ff8c49 to your computer and use it in GitHub Desktop.
Save Costava/97e24be70b23a0ff8c49 to your computer and use it in GitHub Desktop.
HTML5 Canvas - Rendering of Text on High-DPI Screens
<html>
<head>
<script src='http://code.jquery.com/jquery-1.5.1.min.js'></script>
</head>
<body>
<h2>Naive canvas</h2>
<canvas id="naive" width="400" height="50"></canvas>
<h2>High-def Canvas</h2>
<canvas id="hidef" width="400" height="50"></canvas>
</body>
<script>
$(document).ready(function() {
// Output to Canvas without consideration of device pixel ratio
var naiveContext = $('#naive')[0].getContext('2d');
naiveContext.font = '16px Palatino';
naiveContext.fillText('Rothko is classified as an abstract expressionist.', 10, 20);
// Output to Canvas, taking into account devices such as iPhone 4 with Retina Display
var hidefCanvas = $('#hidef')[0];
var hidefContext = hidefCanvas.getContext('2d');
if (window.devicePixelRatio) {
var hidefCanvasWidth = $(hidefCanvas).attr('width');
var hidefCanvasHeight = $(hidefCanvas).attr('height');
var hidefCanvasCssWidth = hidefCanvasWidth;
var hidefCanvasCssHeight = hidefCanvasHeight;
$(hidefCanvas).attr('width', hidefCanvasWidth * window.devicePixelRatio);
$(hidefCanvas).attr('height', hidefCanvasHeight * window.devicePixelRatio);
$(hidefCanvas).css('width', hidefCanvasCssWidth);
$(hidefCanvas).css('height', hidefCanvasCssHeight);
hidefContext.scale(window.devicePixelRatio, window.devicePixelRatio);
}
hidefContext.font = "16px Palatino";
hidefContext.fillText("Rothko is classified as an abstract expressionist.", 10, 20);
});
</script>
</html>
@Costava
Copy link
Author

Costava commented Nov 6, 2015

This fork fixes the misspelling of the font name on line 39. The correct spelling is really important because different fonts obstruct the high-DPI comparison.

Old:
hidefContext.font = "16px Palantino";

Fixed:
hidefContext.font = "16px Palatino";

@Costava
Copy link
Author

Costava commented Nov 6, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment