Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开javascript库,执行与symbolset相同的操作_Javascript_Jquery_Fonts_Symbols_Opentype - Fatal编程技术网

打开javascript库,执行与symbolset相同的操作

打开javascript库,执行与symbolset相同的操作,javascript,jquery,fonts,symbols,opentype,Javascript,Jquery,Fonts,Symbols,Opentype,我正计划创建自己的符号字体,用于我的网站,我最初打算使用连字和OT,但支持最多是零碎的,并且不存在于较旧的浏览器,尤其是IE(我知道,这让我大吃一惊)。然后我开始仔细观察它是如何工作的。它实际上相当聪明,虽然我可以很容易地更改几个数组变量并使用它,但javascript是专有的,未经允许我不能使用它。我希望能够创建我自己的符号字体和符号集,但我需要一个开放的javascript文件来实现这一点。有没有开放的jQuery插件或javascript库可以这样做?我发现了这个。基本上,它遍历dom,并

我正计划创建自己的符号字体,用于我的网站,我最初打算使用连字和OT,但支持最多是零碎的,并且不存在于较旧的浏览器,尤其是IE(我知道,这让我大吃一惊)。然后我开始仔细观察它是如何工作的。它实际上相当聪明,虽然我可以很容易地更改几个数组变量并使用它,但javascript是专有的,未经允许我不能使用它。我希望能够创建我自己的符号字体和符号集,但我需要一个开放的javascript文件来实现这一点。有没有开放的jQuery插件或javascript库可以这样做?

我发现了这个。基本上,它遍历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);
        }
      }
    }
  };

}());
//ligature.js v1.0
// http://code.google.com/p/ligature-js/
//经sabof修改
变量连字=(函数(){
var testDiv=document.createElement('div'),
nativeLigatureSupport=testDiv.style.textRendering!==未定义;
if(nativeLigatureSupport){
返回函数(节点,扩展){
如果(!节点){
连字(document.body,扩展);
}否则{
node.style.textRendering='优化易读性';
}
}
}
返回函数(节点,扩展){
如果(!节点){
连字(document.body,扩展);
}否则{
if(node.nodeType==3&&node.parentNode.nodeName!='SCRIPT'){
node.nodeValue=node.nodeValue
.替换(/ffl/g,'freeful')
.替换(/ffi/g,“ffi”)
.更换(/fl/g,‘fl’)
.替换(/fi/g,“fi”)
.替换(/ff/g,“ff”)
.替换(/ij/g,“ij”)
.替换(/IJ/g,“IJ”);
如果(扩展){
node.nodeValue=node.nodeValue
.替换(/ae/g,“æ”)
.替换(/A[Ee]/g,“Æ”)
.替换(/oe/g,“œ”)
.替换(/O[Ee]/g,“Œ”)
.替换(/ue/g,'ᵫ')
.替换(/st/g,“st”);
}
}
if(node.childNodes){
对于(var i=0;i
你的意思是你想要连字,你想要网站上的符号以字体呈现,或者你想要连字以使文本显示为图标,但仍然是可复制粘贴的?我很想直接使用连字,但IE9及更高版本不支持它们,一些浏览器也有问题。忽略上面的评论,I c不能再编辑它了。后者。我想直接使用连字,但IE9和更早版本不支持,一些浏览器也有问题。SymbolSet使用javascript获取存储在OTF文件的私有unicode部分中的图标,因此不能处理连字的旧浏览器仍然能够匹配相同的键您用于连字的ord。例如,我可能有一个用于电子邮件的连字(e_m_a_I_l.liga)和一个专用unicode字符(u+2709)使用.js文件通过数组将“email”链接到“u+2709”。实际上,symbolset仍然需要@font-face,因此它只能在IE>=9上工作。symbolset提供EOT文件,因此它可以与IE的旧版本一起工作。我真正关心的是IE9+,但在IE9中不存在连字支持,因此我需要一个类似于symbolset的.js解决方案。这这就是最初开始的地方。是否有一个开放的js库可以做同样的事情?