mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 19:42:43 +00:00
[ImageFont] Fix escape sequence parsing, add note to the docs.
This commit is contained in:
parent
803dfcc3cb
commit
4cc065c2db
@ -40,7 +40,7 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="kerning_pairs" type="PackedStringArray" setter="" getter="" default="PackedStringArray()">
|
<member name="kerning_pairs" type="PackedStringArray" setter="" getter="" default="PackedStringArray()">
|
||||||
Kerning pairs for the font. Kerning pair adjust the spacing between two characters.
|
Kerning pairs for the font. Kerning pair adjust the spacing between two characters.
|
||||||
Each string consist of three space separated values: "from" string, "to" string and integer offset. Each combination form the two string for a kerning pair, e.g, [code]ab cd -3[/code] will create kerning pairs [code]ac[/code], [code]ad[/code], [code]bc[/code], and [code]bd[/code] with offset [code]-3[/code].
|
Each string consist of three space separated values: "from" string, "to" string and integer offset. Each combination form the two string for a kerning pair, e.g, [code]ab cd -3[/code] will create kerning pairs [code]ac[/code], [code]ad[/code], [code]bc[/code], and [code]bd[/code] with offset [code]-3[/code]. [code]\uXXXX[/code] escape sequences can be used to add Unicode characters.
|
||||||
</member>
|
</member>
|
||||||
<member name="rows" type="int" setter="" getter="" default="1">
|
<member name="rows" type="int" setter="" getter="" default="1">
|
||||||
Number of rows in the font image. See also [member columns].
|
Number of rows in the font image. See also [member columns].
|
||||||
|
@ -293,18 +293,20 @@ Error ResourceImporterImageFont::import(const String &p_source_file, const Strin
|
|||||||
}
|
}
|
||||||
String from_tokens;
|
String from_tokens;
|
||||||
for (int i = 0; i < kp_tokens[0].length(); i++) {
|
for (int i = 0; i < kp_tokens[0].length(); i++) {
|
||||||
if (i <= kp_tokens[0].length() - 6 && kp_tokens[0][i] == '\\' && kp_tokens[0][i + 1] == 'u') {
|
if (i <= kp_tokens[0].length() - 6 && kp_tokens[0][i] == '\\' && kp_tokens[0][i + 1] == 'u' && is_hex_digit(kp_tokens[0][i + 2]) && is_hex_digit(kp_tokens[0][i + 3]) && is_hex_digit(kp_tokens[0][i + 4]) && is_hex_digit(kp_tokens[0][i + 5])) {
|
||||||
char32_t charcode = kp_tokens[0].substr(i + 2, 4).hex_to_int();
|
char32_t charcode = kp_tokens[0].substr(i + 2, 4).hex_to_int();
|
||||||
from_tokens += charcode;
|
from_tokens += charcode;
|
||||||
|
i += 5;
|
||||||
} else {
|
} else {
|
||||||
from_tokens += kp_tokens[0][i];
|
from_tokens += kp_tokens[0][i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String to_tokens;
|
String to_tokens;
|
||||||
for (int i = 0; i < kp_tokens[1].length(); i++) {
|
for (int i = 0; i < kp_tokens[1].length(); i++) {
|
||||||
if (i <= kp_tokens[1].length() - 6 && kp_tokens[1][i] == '\\' && kp_tokens[1][i + 1] == 'u') {
|
if (i <= kp_tokens[1].length() - 6 && kp_tokens[1][i] == '\\' && kp_tokens[1][i + 1] == 'u' && is_hex_digit(kp_tokens[1][i + 2]) && is_hex_digit(kp_tokens[1][i + 3]) && is_hex_digit(kp_tokens[1][i + 4]) && is_hex_digit(kp_tokens[1][i + 5])) {
|
||||||
char32_t charcode = kp_tokens[1].substr(i + 2, 4).hex_to_int();
|
char32_t charcode = kp_tokens[1].substr(i + 2, 4).hex_to_int();
|
||||||
to_tokens += charcode;
|
to_tokens += charcode;
|
||||||
|
i += 5;
|
||||||
} else {
|
} else {
|
||||||
to_tokens += kp_tokens[1][i];
|
to_tokens += kp_tokens[1][i];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user