123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- /*
- * 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.fonts.type1;
-
- import java.awt.Rectangle;
-
- import org.apache.fop.fonts.NamedCharacter;
-
-
- /**
- * 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.
- * @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.
- * @return true if there is a character code.
- */
- public boolean hasCharCode() {
- return charCode >= 0;
- }
-
- /**
- * 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.
- * @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.
- * @param ch the named character
- */
- public void setCharacter(NamedCharacter ch) {
- this.character = ch;
- }
-
- /**
- * 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.
- * @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.
- * @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.
- * @return the widthX
- */
- public double getWidthX() {
- return widthX;
- }
-
- /**
- * 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.
- * @return the widthY
- */
- public double getWidthY() {
- return widthY;
- }
-
- /**
- * 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.
- * @return the bounding box (or null if it isn't available)
- */
- public Rectangle getBBox() {
- return bBox;
- }
-
- /**
- * Sets the character's bounding box.
- * @param box the bounding box
- */
- public void setBBox(Rectangle box) {
- bBox = box;
- }
-
- /** {@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();
- }
-
- }
|