/*
 * 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: AFMCharMetrics.java 1564017 2014-02-03 19:29:24Z vhennebert $ */

package org.apache.fop.fonts.type1;

import java.awt.Rectangle;

import org.apache.fop.fonts.NamedCharacter;


Holds the metrics of a single character from an AFM file.
/** * Holds the metrics of a single character from an AFM file. */
public class AFMCharMetrics { private int charCode = -1; private NamedCharacter character; private double widthX; private double widthY; private Rectangle bBox;
Returns the character code.
Returns:the charCode (-1 if not part of the encoding)
/** * Returns the character code. * @return the charCode (-1 if not part of the encoding) */
public int getCharCode() { return charCode; }
Indicates whether the character has a character code, i.e. is part of the default encoding.
Returns:true if there is a character code.
/** * Indicates whether the character has a character code, i.e. is part of the default encoding. * @return true if there is a character code. */
public boolean hasCharCode() { return charCode >= 0; }
Sets the character code.
Params:
  • charCode – the charCode to set
/** * Sets the character code. * @param charCode the charCode to set */
public void setCharCode(int charCode) { this.charCode = charCode; }
Returns the named character represented by this instance.
Returns:the named character (or null if no named character is associated)
/** * Returns the named character represented by this instance. * @return the named character (or null if no named character is associated) */
public NamedCharacter getCharacter() { return this.character; }
Sets the named character represented by this instance.
Params:
  • ch – the named character
/** * Sets the named character represented by this instance. * @param ch the named character */
public void setCharacter(NamedCharacter ch) { this.character = ch; }
Sets the named character represented by this instance.
Params:
  • charName – the character name (as defined in the Adobe glyph list)
  • unicodeSequence – the Unicode sequence
/** * Sets the named character represented by this instance. * @param charName the character name (as defined in the Adobe glyph list) * @param unicodeSequence the Unicode sequence */
public void setCharacter(String charName, String unicodeSequence) { setCharacter(new NamedCharacter(charName, unicodeSequence)); }
Returns the Unicode sequence for this character.
Returns:the Unicode characters (or null if no such Unicode sequence exists for this character)
/** * Returns the Unicode sequence for this character. * @return the Unicode characters * (or null if no such Unicode sequence exists for this character) */
public String getUnicodeSequence() { return (getCharacter() != null ? getCharacter().getUnicodeSequence() : null); }
Returns the PostScript character name.
Returns:the charName (or null if no character name is associated)
/** * Returns the PostScript character name. * @return the charName (or null if no character name is associated) */
public String getCharName() { return (getCharacter() != null ? getCharacter().getName() : null); }
Returns the progression dimension in x-direction.
Returns:the widthX
/** * Returns the progression dimension in x-direction. * @return the widthX */
public double getWidthX() { return widthX; }
Sets the progression dimension in x-direction
Params:
  • widthX – the widthX to set
/** * Sets the progression dimension in x-direction * @param widthX the widthX to set */
public void setWidthX(double widthX) { this.widthX = widthX; }
Returns the progression dimension in y-direction.
Returns:the widthY
/** * Returns the progression dimension in y-direction. * @return the widthY */
public double getWidthY() { return widthY; }
Sets the progression dimension in y-direction
Params:
  • widthY – the widthY to set
/** * Sets the progression dimension in y-direction * @param widthY the widthY to set */
public void setWidthY(double widthY) { this.widthY = widthY; }
Returns the character's bounding box.
Returns:the bounding box (or null if it isn't available)
/** * Returns the character's bounding box. * @return the bounding box (or null if it isn't available) */
public Rectangle getBBox() { return bBox; }
Sets the character's bounding box.
Params:
  • box – the bounding box
/** * Sets the character's bounding box. * @param box the bounding box */
public void setBBox(Rectangle box) { bBox = box; }
{@inheritDoc}
/** {@inheritDoc} */
public String toString() { StringBuffer sb = new StringBuffer("AFM Char: "); sb.append(getCharCode()); sb.append(" ("); if (getUnicodeSequence() != null) { for (int i = 0, c = getUnicodeSequence().length(); i < c; i++) { sb.append("0x").append(Integer.toHexString(getUnicodeSequence().charAt(i))); sb.append(", "); } } sb.append(getCharName()).append(')'); return sb.toString(); } }