[Complex Text Layouts] Add BiDi and font features demo.

This commit is contained in:
bruvzg
2020-10-12 10:34:30 +03:00
parent 44daa8ac89
commit 9a2889b35b
33 changed files with 1493 additions and 179 deletions

View File

@@ -0,0 +1,94 @@
Copyright (c) 20032012, Philipp H. Poll (www.linuxlibertine.org | gillian at linuxlibertine.org),
with Reserved Font Name "Linux Libertine" and "Biolinum".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@@ -0,0 +1,92 @@
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to
provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software
components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed,
modify, redistribute, and sell modified and unmodified copies of the
Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@@ -0,0 +1,13 @@
BiDI and Font Features Demo
A demo showing BiDi text and BiDi overrides, line breaking and justification, and OpenType font features.
Language: GDScript
Renderer: Vulkan
## Screenshots
![Screenshot](screenshots/bidi.png)
![Screenshot](screenshots/line_break_and_fill.png)
![Screenshot](screenshots/font_features.png)

View File

@@ -0,0 +1,33 @@
extends Control
func _ready():
var tree = $"TabContainer/Text direction/Tree"
var root = tree.create_item()
tree.set_hide_root(true)
var first = tree.create_item(root)
first.set_text(0, "רֵאשִׁית")
var second = tree.create_item(first)
second.set_text(0, "שֵׁנִי")
var third = tree.create_item(second)
third.set_text(0, "שְׁלִישִׁי")
var fourth = tree.create_item(third)
fourth.set_text(0, "fourth")
func _on_Tree_item_selected():
var tree = $"TabContainer/Text direction/Tree"
var path = ""
var item = tree.get_selected()
while item != null:
path = item.get_text(0) + "/" + path
item = item.get_parent()
$"TabContainer/Text direction/LineEditST".text = path
$"TabContainer/Text direction/LineEditNoST".text = path
func _on_LineEditCustomSTDst_text_changed(new_text):
$"TabContainer/Text direction/LineEditCustomSTSource".text = new_text
func _on_LineEditCustomSTSource_text_changed(new_text):
$"TabContainer/Text direction/LineEditCustomSTDst".text = new_text
func _on_LineEditCustomSTDst_tree_entered():
$"TabContainer/Text direction/LineEditCustomSTDst".text = $"TabContainer/Text direction/LineEditCustomSTSource".text # Refresh text to apply custom script once it's loaded.

View File

