From 2bf851895741ccbd138d987cc2cd11fab5456229 Mon Sep 17 00:00:00 2001 From: arved Date: Sat, 10 Feb 2001 03:24:43 +0000 Subject: [PATCH] MIF base font git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194036 13f79535-47bb-0310-9956-ffa450edef68 --- src/org/apache/fop/render/mif/Font.java | 73 ++++++ src/org/apache/fop/render/mif/FontSetup.java | 239 +++++++++++++++++++ 2 files changed, 312 insertions(+) create mode 100644 src/org/apache/fop/render/mif/Font.java create mode 100644 src/org/apache/fop/render/mif/FontSetup.java diff --git a/src/org/apache/fop/render/mif/Font.java b/src/org/apache/fop/render/mif/Font.java new file mode 100644 index 000000000..49e8bdc98 --- /dev/null +++ b/src/org/apache/fop/render/mif/Font.java @@ -0,0 +1,73 @@ +/*-- $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 . For more information on the Apache + Software Foundation, please see . + + */ +package org.apache.fop.render.mif; + +// FOP +import org.apache.fop.layout.FontMetric; + +/** + * base class for PDF font classes + */ +public abstract class Font implements FontMetric { + + /** + * get the encoding of the font + */ + public abstract String encoding(); + + /** + * get the base font name + */ + public abstract String fontName(); +} + + + diff --git a/src/org/apache/fop/render/mif/FontSetup.java b/src/org/apache/fop/render/mif/FontSetup.java new file mode 100644 index 000000000..aeb76311d --- /dev/null +++ b/src/org/apache/fop/render/mif/FontSetup.java @@ -0,0 +1,239 @@ +/*-- $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 . For more information on the Apache + Software Foundation, please see . + + */ +package org.apache.fop.render.mif; + +// FOP +import org.apache.fop.render.mif.fonts.*; +import org.apache.fop.messaging.MessageHandler; +import org.apache.fop.layout.FontInfo; +import org.apache.fop.layout.FontDescriptor; +import org.apache.fop.mif.MIFDocument; +//import org.apache.fop.pdf.PDFResources; + +// Java +import java.util.Enumeration; +import java.util.Hashtable; + +/** + * 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 +// fontInfo.addMetrics("F15", new OMEP()); +// fontInfo.addMetrics("F16", new GaramondLightCondensed()); +// fontInfo.addMetrics("F17", new BauerBodoniBoldItalic()); + + /* 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 +// fontInfo.addFontProperties("F15", "OMEP", "normal", "normal"); +// fontInfo.addFontProperties("F16", "Garamond-LightCondensed", "normal", "normal"); +// fontInfo.addFontProperties("F17", "BauerBodoni", "italic", "bold"); + + /* 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 addToFontFormat(MIFDocument mifDoc, FontInfo fontInfo) { + + Hashtable fonts = fontInfo.getFonts(); + Enumeration e = fonts.keys(); + while (e.hasMoreElements()) { + String f = (String) e.nextElement(); + Font font = (Font)fonts.get(f); + FontDescriptor desc = null; + if (font instanceof FontDescriptor) { + desc = (FontDescriptor)font; + } + /* mifDoc.makeFont(f,font.fontName(), + font.encoding(), + font, + desc + ); */ + + } + } +} -- 2.39.5