Merge pull request #7676 from ahocevar/font-check
Check fonts against two reference fonts
This commit is contained in:
+15
-11
@@ -125,22 +125,26 @@ _ol_render_canvas_.checkFont = (function() {
|
|||||||
var retries = 60;
|
var retries = 60;
|
||||||
var checked = _ol_render_canvas_.checkedFonts_;
|
var checked = _ol_render_canvas_.checkedFonts_;
|
||||||
var labelCache = _ol_render_canvas_.labelCache;
|
var labelCache = _ol_render_canvas_.labelCache;
|
||||||
var font = '32px monospace';
|
var size = '32px ';
|
||||||
|
var referenceFonts = ['monospace', 'serif'];
|
||||||
|
var len = referenceFonts.length;
|
||||||
var text = 'wmytzilWMYTZIL@#/&?$%10';
|
var text = 'wmytzilWMYTZIL@#/&?$%10';
|
||||||
var interval, referenceWidth;
|
var interval, referenceWidth;
|
||||||
|
|
||||||
function isAvailable(fontFamily) {
|
function isAvailable(font) {
|
||||||
var context = _ol_render_canvas_.getMeasureContext();
|
var context = _ol_render_canvas_.getMeasureContext();
|
||||||
context.font = font;
|
|
||||||
referenceWidth = context.measureText(text).width;
|
|
||||||
var available = true;
|
var available = true;
|
||||||
if (fontFamily != 'monospace') {
|
for (var i = 0; i < len; ++i) {
|
||||||
context.font = '32px ' + fontFamily + ',monospace';
|
var referenceFont = referenceFonts[i];
|
||||||
var width = context.measureText(text).width;
|
context.font = size + referenceFont;
|
||||||
// If width and referenceWidth are the same, then the 'monospace'
|
referenceWidth = context.measureText(text).width;
|
||||||
// fallback was used instead of the font we wanted, so the font is not
|
if (font != referenceFont) {
|
||||||
// available.
|
context.font = size + font + ',' + referenceFont;
|
||||||
available = width != referenceWidth;
|
var width = context.measureText(text).width;
|
||||||
|
// If width and referenceWidth are the same, then the fallback was used
|
||||||
|
// instead of the font we wanted, so the font is not available.
|
||||||
|
available = available && width != referenceWidth;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return available;
|
return available;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user