Improve Korean text readability surfaces
This commit is contained in:
@@ -144,26 +144,26 @@ const DIALOGUE_COLUMN_SIZE := Vector2(850, 318)
|
||||
const DIALOGUE_TEXT_SIZE := Vector2(830, 188)
|
||||
const OBJECTIVE_HUD_FONT_SIZE := 14
|
||||
const OBJECTIVE_HUD_MIN_FONT_SIZE := 12
|
||||
const OBJECTIVE_NOTICE_FONT_SIZE := 16
|
||||
const OBJECTIVE_NOTICE_MIN_FONT_SIZE := 14
|
||||
const OBJECTIVE_NOTICE_FONT_SIZE := 17
|
||||
const OBJECTIVE_NOTICE_MIN_FONT_SIZE := 15
|
||||
const BRIEFING_TITLE_FONT_SIZE := 22
|
||||
const BRIEFING_TITLE_MIN_FONT_SIZE := 18
|
||||
const BRIEFING_LOCATION_FONT_SIZE := 16
|
||||
const BRIEFING_LOCATION_MIN_FONT_SIZE := 13
|
||||
const BRIEFING_OBJECTIVE_FONT_SIZE := 17
|
||||
const BRIEFING_OBJECTIVE_MIN_FONT_SIZE := 14
|
||||
const BRIEFING_BODY_FONT_SIZE := 17
|
||||
const BRIEFING_BODY_MIN_FONT_SIZE := 15
|
||||
const BRIEFING_OVERVIEW_FONT_SIZE := 16
|
||||
const BRIEFING_OVERVIEW_MIN_FONT_SIZE := 13
|
||||
const BRIEFING_OBJECTIVE_FONT_SIZE := 18
|
||||
const BRIEFING_OBJECTIVE_MIN_FONT_SIZE := 15
|
||||
const BRIEFING_BODY_FONT_SIZE := 18
|
||||
const BRIEFING_BODY_MIN_FONT_SIZE := 16
|
||||
const BRIEFING_OVERVIEW_FONT_SIZE := 17
|
||||
const BRIEFING_OVERVIEW_MIN_FONT_SIZE := 14
|
||||
const BRIEFING_VISIBLE_BODY_LINES := 3
|
||||
const BRIEFING_VISIBLE_BODY_CHARS := 46
|
||||
const COMMAND_NOTICE_VISIBLE_BODY_LINES := 2
|
||||
const COMMAND_NOTICE_VISIBLE_BODY_CHARS := 44
|
||||
const DIALOGUE_SPEAKER_FONT_SIZE := 20
|
||||
const DIALOGUE_SPEAKER_MIN_FONT_SIZE := 16
|
||||
const DIALOGUE_TEXT_FONT_SIZE := 19
|
||||
const DIALOGUE_TEXT_MIN_FONT_SIZE := 16
|
||||
const DIALOGUE_TEXT_FONT_SIZE := 20
|
||||
const DIALOGUE_TEXT_MIN_FONT_SIZE := 17
|
||||
const DIALOGUE_VISIBLE_BODY_LINES := 5
|
||||
const DIALOGUE_VISIBLE_BODY_CHARS := 44
|
||||
const OPENING_VISIBLE_BODY_LINES := 3
|
||||
@@ -252,13 +252,13 @@ const LOCAL_COMMAND_PANEL_BOARD_PADDING := 4.0
|
||||
const UI_RICE_PAPER := Color(0.48, 0.46, 0.39, 0.98)
|
||||
const UI_RICE_PAPER_LIGHT := Color(0.62, 0.59, 0.50, 0.99)
|
||||
const UI_RICE_PAPER_DARK := Color(0.18, 0.17, 0.14, 0.98)
|
||||
const UI_READABLE_PAPER := Color(0.66, 0.63, 0.53, 0.998)
|
||||
const UI_READABLE_CARD := Color(0.58, 0.55, 0.47, 0.998)
|
||||
const UI_READABLE_PAPER := Color(0.64, 0.65, 0.60, 0.999)
|
||||
const UI_READABLE_CARD := Color(0.74, 0.74, 0.68, 0.999)
|
||||
const UI_HUD_READABLE := Color(0.060, 0.056, 0.048, 0.982)
|
||||
const UI_TEXT_PAPER_SURFACE := Color(0.72, 0.69, 0.58, 0.998)
|
||||
const UI_TEXT_PAPER_SURFACE := Color(0.78, 0.77, 0.69, 0.999)
|
||||
const UI_TEXT_DARK_SURFACE := Color(0.030, 0.028, 0.024, 0.996)
|
||||
const UI_TEXT_NOTICE_SURFACE := Color(0.68, 0.65, 0.55, 0.998)
|
||||
const UI_AGED_INK := Color(0.055, 0.060, 0.055, 1.0)
|
||||
const UI_TEXT_NOTICE_SURFACE := Color(0.74, 0.73, 0.66, 0.999)
|
||||
const UI_AGED_INK := Color(0.020, 0.021, 0.018, 1.0)
|
||||
const UI_DARK_LACQUER := Color(0.045, 0.038, 0.034, 0.988)
|
||||
const UI_LACQUER_EDGE := Color(0.025, 0.023, 0.020, 1.0)
|
||||
const UI_CINNABAR := Color(0.52, 0.045, 0.025, 1.0)
|
||||
@@ -876,7 +876,9 @@ func _panel_variant_prefers_flat_text_surface(variant: String) -> bool:
|
||||
"notice_edict",
|
||||
"target_hint",
|
||||
"cinematic_caption",
|
||||
"story_caption"
|
||||
"story_caption",
|
||||
"cinematic_text_plate",
|
||||
"briefing_text_plate"
|
||||
]
|
||||
|
||||
|
||||
@@ -1063,6 +1065,20 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void:
|
||||
radius = 10
|
||||
margin = 14
|
||||
shadow_size = 22
|
||||
"cinematic_text_plate":
|
||||
fill = Color(0.006, 0.006, 0.005, 0.992)
|
||||
border = Color(0.46, 0.38, 0.24, 0.90)
|
||||
border_width = 2
|
||||
radius = 8
|
||||
margin = 14
|
||||
shadow_size = 10
|
||||
"briefing_text_plate":
|
||||
fill = Color(0.80, 0.79, 0.71, 0.999)
|
||||
border = Color(0.19, 0.16, 0.11, 1.0)
|
||||
border_width = 2
|
||||
radius = 8
|
||||
margin = 14
|
||||
shadow_size = 5
|
||||
"story_caption":
|
||||
fill = Color(0.030, 0.026, 0.020, 0.988)
|
||||
border = UI_TARNISHED_BRONZE
|
||||
@@ -1323,7 +1339,7 @@ func _color_luminance(color: Color) -> float:
|
||||
func _text_outline_color_for(font_color: Color) -> Color:
|
||||
if _color_luminance(font_color) >= 0.42:
|
||||
return UI_TEXT_DARK_OUTLINE
|
||||
return UI_TEXT_LIGHT_OUTLINE
|
||||
return Color(UI_TEXT_LIGHT_OUTLINE.r, UI_TEXT_LIGHT_OUTLINE.g, UI_TEXT_LIGHT_OUTLINE.b, 0.42)
|
||||
|
||||
|
||||
func _apply_text_legibility(control: Control, font_color: Color, font_size: int = 0) -> void:
|
||||
@@ -1332,14 +1348,17 @@ func _apply_text_legibility(control: Control, font_color: Color, font_size: int
|
||||
var resolved_size := font_size
|
||||
if resolved_size <= 0:
|
||||
resolved_size = control.get_theme_font_size("font_size")
|
||||
var outline_size := 3 if resolved_size >= 16 else (2 if resolved_size >= 12 else 1)
|
||||
var outline_size := 4 if resolved_size >= 18 else (3 if resolved_size >= 14 else 2)
|
||||
control.add_theme_color_override("font_outline_color", _text_outline_color_for(font_color))
|
||||
control.add_theme_constant_override("outline_size", outline_size)
|
||||
control.add_theme_color_override("font_shadow_color", UI_TEXT_SHADOW)
|
||||
var shadow_color := UI_TEXT_SHADOW
|
||||
if _color_luminance(font_color) < 0.24:
|
||||
shadow_color = Color(0.0, 0.0, 0.0, 0.38)
|
||||
control.add_theme_color_override("font_shadow_color", shadow_color)
|
||||
control.add_theme_constant_override("shadow_offset_x", 1)
|
||||
control.add_theme_constant_override("shadow_offset_y", 1)
|
||||
if control is Label:
|
||||
control.add_theme_constant_override("line_spacing", 4 if resolved_size >= 16 else 3)
|
||||
control.add_theme_constant_override("line_spacing", 6 if resolved_size >= 17 else 4)
|
||||
|
||||
|
||||
func _apply_strong_text_legibility(control: Control, font_color: Color, font_size: int = 0) -> void:
|
||||
@@ -2342,6 +2361,7 @@ func _icon_line(image: Image, from_point: Vector2i, to_point: Vector2i, color: C
|
||||
func _apply_label_style(label: Label, font_color: Color, font_size: int = 0) -> void:
|
||||
if label == null:
|
||||
return
|
||||
label.clip_text = false
|
||||
label.add_theme_color_override("font_color", font_color)
|
||||
if font_size > 0:
|
||||
label.add_theme_font_size_override("font_size", font_size)
|
||||
@@ -2381,6 +2401,7 @@ func _apply_opening_caption_text_style(label: Label, font_color: Color, font_siz
|
||||
label.visible = true
|
||||
label.modulate = Color(1.0, 1.0, 1.0, 1.0)
|
||||
label.self_modulate = Color(1.0, 1.0, 1.0, 1.0)
|
||||
label.clip_text = false
|
||||
label.z_as_relative = false
|
||||
label.z_index = 92
|
||||
label.add_theme_color_override("font_color", font_color)
|
||||
@@ -3181,7 +3202,7 @@ func _make_screen_backdrop() -> ColorRect:
|
||||
var backdrop := ColorRect.new()
|
||||
backdrop.visible = false
|
||||
backdrop.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
backdrop.color = Color(0.018, 0.009, 0.004, 0.74)
|
||||
backdrop.color = Color(0.018, 0.009, 0.004, 0.84)
|
||||
backdrop.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
return backdrop
|
||||
|
||||
@@ -3536,8 +3557,8 @@ func _create_hud() -> void:
|
||||
objective_notice_panel = PanelContainer.new()
|
||||
objective_notice_panel.visible = false
|
||||
objective_notice_panel.position = Vector2(338, 88)
|
||||
objective_notice_panel.size = Vector2(604, 190)
|
||||
objective_notice_panel.custom_minimum_size = Vector2(604, 190)
|
||||
objective_notice_panel.size = Vector2(604, 206)
|
||||
objective_notice_panel.custom_minimum_size = Vector2(604, 206)
|
||||
objective_notice_panel.mouse_filter = Control.MOUSE_FILTER_PASS
|
||||
_apply_panel_style(objective_notice_panel, "notice_edict")
|
||||
root.add_child(objective_notice_panel)
|
||||
@@ -3560,7 +3581,7 @@ func _create_hud() -> void:
|
||||
objective_notice_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
objective_notice_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
objective_notice_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
objective_notice_label.custom_minimum_size = Vector2(548, 72)
|
||||
objective_notice_label.custom_minimum_size = Vector2(548, 90)
|
||||
_apply_label_style(objective_notice_label, UI_AGED_INK, OBJECTIVE_NOTICE_FONT_SIZE)
|
||||
objective_notice_column.add_child(objective_notice_label)
|
||||
objective_notice_column.add_child(_make_scroll_rod(548, 3))
|
||||
@@ -4156,17 +4177,17 @@ func _create_hud() -> void:
|
||||
opening_caption_readability_mat.name = "OpeningCaptionTextBacking"
|
||||
opening_caption_readability_mat.color = Color(0.0, 0.0, 0.0, 0.74)
|
||||
opening_caption_readability_mat.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
opening_caption_readability_mat.position = Vector2(30, 488)
|
||||
opening_caption_readability_mat.size = Vector2(1220, 198)
|
||||
opening_caption_readability_mat.position = Vector2(24, 484)
|
||||
opening_caption_readability_mat.size = Vector2(1232, 206)
|
||||
opening_caption_readability_mat.z_as_relative = false
|
||||
opening_caption_readability_mat.z_index = 54
|
||||
opening_prologue_root.add_child(opening_caption_readability_mat)
|
||||
|
||||
var opening_caption_panel := PanelContainer.new()
|
||||
opening_caption_panel.name = "OpeningCaptionScroll"
|
||||
opening_caption_panel.position = Vector2(42, 500)
|
||||
opening_caption_panel.size = Vector2(1196, 174)
|
||||
opening_caption_panel.custom_minimum_size = Vector2(1196, 174)
|
||||
opening_caption_panel.position = Vector2(32, 492)
|
||||
opening_caption_panel.size = Vector2(1216, 182)
|
||||
opening_caption_panel.custom_minimum_size = Vector2(1216, 182)
|
||||
opening_caption_panel.modulate = Color(1.0, 1.0, 1.0, 1.0)
|
||||
opening_caption_panel.z_as_relative = false
|
||||
opening_caption_panel.z_index = 68
|
||||
@@ -4174,20 +4195,20 @@ func _create_hud() -> void:
|
||||
opening_prologue_root.add_child(opening_caption_panel)
|
||||
|
||||
var opening_caption_row := HBoxContainer.new()
|
||||
opening_caption_row.custom_minimum_size = Vector2(1152, 126)
|
||||
opening_caption_row.custom_minimum_size = Vector2(1172, 134)
|
||||
opening_caption_row.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
opening_caption_row.size_flags_vertical = Control.SIZE_EXPAND_FILL
|
||||
opening_caption_row.add_theme_constant_override("separation", 14)
|
||||
opening_caption_panel.add_child(opening_caption_row)
|
||||
|
||||
var opening_title_column := VBoxContainer.new()
|
||||
opening_title_column.custom_minimum_size = Vector2(220, 126)
|
||||
opening_title_column.custom_minimum_size = Vector2(210, 134)
|
||||
opening_title_column.add_theme_constant_override("separation", 5)
|
||||
opening_caption_row.add_child(opening_title_column)
|
||||
opening_title_column.add_child(_make_seal_ribbon(220, 10))
|
||||
opening_title_column.add_child(_make_seal_ribbon(210, 10))
|
||||
|
||||
opening_prologue_title_label = Label.new()
|
||||
opening_prologue_title_label.custom_minimum_size = Vector2(220, 42)
|
||||
opening_prologue_title_label.custom_minimum_size = Vector2(210, 44)
|
||||
opening_prologue_title_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
opening_prologue_title_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
opening_prologue_title_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
@@ -4195,25 +4216,32 @@ func _create_hud() -> void:
|
||||
opening_title_column.add_child(opening_prologue_title_label)
|
||||
|
||||
opening_prologue_step_label = Label.new()
|
||||
opening_prologue_step_label.custom_minimum_size = Vector2(220, 24)
|
||||
opening_prologue_step_label.custom_minimum_size = Vector2(210, 26)
|
||||
opening_prologue_step_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
opening_prologue_step_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
opening_prologue_step_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
_apply_opening_caption_text_style(opening_prologue_step_label, UI_OPENING_CAPTION_MUTED, 16)
|
||||
opening_title_column.add_child(opening_prologue_step_label)
|
||||
|
||||
var opening_body_surface := PanelContainer.new()
|
||||
opening_body_surface.name = "OpeningStoryBodyTextSurface"
|
||||
opening_body_surface.custom_minimum_size = Vector2(756, 134)
|
||||
opening_body_surface.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
_apply_panel_style(opening_body_surface, "cinematic_text_plate")
|
||||
opening_caption_row.add_child(opening_body_surface)
|
||||
|
||||
opening_prologue_body_label = Label.new()
|
||||
opening_prologue_body_label.custom_minimum_size = Vector2(730, 126)
|
||||
opening_prologue_body_label.custom_minimum_size = Vector2(730, 110)
|
||||
opening_prologue_body_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
opening_prologue_body_label.size_flags_vertical = Control.SIZE_EXPAND_FILL
|
||||
opening_prologue_body_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
opening_prologue_body_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
opening_prologue_body_label.clip_text = false
|
||||
_apply_opening_caption_text_style(opening_prologue_body_label, UI_OPENING_CAPTION_BODY, 22)
|
||||
opening_caption_row.add_child(opening_prologue_body_label)
|
||||
opening_body_surface.add_child(opening_prologue_body_label)
|
||||
|
||||
var opening_button_column := VBoxContainer.new()
|
||||
opening_button_column.custom_minimum_size = Vector2(184, 126)
|
||||
opening_button_column.custom_minimum_size = Vector2(178, 134)
|
||||
opening_button_column.add_theme_constant_override("separation", 9)
|
||||
opening_caption_row.add_child(opening_button_column)
|
||||
|
||||
@@ -4253,13 +4281,13 @@ func _create_hud() -> void:
|
||||
|
||||
briefing_panel = PanelContainer.new()
|
||||
briefing_panel.visible = false
|
||||
briefing_panel.position = Vector2(212, 16)
|
||||
briefing_panel.size = Vector2(856, 688)
|
||||
briefing_panel.position = Vector2(212, 8)
|
||||
briefing_panel.size = Vector2(856, 704)
|
||||
_apply_panel_style(briefing_panel, "briefing_sheet")
|
||||
root.add_child(briefing_panel)
|
||||
|
||||
var briefing_shell := HBoxContainer.new()
|
||||
briefing_shell.custom_minimum_size = Vector2(800, 632)
|
||||
briefing_shell.custom_minimum_size = Vector2(800, 660)
|
||||
briefing_shell.add_theme_constant_override("separation", 0)
|
||||
briefing_panel.add_child(briefing_shell)
|
||||
|
||||
@@ -4336,7 +4364,7 @@ func _create_hud() -> void:
|
||||
briefing_column.add_child(_make_section_caption("전장도와 군막 보고", 680))
|
||||
|
||||
briefing_camp_overview_panel = PanelContainer.new()
|
||||
briefing_camp_overview_panel.custom_minimum_size = Vector2(680, 108)
|
||||
briefing_camp_overview_panel.custom_minimum_size = Vector2(680, 120)
|
||||
_apply_panel_style(briefing_camp_overview_panel, "briefing_card")
|
||||
briefing_column.add_child(briefing_camp_overview_panel)
|
||||
|
||||
@@ -4345,7 +4373,7 @@ func _create_hud() -> void:
|
||||
briefing_camp_overview_panel.add_child(briefing_camp_overview_shell)
|
||||
|
||||
briefing_camp_overview_row = HBoxContainer.new()
|
||||
briefing_camp_overview_row.custom_minimum_size = Vector2(648, 92)
|
||||
briefing_camp_overview_row.custom_minimum_size = Vector2(648, 104)
|
||||
briefing_camp_overview_row.add_theme_constant_override("separation", 10)
|
||||
briefing_camp_overview_row.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
briefing_camp_overview_shell.add_child(briefing_camp_overview_row)
|
||||
@@ -4384,29 +4412,36 @@ func _create_hud() -> void:
|
||||
|
||||
briefing_camp_overview_label = Label.new()
|
||||
briefing_camp_overview_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
briefing_camp_overview_label.custom_minimum_size = Vector2(286, 86)
|
||||
briefing_camp_overview_label.custom_minimum_size = Vector2(286, 104)
|
||||
briefing_camp_overview_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
_apply_label_style(briefing_camp_overview_label, UI_AGED_INK, BRIEFING_OVERVIEW_FONT_SIZE)
|
||||
briefing_camp_overview_row.add_child(briefing_camp_overview_label)
|
||||
|
||||
briefing_tactical_marker_list = VBoxContainer.new()
|
||||
briefing_tactical_marker_list.name = "BriefingTacticalMarkerList"
|
||||
briefing_tactical_marker_list.custom_minimum_size = Vector2(BRIEFING_TACTICAL_MARKER_CHIP_SIZE.x, 86)
|
||||
briefing_tactical_marker_list.custom_minimum_size = Vector2(BRIEFING_TACTICAL_MARKER_CHIP_SIZE.x, 104)
|
||||
briefing_tactical_marker_list.size_flags_vertical = Control.SIZE_SHRINK_CENTER
|
||||
briefing_tactical_marker_list.add_theme_constant_override("separation", 4)
|
||||
briefing_camp_overview_row.add_child(briefing_tactical_marker_list)
|
||||
|
||||
var briefing_scroll := ScrollContainer.new()
|
||||
briefing_scroll.custom_minimum_size = Vector2(680, 96)
|
||||
briefing_scroll.custom_minimum_size = Vector2(680, 112)
|
||||
briefing_column.add_child(briefing_scroll)
|
||||
|
||||
var briefing_body_surface := PanelContainer.new()
|
||||
briefing_body_surface.name = "BriefingBodyTextSurface"
|
||||
briefing_body_surface.custom_minimum_size = Vector2(680, 112)
|
||||
briefing_body_surface.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
_apply_panel_style(briefing_body_surface, "briefing_text_plate")
|
||||
briefing_scroll.add_child(briefing_body_surface)
|
||||
|
||||
briefing_label = Label.new()
|
||||
briefing_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
briefing_label.custom_minimum_size = Vector2(656, 92)
|
||||
briefing_label.custom_minimum_size = Vector2(648, 88)
|
||||
briefing_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
briefing_label.vertical_alignment = VERTICAL_ALIGNMENT_TOP
|
||||
_apply_label_style(briefing_label, UI_AGED_INK, BRIEFING_BODY_FONT_SIZE)
|
||||
briefing_scroll.add_child(briefing_label)
|
||||
briefing_body_surface.add_child(briefing_label)
|
||||
|
||||
var prep_button_row := HBoxContainer.new()
|
||||
prep_button_row.add_theme_constant_override("separation", 8)
|
||||
@@ -4695,7 +4730,7 @@ func _create_hud() -> void:
|
||||
dialogue_progress_label.custom_minimum_size = Vector2(520, 32)
|
||||
dialogue_progress_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
dialogue_progress_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT
|
||||
_apply_label_style(dialogue_progress_label, UI_OLD_BRONZE)
|
||||
_apply_label_style(dialogue_progress_label, UI_PARCHMENT_TEXT, 15)
|
||||
dialogue_control_row.add_child(dialogue_progress_label)
|
||||
|
||||
dialogue_previous_button = Button.new()
|
||||
|
||||
Reference in New Issue
Block a user