Bold unicode characters appear doubled
When you set Force Unicode: False and try to write bold unicode characters like ∓
/tellraw @p {"text":"∓","bold":true}
You will get a doubled ∓.
The reason for that is that the method renderStringAtPos(String p_78255_1_, boolean p_78255_2_) in the /Client/src/net/minecraft/client/gui/FontRenderer.java class (MCP 1.8 names) sets a different offset for characters only if unicode is forced, however it ignores the fact that unicode characters can be displayed without unicode being forced. This offset would also affect the shadow of characters but this is disabled for unicode characters by default.
/** * Render a single line string at the current (posX,posY) and update posX */ private void renderStringAtPos(String p_78255_1_, boolean p_78255_2_) { for (int var3 = 0; var3 < p_78255_1_.length(); ++var3) { char var4 = p_78255_1_.charAt(var3); int var5; int var6; if (var4 == 167 && var3 + 1 < p_78255_1_.length()) { //... } else { //... // Changed this //float var12 = this.unicodeFlag ? 0.5F : 1.0F; float var12 = var4 == 0 || var5 == -1 || this.unicodeFlag ? 0.5F : 1.0F; boolean var7 = (var4 == 0 || var5 == -1 || this.unicodeFlag) && p_78255_2_; if (var7) { this.posX -= var12; this.posY -= var12; } float var8 = this.renderCharAtPos(var5, var4, this.italicStyle); if (var7) { this.posX += var12; this.posY += var12; } if (this.boldStyle) { this.posX += var12; if (var7) { this.posX -= var12; this.posY -= var12; } this.renderCharAtPos(var5, var4, this.italicStyle); this.posX -= var12; if (var7) { this.posX += var12; this.posY += var12; } ++var8; } //... } } }
Linked Issues
is duplicated by3
Created Issue:
Bold unicode characters appear doubled
When you set Force Unicode: False and try to write bold unicode characters like ∓
/tellraw Marcono1234 {text:"∓",bold:true}You will get a doubled ∓. I am not sure if this is intended.
When you set Force Unicode: False and try to write bold unicode characters like ∓
/tellrawMarcono1234{text:"∓",bold:true}You will get a doubled ∓. I am not sure if this is intended.
When you set Force Unicode: False and try to write bold unicode characters like ∓
/tellraw @p {text:"∓",bold:true}You will get a doubled ∓. I am not sure if this is intended.
When you set Force Unicode: False and try to write bold unicode characters like ∓
/tellraw @p {text:"∓",bold:true}You will get a doubled ∓. I am not sure if this is intended.
When you set Force Unicode: False and try to write bold unicode characters like ∓
/tellraw @p {"text":"∓","bold":true}You will get a doubled ∓. I am not sure if this is intended.
Seems to be fixed for 15w50a and maybe earlier
When you set Force Unicode: False and try to write bold unicode characters like ∓
/tellraw @p {"text":"∓","bold":true}You will get a doubled ∓.
I am not sure if this is intended.When you set Force Unicode: False and try to write bold unicode characters like ∓
/tellraw @p {"text":"∓","bold":true}You will get a doubled ∓.
The reason for that is that the method renderStringAtPos(String p_78255_1_, boolean p_78255_2_) in the /Client/src/net/minecraft/client/gui/FontRenderer.java class (MCP 1.8 names) sets a different offset for characters only if unicode is forced, however it ignores the fact that unicode characters can be displayed without unicode being forced. This offset would also affect the shadow of characters but this is disabled for unicode characters by default.
/** * Render a single line string at the current (posX,posY) and update posX */ private void renderStringAtPos(String p_78255_1_, boolean p_78255_2_) { for (int var3 = 0; var3 < p_78255_1_.length(); ++var3) { char var4 = p_78255_1_.charAt(var3); int var5; int var6; if (var4 == 167 && var3 + 1 < p_78255_1_.length()) { //... } else { //... // Changed this //float var12 = this.unicodeFlag ? 0.5F : 1.0F; float var12 = var4 == 0 || var5 == -1 ||this.unicodeFlag ? 0.5F : 1.0F; boolean var7 = (var4 == 0 || var5 == -1 || this.unicodeFlag) && p_78255_2_; if (var7) { this.posX -= var12; this.posY -= var12; } float var8 = this.renderCharAtPos(var5, var4, this.italicStyle); if (var7) { this.posX += var12; this.posY += var12; } if (this.boldStyle) { this.posX += var12; if (var7) { this.posX -= var12; this.posY -= var12; } this.renderCharAtPos(var5, var4, this.italicStyle); this.posX -= var12; if (var7) { this.posX += var12; this.posY += var12; } ++var8; } //... } } }
When you set Force Unicode: False and try to write bold unicode characters like ∓
/tellraw @p {"text":"∓","bold":true}You will get a doubled ∓.
The reason for that is that the method renderStringAtPos(String p_78255_1_, boolean p_78255_2_) in the /Client/src/net/minecraft/client/gui/FontRenderer.java class (MCP 1.8 names) sets a different offset for characters only if unicode is forced, however it ignores the fact that unicode characters can be displayed without unicode being forced. This offset would also affect the shadow of characters but this is disabled for unicode characters by default.
/** * Render a single line string at the current (posX,posY) and update posX */ private void renderStringAtPos(String p_78255_1_, boolean p_78255_2_) { for (int var3 = 0; var3 < p_78255_1_.length(); ++var3) { char var4 = p_78255_1_.charAt(var3); int var5; int var6; if (var4 == 167 && var3 + 1 < p_78255_1_.length()) { //... } else { //... // Changed this //float var12 = this.unicodeFlag ? 0.5F : 1.0F; float var12 = var4 == 0 || var5 == -1 || this.unicodeFlag ? 0.5F : 1.0F; boolean var7 = (var4 == 0 || var5 == -1 || this.unicodeFlag) && p_78255_2_; if (var7) { this.posX -= var12; this.posY -= var12; } float var8 = this.renderCharAtPos(var5, var4, this.italicStyle); if (var7) { this.posX += var12; this.posY += var12; } if (this.boldStyle) { this.posX += var12; if (var7) { this.posX -= var12; this.posY -= var12; } this.renderCharAtPos(var5, var4, this.italicStyle); this.posX -= var12; if (var7) { this.posX += var12; this.posY += var12; } ++var8; } //... } } }
Thank you for confirming all the issues
relates to
is duplicated by
is duplicated by
relates to
relates to
is duplicated by
is duplicated by
is duplicated by
The font is a toggle-able option, and every language can have it enabled, for example I like the font a lot, and I just have minecraft on english, but it's just unreadable at smaller scale, so how is the title misleading? As for the bold, I saw a report about that before, but can't seem to find it anymore.
Edit: found it: MC-76356.
Please link to this comment in the description
The following is based on a decompiled version of Minecraft 1.9 using MCP 9.24 beta.
The reason for this is the same as for MC-76356. When the shadow is rendered, the text is shifted 1 to the right. For unicode characters 1 is too much because they are smaller. Therefor the method net.minecraft.client.gui.FontRenderer.renderStringAtPos(String, boolean) is supposed to shift them back. The value used for shifting is the same used for displaying bold font. As described in MC-76356 the value is wrong (1 instead of 0.5) if "Force Unicode Font" is disabled and because of this the shadow is shifted behind the text.
Duplicate of MC-76356.
Please search before creating a report to make sure your issue hasn't already been reported.
Thank you for your report!
However, this issue is a Duplicate of MC-76356.
If you have additional information, please add it to that report.
Please search before reporting, as it's likely that one exists already.
Quick Links:
📓 Issue Guidelines – 💬 Community Support – 📧 Customer Support – 📖 Game Wiki
Since bold text is set to be displayed by overlapping identcal gryph shifted to right by 1 pixel which is based on Mojangle(the default font), custom fonts which is thinner than Mojangle displayed as doubled when they are set to bold with gap between original gryph and overlapping gryph.
Similar bug have been reported as MC-76356, and it was resolved by changing the amount of shift to 0.5 Mojangle pixel, and there should be field like "bold_shift" to specify how much shift apply to overlapping gryph on ttf gryph provider to resolve this issue.
Affects 1.20.1.
Attached example resourcepack which uses Unifont JP, a JP variant of GNU Unifont which is used in default Minecraft. I think there should be field to specify how much pixel the overlapping gryphs should be shifted, just as MC-76356 was resolved.
Additionally, this affects the offset of shadow and glowing text.


Can confirm in 1.8.2-pre1.
The unicode font uses a different point value (16 point instead of 8 point).
And what does this mean in this case?
Still in 1.9
Still in 1.9.1-pre3
Still in 16w15b
This appears to be fixed in 1.13-pre7
Bold still looks pretty horrible because of the offset doubling method used. If the font supports "bold", why not use THAT font's "bold" from TTF?
Still an issue in the full 1.13 release and 1.13.1