Arma 3 Scripting

Command in GUI Control, Strings

getTextWidth

Also available as Markdown and JSON, or read the original wiki page.

Description

Returns estimated width of the text based on font type and size. Similar to ctrlTextWidth but does not require a control and can be used to estimate text width for any control including buttons. Result does not include left and right margins (hardcoded at 0.008 each).

Note

This command always uses unicode (see also forceUnicode).

Syntax

text getTextWidth [font, size]

Parameters:

Returns: Number

Examples

Example 1

_textWidth = "Hello World" getTextWidth ["PuristaMedium", 0.03];

Example 2

_textWidthInclMargins = ("Hello World" getTextWidth ["PuristaMedium", 0.03]) + 0.016;

Example 3

#define MARGINS 0.016
private _ctrl = findDisplay 46 ctrlCreate ["RscText", -1];
_ctrl ctrlSetText "TestString";
_ctrl ctrlSetFont "PuristaMedium";
_ctrl ctrlSetFontHeight 0.04;
ctrlTextWidth _ctrl == ("TestString" getTextWidth ["PuristaMedium", 0.04]) + MARGINS; // true

See also

ctrlTextWidth

Community notes

R3vo

When working with multiline controls ctrlTextWidth or getTextWidth will not return a proper value since the text will be treated as one long line.

Solution (Execute in Eden Editor):

disableSerialization;

private _display = findDisplay 313 createDisplay "RscDisplayEmpty";

private _edit = _display ctrlCreate ["RscEditMulti", -1];
_edit ctrlSetPosition [0,0,1,1];
_edit ctrlSetBackgroundColor [0,0,0,1];
_edit ctrlSetFont "EtelkaMonospacePro";
_edit ctrlSetFontHeight 0.03;
_edit ctrlCommit 0;

private _longestLineWidth = 0;
private _exampleString = "abcdefghijklmnopqrstuvxyz0134567890";
private _text = "";

for "_lines" from 1 to 400 do // loop through all lines and find the longest one
{
    _lineText = _exampleString select [round random 35];
    _longestLineWidth = _longestLineWidth max (_lineText getTextWidth ["EtelkaMonospacePro", 0.03]);
    _text = _text + _lineText + endl;
};

_edit ctrlSetPositionW (_longestLineWidth + 2 * 0.008); // width of longest line + left and right margin set in engine
_edit ctrlCommit 0;
_edit ctrlSetText _text;