123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- /*-- $Id$ --
-
- ============================================================================
- The Apache Software License, Version 1.1
- ============================================================================
-
- Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modifica-
- tion, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- 3. The end-user documentation included with the redistribution, if any, must
- include the following acknowledgment: "This product includes software
- developed by the Apache Software Foundation (http://www.apache.org/)."
- Alternately, this acknowledgment may appear in the software itself, if
- and wherever such third-party acknowledgments normally appear.
-
- 4. The names "Fop" and "Apache Software Foundation" must not be used to
- endorse or promote products derived from this software without prior
- written permission. For written permission, please contact
- apache@apache.org.
-
- 5. Products derived from this software may not be called "Apache", nor may
- "Apache" appear in their name, without prior written permission of the
- Apache Software Foundation.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- This software consists of voluntary contributions made by many individuals
- on behalf of the Apache Software Foundation and was originally created by
- James Tauber <jtauber@jtauber.com>. For more information on the Apache
- Software Foundation, please see <http://www.apache.org/>.
-
- */
- package org.apache.fop.render.pdf;
-
- // FOP
- import org.apache.fop.render.pdf.fonts.*;
- import org.apache.fop.messaging.MessageHandler;
- import org.apache.fop.layout.FontInfo;
- import org.apache.fop.layout.FontDescriptor;
- import org.apache.fop.pdf.PDFDocument;
- import org.apache.fop.pdf.PDFResources;
-
- // Java
- import java.util.Enumeration;
- import java.util.Hashtable;
-
- // For JAPANAIZED
- import org.apache.fop.render.pdf.fonts.cidfont.jp.*;
-
- /**
- * sets up the PDF fonts.
- *
- * Assigns the font (with metrics) to internal names like "F1" and
- * assigns family-style-weight triplets to the fonts
- */
- public class FontSetup {
-
- /**
- * sets up the font info object.
- *
- * adds metrics for basic fonts and useful family-style-weight
- * triplets for lookup
- *
- * @param fontInfo the font info object to set up
- */
- public static void setup(FontInfo fontInfo) {
- MessageHandler.logln("setting up fonts");
-
- fontInfo.addMetrics("F1", new Helvetica());
- fontInfo.addMetrics("F2", new HelveticaOblique());
- fontInfo.addMetrics("F3", new HelveticaBold());
- fontInfo.addMetrics("F4", new HelveticaBoldOblique());
- fontInfo.addMetrics("F5", new TimesRoman());
- fontInfo.addMetrics("F6", new TimesItalic());
- fontInfo.addMetrics("F7", new TimesBold());
- fontInfo.addMetrics("F8", new TimesBoldItalic());
- fontInfo.addMetrics("F9", new Courier());
- fontInfo.addMetrics("F10", new CourierOblique());
- fontInfo.addMetrics("F11", new CourierBold());
- fontInfo.addMetrics("F12", new CourierBoldOblique());
- fontInfo.addMetrics("F13", new Symbol());
- fontInfo.addMetrics("F14", new ZapfDingbats());
- //Custom type 1 fonts step 1/2
- // For JAPANIZE
- fontInfo.addMetrics("F15", new MSMincho());
- fontInfo.addMetrics("F16", new MSMinchoBold());
- fontInfo.addMetrics("F17", new MSMinchoItalic());
- fontInfo.addMetrics("F18", new MSMinchoBoldItalic());
- fontInfo.addMetrics("F19", new MSGothic());
- fontInfo.addMetrics("F20", new MSGothicBold());
- fontInfo.addMetrics("F21", new MSGothicItalic());
- fontInfo.addMetrics("F22", new MSGothicBoldItalic());
- fontInfo.addMetrics("F23", new RyuminLight());
- fontInfo.addMetrics("F24", new GothicBBBMedium());
- // MS Font Aliases
- fontInfo.addMetrics("F25", new MSMinchoAlias());
- fontInfo.addMetrics("F26", new MSMinchoBoldAlias());
- fontInfo.addMetrics("F27", new MSMinchoItalicAlias());
- fontInfo.addMetrics("F28", new MSMinchoBoldItalicAlias());
- fontInfo.addMetrics("F29", new MSGothicAlias());
- fontInfo.addMetrics("F30", new MSGothicBoldAlias());
- fontInfo.addMetrics("F31", new MSGothicItalicAlias());
- fontInfo.addMetrics("F32", new MSGothicBoldItalicAlias());
- fontInfo.addMetrics("F33", new Osaka());
-
- /* any is treated as serif */
- fontInfo.addFontProperties("F5", "any", "normal", "normal");
- fontInfo.addFontProperties("F6", "any", "italic", "normal");
- fontInfo.addFontProperties("F6", "any", "oblique", "normal");
- fontInfo.addFontProperties("F7", "any", "normal", "bold");
- fontInfo.addFontProperties("F8", "any", "italic", "bold");
- fontInfo.addFontProperties("F8", "any", "oblique", "bold");
-
- fontInfo.addFontProperties("F1", "sans-serif", "normal",
- "normal");
- fontInfo.addFontProperties("F2", "sans-serif", "oblique",
- "normal");
- fontInfo.addFontProperties("F2", "sans-serif", "italic",
- "normal");
- fontInfo.addFontProperties("F3", "sans-serif", "normal",
- "bold");
- fontInfo.addFontProperties("F4", "sans-serif", "oblique",
- "bold");
- fontInfo.addFontProperties("F4", "sans-serif", "italic",
- "bold");
- fontInfo.addFontProperties("F5", "serif", "normal", "normal");
- fontInfo.addFontProperties("F6", "serif", "oblique",
- "normal");
- fontInfo.addFontProperties("F6", "serif", "italic", "normal");
- fontInfo.addFontProperties("F7", "serif", "normal", "bold");
- fontInfo.addFontProperties("F8", "serif", "oblique", "bold");
- fontInfo.addFontProperties("F8", "serif", "italic", "bold");
- fontInfo.addFontProperties("F9", "monospace", "normal",
- "normal");
- fontInfo.addFontProperties("F10", "monospace", "oblique",
- "normal");
- fontInfo.addFontProperties("F10", "monospace", "italic",
- "normal");
- fontInfo.addFontProperties("F11", "monospace", "normal",
- "bold");
- fontInfo.addFontProperties("F12", "monospace", "oblique",
- "bold");
- fontInfo.addFontProperties("F12", "monospace", "italic",
- "bold");
-
- fontInfo.addFontProperties("F1", "Helvetica", "normal",
- "normal");
- fontInfo.addFontProperties("F2", "Helvetica", "oblique",
- "normal");
- fontInfo.addFontProperties("F2", "Helvetica", "italic",
- "normal");
- fontInfo.addFontProperties("F3", "Helvetica", "normal",
- "bold");
- fontInfo.addFontProperties("F4", "Helvetica", "oblique",
- "bold");
- fontInfo.addFontProperties("F4", "Helvetica", "italic",
- "bold");
- fontInfo.addFontProperties("F5", "Times", "normal", "normal");
- fontInfo.addFontProperties("F6", "Times", "oblique",
- "normal");
- fontInfo.addFontProperties("F6", "Times", "italic", "normal");
- fontInfo.addFontProperties("F7", "Times", "normal", "bold");
- fontInfo.addFontProperties("F8", "Times", "oblique", "bold");
- fontInfo.addFontProperties("F8", "Times", "italic", "bold");
- fontInfo.addFontProperties("F9", "Courier", "normal",
- "normal");
- fontInfo.addFontProperties("F10", "Courier", "oblique",
- "normal");
- fontInfo.addFontProperties("F10", "Courier", "italic",
- "normal");
- fontInfo.addFontProperties("F11", "Courier", "normal",
- "bold");
- fontInfo.addFontProperties("F12", "Courier", "oblique",
- "bold");
- fontInfo.addFontProperties("F12", "Courier", "italic",
- "bold");
- fontInfo.addFontProperties("F13", "Symbol", "normal",
- "normal");
- fontInfo.addFontProperties("F14", "ZapfDingbats", "normal",
- "normal");
- //Custom type 1 fonts step 2/2
- // For JAPANIZE
- fontInfo.addFontProperties("F15", "\uff2d\uff33\u660e\u671d", "normal",
- "normal");
- fontInfo.addFontProperties("F16", "\uff2d\uff33\u660e\u671d", "normal",
- "bold");
- fontInfo.addFontProperties("F17", "\uff2d\uff33\u660e\u671d", "italic",
- "normal");
- fontInfo.addFontProperties("F18", "\uff2d\uff33\u660e\u671d", "italic",
- "bold");
- fontInfo.addFontProperties("F19", "\uff2d\uff33\u30b4\u30b7\u30c3\u30af", "normal",
- "normal");
- fontInfo.addFontProperties("F20", "\uff2d\uff33\u30b4\u30b7\u30c3\u30af", "normal",
- "bold");
- fontInfo.addFontProperties("F21", "\uff2d\uff33\u30b4\u30b7\u30c3\u30af", "italic",
- "normal");
- fontInfo.addFontProperties("F22", "\uff2d\uff33\u30b4\u30b7\u30c3\u30af", "italic",
- "bold");
- fontInfo.addFontProperties("F23", "Ryumin-Light", "normal",
- "normal");
- fontInfo.addFontProperties("F23", "Ryumin-Light", "normal",
- "bold");
- fontInfo.addFontProperties("F23", "Ryumin-Light", "italic",
- "normal");
- fontInfo.addFontProperties("F23", "Ryumin-Light", "italic",
- "bold");
- fontInfo.addFontProperties("F24", "GothicBBB-Medium", "normal",
- "normal");
- fontInfo.addFontProperties("F24", "GothicBBB-Medium", "normal",
- "bold");
- fontInfo.addFontProperties("F24", "GothicBBB-Medium", "italic",
- "normal");
- fontInfo.addFontProperties("F24", "GothicBBB-Medium", "italic",
- "bold");
- fontInfo.addFontProperties("F25", "MS-Mincho", "normal",
- "normal");
- fontInfo.addFontProperties("F26", "MS-Mincho", "normal",
- "bold");
- fontInfo.addFontProperties("F27", "MS-Mincho", "italic",
- "normal");
- fontInfo.addFontProperties("F28", "MS-Mincho", "italic",
- "bold");
- fontInfo.addFontProperties("F29", "MS-Gothic", "normal",
- "normal");
- fontInfo.addFontProperties("F30", "MS-Gothic", "normal",
- "bold");
- fontInfo.addFontProperties("F31", "MS-Gothic", "italic",
- "normal");
- fontInfo.addFontProperties("F32", "MS-Gothic", "italic",
- "bold");
- fontInfo.addFontProperties("F33", "Osaka", "normal",
- "normal");
-
- /* for compatibility with PassiveTex */
- fontInfo.addFontProperties("F5", "Times-Roman", "normal",
- "normal");
- fontInfo.addFontProperties("F6", "Times-Roman", "oblique",
- "normal");
- fontInfo.addFontProperties("F6", "Times-Roman", "italic",
- "normal");
- fontInfo.addFontProperties("F7", "Times-Roman", "normal",
- "bold");
- fontInfo.addFontProperties("F8", "Times-Roman", "oblique",
- "bold");
- fontInfo.addFontProperties("F8", "Times-Roman", "italic",
- "bold");
- fontInfo.addFontProperties("F5", "Times Roman", "normal",
- "normal");
- fontInfo.addFontProperties("F6", "Times Roman", "oblique",
- "normal");
- fontInfo.addFontProperties("F6", "Times Roman", "italic",
- "normal");
- fontInfo.addFontProperties("F7", "Times Roman", "normal",
- "bold");
- fontInfo.addFontProperties("F8", "Times Roman", "oblique",
- "bold");
- fontInfo.addFontProperties("F8", "Times Roman", "italic",
- "bold");
- fontInfo.addFontProperties("F9", "Computer-Modern-Typewriter",
- "normal", "normal");
- }
-
- /**
- * add the fonts in the font info to the PDF document
- *
- * @param doc PDF document to add fonts to
- * @param fontInfo font info object to get font information from
- */
- public static void addToResources(PDFDocument doc, FontInfo fontInfo) {
- Hashtable fonts = fontInfo.getFonts();
- Enumeration e = fonts.keys();
- PDFResources resources = doc.getResources();
- while (e.hasMoreElements()) {
- String f = (String) e.nextElement();
- Font font = (Font)fonts.get(f);
- FontDescriptor desc = null;
- if (font instanceof FontDescriptor) {
- desc = (FontDescriptor)font;
- }
- resources.addFont(doc.makeFont(f,
- font.fontName(),
- font.encoding(),
- font,
- desc
- )
- );
- }
- }
- }
|