Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* NOTICE: This file has been changed by Plutext Pty Ltd for use in docx4j.
   * The package name has been changed; there may also be other changes.
   * 
   * This notice is included to meet the condition in clause 4(b) of the License. 
   */
  
   /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
  *      http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 /* $Id: FontFileFinder.java 679326 2008-07-24 09:35:34Z vhennebert $ */
 
 package org.docx4j.fonts.fop.fonts.autodetect;
 
 import java.io.File;
 import java.util.List;
 
Helps to autodetect/locate available operating system fonts.
 
 public class FontFileFinder extends DirectoryWalker implements FontFinder {

    
logging instance
 
     private final Logger log = LoggerFactory.getLogger(FontFileFinder.class);

    
default depth limit of recursion when searching for font files
 
     public static final int DEFAULT_DEPTH_LIMIT = -1;

    
Default constructor
 
     public FontFileFinder() {
         super(getDirectoryFilter(), getFileFilter(), );
     }

    
Constructor

Parameters:
depthLimit recursion depth limit
 
     public FontFileFinder(int depthLimit) {
         super(getDirectoryFilter(), getFileFilter(), depthLimit);
     }

    
Font directory filter. Currently ignores hidden directories.

Returns:
IOFileFilter font directory filter
 
     protected static IOFileFilter getDirectoryFilter() {
         return FileFilterUtils.andFileFilter(
                 FileFilterUtils.directoryFileFilter(),
                 FileFilterUtils.notFileFilter(FileFilterUtils.prefixFileFilter("."))
         );
     }

    
Font file filter. Currently searches for files with .ttf, .ttc, .otf, and .pfb extensions.

Returns:
IOFileFilter font file filter
 
     protected static IOFileFilter getFileFilter() {
         return FileFilterUtils.andFileFilter(
                 FileFilterUtils.fileFileFilter(),
                 new WildcardFileFilter(
                         new String[] {"*.ttf""*.otf""*.pfb""*.ttc"},
                         .)
         );
     }

    

Parameters:
directory directory to handle
depth recursion depth
results collection
Returns:
whether directory should be handled
 
    protected boolean handleDirectory(File directoryint depthCollection results) {
        return true;
    }

    

Parameters:
file file to handle
depth recursion depth
results collection
    protected void handleFile(File fileint depthCollection results) {
        try {
            // Looks Strange, but is actually recommended over just .URL()
            results.add(file.toURI().toURL());
        } catch (MalformedURLException e) {
            .debug("MalformedURLException" + e.getMessage());
        }
    }

    

Parameters:
directory the directory being processed
depth the current directory level
results the collection of results objects
    protected void handleDirectoryEnd(File directoryint depthCollection results) {
        if (.isDebugEnabled()) {
            .debug(directory + ": found " + results.size() + " font"
                    + ((results.size() == 1) ? "" : "s"));
        }
    }

    
Automagically finds a list of font files on local system

Returns:
List<URL> of font files
Throws:
java.io.IOException io exception
    public List find() throws IOException {
        final FontFinder fontDirFinder;
        final String osName = System.getProperty("os.name");
        if (osName.startsWith("Windows")) {
            fontDirFinder = new WindowsFontDirFinder();
        } else {
            if (osName.startsWith("Mac")) {
                fontDirFinder = new MacFontDirFinder();
            } else {
                fontDirFinder = new UnixFontDirFinder();
            }
        }
        List fontDirs = fontDirFinder.find();
        List results = new java.util.ArrayList();
        for (Iterator iter = fontDirs.iterator(); iter.hasNext();) {
            final File dir = (File)iter.next();
            super.walk(dirresults);
        }
        return results;
    }

    
Searches a given directory for font files

Parameters:
dir directory to search
Returns:
list of font files
Throws:
java.io.IOException thrown if an I/O exception of some sort has occurred
    public List find(String dirthrows IOException {
        List results = new java.util.ArrayList();
        super.walk(new File(dir), results);
        return results;
    }
New to GrepCode? Check out our FAQ X