/* The "widths" method returns a pointer to an array of 256 widths. They are unscaled but are pre-divided by 1000. All other methods return scaled numbers. If the font was created with a matrix, the matrix is applied automatically; otherwise the coordinates are multiplied by size.
- (float) underlinePosition; /* was fontUnderlinePosition */
- (float) underlineThickness; /* was fontUnderlineThickness */
- (float) italicAngle; /* was fontItalicAngle */
- (float) capHeight; /* used for translating vertical baselines */
- (float) xHeight;
- (float) ascender;
- (float) descender;
- (BOOL) isFixedPitch;
- (NSString *) encodingScheme;
- (NSGlyph) glyphWithName:(NSString *)aName;
/* Glyph related methods.
The position of a glyph is where you need to be to show the glyph. The position is relative to the position of the other glyph supplied as argument. If other glyph is 0 (no glyph), then this reduces to being relative to the origin.
The optional isNominal argument indicates whether the returned position is the standard advancement specified for the previous glyph (ie, width from the AFM file). It could be NO if the two glyphs are kerned, for instance.
The optional metricsExist argument specifies whether the metrics for the combination were found; if not, the returned point will be computed using the bounding boxes of the glyphs and may not be very pretty.
*/
/* Position two base glyphs next to each other. In this method, 0 (i.e., no glyph) may be specified for either glyph.
/* Given a base glyph followed by a bunch of "overstruck" glyphs, see if there's a corresponding set of metrics in the font. If so, return the NUMBER of matching glyphs from the group and fill in "points" with the positions, relative to (0,0) for the base glyph. Partial sequences may be returned. If the return value is less than numGlyphs, then the leftover glyphs can be rendered via positionOfGlyph:forCharacter:struckOverRect:, using the union-rect of the glyphs for which the font had metrics.
/* Basic base/accent positioning. Try to position the glyphs, using metric information if it exists. If metrics do not exist, this method may defer to "positionOfGlyph:struckOverRect:metricsExist:" for the answer. In any case, if metrics do not exist, the answer may be invalid.
/* Base/accent positioning when a previous glyph (i.e., aRect) may not be in the same font or has no metrics -- use its rectangle. Try to position the glyphs, using generalized metric information if it exists. If metrics do not exist, the result may not be valid.
/* As a last resort, this attempts to do positioning of base/accent based on semantic knowledge of various "accent" characters. It is NOT guaranteed to be pretty, but works in the absence of proper metrics for "many" diacritical marks in the Latin, Greek, and Cyrillic scripts. The caller asserts that "aGlyph" is a rendering in the font for the Unicode character "aChar". The rectangle is presumed to be the rectangle of some other glyph, whether known in this font or not. The returned position tells where to put "aGlyph" in relation to "aRect"; i.e., presuming aRect is shown at {0,0} one may "moveto" the returned position and show "aGlyph".
/* This is for specific types of positioning above/below (mainly for Indic support). Metric support is usually required for the result to be pretty. The default is to join glyphs without gaps and return the advancement of baseGlyph.
/* These are the strings that are available in the "afmDictionary". For other things, use "afmFileContents". The floating point values (e.g., ascender, cap height) can be converted to floating point via NSString's "floatValue" method.