⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hyphenator.java

📁 处理PDF
💻 JAVA
字号:
/* * Copyright 1999-2004 The Apache Software Foundation. *  * Licensed 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. */package com.lowagie.text.pdf.hyphenation;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.util.Hashtable;import com.lowagie.text.pdf.BaseFont;/** * This class is the main entry point to the hyphenation package. * You can use only the static methods or create an instance. * * @author Carlos Villegas <cav@uniscope.co.jp> */public class Hyphenator {        /** TODO: Don't use statics */    private static Hashtable hyphenTrees = new Hashtable();    private HyphenationTree hyphenTree = null;    private int remainCharCount = 2;    private int pushCharCount = 2;    private static final String defaultHyphLocation = "com/lowagie/text/pdf/hyphenation/hyph/";       /** Holds value of property hyphenDir. */    private static String hyphenDir = "";        /**     * @param lang     * @param country     * @param leftMin     * @param rightMin     */    public Hyphenator(String lang, String country, int leftMin,                      int rightMin) {        hyphenTree = getHyphenationTree(lang, country);        remainCharCount = leftMin;        pushCharCount = rightMin;    }    /**     * @param lang     * @param country     * @return the hyphenation tree     */    public static HyphenationTree getHyphenationTree(String lang,            String country) {        String key = lang;        // check whether the country code has been used        if (country != null && !country.equals("none")) {            key += "_" + country;        }            // first try to find it in the cache        if (hyphenTrees.containsKey(key)) {            return (HyphenationTree)hyphenTrees.get(key);        }        if (hyphenTrees.containsKey(lang)) {            return (HyphenationTree)hyphenTrees.get(lang);        }        HyphenationTree hTree = getResourceHyphenationTree(key);        if (hTree == null)            hTree = getFileHyphenationTree(key);        // put it into the pattern cache        if (hTree != null) {            hyphenTrees.put(key, hTree);        }        return hTree;    }    /**     * @param key     * @return a hyphenation tree     */    public static HyphenationTree getResourceHyphenationTree(String key) {        try {            InputStream stream = BaseFont.getResourceStream(defaultHyphLocation + key + ".xml");            if (stream == null && key.length() > 2)                stream = BaseFont.getResourceStream(defaultHyphLocation + key.substring(0, 2) + ".xml");            if (stream == null)                return null;            HyphenationTree hTree = new HyphenationTree();            hTree.loadSimplePatterns(stream);            return hTree;        }        catch (Exception e) {            return null;        }    }    /**     * @param key     * @return a hyphenation tree     */    public static HyphenationTree getFileHyphenationTree(String key) {        try {            if (hyphenDir == null)                return null;            InputStream stream = null;            File hyphenFile = new File(hyphenDir, key + ".xml");            if (hyphenFile.canRead())                stream = new FileInputStream(hyphenFile);            if (stream == null && key.length() > 2) {                hyphenFile = new File(hyphenDir, key.substring(0, 2) + ".xml");                if (hyphenFile.canRead())                    stream = new FileInputStream(hyphenFile);            }            if (stream == null)                return null;            HyphenationTree hTree = new HyphenationTree();            hTree.loadSimplePatterns(stream);            return hTree;        }        catch (Exception e) {            return null;        }    }    /**     * @param lang     * @param country     * @param word     * @param leftMin     * @param rightMin     * @return a hyphenation object     */    public static Hyphenation hyphenate(String lang, String country,                                        String word, int leftMin,                                        int rightMin) {        HyphenationTree hTree = getHyphenationTree(lang, country);        if (hTree == null) {            //log.error("Error building hyphenation tree for language "            //                       + lang);            return null;        }        return hTree.hyphenate(word, leftMin, rightMin);    }    /**     * @param lang     * @param country     * @param word     * @param offset     * @param len     * @param leftMin     * @param rightMin     * @return a hyphenation object     */    public static Hyphenation hyphenate(String lang, String country,                                        char[] word, int offset, int len,                                        int leftMin, int rightMin) {        HyphenationTree hTree = getHyphenationTree(lang, country);        if (hTree == null) {            //log.error("Error building hyphenation tree for language "            //                       + lang);            return null;        }        return hTree.hyphenate(word, offset, len, leftMin, rightMin);    }    /**     * @param min     */    public void setMinRemainCharCount(int min) {        remainCharCount = min;    }    /**     * @param min     */    public void setMinPushCharCount(int min) {        pushCharCount = min;    }    /**     * @param lang     * @param country     */    public void setLanguage(String lang, String country) {        hyphenTree = getHyphenationTree(lang, country);    }    /**     * @param word     * @param offset     * @param len     * @return a hyphenation object     */    public Hyphenation hyphenate(char[] word, int offset, int len) {        if (hyphenTree == null) {            return null;        }        return hyphenTree.hyphenate(word, offset, len, remainCharCount,                                    pushCharCount);    }    /**     * @param word     * @return a hyphenation object     */    public Hyphenation hyphenate(String word) {        if (hyphenTree == null) {            return null;        }        return hyphenTree.hyphenate(word, remainCharCount, pushCharCount);    }    /** Getter for property hyphenDir.     * @return Value of property hyphenDir.     */    public static String getHyphenDir() {        return hyphenDir;    }        /** Setter for property hyphenDir.     * @param _hyphenDir New value of property hyphenDir.     */    public static void setHyphenDir(String _hyphenDir) {        hyphenDir = _hyphenDir;    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -