/*
 * 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: NamedCharacter.java 1297404 2012-03-06 10:17:54Z vhennebert $ */

package org.apache.fop.fonts;

import org.apache.xmlgraphics.fonts.Glyphs;

import org.apache.fop.util.CharUtilities;

Represents an named character with character name (from the Adobe glyph list) and a Unicode sequence that this character represents.
/** * Represents an named character with character name (from the Adobe glyph list) and a Unicode * sequence that this character represents. */
public class NamedCharacter { private String charName; private String unicodeSequence;
Main constructor.
Params:
  • charName – the character name
  • unicodeSequence – the Unicode sequence associated with this character
/** * Main constructor. * @param charName the character name * @param unicodeSequence the Unicode sequence associated with this character */
public NamedCharacter(String charName, String unicodeSequence) { if (charName == null) { throw new NullPointerException("charName must not be null"); } this.charName = charName; if (unicodeSequence != null) { this.unicodeSequence = unicodeSequence; } else { this.unicodeSequence = Glyphs.getUnicodeSequenceForGlyphName(charName); } }
Simple constructor.
Params:
  • charName – the character name
/** * Simple constructor. * @param charName the character name */
public NamedCharacter(String charName) { this(charName, null); }
{@inheritDoc}
/** {@inheritDoc} */
public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((charName == null) ? 0 : charName.hashCode()); return result; }
{@inheritDoc}
/** {@inheritDoc} */
public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final NamedCharacter other = (NamedCharacter)obj; return charName.equals(other.charName); }
Returns the character name (as defined by the Adobe glyph list).
Returns:the character name
/** * Returns the character name (as defined by the Adobe glyph list). * @return the character name */
public String getName() { return this.charName; }
Returns the Unicode sequence associated with this character.
Returns:the Unicode sequence (or null if no Unicode sequence is associated)
/** * Returns the Unicode sequence associated with this character. * @return the Unicode sequence (or null if no Unicode sequence is associated) */
public String getUnicodeSequence() { return this.unicodeSequence; }
Indicates whether a single Unicode value is associated with this character.
Returns:true if exactly one Unicode value is associated with this character, false otherwise
/** * Indicates whether a single Unicode value is associated with this character. * @return true if exactly one Unicode value is associated with this character, false otherwise */
public boolean hasSingleUnicodeValue() { return (this.unicodeSequence != null && this.unicodeSequence.length() == 1); }
Returns the single Unicode value associated with this named character. Check hasSingleUnicodeValue() before you call this method because an IllegalStateException is thrown is a Unicode sequence with more than one character is associated with this character.
Throws:
  • IllegalStateException – if a Unicode sequence with more than one value is associated with the named character
Returns:the single Unicode value (or FFFF ("NOT A CHARACTER") if no Unicode value is available)
/** * Returns the single Unicode value associated with this named character. Check * {@link #hasSingleUnicodeValue()} before you call this method because an * IllegalStateException is thrown is a Unicode sequence with more than one character is * associated with this character. * @return the single Unicode value (or FFFF ("NOT A CHARACTER") if no Unicode value is * available) * @throws IllegalStateException if a Unicode sequence with more than one value is associated * with the named character */
public char getSingleUnicodeValue() throws IllegalStateException { if (this.unicodeSequence == null) { return CharUtilities.NOT_A_CHARACTER; } if (this.unicodeSequence.length() > 1) { throw new IllegalStateException("getSingleUnicodeValue() may not be called for a" + " named character that has more than one Unicode value (a sequence)" + " associated with the named character!"); } return this.unicodeSequence.charAt(0); }
{@inheritDoc}
/** {@inheritDoc} */
public String toString() { StringBuffer sb = new StringBuffer(this.unicodeSequence); sb.append(" ("); if (this.unicodeSequence != null) { for (int i = 0, c = this.unicodeSequence.length(); i < c; i++) { sb.append("0x").append(Integer.toHexString(this.unicodeSequence.charAt(0))); } sb.append(", "); } sb.append(getName()).append(')'); return sb.toString(); } }