0

fontfaceobserver.js を自動化するコードを書いています。ディレクトリ内のフォント ファイルごとにフォント ファミリ名を取得して、javascript で出力できるようにする必要があります。一部のフォントは、同じファミリ名の後にスタイル名が続きます (例: cousine-webfont.woff & cousine-italic-webfont.woff )。これらの重複の最初の発生のみを印刷し、残りをスキップしたいと思います。

使ってみましarray_unique()たが、やり方が間違っているようです。

function my_fontload() {
  // Locate font files
  $font_path = get_stylesheet_directory_uri() . "/path/to/fonts/";
  $files = glob(get_stylesheet_directory( __FILE__ ) . '/path/to/fonts/*.woff', GLOB_BRACE);

  $suffix = '-webfont';

  $observer = A;

  foreach($files as &$file) {

    $obs = $observer++;

    $font = basename($file, '.woff'); // remove the file type
    $font = str_replace($suffix, '', $font); // remove the -webfont suffix
    $family = explode("-", $font);

    // Various attempts:

    // $fam = $family[0]; // First needle. Creates duplicates if present.
    // $fam = array_unique($family[0]); // Doesn't work. Outputs nothing.
    // $fam = array_unique($fam); // Doesn't work. Outputs nothing.
    // $fam = array_unique(array($fam)); // Outputs string 'Array'.

    echo '

    var font'. $obs . '=new FontFaceObserver( \\\'' . $fam. '\\\' );

    ';
  }

  unset ($observer);
  unset ($file);

}

望ましい出力:

var fontA=new FontFaceObserver( \'cousine\' );
var fontB=new FontFaceObserver( \'liberationmono\' );
var fontC=new FontFaceObserver( \'merriweather\' );
var fontD=new FontFaceObserver( \'merriweathersans\' );

を使用して出力 $fam = $family[0];

var fontA=new FontFaceObserver( \'cousine\' );
var fontB=new FontFaceObserver( \'cousine\' );
var fontC=new FontFaceObserver( \'liberationmono\' );
var fontD=new FontFaceObserver( \'liberationmono\' );
var fontE=new FontFaceObserver( \'liberationmono\' );
var fontF=new FontFaceObserver( \'merriweather\' );
var fontG=new FontFaceObserver( \'merriweather\' );
var fontH=new FontFaceObserver( \'merriweather\' );
var fontI=new FontFaceObserver( \'merriweather\' );
var fontJ=new FontFaceObserver( \'merriweathersans\' );
var fontK=new FontFaceObserver( \'merriweathersans\' );

使用 $fam = array_unique($family[0]); または $fam = $family[0]; 組み合わせた場合 $fam = array_unique($fam);

var fontA=new FontFaceObserver( \'\' );
var fontB=new FontFaceObserver( \'\' );
var fontC=new FontFaceObserver( \'\' );
var fontD=new FontFaceObserver( \'\' );
var fontE=new FontFaceObserver( \'\' );
var fontF=new FontFaceObserver( \'\' );
var fontG=new FontFaceObserver( \'\' );
var fontH=new FontFaceObserver( \'\' );
var fontI=new FontFaceObserver( \'\' );
var fontJ=new FontFaceObserver( \'\' );
var fontK=new FontFaceObserver( \'\' );

と組み合わせて使用​​する場合$fam = $family[0]; $fam = array_unique(array($fam));

var fontB=new FontFaceObserver( \'Array\' );
var fontC=new FontFaceObserver( \'Array\' );
var fontD=new FontFaceObserver( \'Array\' );
var fontE=new FontFaceObserver( \'Array\' );
var fontF=new FontFaceObserver( \'Array\' );
var fontG=new FontFaceObserver( \'Array\' );
var fontH=new FontFaceObserver( \'Array\' );
var fontI=new FontFaceObserver( \'Array\' );
var fontJ=new FontFaceObserver( \'Array\' );
var fontK=new FontFaceObserver( \'Array\' );

また、メインの内部で秒を使用してforeach()、一意の結果を抽出できる一時配列を生成しようとしましたが、失敗しました。

4

1 に答える 1