<RetVar/IF> get string font length: <Var/String>

This forum serves as MSCI Reference at EGOSOFT. It's Read-Only for non MSCI Group members.

Moderators: Scripting / Modding Moderators, MSCI Moderators

Locked
mark_a_condren
Posts: 1385
Joined: Wed, 3. Aug 05, 05:05
x3tc

<RetVar/IF> get string font length: <Var/String>

Post by mark_a_condren » Fri, 17. Sep 10, 14:31

[skip] if [not]|while [not]| <RetVar/IF> = get string font length: <Var/String>


[skip] if [not]|while [not]| = The possible 'Conditional' statements that can be used with this command.
<RetVar/IF> = Command return, with an 'if' statement used it will be TRUE (1) if condition passes or FALSE (0) if it fails, otherwise if you use a Variable it will be the number of pixels as an integer.
<Var/String> = The variable / string you wish to get the length of. This can be a variable containing a 'string' or a directly inputed 'string'.


Returns the combined length of all the fonts 'characters' in a string.
Each character has its own font length in pixels, these are all added together to give a total string length in pixels.


Example:

$this.string = 'I wonder how long this is ?'

$this.string.length = get string font length: $this.string

In the above example, $this.string.length would equal 129.


known Outcomes:

The sum of all the character lengths in a string is different to the total length of the string.

To explain;

I = 6
W = 12

But combined, rather than it equaling 18 it comes to a length of 16 and is carried on further as characters are added;

IW = 16 ~ individual totals = 18
IWI = 20 ~ individual totals = 24
IWIW = 30 ~ individual totals = 36

In effect, for each character added, 2 is subtracted from the total length. This is probably done to correct spacing issues with consecutive characters.

This can be demonstrated by picturing a '_' before and after each character like this;

_I_
_W_

Together they would be;

_I__W__I__W_

But, for spacings sake, it is reduced to;

_I_W_I_W_



Character Font lengths are listed below;

Code: Select all

