1

私は自分の Web サイトで使用する独自の記号フォントを作成することを計画していました。最初は合字と OT を使用するつもりでしたが、サポートはせいぜいむらがあり、古いブラウザー、特に IE には存在しません (私は知っています、大きな驚きです)。次に、 SymbolSetがどのように機能するかを詳しく調べ始めました。それは実際には非常に巧妙で、いくつかの配列変数を変更してそれを実行するのは簡単ですが、javascript はプロプライエタリであり、許可なしに使用することはできません。SymbolSet で独自のシンボル フォントを作成できるようにしたいのですが、これを行うには開いている JavaScript ファイルが必要です。これを行うオープンな jQuery プラグインまたは JavaScript ライブラリはありますか?

4

1 に答える 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 に答える