javascript - 打开 javascript 库来执行与符号集相同的操作

标签 javascript jquery fonts symbols opentype

我计划创建自己的符号字体以在我的网站上使用,我最初打算使用连字和 OT,但支持充其量是不稳定的,并且对于较旧的浏览器,尤其是 IE 来说不存在(我知道,大惊喜)。然后我开始仔细研究如何 SymbolSet作品。它实际上非常聪明,虽然我可以很容易地更改几个数组变量并使用它来完成,但 JavaScript 是专有的,未经许可我不能使用它。我希望能够按照 SymbolSet 创建自己的符号字体,但我需要一个打开的 javascript 文件来让我做到这一点。是否有任何开放的 jQuery 插件或 JavaScript 库可以执行此操作?

最佳答案

我找到了这个http://labs.adamdscott.com/ligatures/ligaturejs.html 。基本上它会遍历 dom,并用连字替换已知的字母组合。我已修改脚本以在可用时使用 native 连字支持:

// 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);
        }
      }
    }
  };

}());

关于javascript - 打开 javascript 库来执行与符号集相同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778563/

相关文章:

javascript - 正则表达式匹配 html div 内的换行符

javascript - 当语法有效时,Azure 函数提示 JS 语法错误

javascript - $watchCollection 和多个表达式不起作用

javascript - 如何带参数调用coffescript函数?

html - 我可以在同一段落中对亚洲字符(韩语)使用两种不同的字体,对罗马字符使用另一种字体吗?

javascript - ExtJs 拖放树,获取放置位置

javascript - 如何使用 Trello JS API 创建卡片

javascript - 变量值javascript的大写首字母

css - 托管网络字体、CDN、@font-face 和隐私

java - 更改 BlueJ/Java 中的 system.out 字体和颜色