@@ -0,0 +1,627 @@
[gd_scene load_steps=5 format=3 uid="uid://doa7j7q1j4p4e"]
[ext_resource type="Font" path="res://noto_font.tres" id="1"]
[ext_resource type="Script" path="res://bidi.gd" id="2"]
[ext_resource type="Script" path="res://custom_st_parser.gd" id="3"]
[ext_resource type="Font" path="res://lib_font.tres" id="4"]
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( "2" )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TabContainer" type="TabContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Line breaking and justification" type="Panel" parent="TabContainer"]
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 4.0
offset_top = 38.0
offset_right = -4.0
offset_bottom = -4.0
script = null
[node name="LabelBrkInfo" type="Label" parent="TabContainer/Line breaking and justification"]
offset_left = 30.0
offset_top = 30.0
offset_right = 830.0
offset_bottom = 52.0
theme_override_colors/font_color = Color(0.419608, 0.831373, 0.505882, 1)
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "1. Line breaking and space justification."
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelTHNoBreak" type="Label" parent="TabContainer/Line breaking and justification"]
anchor_top = 0.000891266
anchor_bottom = 0.000891266
offset_left = 30.0
offset_top = 69.5027
offset_right = 988.0
offset_bottom = 92.5027
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "ภาษาไทย หรือ ภาษาไทยกลาง เป็นภาษาราชการและภาษาประจำชาติของประเทศไทย ภาษาไทยเป็นภาษาในกลุ่มภาษาไทซึ่งเป็นกลุ่มย่อยของตระกูลภาษาขร้า-ไท"
autowrap_mode = 3
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelTHBreak" type="Label" parent="TabContainer/Line breaking and justification"]
offset_left = 30.0
offset_top = 100.0
offset_right = 333.0
offset_bottom = 200.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "ภาษาไทย หรือ ภาษาไทยกลาง เป็นภาษาราชการและภาษาประจำชาติของประเทศไทย ภาษาไทยเป็นภาษาในกลุ่มภาษาไทซึ่งเป็นกลุ่มย่อยของตระกูลภาษาขร้า-ไท"
align = 3
autowrap_mode = 3
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelJstInfo" type="Label" parent="TabContainer/Line breaking and justification"]
anchor_top = 0.000891266
anchor_bottom = 0.000891266
offset_left = 30.0
offset_top = 213.5
offset_right = 830.0
offset_bottom = 236.5
theme_override_colors/font_color = Color(0.420413, 0.832031, 0.504023, 1)
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "2. Kashida justification."
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelARNoJst2" type="Label" parent="TabContainer/Line breaking and justification"]
anchor_top = 0.000891266
anchor_bottom = 0.000891266
offset_left = 30.0
offset_top = 248.5
offset_right = 830.0
offset_bottom = 271.5
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "آنچ اندر وهم ناید آن شوم"
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelARJst" type="Label" parent="TabContainer/Line breaking and justification"]
anchor_top = 0.000891266
anchor_bottom = 0.000891266
offset_left = 30.0
offset_top = 273.5
offset_right = 255.0
offset_bottom = 296.5
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "آنچ اندر وهم ناید آن شوم"
align = 3
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Text direction" type="Panel" parent="TabContainer"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 4.0
offset_top = 38.0
offset_right = -4.0
offset_bottom = -4.0
script = null
[node name="LabelDirInfo" type="Label" parent="TabContainer/Text direction"]
offset_left = 30.0
offset_top = 30.0
offset_right = 830.0
offset_bottom = 50.0
theme_override_colors/font_color = Color(0.419608, 0.831373, 0.505882, 1)
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "1. Base text direction. (Left-to-right, Auto, Right-to-left)"
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditL1" type="LineEdit" parent="TabContainer/Text direction"]
offset_left = 30.0
offset_top = 60.0
offset_right = 260.0
offset_bottom = 90.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "Najaf (ٱلنَّجَف‎), also known as Baniqia."
editable = false
context_menu_enabled = false
text_direction = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditA1" type="LineEdit" parent="TabContainer/Text direction"]
offset_left = 270.0
offset_top = 60.0
offset_right = 500.0
offset_bottom = 90.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "Najaf (ٱلنَّجَف‎), also known as Baniqia."
editable = false
context_menu_enabled = false
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditR1" type="LineEdit" parent="TabContainer/Text direction"]
modulate = Color(0.847059, 0.54902, 0.54902, 1)
offset_left = 510.0
offset_top = 60.0
offset_right = 740.0
offset_bottom = 90.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "Najaf (ٱلنَّجَف‎), also known as Baniqia."
editable = false
context_menu_enabled = false
text_direction = 2
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditL2" type="LineEdit" parent="TabContainer/Text direction"]
modulate = Color(0.847059, 0.54902, 0.54902, 1)
offset_left = 30.0
offset_top = 99.5
offset_right = 260.0
offset_bottom = 129.5
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "الإنجليزية أو الإنغليزية (بالإنجليزية: English)‏،"
editable = false
context_menu_enabled = false
text_direction = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditA2" type="LineEdit" parent="TabContainer/Text direction"]
offset_left = 270.0
offset_top = 100.0
offset_right = 500.0
offset_bottom = 130.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "الإنجليزية أو الإنغليزية (بالإنجليزية: English)‏،"
editable = false
context_menu_enabled = false
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditR2" type="LineEdit" parent="TabContainer/Text direction"]
offset_left = 510.0
offset_top = 100.0
offset_right = 740.0
offset_bottom = 130.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "الإنجليزية أو الإنغليزية (بالإنجليزية: English)‏،"
editable = false
context_menu_enabled = false
text_direction = 2
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelSTInfo" type="Label" parent="TabContainer/Text direction"]
offset_left = 30.0
offset_top = 150.0
offset_right = 830.0
offset_bottom = 170.0
theme_override_colors/font_color = Color(0.419608, 0.831373, 0.505882, 1)
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "2. BiDi override for structured text (select item in the list to test)."
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Tree" type="Tree" parent="TabContainer/Text direction"]
offset_left = 30.0
offset_top = 180.0
offset_right = 430.0
offset_bottom = 340.0
theme_override_fonts/title_button_font = ExtResource( "1" )
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelNoST" type="Label" parent="TabContainer/Text direction"]
offset_left = 460.0
offset_top = 195.0
offset_right = 560.0
offset_bottom = 215.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "Default BiDi:"
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelST" type="Label" parent="TabContainer/Text direction"]
offset_left = 460.0
offset_top = 238.5
offset_right = 560.0
offset_bottom = 258.5
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "\"File\" override:"
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditNoST" type="LineEdit" parent="TabContainer/Text direction"]
offset_left = 582.0
offset_top = 188.0
offset_right = 882.0
offset_bottom = 218.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
editable = false
context_menu_enabled = false
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditST" type="LineEdit" parent="TabContainer/Text direction"]
offset_left = 582.0
offset_top = 236.0
offset_right = 882.0
offset_bottom = 266.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
editable = false
context_menu_enabled = false
structured_text_bidi_override = 2
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelSTCustomInfo" type="Label" parent="TabContainer/Text direction"]
offset_left = 30.0
offset_top = 358.0
offset_right = 830.0
offset_bottom = 381.0
theme_override_colors/font_color = Color(0.419608, 0.831373, 0.505882, 1)
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "3. Custom BiDi override script (split by \":\" and reverse the order, see \"cutom_st_parser.gd\"):"
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditCustomSTSource" type="LineEdit" parent="TabContainer/Text direction"]
offset_left = 30.0
offset_top = 396.0
offset_right = 330.0
offset_bottom = 426.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "first:second:third"
context_menu_enabled = false
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LineEditCustomSTDst" type="LineEdit" parent="TabContainer/Text direction"]
offset_left = 342.0
offset_top = 396.0
offset_right = 642.0
offset_bottom = 426.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 14
text = "first:second:third"
context_menu_enabled = false
structured_text_bidi_override = 6
structured_text_bidi_override_options = []
script = ExtResource( "3" )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Font features" type="Panel" parent="TabContainer"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 4.0
offset_top = 38.0
offset_right = -4.0
offset_bottom = -4.0
script = null
[node name="LabelDisplay1" type="Label" parent="TabContainer/Font features"]
offset_left = 30.0
offset_top = 30.0
offset_right = 330.0
offset_bottom = 70.0
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 24
text = "Que fin after 019 1/2 1/3 &, h, β, θ,"
valign = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelInfo1" type="Label" parent="TabContainer/Font features"]
offset_left = 446.0
offset_top = 30.0
offset_right = 746.0
offset_bottom = 70.0
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 16
text = "default, no features"
valign = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelDisplay2" type="Label" parent="TabContainer/Font features"]
offset_left = 30.0
offset_top = 69.5
offset_right = 330.0
offset_bottom = 109.5
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 24
text = "Que fin after 019 1/2 1/3 &, h, β, θ,"
valign = 1
structured_text_bidi_override_options = []
opentype_features/standard_ligatures = null
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelInfo2" type="Label" parent="TabContainer/Font features"]
offset_left = 446.0
offset_top = 70.0
offset_right = 746.0
offset_bottom = 110.0
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 16
text = "standard_ligatures=0 (disabled)"
valign = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelDisplay3" type="Label" parent="TabContainer/Font features"]
offset_left = 30.0
offset_top = 109.5
offset_right = 330.0
offset_bottom = 149.5
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 24
text = "Que fin after 019 1/2 1/3 &, h, β, θ,"
valign = 1
structured_text_bidi_override_options = []
opentype_features/small_capitals = 1.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelInfo3" type="Label" parent="TabContainer/Font features"]
offset_left = 446.0
offset_top = 110.0
offset_right = 746.0
offset_bottom = 150.0
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 16
text = "small_capitals=1"
valign = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelDisplay4" type="Label" parent="TabContainer/Font features"]
offset_left = 31.0
offset_top = 150.5
offset_right = 331.0
offset_bottom = 190.5
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 24
text = "Que fin after 019 1/2 1/3 &, h, β, θ,"
valign = 1
structured_text_bidi_override_options = []
opentype_features/slashed_zero = 1.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelInfo4" type="Label" parent="TabContainer/Font features"]
offset_left = 446.0
offset_top = 150.0
offset_right = 746.0
offset_bottom = 190.0
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 16
text = "slashed_zero=1"
valign = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelDisplay5" type="Label" parent="TabContainer/Font features"]
offset_left = 31.0
offset_top = 190.5
offset_right = 331.0
offset_bottom = 230.5
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 24
text = "Que fin after 019 1/2 1/3 &, h, β, θ,"
valign = 1
structured_text_bidi_override_options = []
opentype_features/fractions = 1.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelInfo5" type="Label" parent="TabContainer/Font features"]
offset_left = 446.0
offset_top = 190.0
offset_right = 918.609
offset_bottom = 230.0
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 16
text = "fractions"
valign = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelDisplay6" type="Label" parent="TabContainer/Font features"]
offset_left = 31.0
offset_top = 230.5
offset_right = 331.0
offset_bottom = 270.5
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 24
text = "Que fin after 019 1/2 1/3 &, h, β, θ,"
valign = 1
structured_text_bidi_override_options = []
opentype_features/oldstyle_figures = 1.0
opentype_features/stylistic_alternates = 1.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelInfo6" type="Label" parent="TabContainer/Font features"]
offset_left = 446.0
offset_top = 230.0
offset_right = 918.609
offset_bottom = 270.0
theme_override_fonts/font = ExtResource( "4" )
theme_override_font_sizes/font_size = 16
text = "oldstyle_figures=1, stylistic_alternates=1"
valign = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="RichTextLabel" type="RichTextLabel" parent="TabContainer/Font features"]
offset_left = 33.0
offset_top = 287.0
offset_right = 965.0
offset_bottom = 383.0
theme_override_fonts/normal_font = ExtResource( "4" )
text = "
Que fin 1/3 0 Que fin 1/3 0 Que fin 1/3 0
"
bbcode_enabled = true
custom_effects = []
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="RichTextLabel2" type="RichTextLabel" parent="TabContainer/Font features"]
anchor_left = -0.000334372
anchor_right = -0.000334372
offset_left = 33.3397
offset_top = 407.0
offset_right = 992.34
offset_bottom = 490.0
theme_override_fonts/normal_font = ExtResource( "4" )
text = "[font_size=24]
Que fin 1/3 0 [opentype_features=liga=0]Que fin 1/3 0[/opentype_features] [opentype_features=frac=1,zero]Que fin 1/3 0[/opentype_features]
[/font_size]"
custom_effects = []
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[connection signal="item_selected" from="TabContainer/Text direction/Tree" to="." method="_on_Tree_item_selected"]
[connection signal="text_changed" from="TabContainer/Text direction/LineEditCustomSTSource" to="." method="_on_LineEditCustomSTSource_text_changed"]
[connection signal="text_changed" from="TabContainer/Text direction/LineEditCustomSTDst" to="." method="_on_LineEditCustomSTDst_text_changed"]
[connection signal="tree_entered" from="TabContainer/Text direction/LineEditCustomSTDst" to="." method="_on_LineEditCustomSTDst_tree_entered"]

