我创建了一个小应用程序来查看浏览器上的所有本地字体。 (Demo)
我使用Flash获取字体名称:
import flash.external.ExternalInterface;
ExternalInterface.call("getFontList", getDeviceFonts());
function getDeviceFonts(): Array {
var embeddedAndDeviceFonts: Array = Font.enumerateFonts(true);
var deviceFontNames: Array = [];
for each(var font: Font in embeddedAndDeviceFonts) {
deviceFontNames.push(font.fontName);
}
deviceFontNames.sort();
return deviceFontNames;
}
以后处理名称并创建一个4列布局来查看它们:
function getFontList(fontList) {
$("#flash").remove();
fontList.forEach(function (fontName) {
var cell = elem("div", {"class":"tile"}, [
elem("div", {"class":"fontName"}, fontName),
elem("div", {"class":"demo", "style":"font-family: \"" + fontName.replace(/"/g, '\\"') + "\", Consolas, Arial;"}),
]);
output.append(cell);
});
updateCells($("#input").val());
}
这样做很好,但有一些小问题。某些字体无法在浏览器上呈现,并且应用了后备字体。
例如,此字体:!PaulMaul
。我可以在MS Word和Photoshop上查看:
这就是它在浏览器上的外观(Consolas应用):
我之前没有遇到过这样的事情,所以我不知道问题所在。我认为任何本地字体都可以在浏览器上使用,特别是如果MS Word和PS可以使它们正常。我猜,这不是真的。
这里究竟出现了什么问题,有没有办法解决这个问题?
应用程序可在Github上找到,如果有人想要修补。