160 lines
5.9 KiB
C#
160 lines
5.9 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace TMPro
|
|
{
|
|
/// <summary>
|
|
/// A GlyphAnchorPoint defines the position of an anchor point relative to the origin of a glyph.
|
|
/// This data structure is used by the Mark-to-Base, Mark-to-Mark and Mark-to-Ligature OpenType font features.
|
|
/// </summary>
|
|
[Serializable]
|
|
public struct GlyphAnchorPoint
|
|
{
|
|
/// <summary>
|
|
/// The x coordinate of the anchor point relative to the glyph.
|
|
/// </summary>
|
|
public float xCoordinate { get { return m_XCoordinate; } set { m_XCoordinate = value; } }
|
|
|
|
/// <summary>
|
|
/// The y coordinate of the anchor point relative to the glyph.
|
|
/// </summary>
|
|
public float yCoordinate { get { return m_YCoordinate; } set { m_YCoordinate = value; } }
|
|
|
|
// =============================================
|
|
// Private backing fields for public properties.
|
|
// =============================================
|
|
|
|
[SerializeField]
|
|
private float m_XCoordinate;
|
|
|
|
[SerializeField]
|
|
private float m_YCoordinate;
|
|
}
|
|
|
|
/// <summary>
|
|
/// A MarkPositionAdjustment defines the positional adjustment of a glyph relative to the anchor point of base glyph.
|
|
/// This data structure is used by the Mark-to-Base, Mark-to-Mark and Mark-to-Ligature OpenType font features.
|
|
/// </summary>
|
|
[Serializable]
|
|
public struct MarkPositionAdjustment
|
|
{
|
|
/// <summary>
|
|
/// The horizontal positional adjustment of the glyph relative to the anchor point of its parent base glyph.
|
|
/// </summary>
|
|
public float xPositionAdjustment { get { return m_XPositionAdjustment; } set { m_XPositionAdjustment = value; } }
|
|
|
|
/// <summary>
|
|
/// The vertical positional adjustment of the glyph relative to the anchor point of its parent base glyph.
|
|
/// </summary>
|
|
public float yPositionAdjustment { get { return m_YPositionAdjustment; } set { m_YPositionAdjustment = value; } }
|
|
|
|
/// <summary>
|
|
/// Initializes and returns an instance of MarkPositionAdjustment
|
|
/// </summary>
|
|
/// <param name="x">The horizontal positional adjustment.</param>
|
|
/// <param name="y">The vertical positional adjustment.</param>
|
|
public MarkPositionAdjustment(float x, float y)
|
|
{
|
|
m_XPositionAdjustment = x;
|
|
m_YPositionAdjustment = y;
|
|
}
|
|
|
|
// =============================================
|
|
// Private backing fields for public properties.
|
|
// =============================================
|
|
|
|
[SerializeField]
|
|
private float m_XPositionAdjustment;
|
|
|
|
[SerializeField]
|
|
private float m_YPositionAdjustment;
|
|
};
|
|
|
|
/// <summary>
|
|
/// A MarkToBaseAdjustmentRecord defines the positional adjustment between a base glyph and mark glyph.
|
|
/// </summary>
|
|
[Serializable]
|
|
public struct MarkToBaseAdjustmentRecord
|
|
{
|
|
/// <summary>
|
|
/// The index of the base glyph.
|
|
/// </summary>
|
|
public uint baseGlyphID { get { return m_BaseGlyphID; } set { m_BaseGlyphID = value; } }
|
|
|
|
/// <summary>
|
|
/// The position of the anchor point of the base glyph.
|
|
/// </summary>
|
|
public GlyphAnchorPoint baseGlyphAnchorPoint { get { return m_BaseGlyphAnchorPoint; } set { m_BaseGlyphAnchorPoint = value; } }
|
|
|
|
/// <summary>
|
|
/// The index of the mark glyph.
|
|
/// </summary>
|
|
public uint markGlyphID { get { return m_MarkGlyphID; } set { m_MarkGlyphID = value; } }
|
|
|
|
/// <summary>
|
|
/// The positional adjustment of the mark glyph relative to the anchor point of the base glyph.
|
|
/// </summary>
|
|
public MarkPositionAdjustment markPositionAdjustment { get { return m_MarkPositionAdjustment; } set { m_MarkPositionAdjustment = value; } }
|
|
|
|
// =============================================
|
|
// Private backing fields for public properties.
|
|
// =============================================
|
|
|
|
[SerializeField]
|
|
private uint m_BaseGlyphID;
|
|
|
|
[SerializeField]
|
|
private GlyphAnchorPoint m_BaseGlyphAnchorPoint;
|
|
|
|
[SerializeField]
|
|
private uint m_MarkGlyphID;
|
|
|
|
[SerializeField]
|
|
private MarkPositionAdjustment m_MarkPositionAdjustment;
|
|
}
|
|
|
|
/// <summary>
|
|
/// A MarkToMarkAdjustmentRecord defines the positional adjustment between two mark glyphs.
|
|
/// </summary>
|
|
[Serializable]
|
|
public struct MarkToMarkAdjustmentRecord
|
|
{
|
|
/// <summary>
|
|
/// The index of the base glyph.
|
|
/// </summary>
|
|
public uint baseMarkGlyphID { get { return m_BaseMarkGlyphID; } set { m_BaseMarkGlyphID = value; } }
|
|
|
|
/// <summary>
|
|
/// The position of the anchor point of the base mark glyph.
|
|
/// </summary>
|
|
public GlyphAnchorPoint baseMarkGlyphAnchorPoint { get { return m_BaseMarkGlyphAnchorPoint; } set { m_BaseMarkGlyphAnchorPoint = value; } }
|
|
|
|
/// <summary>
|
|
/// The index of the mark glyph.
|
|
/// </summary>
|
|
public uint combiningMarkGlyphID { get { return m_CombiningMarkGlyphID; } set { m_CombiningMarkGlyphID = value; } }
|
|
|
|
/// <summary>
|
|
/// The positional adjustment of the combining mark glyph relative to the anchor point of the base mark glyph.
|
|
/// </summary>
|
|
public MarkPositionAdjustment combiningMarkPositionAdjustment { get { return m_CombiningMarkPositionAdjustment; } set { m_CombiningMarkPositionAdjustment = value; } }
|
|
|
|
// =============================================
|
|
// Private backing fields for public properties.
|
|
// =============================================
|
|
|
|
[SerializeField]
|
|
private uint m_BaseMarkGlyphID;
|
|
|
|
[SerializeField]
|
|
private GlyphAnchorPoint m_BaseMarkGlyphAnchorPoint;
|
|
|
|
[SerializeField]
|
|
private uint m_CombiningMarkGlyphID;
|
|
|
|
[SerializeField]
|
|
private MarkPositionAdjustment m_CombiningMarkPositionAdjustment;
|
|
}
|
|
}
|