View File

@@ -0,0 +1,15 @@
extends LineEdit
func _structured_text_parser(args, text):
var output = []
var tags = text.split(":")
var prev = 0
var count = int(tags.size())
output.clear()
for i in range(count):
var range1 = Vector2i(prev, prev + tags[i].length())
var range2 = Vector2i(prev + tags[i].length(), prev + tags[i].length() + 1)
output.push_front(range1)
output.push_front(range2)
prev = prev + tags[i].length() + 1
return output

Binary file not shown.

View File

@@ -0,0 +1,28 @@
[remap]
importer="font_data_dynamic"
type="FontData"
uid="uid://bic5b75wmaxwj"
path="res://.godot/imported/LinLibertine_R.otf-0d33583986cf94e9ad55cc89a5951934.fontdata"
[deps]
source_file="res://fonts/LinLibertine_R.otf"
dest_files=["res://.godot/imported/LinLibertine_R.otf-0d33583986cf94e9ad55cc89a5951934.fontdata"]
[params]
antialiased=true
multichannel_signed_distance_field=false
msdf_pixel_range=8.0
force_autohinter=false
hinting=1
oversampling=0.0
compress=true
preload/char_ranges=PackedStringArray()
preload/glyph_ranges=PackedStringArray()
preload/configurations=PackedStringArray()
support_overrides/language_enabled=PackedStringArray()
support_overrides/language_disabled=PackedStringArray()
support_overrides/script_enabled=PackedStringArray()
support_overrides/script_disabled=PackedStringArray()

