/* * 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$ */ package org.apache.fop.pdf; import org.apache.fop.fonts.FontType; /** * A common ancestor for Type1, TrueType, MMType1 and Type3 fonts * (all except base 14 fonts). */ public abstract class PDFFontNonBase14 extends PDFFont { /** * Create the /Font object * * @param fontname the internal name for the font * @param subtype the font's subtype * @param basefont the base font name * @param encoding the character encoding schema used by the font */ public PDFFontNonBase14(String fontname, FontType subtype, String basefont, Object encoding) { /* generic creation of PDF object */ super(fontname, subtype, basefont, encoding); } /** * Set the width metrics for the font * * @param firstChar the first character code in the font * @param lastChar the last character code in the font * @param widths an array of size (lastChar - firstChar +1) */ public void setWidthMetrics(int firstChar, int lastChar, PDFArray widths) { put("FirstChar", Integer.valueOf(firstChar)); put("LastChar", Integer.valueOf(lastChar)); put("Widths", widths); } /** * Set the font descriptor (unused for the Type3 fonts) * * @param descriptor the descriptor for other font's metrics */ public void setDescriptor(PDFFontDescriptor descriptor) { put("FontDescriptor", descriptor); } /** @return the FontDescriptor or null if there is none */ public PDFFontDescriptor getDescriptor() { return (PDFFontDescriptor)get("FontDescriptor"); } /** {@inheritDoc} */ protected void validate() { if (getDocumentSafely().getProfile().isFontEmbeddingRequired()) { if (this.getDescriptor().getFontFile() == null) { throw new PDFConformanceException("For " + getDocumentSafely().getProfile() + ", all fonts have to be embedded! Offending font: " + getBaseFont()); } } } }