Character :   1    is Size :    7
Character :   2    is Size :    8
Character :   3    is Size :    8
Character :   4    is Size :    8
Character :   5    is Size :    8
Character :   6    is Size :    8
Character :   7    is Size :    8
Character :   8    is Size :    8
Character :   9    is Size :    8
Character :   0    is Size :    8
Character :   a    is Size :    8
Character :   b    is Size :    8
Character :   c    is Size :    7
Character :   d    is Size :    8
Character :   e    is Size :    8
Character :   f    is Size :    6
Character :   g    is Size :    8
Character :   h    is Size :    8
Character :   i    is Size :    4
Character :   j    is Size :    5
Character :   k    is Size :    8
Character :   l    is Size :    4
Character :   m    is Size :    10
Character :   n    is Size :    8
Character :   o    is Size :    8
Character :   p    is Size :    8
Character :   q    is Size :    8
Character :   r    is Size :    6
Character :   s    is Size :    7
Character :   t    is Size :    6
Character :   u    is Size :    8
Character :   v    is Size :    8
Character :   w    is Size :    10
Character :   x    is Size :    8
Character :   y    is Size :    8
Character :   z    is Size :    7
Character :   A    is Size :    9
Character :   B    is Size :    8
Character :   C    is Size :    9
Character :   D    is Size :    9
Character :   E    is Size :    8
Character :   F    is Size :    8
Character :   G    is Size :    9
Character :   H    is Size :    9
Character :   I    is Size :    6
Character :   J    is Size :    7
Character :   K    is Size :    8
Character :   L    is Size :    7
Character :   M    is Size :    10
Character :   N    is Size :    9
Character :   O    is Size :    10
Character :   P    is Size :    8
Character :   Q    is Size :    10
Character :   R    is Size :    9
Character :   S    is Size :    8
Character :   T    is Size :    8
Character :   U    is Size :    9
Character :   V    is Size :    9
Character :   W    is Size :    12
Character :   X    is Size :    9
Character :   Y    is Size :    9
Character :   Z    is Size :    8
Character :   `    is Size :    6
Character :   ~    is Size :    10
Character :   !    is Size :    5
Character :   @    is Size :    12
Character :   #    is Size :    10
Character :   $    is Size :    8
Character :   %    is Size :    13
Character :   ^    is Size :    10
Character :   &    is Size :    10
Character :   *    is Size :    8
Character :   (    is Size :    6
Character :   )    is Size :    6
Character :   _    is Size :    9
Character :   +    is Size :    10
Character :   -    is Size :    6
Character :   =    is Size :    10
Character :   /    is Size :    6
Character :   \    is Size :    6
Character :   .    is Size :    5
Character :   ,    is Size :    5
Character :   <    is Size :    10
Character :   >    is Size :    10
Character :   ?    is Size :    7
Character :   [    is Size :    6
Character :   ]    is Size :    6
Character :   {    is Size :    7
Character :   }    is Size :    7
Character :   |    is Size :    5
Character :   ;    is Size :    6
Character :   '    is Size :    4
Character :   :    is Size :    5
Character :   "    is Size :    6
Character :   *    is Size :    8
Character :        is Size :    4 (blank space)

Command Location:
Last edited by mark_a_condren on Fri, 31. Dec 10, 12:50, edited 4 times in total.

User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 21588
Joined: Sun, 2. Apr 06, 16:38
x4

[TiP][49] 287074

Post by X2-Illuminatus » Mon, 11. Oct 10, 21:14

[skip] if [not]|while [not]| <RetVar/IF> = get string font length: <Var/String>


[skip] if [not]|while [not]| = Die möglichen bedingten Anweisungen, die mit diesem Befehl genutzt werden können.
<RetVar/IF> = Rückgabewert des Befehls, mit einer 'if' Anweisung wird dieser TRUE (1) (wahr) sein, wenn die Bedingung erfüllt ist oder FALSE (0) (falsch), wenn nicht. Andernfalls, wenn eine Variable genutzt wird, wird die Anzahl der Pixel (Bildpunkte) als ganze Zahl zurückgegeben.
<Var/String> = Die Variable / Zeichenkette, deren Länge du überprüfen möchtest. Dies kann entweder eine Variable, die eine Zeichenkette enthält, oder direkt eine Zeichenkette sein.


Gibt die gemeinsame Länge aller Zeichen einer Zeichenkette zurück. Jedes Zeichen hat seine eigene, von der Schriftart abhängige Länge in Pixeln. Alle werden addiert, um eine gemeinsame Zeichenkettenlänge in Pixeln zu erhalten.


Beispiel:

$this.string = 'Ich frage mich, wie lang das ist ?'

$this.string.length = get string font length: $this.string

In obigem Beispiel wäre $this.string.length gleich 129.


bekannte Ergebnisse:

Die Summe aller Zeichenlängen in einer Zeichenkette und die Gesamtlänge einer Zeichenkette sind unterschiedlich.

z.B.:

I = 6
W = 12

aber zusammen, gibt der Befehl nicht 18 sondern 16 als Länge aus. Dies setzt sich fort, wenn weitere Zeichen hinzukommen.

IW = 16 ~ Gesamtlänge der einzelnen Zeichen = 18
IWI = 20 ~ Gesamtlänge der einzelnen Zeichen = 24
IWIW = 30 ~ Gesamtlänge der einzelnen Zeichen = 36

So gesehen wird die Gesamtlänge für jedes zusätzliche Zeichen um 2 reduziert. Dies wird vermutlich gemacht, um wegfallende Leerzeichen zwischen aufeinander folgenden Zeichen zu kompensieren.

Dies kann veranschaulicht werden, indem man einen Unterstrich ('_') vor und hinter jedes Zeichen setzt:

_I_
_W_

Zusammen wäre dies:

_I__W__I__W_

Aber der Leerzeichen zuliebe wird die Zeichenkette reduziert zu:

_I_W_I_W_


Die Zeichenlängen der Schriftart sind wie folgt:

Code: Select all

Zeichen :   1    hat die Länge :    7
Zeichen :   2    hat die Länge :    8
Zeichen :   3    hat die Länge :    8
Zeichen :   4    hat die Länge :    8
Zeichen :   5    hat die Länge :    8
Zeichen :   6    hat die Länge :    8
Zeichen :   7    hat die Länge :    8
Zeichen :   8    hat die Länge :    8
Zeichen :   9    hat die Länge :    8
Zeichen :   0    hat die Länge :    8
Zeichen :   a    hat die Länge :    8
Zeichen :   b    hat die Länge :    8
Zeichen :   c    hat die Länge :    7
Zeichen :   d    hat die Länge :    8
Zeichen :   e    hat die Länge :    8
Zeichen :   f    hat die Länge :    6
Zeichen :   g    hat die Länge :    8
Zeichen :   h    hat die Länge :    8
Zeichen :   i    hat die Länge :    4
Zeichen :   j    hat die Länge :    5
Zeichen :   k    hat die Länge :    8
Zeichen :   l    hat die Länge :    4
Zeichen :   m    hat die Länge :    10
Zeichen :   n    hat die Länge :    8
Zeichen :   o    hat die Länge :    8
Zeichen :   p    hat die Länge :    8
Zeichen :   q    hat die Länge :    8
Zeichen :   r    hat die Länge :    6
Zeichen :   s    hat die Länge :    7
Zeichen :   t    hat die Länge :    6
Zeichen :   u    hat die Länge :    8
Zeichen :   v    hat die Länge :    8
Zeichen :   w    hat die Länge :    10
Zeichen :   x    hat die Länge :    8
Zeichen :   y    hat die Länge :    8
Zeichen :   z    hat die Länge :    7
Zeichen :   A    hat die Länge :    9
Zeichen :   B    hat die Länge :    8
Zeichen :   C    hat die Länge :    9
Zeichen :   D    hat die Länge :    9
Zeichen :   E    hat die Länge :    8
Zeichen :   F    hat die Länge :    8
Zeichen :   G    hat die Länge :    9
Zeichen :   H    hat die Länge :    9
Zeichen :   I    hat die Länge :    6
Zeichen :   J    hat die Länge :    7
Zeichen :   K    hat die Länge :    8
Zeichen :   L    hat die Länge :    7
Zeichen :   M    hat die Länge :    10
Zeichen :   N    hat die Länge :    9
Zeichen :   O    hat die Länge :    10
Zeichen :   P    hat die Länge :    8
Zeichen :   Q    hat die Länge :    10
Zeichen :   R    hat die Länge :    9
Zeichen :   S    hat die Länge :    8
Zeichen :   T    hat die Länge :    8
Zeichen :   U    hat die Länge :    9
Zeichen :   V    hat die Länge :    9
Zeichen :   W    hat die Länge :    12
Zeichen :   X    hat die Länge :    9
Zeichen :   Y    hat die Länge :    9
Zeichen :   Z    hat die Länge :    8
Zeichen :   `    hat die Länge :    6
Zeichen :   ~    hat die Länge :    10
Zeichen :   !    hat die Länge :    5
Zeichen :   @    hat die Länge :    12
Zeichen :   #    hat die Länge :    10
Zeichen :   $    hat die Länge :    8
Zeichen :   %    hat die Länge :    13
Zeichen :   ^    hat die Länge :    10
Zeichen :   &    hat die Länge :    10
Zeichen :   *    hat die Länge :    8
Zeichen :   (    hat die Länge :    6
Zeichen :   )    hat die Länge :    6
Zeichen :   _    hat die Länge :    9
Zeichen :   +    hat die Länge :    10
Zeichen :   -    hat die Länge :    6
Zeichen :   =    hat die Länge :    10
Zeichen :   /    hat die Länge :    6
Zeichen :   \    hat die Länge :    6
Zeichen :   .    hat die Länge :    5
Zeichen :   ,    hat die Länge :    5
Zeichen :   <    hat die Länge :    10
Zeichen :   >    hat die Länge :    10
Zeichen :   ?    hat die Länge :    7
Zeichen :   [    hat die Länge :    6
Zeichen :   ]    hat die Länge :    6
Zeichen :   {    hat die Länge :    7
Zeichen :   }    hat die Länge :    7
Zeichen :   |    hat die Länge :    5
Zeichen :   ;    hat die Länge :    6
Zeichen :   '    hat die Länge :    4
Zeichen :   :    hat die Länge :    5
Zeichen :   "    hat die Länge :    6
Zeichen :   *    hat die Länge :    8
Zeichen :        hat die Länge :    4 (Leerzeichen)

Zu finden unter:

Locked

Return to “MSCI Reference”