View File

@@ -0,0 +1,28 @@
[remap]
importer="font_data_dynamic"
type="FontData"
uid="uid://61ui1kmi5tt7"
path="res://.godot/imported/NotoNaskhArabicUI_Regular.ttf-71ae3841953d426d66ee60d00f69e0e0.fontdata"
[deps]
source_file="res://fonts/NotoNaskhArabicUI_Regular.ttf"
dest_files=["res://.godot/imported/NotoNaskhArabicUI_Regular.ttf-71ae3841953d426d66ee60d00f69e0e0.fontdata"]
[params]
antialiased=true
multichannel_signed_distance_field=false
msdf_pixel_range=8.0
force_autohinter=false
hinting=1
oversampling=0.0
compress=true
preload/char_ranges=PackedStringArray()
preload/glyph_ranges=PackedStringArray()
preload/configurations=PackedStringArray()
support_overrides/language_enabled=PackedStringArray()
support_overrides/language_disabled=PackedStringArray()
support_overrides/script_enabled=PackedStringArray()
support_overrides/script_disabled=PackedStringArray()

View File

@@ -0,0 +1,28 @@
[remap]
importer="font_data_dynamic"
type="FontData"
uid="uid://cwer1pi5ka4io"
path="res://.godot/imported/NotoSansHebrew_Regular.ttf-9d09161984e30bb05b9445728c29a2a8.fontdata"
[deps]
source_file="res://fonts/NotoSansHebrew_Regular.ttf"
dest_files=["res://.godot/imported/NotoSansHebrew_Regular.ttf-9d09161984e30bb05b9445728c29a2a8.fontdata"]
[params]
antialiased=true
multichannel_signed_distance_field=false
msdf_pixel_range=8.0
force_autohinter=false
hinting=1
oversampling=0.0
compress=true
preload/char_ranges=PackedStringArray()
preload/glyph_ranges=PackedStringArray()
preload/configurations=PackedStringArray()
support_overrides/language_enabled=PackedStringArray()
support_overrides/language_disabled=PackedStringArray()
support_overrides/script_enabled=PackedStringArray()
support_overrides/script_disabled=PackedStringArray()

