我正计划创建自己的符号字体以在我的网站上使用,我最初打算使用连字和 OT,但支持充其量是参差不齐的,并且对于旧浏览器不存在,尤其是 IE(我知道,大吃一惊)。然后我开始仔细研究SymbolSet是如何工作的。它实际上非常聪明,虽然我可以轻松更改几个数组变量并完成它,但 javascript 是专有的,未经许可我不能使用它。我希望能够创建我自己的符号字体(la SymbolSet),但我需要一个打开的 javascript 文件来让我这样做。是否有任何开放的 jQuery 插件或 javascript 库可以做到这一点?
问问题
187 次
1 回答
0
我找到了这个http://labs.adamdscott.com/ligatures/ligaturejs.html。基本上它遍历 dom,并用连字替换已知的字母组合。我已修改脚本以在可用时使用本机连字支持:
// ligature.js v1.0
// http://code.google.com/p/ligature-js/
// with modifications by sabof
var ligature = (function() {
var testDiv = document.createElement('div'),
nativeLigatureSupport = testDiv.style.textRendering !== undefined;
if (nativeLigatureSupport) {
return function (node, extended) {
if (!node) {
ligature(document.body, extended);
} else {
node.style.textRendering = 'optimizeLegibility';
}
}
}
return function(node, extended) {
if (!node) {
ligature(document.body, extended);
} else {
if (node.nodeType == 3 && node.parentNode.nodeName != 'SCRIPT') {
node.nodeValue = node.nodeValue
.replace(/ffl/g, 'ffl')
.replace(/ffi/g, 'ffi')
.replace(/fl/g, 'fl')
.replace(/fi/g, 'fi')
.replace(/ff/g, 'ff')
.replace(/ij/g, 'ij')
.replace(/IJ/g, 'IJ');
if (extended) {
node.nodeValue = node.nodeValue
.replace(/ae/g, 'æ')
.replace(/A[Ee]/g, 'Æ')
.replace(/oe/g, 'œ')
.replace(/O[Ee]/g, 'Œ')
.replace(/ue/g, 'ᵫ')
.replace(/st/g, 'st');
}
}
if (node.childNodes) {
for (var i=0; i < node.childNodes.length; i++) {
ligature(node.childNodes.item(i), extended);
}
}
}
};
}());
于 2013-07-25T15:02:55.523 回答