Class TCastleBitmapFont
Unit
Declaration
type TCastleBitmapFont = class(TCastleAbstractFont)
Description
Bitmap font, where each character is just drawn (and may be multi-color) on a raster image. See https://en.wikipedia.org/wiki/Computer_font about "bitmap font" or (less common name, but more valid) "raster font".
By default this class makes some assumptions about how the font image looks like: the characters are placed on the image in their Unicode order, starting from space in the upper-left corner. TODO: Use OnGlyph event to customize it.
Examples of such fonts:
See examples/fonts/data/sonic_asalga_0.png in CGE examples.
From OpenGameArt: http://opengameart.org/content/sonic-font, http://opengameart.org/content/null-terminator .
From itch.io: https://itch.io/game-assets/tag-bitmap-font .
Source: fonts/castlefonts_bitmapfont.inc (line 37).
Hierarchy
- TObject
- TPersistent
- TComponent
- TCastleComponent
- TCastleAbstractFont
- TCastleBitmapFont
Overview
Constants
| Public | DefaultMeasureHeight = 'AOHIypq'; |
| Public | DefaultMeasureCapHeight = 'HI'; |
| Public | DefaultMeasureDescenderHeight = 'ya'; |
Methods
| Protected | function GetInternalText: String; virtual; |
| Protected | procedure SetInternalText(const Value: String); virtual; |
| Protected | procedure SetName(const Value: TComponentName); override; |
| Protected | procedure TranslateProperties(const TranslatePropertyEvent: TTranslatePropertyEvent); virtual; |
| Public | destructor Destroy; override; |
| Public | procedure CustomSerialization(const SerializationProcess: TSerializationProcess); virtual; |
| Public | function PropertySections(const PropertyName: String): TPropertySections; virtual; |
| Public | procedure SetTransient; |
| Public | procedure AddNonVisualComponent(const NonVisualComponent: TComponent); |
| Public | procedure InsertNonVisualComponent(const Index: Integer; const NonVisualComponent: TComponent); |
| Public | procedure RemoveNonVisualComponent(const NonVisualComponent: TComponent); |
| Public | function NonVisualComponentsIndexOf(const NonVisualComponent: TComponent): Integer; |
| Public | function NonVisualComponentsCount: Integer; |
| Public | function NonVisualComponentsEnumerate: TNonVisualComponentsEnumerator; |
| Public | function ValueIsStreamed: Boolean; virtual; |
| Public | procedure DesignerInfo(const SList: TStrings); virtual; |
| Public | procedure DesignerWarnings(const SList: TStrings); virtual; |
| Public | constructor Create(AOwner: TComponent); override; |
| Public | destructor Destroy; override; |
| Public | function FontLoaded: Boolean; virtual; abstract; |
| Public | procedure PrintAndMove(const s: string); deprecated 'use Print(X, Y, ...), and move the (X, Y) yourself based on TextMove, instead of this'; |
| Public | procedure Print(const X, Y: Single; const Color: TCastleColor; const S: string); overload; virtual; abstract; |
| Public | procedure Print(const Pos: TVector2Integer; const Color: TCastleColor; const S: string); overload; |
| Public | procedure Print(const Pos: TVector2; const Color: TCastleColor; const S: string); overload; |
| Public | procedure Print(const X, Y: Single; const S: string); overload; deprecated 'instead of this, use Print overload that takes explicit X,Y,Color parameters'; |
| Public | procedure Print(const s: string); overload; deprecated 'instead of this, use Print overload that takes explicit X,Y,Color parameters'; |
| Public | procedure PrintRect(const Rect: TRectangle; const Color: TCastleColor; const S: string; const HorizontalAlignment: THorizontalPosition; const VerticalAlignment: TVerticalPosition); overload; |
| Public | procedure PrintRect(const Rect: TFloatRectangle; const Color: TCastleColor; const S: string; const HorizontalAlignment: THorizontalPosition; const VerticalAlignment: TVerticalPosition); overload; |
| Public | procedure PrintRectMultiline(const Rect: TRectangle; const Color: TCastleColor; const S: string; const HorizontalAlignment: THorizontalPosition; const VerticalAlignment: TVerticalPosition; const Html: boolean; const LineSpacing: Integer; const TextHorizontalAlignment: THorizontalPosition = hpLeft); overload; |
| Public | procedure PrintRectMultiline(const Rect: TFloatRectangle; const Color: TCastleColor; const S: string; const HorizontalAlignment: THorizontalPosition; const VerticalAlignment: TVerticalPosition; const Html: boolean; const LineSpacing: Integer; const TextHorizontalAlignment: THorizontalPosition = hpLeft); overload; |
| Public | procedure PrepareResources; virtual; |
| Public | function TextWidth(const S: string): Single; virtual; abstract; |
| Public | function TextHeight(const S: string): Single; virtual; abstract; |
| Public | function TextHeightBase(const S: string): Single; virtual; abstract; |
| Public | function TextMove(const S: string): TVector2; virtual; abstract; |
| Public | function TextSize(const S: string): TVector2; |
| Public | function RowHeight: Single; deprecated 'use Height'; |
| Public | function RowHeightBase: Single; deprecated 'use CapHeight'; |
| Public | function Descend: Single; deprecated 'use DescenderHeight'; |
| Public | function Height: Single; |
| Public | function CapHeight: Single; |
| Public | function DescenderHeight: Single; |
| Public | procedure BreakLines(const unbroken: string; broken: TStrings; MaxLineWidth: Single); overload; |
| Public | procedure BreakLines(unbroken, broken: TStrings; MaxLineWidth: Single); overload; |
| Public | procedure BreakLines(broken: TStrings; MaxLineWidth: Single; FirstToBreak: integer); overload; |
| Public | function MaxTextWidth(SList: TStrings; const Html: boolean = false): Single; |
| Public | procedure PrintStrings(const X0, Y0: Single; const Color: TCastleColor; const Strs: TStrings; const Html: boolean; const LineSpacing: Single; const TextHorizontalAlignment: THorizontalPosition = hpLeft); overload; |
| Public | procedure PrintStrings(const X0, Y0: Single; const Color: TCastleColor; const Strs: array of string; const Html: boolean; const LineSpacing: Single; const TextHorizontalAlignment: THorizontalPosition = hpLeft); overload; |
| Public | procedure PrintStrings(const Strs: TStrings; const Html: boolean; const LineSpacing: Single; const X0: Single = 0; const Y0: Single = 0); overload; deprecated 'instead of this, use PrintStrings version that takes explicit Color parameter'; |
| Public | procedure PrintStrings(const Strs: array of string; const Html: boolean; const LineSpacing: Single; const X0: Single = 0; const Y0: Single = 0); overload; deprecated 'instead of this, use PrintStrings version that takes explicit Color parameter'; |
| Public | function PrintBrokenString(const Rect: TRectangle; const Color: TCastleColor; const S: string; const LineSpacing: Single; const AlignHorizontal: THorizontalPosition; const AlignVertical: TVerticalPosition; const Html: boolean = false): Integer; overload; |
| Public | function PrintBrokenString(const Rect: TFloatRectangle; const Color: TCastleColor; const S: string; const LineSpacing: Single; const AlignHorizontal: THorizontalPosition; const AlignVertical: TVerticalPosition; const Html: boolean = false): Integer; overload; |
| Public | function PrintBrokenString(X0, Y0: Single; const Color: TCastleColor; const S: string; const MaxLineWidth: Single; const PositionsFirst: boolean; const LineSpacing: Single; const Html: boolean = false): Integer; overload; |
| Public | function PrintBrokenString(const S: string; const MaxLineWidth, X0, Y0: Single; const PositionsFirst: boolean; const LineSpacing: Single): Integer; overload; deprecated 'instead of this, use PrintBrokenString that takes explicit Color parameter'; |
| Public | procedure PushProperties; |
| Public | procedure PopProperties; |
| Public | function EffectiveSize: Single; virtual; |
| Public | function RealSize: Single; deprecated 'use EffectiveSize'; |
| Public | procedure AddFontSizeChangeNotification(const Notify: TNotifyEvent); |
| Public | procedure RemoveFontSizeChangeNotification(const Notify: TNotifyEvent); |
| Public | constructor Create(AOwner: TComponent); override; |
| Public | destructor Destroy; override; |
| Public | function PropertySections(const PropertyName: String): TPropertySections; override; |
| Public | procedure Load(const AImage: TCastleImage; const AImageColumns, AImageRows, AImageMargin: Cardinal; const ADisplayMargin: Single); deprecated 'assign properties to load font: ImageUrl, ImageColumns, ImageRows, ImageMargin and (only for display) DisplayMargin'; |
| Public | procedure PrepareResources; override; |
| Public | procedure Print(const X, Y: Single; const Color: TCastleColor; const S: string); override; |
| Public | function TextWidth(const S: string): Single; override; |
| Public | function TextHeight(const S: string): Single; override; |
| Public | function TextHeightBase(const S: string): Single; override; |
| Public | function TextMove(const S: string): TVector2; override; |
| Public | function FontLoaded: Boolean; override; |
Properties
| Public | property NonVisualComponents [const Index: Integer]: TComponent read GetNonVisualComponents; |
| Public | property IsLoading: Boolean read FIsLoading; |
| Public | property Size: Single read FSize write SetSize; |
| Public | property Outline: Cardinal read FOutline write SetOutline default 0; |
| Public | property OutlineHighQuality: boolean
read FOutlineHighQuality write FOutlineHighQuality default false; |
| Public | property OutlineColor: TCastleColor read FOutlineColor write FOutlineColor; |
| Public | property TargetImage: TCastleImage read FTargetImage write FTargetImage; |
| Published | property MeasureHeight: String read FMeasureHeight write SetMeasureHeight
stored StoreMeasureHeight; |
| Published | property MeasureCapHeight: String read FMeasureCapHeight write SetMeasureCapHeight
stored StoreMeasureCapHeight; |
| Published | property MeasureDescenderHeight: String read FMeasureDescenderHeight write SetMeasureDescenderHeight
stored StoreMeasureDescenderHeight; |
| Published | property ImageUrl: String read FImageUrl write SetImageUrl; |
| Published | property ImageColumns: Cardinal read FImageColumns write SetImageColumns default 8; |
| Published | property ImageRows: Cardinal read FImageRows write SetImageRows default 8; |
| Published | property ImageMargin: Cardinal read FImageMargin write SetImageMargin default 0; |
| Published | property DisplayMargin: Single read FDisplayMargin write SetDisplayMargin default 2; |
Description
Constants
| Public | DefaultMeasureHeight = 'AOHIypq'; |
|
This item has no description. | |
| Public | DefaultMeasureCapHeight = 'HI'; |
|
This item has no description. | |
| Public | DefaultMeasureDescenderHeight = 'ya'; |
|
This item has no description. | |
Methods
| Protected | function GetInternalText: String; virtual; |
|
This item has no description. | |
| Protected | procedure SetInternalText(const Value: String); virtual; |
|
This item has no description. | |
| Protected | procedure SetName(const Value: TComponentName); override; |
|
This item has no description. | |
| Protected | procedure TranslateProperties(const TranslatePropertyEvent: TTranslatePropertyEvent); virtual; |
|
Enumerate all properties that are possible to translate in this component. E.g. in TCastleLabel it will return TCastleLabel.Caption, in TCastleEdit it will return TCastleEdit.Text and TCastleEdit.Placeholder. Returns only non-empty properties, thus assuming that if current (by convention, English) text is empty, then there is no point in translating it. Moreover descendants may define boolean properties to exclude particular text from translating, e.g. TCastleLabel.CaptionTranslate, TCastleEdit.TextTranslate, TCastleEdit.PlaceholderTranslate. It is not recursive (it doesn't enumerate children properties). Use global TranslateProperties procedure to call this on a hierarchy of TComponent. You usually don't want to call this method (it is called by other engine routines). But you may find it useful to override this, if you define new component. | |
| Public | destructor Destroy; override; |
|
This item has no description. | |
| Public | procedure CustomSerialization(const SerializationProcess: TSerializationProcess); virtual; |
|
Override this method to call various methods of SerializationProcess, which in turn allows to serialize/deserialize things that are not published. This allows to serialize/deserialize with more freedom, e.g. to serialize/deserialize some private field. | |
| Public | function PropertySections(const PropertyName: String): TPropertySections; virtual; |
|
Section where to show property in the editor. | |
| Public | procedure SetTransient; |
|
Ignore this component when serializing parent's TCastleUserInterface.Controls list or TCastleTransform.List, and do not show this component in CGE editor. This simply sets csTransient flag in ComponentStyle. This is useful for children that are automatically managed by the parent, and should not be modified by user code. For example, TCastleCheckbox is internally composed from TCastleImageControl and TCastleLabel children, but we don't want to serialize or even show these children to user. Note that if you want to prevent this component from serializing as part of TCastleUserInterface.Controls list or TCastleTransform.List, but you still want it to be visible in CGE editor, then make it a "subcomponent" instead, by Note that both csSubComponent and csTransient only disable the component serialization as part of parent's lists enumerated by CustomSerialization (see internal TCastleUserInterface.SerializeChildrenEnumerate , TCastleTransform.SerializeChildrenEnumerate, TCastleTransform.SerializeBehaviorsEnumerate). If you will make the component published in its own property (which is normal for "subcomponents") then it will be serialized anyway, just as part of it's own property (like TCastleScrollView.ScrollArea). So to really avoid serializing a children component make it csSubComponent and/or csTransient, and do not publish it. | |
| Public | procedure AddNonVisualComponent(const NonVisualComponent: TComponent); |
|
Add non-visual component to this component. This is used to organize non-visual components in a tree hierarchy, in CGE designs and editor.
See also
| |
| Public | procedure InsertNonVisualComponent(const Index: Integer; const NonVisualComponent: TComponent); |
|
Insert non-visual component to this component. This is used to organize non-visual components in a tree hierarchy, in CGE designs and editor.
See also
| |
| Public | procedure RemoveNonVisualComponent(const NonVisualComponent: TComponent); |
|
Removes the component previously added by AddNonVisualComponent. | |
| Public | function NonVisualComponentsIndexOf(const NonVisualComponent: TComponent): Integer; |
|
Index of the previously added non-visual component. Returns -1 if the component was not found. | |
| Public | function NonVisualComponentsCount: Integer; |
|
Count of components added by AddNonVisualComponent.
See also
| |
| Public | function NonVisualComponentsEnumerate: TNonVisualComponentsEnumerator; |
|
You can enumerate current non-visual components using loop like See also
| |
| Public | function ValueIsStreamed: Boolean; virtual; |
|
Whether the current value of this object should be written to the stream. This should be This is used by CastleComponentSerialize, which is used in Castle Game Engine for all serialization. In simple cases, this just says whether the current value of this object equals to some default value. The default implementation of this class returns Descendants that override this to sometimes return The name of this method is consistent with TPropertyEditor.ValueIsStreamed in LCL. | |
| Public | procedure DesignerInfo(const SList: TStrings); virtual; |
|
Override to add information that should be visible at design-time. Call | |
| Public | procedure DesignerWarnings(const SList: TStrings); virtual; |
|
Override to add warnings that should be visible at design-time. Call | |
| Public | constructor Create(AOwner: TComponent); override; |
|
This item has no description. | |
| Public | destructor Destroy; override; |
|
This item has no description. | |
| Public | function FontLoaded: Boolean; virtual; abstract; |
|
If the font is loaded, it can actually display and measure some characters. | |
| Public | procedure PrintAndMove(const s: string); deprecated 'use Print(X, Y, ...), and move the (X, Y) yourself based on TextMove, instead of this'; |
|
Warning: this symbol is deprecated: use Print(X, Y, ...), and move the (X, Y) yourself based on TextMove, instead of this
Draw text at the current WindowPos, and move the WindowPos at the end. This way you can immediately call another It is not adviced to use it, as using the global WindowPos leads sooner or later to messy in code, that has to deal with global state. If you need to know how to move after printing text, use TextMove. | |
| Public | procedure Print(const X, Y: Single; const Color: TCastleColor; const S: string); overload; virtual; abstract; |
|
Draw text at the given position with given color. If the last Color component is not 1, the text is rendered with blending. Overloaded version without X, Y uses WindowPos (but doesn't modify it, in contrast to PrintAndMove). Overloaded version without Color uses CurrentColor, last color set by glColorv. It is not adviced to use overloaded versions without X, Y or Color — using global state leads to messy code. You should upgrade your code to use the version that gets X,Y,Color explicitly. | |
| Public | procedure Print(const Pos: TVector2Integer; const Color: TCastleColor; const S: string); overload; |
|
This item has no description. | |
| Public | procedure Print(const Pos: TVector2; const Color: TCastleColor; const S: string); overload; |
|
This item has no description. | |
| Public | procedure Print(const X, Y: Single; const S: string); overload; deprecated 'instead of this, use Print overload that takes explicit X,Y,Color parameters'; |
|
Warning: this symbol is deprecated: instead of this, use Print overload that takes explicit X,Y,Color parameters This item has no description. | |
| Public | procedure Print(const s: string); overload; deprecated 'instead of this, use Print overload that takes explicit X,Y,Color parameters'; |
|
Warning: this symbol is deprecated: instead of this, use Print overload that takes explicit X,Y,Color parameters This item has no description. | |
| Public | procedure PrintRect(const Rect: TRectangle; const Color: TCastleColor; const S: string; const HorizontalAlignment: THorizontalPosition; const VerticalAlignment: TVerticalPosition); overload; |
|
Print text, aligning within given rectangle. Hint: Use TRectangle.Grow(-10) or similar to align within a rectangle with padding. | |
| Public | procedure PrintRect(const Rect: TFloatRectangle; const Color: TCastleColor; const S: string; const HorizontalAlignment: THorizontalPosition; const VerticalAlignment: TVerticalPosition); overload; |
|
This item has no description. | |
| Public | procedure PrintRectMultiline(const Rect: TRectangle; const Color: TCastleColor; const S: string; const HorizontalAlignment: THorizontalPosition; const VerticalAlignment: TVerticalPosition; const Html: boolean; const LineSpacing: Integer; const TextHorizontalAlignment: THorizontalPosition = hpLeft); overload; |
|
Print text, aligning within given rectangle. Newlines within the text will be automatically honored, the text will be rendered as multiple lines. See PrintStrings for description of parameters Html, LineSpacing, TextHorizontalAlignment. | |
| Public | procedure PrintRectMultiline(const Rect: TFloatRectangle; const Color: TCastleColor; const S: string; const HorizontalAlignment: THorizontalPosition; const VerticalAlignment: TVerticalPosition; const Html: boolean; const LineSpacing: Integer; const TextHorizontalAlignment: THorizontalPosition = hpLeft); overload; |
|
This item has no description. | |
| Public | procedure PrepareResources; virtual; |
|
The font may require some OpenGL resources for drawing. You can explicitly create them using | |
| Public | function TextWidth(const S: string): Single; virtual; abstract; |
|
This item has no description. | |
| Public | function TextHeight(const S: string): Single; virtual; abstract; |
|
This item has no description. | |
| Public | function TextHeightBase(const S: string): Single; virtual; abstract; |
|
The height (above the baseline) of the text. This doesn't take into account height of the text below the baseline (for example letter "y" has the tail below the baseline in most fonts). | |
| Public | function TextMove(const S: string): TVector2; virtual; abstract; |
|
This item has no description. | |
| Public | function TextSize(const S: string): TVector2; |
|
This item has no description. | |
| Public | function RowHeight: Single; deprecated 'use Height'; |
|
Warning: this symbol is deprecated: use Height This item has no description. | |
| Public | function RowHeightBase: Single; deprecated 'use CapHeight'; |
|
Warning: this symbol is deprecated: use CapHeight This item has no description. | |
| Public | function Descend: Single; deprecated 'use DescenderHeight'; |
|
Warning: this symbol is deprecated: use DescenderHeight This item has no description. | |
| Public | function Height: Single; |
|
Maximum height of font characters, taking into account whole descent and ascent. By default calculated as height of "AOHIypq", see the MeasureHeight. See about standard font measurements: https://en.wikipedia.org/wiki/Typeface#Font_metrics , https://en.wikipedia.org/wiki/Metric_typographic_units . | |
| Public | function CapHeight: Single; |
|
Height above the baseline of font characters. Compared to Height, this does not take into account the characters size below the baseline, and it doesn't take into account some possible "overflow" on the top of some characters. By default calculated as height of "HI", see the MeasureCapHeight. The intention is that, while this doesn't represent the whole possible font height, but it often represents the perceived by user height of the block of text, as fonts are designed to make descents / overflows not stand out. See about standard font measurements: https://en.wikipedia.org/wiki/Typeface#Font_metrics , https://en.wikipedia.org/wiki/Metric_typographic_units . About "cap height" in particular: https://en.wikipedia.org/wiki/Cap_height https://fonts.google.com/knowledge/glossary/cap_height | |
| Public | function DescenderHeight: Single; |
|
How low the font characters may go below the baseline. By default calculated as a difference between "y" and "a" characters height, see the MeasureDescenderHeight. See about standard font measurements: https://en.wikipedia.org/wiki/Typeface#Font_metrics , https://en.wikipedia.org/wiki/Metric_typographic_units . | |
| Public | procedure BreakLines(const unbroken: string; broken: TStrings; MaxLineWidth: Single); overload; |
|
Break lines (possibly break one long string into more strings) to fit the text with given MaxLineWidth. This takes into account current font information (works also for non-monospace fonts, of course), and converts your Unbroken text into Broken text, such that TextWidth of the longest Broken line fits within MaxLineWidth. Tries to break on white characters. If not possible (there's a long stream of non-white characters that really has to be broken), it will break in the middle of normal (non-white) characters. The only situation when we have to fail, and the resulting Broken text is wider than required MaxLineWidth, is when a single character in your font is wider than MaxLineWidth. In such case, there's really no solution, and we'll just let such character stay. If you use the overloaded version where Unbroken is just a string, then note that already existing newlines (NL) inside Unbroken will be correctly preserved. If you use the overloaded version with separate Unbroken and Broken parameters, then the previous Broken contents are not modified. We only append to Broken new strings, coming from Unbroken text. The overloaded version that takes only Broken parameter (no Unbroken parameter) simply modifies it's Broken parameter (from the line FirstToBreak). | |
| Public | procedure BreakLines(unbroken, broken: TStrings; MaxLineWidth: Single); overload; |
|
This item has no description. | |
| Public | procedure BreakLines(broken: TStrings; MaxLineWidth: Single; FirstToBreak: integer); overload; |
|
This item has no description. | |
| Public | function MaxTextWidth(SList: TStrings; const Html: boolean = false): Single; |
|
Largest width of the line of text in given list. Parameters
| |
| Public | procedure PrintStrings(const X0, Y0: Single; const Color: TCastleColor; const Strs: TStrings; const Html: boolean; const LineSpacing: Single; const TextHorizontalAlignment: THorizontalPosition = hpLeft); overload; |
|
Print all strings from the list.
Parameters
| |
| Public | procedure PrintStrings(const X0, Y0: Single; const Color: TCastleColor; const Strs: array of string; const Html: boolean; const LineSpacing: Single; const TextHorizontalAlignment: THorizontalPosition = hpLeft); overload; |
|
This item has no description. | |
| Public | procedure PrintStrings(const Strs: TStrings; const Html: boolean; const LineSpacing: Single; const X0: Single = 0; const Y0: Single = 0); overload; deprecated 'instead of this, use PrintStrings version that takes explicit Color parameter'; |
|
Warning: this symbol is deprecated: instead of this, use PrintStrings version that takes explicit Color parameter This item has no description. | |
| Public | procedure PrintStrings(const Strs: array of string; const Html: boolean; const LineSpacing: Single; const X0: Single = 0; const Y0: Single = 0); overload; deprecated 'instead of this, use PrintStrings version that takes explicit Color parameter'; |
|
Warning: this symbol is deprecated: instead of this, use PrintStrings version that takes explicit Color parameter This item has no description. | |
| Public | function PrintBrokenString(const Rect: TRectangle; const Color: TCastleColor; const S: string; const LineSpacing: Single; const AlignHorizontal: THorizontalPosition; const AlignVertical: TVerticalPosition; const Html: boolean = false): Integer; overload; |
|
Print the string, broken such that it fits within MaxLineWidth. The string is broken into many lines using BreakLines, so the original newlines insides are correctly used, and the length of lines fits inside MaxLineWidth. The strings are printed on the screen, just like by PrintStrings. If PositionsFirst then the X0, Y0 determine the position of the first (top) line, otherwise they determine the position of the last (bottom) line. LineSpacing has the same meaning as for PrintStrings: it adds an additional space between lines (if positive) or forces the lines to be more tightly squeezed (if negative). Always make sure that (Height + LineSpacing) > 0. Returns the number of lines printed, that is the number of lines after breaking the text into lines. This may be useful e.g. to calculate the height of the printed text. Overloaded and deprecated version without explicit Color parameter uses CurrentColor. Overloaded version that takes rectangle as a parameter can align the resulting string box within the rectangle. | |
| Public | function PrintBrokenString(const Rect: TFloatRectangle; const Color: TCastleColor; const S: string; const LineSpacing: Single; const AlignHorizontal: THorizontalPosition; const AlignVertical: TVerticalPosition; const Html: boolean = false): Integer; overload; |
|
This item has no description. | |
| Public | function PrintBrokenString(X0, Y0: Single; const Color: TCastleColor; const S: string; const MaxLineWidth: Single; const PositionsFirst: boolean; const LineSpacing: Single; const Html: boolean = false): Integer; overload; |
|
This item has no description. | |
| Public | function PrintBrokenString(const S: string; const MaxLineWidth, X0, Y0: Single; const PositionsFirst: boolean; const LineSpacing: Single): Integer; overload; deprecated 'instead of this, use PrintBrokenString that takes explicit Color parameter'; |
|
Warning: this symbol is deprecated: instead of this, use PrintBrokenString that takes explicit Color parameter This item has no description. | |
| Public | procedure PushProperties; |
|
Save draw properties to a stack. Saves: Size, Outline, OutlineColor, OutlineHighQuality, TargetImage. | |
| Public | procedure PopProperties; |
|
This item has no description. | |
| Public | function EffectiveSize: Single; virtual; |
|
Non-zero font size. Usually same thing as Size, but in case of proxy font classes (like TCustomizedFont and TCastleFontFamily) it makes sure to never return zero (which, in case of font proxies, is allowed value for Size and means "use underlying font size"). | |
| Public | function RealSize: Single; deprecated 'use EffectiveSize'; |
|
Warning: this symbol is deprecated: use EffectiveSize This item has no description. | |
| Public | procedure AddFontSizeChangeNotification(const Notify: TNotifyEvent); |
|
Add notification when FontSizesChanged occurs. | |
| Public | procedure RemoveFontSizeChangeNotification(const Notify: TNotifyEvent); |
|
Remove notification when FontSizesChanged occurs. | |
| Public | constructor Create(AOwner: TComponent); override; |
|
This item has no description. | |
| Public | destructor Destroy; override; |
|
This item has no description. | |
| Public | function PropertySections(const PropertyName: String): TPropertySections; override; |
|
This item has no description. Showing description inherited from TCastleComponent.PropertySections. Section where to show property in the editor. | |
| Public | procedure Load(const AImage: TCastleImage; const AImageColumns, AImageRows, AImageMargin: Cardinal; const ADisplayMargin: Single); deprecated 'assign properties to load font: ImageUrl, ImageColumns, ImageRows, ImageMargin and (only for display) DisplayMargin'; |
|
Warning: this symbol is deprecated: assign properties to load font: ImageUrl, ImageColumns, ImageRows, ImageMargin and (only for display) DisplayMargin Load font from given image. Parameters
| |
| Public | procedure PrepareResources; override; |
|
This item has no description. Showing description inherited from TCastleAbstractFont.PrepareResources.
The font may require some OpenGL resources for drawing. You can explicitly create them using | |
| Public | procedure Print(const X, Y: Single; const Color: TCastleColor; const S: string); override; |
|
This item has no description. Showing description inherited from TCastleAbstractFont.Print. Draw text at the given position with given color. If the last Color component is not 1, the text is rendered with blending. Overloaded version without X, Y uses WindowPos (but doesn't modify it, in contrast to PrintAndMove). Overloaded version without Color uses CurrentColor, last color set by glColorv. It is not adviced to use overloaded versions without X, Y or Color — using global state leads to messy code. You should upgrade your code to use the version that gets X,Y,Color explicitly. | |
| Public | function TextWidth(const S: string): Single; override; |
|
This item has no description. | |
| Public | function TextHeight(const S: string): Single; override; |
|
This item has no description. | |
| Public | function TextHeightBase(const S: string): Single; override; |
|
This item has no description. Showing description inherited from TCastleAbstractFont.TextHeightBase. The height (above the baseline) of the text. This doesn't take into account height of the text below the baseline (for example letter "y" has the tail below the baseline in most fonts). | |
| Public | function TextMove(const S: string): TVector2; override; |
|
This item has no description. | |
| Public | function FontLoaded: Boolean; override; |
|
This item has no description. Showing description inherited from TCastleAbstractFont.FontLoaded. If the font is loaded, it can actually display and measure some characters. | |
Properties
| Public | property NonVisualComponents [const Index: Integer]: TComponent read GetNonVisualComponents; |
|
Components added by AddNonVisualComponent. | |
| Public | property IsLoading: Boolean read FIsLoading; |
|
Is the component during deserialization now. Note: We can't use | |
| Public | property Size: Single read FSize write SetSize; |
|
Desired font size to use when rendering (Print) and measuring (TextWidth, TextHeight and related). Should be always > 0. The font size should correspond to the font height, which you can query using Height. So in general Size and Height should be equal. That said, it is up to each specific font file to have correct size that satisfies above. This property, | |
| Public | property Outline: Cardinal read FOutline write SetOutline default 0; |
|
Outline size around the normal text. Note that the current implementation is very simple, it will only look sensible for small outline values (like 1 or 2). Note that outline size, in pixels, is not scaled along with font size. Which makes sense: whether you load TTF with size 10 and then set size 20, or you load TTF with size 40 and then set size 20 — the font is internally scaled differently, but the resulting sizes and outline sizes remain the same. See also
| |
| Public | property OutlineHighQuality: boolean
read FOutlineHighQuality write FOutlineHighQuality default false; |
|
Optionally force better outline quality. Used only if Outline <> 0. High quality outline looks better, but is about 2x more expensive to draw. See also
| |
| Public | property OutlineColor: TCastleColor read FOutlineColor write FOutlineColor; |
|
Outline color, used only if Outline <> 0. Default is black. See also
| |
| Public | property TargetImage: TCastleImage read FTargetImage write FTargetImage; |
|
The image where we render the font. Usually (when this is The PushProperties and PopProperties methods save/restore this. TODO: Font scaling (normally done by TCastleFont and TCastleBitmapFont if you change Size from default) is not done when drawing font to an image. So don't touch the Size if you plan on rendering to image. Also, when using HTML tags, do not change the font size by them. Otherwise TextWidth / TextHeight will be unsynchronized with what Print actually does — so not only your font will remain constant size, also it will overlap with itself. This will get fixed one day — TCastleImage.Draw just needs to support scaling. | |
| Published | property MeasureHeight: String read FMeasureHeight write SetMeasureHeight
stored StoreMeasureHeight; |
|
Use these characters to measure font Height. | |
| Published | property MeasureCapHeight: String read FMeasureCapHeight write SetMeasureCapHeight
stored StoreMeasureCapHeight; |
|
Use these characters to measure font CapHeight. Note that we only measure the height above baseline (Y = 0), so even when MeasureHeight and | |
| Published | property MeasureDescenderHeight: String read FMeasureDescenderHeight write SetMeasureDescenderHeight
stored StoreMeasureDescenderHeight; |
|
Use these characters to measure font DescenderHeight. This string must be empty (meaning that descend is zero) or has exactly 2 characters. The descender height is measured as height of 1st char - height of 2nd char. | |
| Published | property ImageUrl: String read FImageUrl write SetImageUrl; |
|
Image that contains the characters. The characters are placed on the image in their Unicode order, starting from space in the upper-left corner. The characters are organized in ImageColumns columns and ImageRows rows, and have ImageMargin space between them. | |
| Published | property ImageColumns: Cardinal read FImageColumns write SetImageColumns default 8; |
|
Columns of the characters in the image ImageUrl. | |
| Published | property ImageRows: Cardinal read FImageRows write SetImageRows default 8; |
|
Rows of the characters in the image ImageUrl. | |
| Published | property ImageMargin: Cardinal read FImageMargin write SetImageMargin default 0; |
|
Margin between characters in the image ImageUrl. | |
| Published | property DisplayMargin: Single read FDisplayMargin write SetDisplayMargin default 2; |
|
Spacing between characters when rendering the font. This is independent from ImageMargin. | |
Generated by PasDoc 0.17.0.snapshot.