View File

@@ -0,0 +1,28 @@
[remap]
importer="font_data_dynamic"
type="FontData"
uid="uid://dcyy0x2u3jocr"
path="res://.godot/imported/NotoSansThaiUI_Regular.ttf-a2b65614687aa5ce07b4d39f23198f14.fontdata"
[deps]
source_file="res://fonts/NotoSansThaiUI_Regular.ttf"
dest_files=["res://.godot/imported/NotoSansThaiUI_Regular.ttf-a2b65614687aa5ce07b4d39f23198f14.fontdata"]
[params]
antialiased=true
multichannel_signed_distance_field=false
msdf_pixel_range=8.0
force_autohinter=false
hinting=1
oversampling=0.0
compress=true
preload/char_ranges=PackedStringArray()
preload/glyph_ranges=PackedStringArray()
preload/configurations=PackedStringArray()
support_overrides/language_enabled=PackedStringArray()
support_overrides/language_disabled=PackedStringArray()
support_overrides/script_enabled=PackedStringArray()
support_overrides/script_disabled=PackedStringArray()

View File

@@ -0,0 +1,28 @@
[remap]
importer="font_data_dynamic"
type="FontData"
uid="uid://ba53h385o6ips"
path="res://.godot/imported/NotoSansUI_Regular.ttf-e126ff40055cb76ad9714327677638b8.fontdata"
[deps]
source_file="res://fonts/NotoSansUI_Regular.ttf"
dest_files=["res://.godot/imported/NotoSansUI_Regular.ttf-e126ff40055cb76ad9714327677638b8.fontdata"]
[params]
antialiased=true
multichannel_signed_distance_field=false
msdf_pixel_range=8.0
force_autohinter=false
hinting=1
oversampling=0.0
compress=true
preload/char_ranges=PackedStringArray()
preload/glyph_ranges=PackedStringArray()
preload/configurations=PackedStringArray()
support_overrides/language_enabled=PackedStringArray()
support_overrides/language_disabled=PackedStringArray()
support_overrides/script_enabled=PackedStringArray()
support_overrides/script_disabled=PackedStringArray()

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture2D"
uid="uid://g6u3g3bv5nva"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.png"
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
compress/streamed=false
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/HDR_as_SRGB=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0

View File

@@ -0,0 +1,6 @@
[gd_resource type="Font" load_steps=2 format=2]
[ext_resource path="res://fonts/LinLibertine_R.otf" type="FontData" id=1]
[resource]
data/0 = ExtResource( 1 )

View File

@@ -0,0 +1,12 @@
[gd_resource type="Font" load_steps=5 format=2]
[ext_resource path="res://fonts/NotoSansThaiUI_Regular.ttf" type="FontData" id=1]
[ext_resource path="res://fonts/NotoNaskhArabicUI_Regular.ttf" type="FontData" id=2]
[ext_resource path="res://fonts/NotoSansHebrew_Regular.ttf" type="FontData" id=3]
[ext_resource path="res://fonts/NotoSansUI_Regular.ttf" type="FontData" id=4]
[resource]
data/0 = ExtResource( 1 )
data/1 = ExtResource( 2 )
data/2 = ExtResource( 3 )
data/3 = ExtResource( 4 )

View File

