mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	Enforce zero width spaces and joiners with missing font. Do not warn about missing non-visual characters.
This commit is contained in:
		
							parent
							
								
									60b7b8b16e
								
							
						
					
					
						commit
						fda161f976
					
				
					 2 changed files with 7 additions and 2 deletions
				
			
		|  | @ -6734,6 +6734,11 @@ void TextServerAdvanced::_shape_run(ShapedTextDataAdvanced *p_sd, int64_t p_star | ||||||
| 						p_sd->descent = MAX(p_sd->descent, Math::round(get_hex_code_box_size(fs, gl.index).x * 0.5)); | 						p_sd->descent = MAX(p_sd->descent, Math::round(get_hex_code_box_size(fs, gl.index).x * 0.5)); | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
|  | 				bool zero_w = (p_sd->preserve_control) ? (p_sd->text[i] == 0x200B || p_sd->text[i] == 0xFEFF) : ((p_sd->text[i] >= 0x200B && p_sd->text[i] <= 0x200D) || p_sd->text[i] == 0x2060 || p_sd->text[i] == 0xFEFF); | ||||||
|  | 				if (zero_w) { | ||||||
|  | 					gl.index = 0; | ||||||
|  | 					gl.advance = 0.0; | ||||||
|  | 				} | ||||||
| 
 | 
 | ||||||
| 				p_sd->width += gl.advance; | 				p_sd->width += gl.advance; | ||||||
| 
 | 
 | ||||||
|  | @ -6877,7 +6882,7 @@ void TextServerAdvanced::_shape_run(ShapedTextDataAdvanced *p_sd, int64_t p_star | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 			gl.index = glyph_info[i].codepoint; | 			gl.index = glyph_info[i].codepoint; | ||||||
| 			bool zero_w = (p_sd->preserve_control) ? (p_sd->text[glyph_info[i].cluster] == 0x200B || p_sd->text[glyph_info[i].cluster] == 0xFEF) : (p_sd->text[glyph_info[i].cluster] >= 0x200B && p_sd->text[glyph_info[i].cluster] <= 0x200D) || p_sd->text[glyph_info[i].cluster] == 0x2060 || p_sd->text[glyph_info[i].cluster] == 0xFEFF; | 			bool zero_w = (p_sd->preserve_control) ? (p_sd->text[glyph_info[i].cluster] == 0x200B || p_sd->text[glyph_info[i].cluster] == 0xFEFF) : ((p_sd->text[glyph_info[i].cluster] >= 0x200B && p_sd->text[glyph_info[i].cluster] <= 0x200D) || p_sd->text[glyph_info[i].cluster] == 0x2060 || p_sd->text[glyph_info[i].cluster] == 0xFEFF); | ||||||
| 			if (zero_w) { | 			if (zero_w) { | ||||||
| 				gl.index = 0; | 				gl.index = 0; | ||||||
| 				gl.advance = 0.0; | 				gl.advance = 0.0; | ||||||
|  |  | ||||||
|  | @ -649,7 +649,7 @@ PackedStringArray Label::get_configuration_warnings() const { | ||||||
| 			const Glyph *glyph = TS->shaped_text_get_glyphs(para.text_rid); | 			const Glyph *glyph = TS->shaped_text_get_glyphs(para.text_rid); | ||||||
| 			int64_t glyph_count = TS->shaped_text_get_glyph_count(para.text_rid); | 			int64_t glyph_count = TS->shaped_text_get_glyph_count(para.text_rid); | ||||||
| 			for (int64_t i = 0; i < glyph_count; i++) { | 			for (int64_t i = 0; i < glyph_count; i++) { | ||||||
| 				if (glyph[i].font_rid == RID()) { | 				if (glyph[i].font_rid == RID() && glyph[i].index != 0) { | ||||||
| 					warnings.push_back(RTR("The current font does not support rendering one or more characters used in this Label's text.")); | 					warnings.push_back(RTR("The current font does not support rendering one or more characters used in this Label's text.")); | ||||||
| 					break; | 					break; | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Pāvels Nadtočajevs
						Pāvels Nadtočajevs