from __future__ import annotations
from typing import Any, Protocol, runtime_checkable

@runtime_checkable
class CharacterProperties(Protocol):
    CharFontName: str
    CharFontStyleName: str
    CharFontFamily: int
    CharFontCharSet: int
    CharFontPitch: int
    CharColor: Color
    CharEscapement: int
    CharHeight: float
    CharUnderline: int
    CharWeight: float
    CharPosture: FontSlant
    CharAutoKerning: bool
    CharBackColor: Color
    CharShadingValue: int
    CharBackTransparent: bool
    CharCaseMap: int
    CharCrossedOut: bool
    CharFlash: bool
    CharStrikeout: int
    CharWordMode: bool
    CharKerning: int
    CharLocale: Locale
    CharKeepTogether: bool
    CharNoLineBreak: bool
    CharShadowed: bool
    CharFontType: int
    CharStyleName: str
    CharContoured: bool
    CharCombineIsOn: bool
    CharCombinePrefix: str
    CharCombineSuffix: str
    CharEmphasis: int
    CharRelief: int
    RubyText: str
    RubyAdjust: int
    RubyCharStyleName: str
    RubyIsAbove: bool
    CharRotation: int
    CharRotationIsFitToLine: bool
    CharScaleWidth: int
    HyperLinkURL: str
    HyperLinkTarget: str
    HyperLinkName: str
    VisitedCharStyleName: str
    UnvisitedCharStyleName: str
    CharEscapementHeight: int
    CharNoHyphenation: bool
    CharUnderlineColor: Color
    CharUnderlineHasColor: bool
    CharStyleNames: list[str]
    CharHidden: bool
    TextUserDefinedAttributes: XNameContainer
    CharLeftBorder: BorderLine2
    CharRightBorder: BorderLine2
    CharTopBorder: BorderLine2
    CharBottomBorder: BorderLine2
    CharBorderDistance: int
    CharLeftBorderDistance: int
    CharRightBorderDistance: int
    CharTopBorderDistance: int
    CharBottomBorderDistance: int
    CharShadowFormat: ShadowFormat
    CharHighlight: Color
    CharInteropGrabBag: list[PropertyValue]
    RubyPosition: int
    CharTransparence: int
    CharColorTheme: int
    CharColorTintOrShade: int
    CharScriptHint: int