@@ -0,0 +1,15 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
[application]
config/name="BiDi and font features demo."
run/main_scene="res://bidi.tscn"
config/icon="res://icon.png"

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture2D"
uid="uid://e0kr85p63y1e"
path="res://.godot/imported/bidi.png-b063a53994859c3e43f1022e88c1162c.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screenshots/bidi.png"
dest_files=["res://.godot/imported/bidi.png-b063a53994859c3e43f1022e88c1162c.stex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
compress/streamed=false
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/HDR_as_SRGB=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture2D"
uid="uid://c1acx0yclosw3"
path="res://.godot/imported/font_features.png-0a9509f2c2c735752a635f0a4ca36458.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screenshots/font_features.png"
dest_files=["res://.godot/imported/font_features.png-0a9509f2c2c735752a635f0a4ca36458.stex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
compress/streamed=false
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/HDR_as_SRGB=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture2D"
uid="uid://buudvan2lbkg8"
path="res://.godot/imported/line_break_and_fill.png-7f47b8c4f43550cfc850eae46ff42cd7.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screenshots/line_break_and_fill.png"
dest_files=["res://.godot/imported/line_break_and_fill.png-7f47b8c4f43550cfc850eae46ff42cd7.stex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
compress/streamed=false
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/HDR_as_SRGB=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0

View File

@@ -0,0 +1,28 @@
[remap]
importer="font_data_dynamic"
type="FontData"
uid="uid://cppw66bb3hcnx"
path="res://.godot/imported/NotoNaskhArabic-Bold.ttf-b67ac52f5189efb58090e60209f82666.fontdata"
[deps]
source_file="res://fonts/NotoNaskhArabic-Bold.ttf"
dest_files=["res://.godot/imported/NotoNaskhArabic-Bold.ttf-b67ac52f5189efb58090e60209f82666.fontdata"]
[params]
antialiased=true
multichannel_signed_distance_field=false
msdf_pixel_range=8.0
force_autohinter=false
hinting=1
oversampling=0.0
compress=true
preload/char_ranges=PackedStringArray()
preload/glyph_ranges=PackedStringArray()
preload/configurations=PackedStringArray()
support_overrides/language_enabled=PackedStringArray()
support_overrides/language_disabled=PackedStringArray()
support_overrides/script_enabled=PackedStringArray()
support_overrides/script_disabled=PackedStringArray()

View File

@@ -0,0 +1,28 @@
[remap]
importer="font_data_dynamic"
type="FontData"
uid="uid://gfhw2u2k16h"
path="res://.godot/imported/NotoSans-Bold.ttf-8ff3d9f1cfda88e84d6afd9724b2bba7.fontdata"
[deps]
source_file="res://fonts/NotoSans-Bold.ttf"
dest_files=["res://.godot/imported/NotoSans-Bold.ttf-8ff3d9f1cfda88e84d6afd9724b2bba7.fontdata"]
[params]
antialiased=true
multichannel_signed_distance_field=false
msdf_pixel_range=8.0
force_autohinter=false
hinting=1
oversampling=0.0
compress=true
preload/char_ranges=PackedStringArray()
preload/glyph_ranges=PackedStringArray()
preload/configurations=PackedStringArray()
support_overrides/language_enabled=PackedStringArray()
support_overrides/language_disabled=PackedStringArray()
support_overrides/script_enabled=PackedStringArray()
support_overrides/script_disabled=PackedStringArray()

View File

@@ -2,6 +2,7 @@
importer="texture"
type="StreamTexture2D"
uid="uid://bn78a6fg2lrwg"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
@@ -10,7 +11,7 @@ metadata={
[deps]
source_file="res://icon.png"
dest_files=[ "res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"]
[params]
@@ -27,7 +28,7 @@ roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/invert_color=false
process/normal_map_invert_y=false
process/HDR_as_SRGB=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture2D"
uid="uid://bk7vjwlmxebjj"
path="res://.godot/imported/ui_mirroring_ar.png-0ac3776471fa54847d7107e345a38530.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screenshots/ui_mirroring_ar.png"
dest_files=["res://.godot/imported/ui_mirroring_ar.png-0ac3776471fa54847d7107e345a38530.stex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
compress/streamed=false
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/HDR_as_SRGB=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture2D"
uid="uid://kmiwt21qccaq"
path="res://.godot/imported/ui_mirroring_en.png-2424f2dd8e09af8f321757ff70ce6185.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://screenshots/ui_mirroring_en.png"
dest_files=["res://.godot/imported/ui_mirroring_en.png-2424f2dd8e09af8f321757ff70ce6185.stex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
compress/streamed=false
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/HDR_as_SRGB=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0

View File

@@ -1,8 +1,8 @@
[gd_scene load_steps=3 format=2]
[gd_scene load_steps=3 format=3 uid="uid://c20r173idr1eu"]
[ext_resource path="res://noto_font.tres" type="Font" id=1]
[ext_resource type="Font" path="res://noto_font.tres" id="1"]
[sub_resource type="GDScript" id=1]
[sub_resource type="GDScript" id="1"]
script/source = "extends Control
func _ready():
@@ -19,19 +19,19 @@ func _on_Button_pressed():
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = SubResource( 1 )
script = SubResource( "1" )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="PanelLTR" type="Panel" parent="."]
self_modulate = Color( 0.494118, 1, 0.737255, 1 )
self_modulate = Color(0.494118, 1, 0.737255, 1)
anchor_top = 1.0
anchor_bottom = 1.0
margin_left = 35.0
margin_top = -200.0
margin_right = 275.0
margin_bottom = -50.0
offset_left = 35.0
offset_top = -200.0
offset_right = 275.0
offset_bottom = -50.0
layout_direction = 2
script = null
__meta__ = {
@@ -39,8 +39,8 @@ __meta__ = {
}
[node name="GridContainer" type="GridContainer" parent="PanelLTR"]
margin_right = 40.0
margin_bottom = 40.0
offset_right = 40.0
offset_bottom = 40.0
columns = 3
script = null
__meta__ = {
@@ -48,132 +48,131 @@ __meta__ = {
}
[node name="ButtonNW" type="Button" parent="PanelLTR/GridContainer"]
margin_right = 77.3438
margin_bottom = 23.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_right = 77.0
offset_bottom = 27.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "NorthWest"
script = null
[node name="ButtonN" type="Button" parent="PanelLTR/GridContainer"]
margin_left = 81.0
margin_right = 128.719
margin_bottom = 23.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 81.0
offset_right = 128.0
offset_bottom = 27.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "North"
script = null
[node name="ButtonNE" type="Button" parent="PanelLTR/GridContainer"]
margin_left = 132.0
margin_right = 204.859
margin_bottom = 23.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 132.0
offset_right = 204.0
offset_bottom = 27.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "NorthEast"
script = null
[node name="ButtonW" type="Button" parent="PanelLTR/GridContainer"]
margin_top = 27.0
margin_right = 77.0
margin_bottom = 50.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_top = 31.0
offset_right = 77.0
offset_bottom = 58.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "West"
script = null
[node name="ButtonCenter" type="Button" parent="PanelLTR/GridContainer"]
margin_left = 81.0
margin_top = 27.0
margin_right = 128.0
margin_bottom = 50.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 81.0
offset_top = 31.0
offset_right = 128.0
offset_bottom = 58.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "*"
script = null
[node name="ButtonE" type="Button" parent="PanelLTR/GridContainer"]
margin_left = 132.0
margin_top = 27.0
margin_right = 204.0
margin_bottom = 50.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 132.0
offset_top = 31.0
offset_right = 204.0
offset_bottom = 58.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "Еast"
script = null
[node name="ButtonSW" type="Button" parent="PanelLTR/GridContainer"]
margin_top = 54.0
margin_right = 77.0
margin_bottom = 77.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_top = 62.0
offset_right = 77.0
offset_bottom = 89.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "SouthWest"
script = null
[node name="ButtonS" type="Button" parent="PanelLTR/GridContainer"]
margin_left = 81.0
margin_top = 54.0
margin_right = 128.016
margin_bottom = 77.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 81.0
offset_top = 62.0
offset_right = 128.0
offset_bottom = 89.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "South"
script = null
[node name="ButtonSE" type="Button" parent="PanelLTR/GridContainer"]
margin_left = 132.0
margin_top = 54.0
margin_right = 204.156
margin_bottom = 77.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 132.0
offset_top = 62.0
offset_right = 204.0
offset_bottom = 89.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "SouthEast"
script = null
[node name="PanelLocale" type="Panel" parent="PanelLTR"]
self_modulate = Color( 0.819608, 0.254902, 0.254902, 1 )
margin_left = 20.0
margin_top = 90.0
margin_right = 170.0
margin_bottom = 130.0
self_modulate = Color(0.819608, 0.254902, 0.254902, 1)
offset_left = 20.0
offset_top = 90.0
offset_right = 170.0
offset_bottom = 130.0
layout_direction = 1
script = null
[node name="HBoxContainer" type="HBoxContainer" parent="PanelLTR/PanelLocale"]
margin_right = 107.0
margin_bottom = 34.0005
offset_right = 107.0
offset_bottom = 34.0005
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ButtonPrev" type="Button" parent="PanelLTR/PanelLocale/HBoxContainer"]
margin_left = -0.34375
margin_right = 63.0
margin_bottom = 34.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_right = 64.0
offset_bottom = 34.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "Previous"
script = null
[node name="ButtonNext" type="Button" parent="PanelLTR/PanelLocale/HBoxContainer"]
margin_left = 66.2656
margin_right = 107.0
margin_bottom = 34.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 68.0
offset_right = 109.0
offset_bottom = 34.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "Next"
script = null
[node name="PanelRTL" type="Panel" parent="."]
self_modulate = Color( 0.0705882, 0.235294, 1, 1 )
self_modulate = Color(0.0705882, 0.235294, 1, 1)
anchor_top = 1.0
anchor_bottom = 1.0
margin_left = 33.9999
margin_top = -200.0
margin_right = 284.0
margin_bottom = -50.0
offset_left = 33.9999
offset_top = -200.0
offset_right = 284.0
offset_bottom = -50.0
layout_direction = 3
script = null
__meta__ = {
@@ -181,8 +180,8 @@ __meta__ = {
}
[node name="GridContainer" type="GridContainer" parent="PanelRTL"]
margin_right = 40.0
margin_bottom = 40.0
offset_right = 40.0
offset_bottom = 40.0
columns = 3
script = null
__meta__ = {
@@ -190,97 +189,96 @@ __meta__ = {
}
[node name="ButtonNW" type="Button" parent="PanelRTL/GridContainer"]
margin_right = 80.0
margin_bottom = 27.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_right = 81.0
offset_bottom = 27.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "الشمال الشرقي"
script = null
[node name="ButtonN" type="Button" parent="PanelRTL/GridContainer"]
margin_left = 84.0
margin_right = 128.0
margin_bottom = 27.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 85.0
offset_right = 131.0
offset_bottom = 27.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "الشمال"
script = null
[node name="ButtonNE" type="Button" parent="PanelRTL/GridContainer"]
margin_left = 132.0
margin_right = 218.0
margin_bottom = 27.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 135.0
offset_right = 214.0
offset_bottom = 27.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "الشمال الغربي"
script = null
[node name="ButtonW" type="Button" parent="PanelRTL/GridContainer"]
margin_top = 31.0
margin_right = 80.0
margin_bottom = 58.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_top = 31.0
offset_right = 81.0
offset_bottom = 58.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "الشرق"
script = null
[node name="ButtonCenter" type="Button" parent="PanelRTL/GridContainer"]
margin_left = 84.0
margin_top = 31.0
margin_right = 128.0
margin_bottom = 58.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 85.0
offset_top = 31.0
offset_right = 131.0
offset_bottom = 58.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "*"
script = null
[node name="ButtonE" type="Button" parent="PanelRTL/GridContainer"]
margin_left = 132.0
margin_top = 31.0
margin_right = 218.0
margin_bottom = 58.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 135.0
offset_top = 31.0
offset_right = 214.0
offset_bottom = 58.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "الغرب"
script = null
[node name="ButtonSW" type="Button" parent="PanelRTL/GridContainer"]
margin_left = -0.59375
margin_top = 62.0
margin_right = 80.0
margin_bottom = 89.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_top = 62.0
offset_right = 81.0
offset_bottom = 89.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "الجنوب الشرقي"
script = null
[node name="ButtonS" type="Button" parent="PanelRTL/GridContainer"]
margin_left = 83.0469
margin_top = 62.0
margin_right = 128.0
margin_bottom = 89.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 85.0
offset_top = 62.0
offset_right = 131.0
offset_bottom = 89.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "الجنوب"
script = null
[node name="ButtonSE" type="Button" parent="PanelRTL/GridContainer"]
margin_left = 131.734
margin_top = 62.0
margin_right = 218.0
margin_bottom = 89.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 135.0
offset_top = 62.0
offset_right = 214.0
offset_bottom = 89.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = " الجنوب الغربي"
script = null
[node name="ButtonSwapLocale" type="Button" parent="."]
margin_left = 670.0
margin_top = 25.0
margin_right = 820.0
margin_bottom = 65.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 670.0
offset_top = 25.0
offset_right = 820.0
offset_bottom = 65.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "Swap locale"
script = null
__meta__ = {
@@ -291,87 +289,89 @@ __meta__ = {
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = -20.0
offset_left = -20.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="HBoxContainer" type="HBoxContainer" parent="."]
margin_left = 20.0
margin_top = 20.0
margin_right = 140.0
margin_bottom = 60.0
offset_left = 20.0
offset_top = 20.0
offset_right = 140.0
offset_bottom = 60.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ButtonBack" type="Button" parent="HBoxContainer"]
margin_left = -0.921875
margin_right = 40.0
margin_bottom = 40.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_right = 40.0
offset_bottom = 40.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "Back"
script = null
[node name="ButtonFwd" type="Button" parent="HBoxContainer"]
margin_left = 43.2188
margin_right = 105.0
margin_bottom = 40.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 44.0
offset_right = 105.0
offset_bottom = 40.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "Forward"
script = null
[node name="Label" type="Label" parent="."]
margin_left = 670.0
margin_top = 70.0
margin_right = 820.0
margin_bottom = 100.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 670.0
offset_top = 70.0
offset_right = 820.0
offset_bottom = 100.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
align = 1
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelInfo" type="Label" parent="."]
margin_left = 100.0
margin_top = 100.0
margin_right = 550.0
margin_bottom = 300.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 100.0
offset_top = 100.0
offset_right = 550.0
offset_bottom = 300.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "Click \"Swap Locale\" button to swap locale between \"en and \"ar\".
Green tinted controls - LTR layout direction.
Blue tinted controls - RTL layout direction.
Red tinted controls - Layout direction from locale.
Gray (default) controls - Inherited layout direction."
structured_text_bidi_override_options = []
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="OptionButton" type="OptionButton" parent="."]
margin_left = 129.0
margin_top = 240.0
margin_right = 264.0
margin_bottom = 260.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 129.0
offset_top = 240.0
offset_right = 264.0
offset_bottom = 260.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
items = []
script = null
[node name="CheckBox" type="CheckBox" parent="."]
margin_left = 124.0
margin_top = 265.0
margin_right = 184.0
margin_bottom = 290.0
custom_fonts/font = ExtResource( 1 )
custom_font_sizes/font_size = 12
offset_left = 124.0
offset_top = 265.0
offset_right = 184.0
offset_bottom = 290.0
theme_override_fonts/font = ExtResource( "1" )
theme_override_font_sizes/font_size = 12
text = "Test"
script = null
__meta__ = {