// ===========================================================================
// ©2013-2026 WebSupergoo. All rights reserved.
//
// This source code is for use exclusively with the ABCpdf product with
// which it is distributed, under the terms of the license for that
// product. Details can be found at
//
// http://www.websupergoo.com/
//
// This copyright notice must not be deleted and must be reproduced alongside
// any sections of code extracted from this module.
// ===========================================================================
using System;
using System.Collections.Generic;
namespace WebSupergoo.ABCpdf14.Drawing.Text
{
#region FontMetrics
internal abstract class FontMetrics
{
public string FontMetricsVersion = string.Empty;
public int MetricsSets = 0;
public string FontName = string.Empty;
public string FullName = string.Empty;
public string FamilyName = string.Empty;
public string Weight = string.Empty;
public double FontBBox_llx = double.NaN;
public double FontBBox_lly = double.NaN;
public double FontBBox_urx = double.NaN;
public double FontBBox_ury = double.NaN;
public string Version = string.Empty;
public string Notice = string.Empty;
public string EncodingScheme = string.Empty;
public string CharacterSet = string.Empty;
public bool IsBaseFont = true;
public double CapHeight = double.NaN;
public double XHeight = double.NaN;
public double Ascender = double.NaN;
public double Descender = double.NaN;
public double StdHW = double.NaN;
public double StdVW = double.NaN;
public double UnderlinePosition = double.NaN;
public double UnderlineThickness = double.NaN;
public double ItalicAngle = double.NaN;
public bool IsFixedPitch = false;
public int CharMetricsCount = 0;
public CharMetrics[] CharMetrics = null;
internal virtual System.Drawing.SizeF MeasureString(string s, double size, TextState state)
{
return new System.Drawing.SizeF(float.NaN, float.NaN);
}
internal virtual double GetSizeFactor(double size)
{
return double.NaN;
}
}
#endregion
#region CharMetrics
internal abstract class CharMetrics
{
#region Ligature
public class Ligature
{
public string Successor = string.Empty;
public string LigatureString = string.Empty;
public Ligature(string successor, string ligatureString)
{
Successor = successor;
LigatureString = ligatureString;
}
}
#endregion
public int CharacterCode = -1;
public double WidthX = 250;
public string Name = string.Empty;
public double BBox_llx;
public double BBox_lly;
public double BBox_urx;
public double BBox_ury;
public List<Ligature> Ligatures = null;
}
#endregion
}