You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Wrong letter space after patching Korean font #522
Patched D2Coding font with patcher in Windows 10.
When patched, letter space of Korean charactors are getting weird.
Screenshot is attached in 'optional'.
🔧 Your Setup
Using D2Coding with patcher.
Now using window CMD, but it is not about patched letters.
Now using Windows 10, and Nerd Fonts ver. 2.1.0.
★ Optional
This is what originally looks like;
This is how it looks like after patch.
And if I patch it in single-width, it looks like:
Not sure it is same with other fullwidth characters(like Chinese or Japanese).
@kimwonj77 Can you show an image were I can see the problem?
If it contains Korean text it would be good to have the text also as text in the comment so that I can try it out.
As far as I remember (It has been three years since I found this issue) it was problem of D2Coding font.
As said I exported D2Coding directly from FontForge, but not only that, but I also tried doing same thing with FontLab and python library (as far as remember, as said), and same thing happened.
(I also uploaded same issue at naver/d2-coding-font#84 too, which shows attempt to open and re-export the font cause total breakdown of what is written in Korean.)
Never tested with other Korean-based font, but guess it won't break with other fonts. (Guess it's worth try.)
Guess it's better ping @kimwonj77 . Sorry if this bothered you.
It's bit difficult to explain, But seem like the rendering method of notepad, and some other programs are using old-school character render system. and it causes the issue. (And also, it only happens on korean character. not english.)
It's also same on fontview.exe with korean locale (fontview.exe' is locked by windows locale.). Like og author's image.
diff --git a/font-patcher b/font-patcher
index 01e144e4c..a82e6f8c5 100755
--- a/font-patcher+++ b/font-patcher@@ -135,6 +135,7 @@ class TableHEADWriter:
positions = {'checksumAdjustment': 2+2+4,
'flags': 2+2+4+4+4,
'lowestRecPPEM': 2+2+4+4+4+2+2+8+8+2+2+2+2+2,
+ 'avgWidth': 2,
}
where = self.tab_offset + positions[where]
self.f.seek(where)
@@ -421,6 +422,10 @@ class font_patcher:
for idx in range(source_font.num_fonts):
if not self.args.quiet:
print("{}: Tweaking {}/{}".format(projectName, idx + 1, source_font.num_fonts))
+ source_font.find_table([b'OS/2'], idx)+ dest_font.find_table([b'OS/2'], idx)+ dest_font.putshort(source_font.getshort('avgWidth'), 'avgWidth')+ dest_font.reset_table_checksum()
source_font.find_head_table(idx)
dest_font.find_head_table(idx)
if source_font.flags & 0x08 == 0 and dest_font.flags & 0x08 != 0:
This does not calculate the version 2 number but just copies over the value from the source font. Which would be ok if we just want to fix D2Coding I guess. The code is minimal, just what I used to prove that this is the issue's cause.
Maybe the Nanum-font series has this problem too. (D2Coding is one of them). But I'm not tested. https://hangeul.naver.com/font/nanum - All "Nanum" series fonts (for basic usage.) (in Korean) https://github.com/naver/nanumfont - "Nanum Gothic Coding", an old version of D2 coding.
This issue has been automatically locked since there has not been any recent activity (i.e. last half year) after it was closed. It helps our maintainers focus on the active issues. If you have found a problem that seems similar, please open a new issue, complete the issue template with all the details necessary to reproduce, and mention this issue as reference.
Activity
dhnam commentedon Sep 4, 2020
Looks like it is own problem of FontForge.
I opened ttf file of D2Coding and directly made font out of it, and it gave me same problem.
Finii commentedon Feb 21, 2023
Maybe this can be solved by patching with
--variable-width-glyphs.But the patched font then does probably not work in 'all' terminals anymore.
Closing this now. If you still have problems, reopen. I would need a link to the problematic font for testing in that case.
kimwonj77 commentedon Apr 10, 2023
I have same issue. With same font, both with/without
--variable-width-glyphs, both mono and non-mono.Original font is on https://github.com/naver/d2codingfont/releases/tag/VER1.3.2
Patched font is without
--variable-width-glyphsand with--variable-width-glyphsBuild script is here: https://github.com/kimwonj77/d2coding-nerdfonts/blob/master/build.sh
Also, I'm not a original author of this issue. So I ping you, @Finii. Sorry about this.
Finii commentedon Apr 10, 2023
@kimwonj77 Can you show an image were I can see the problem?
If it contains Korean text it would be good to have the text also as text in the comment so that I can try it out.
dhnam commentedon Apr 10, 2023
Original author here.
As far as I remember (It has been three years since I found this issue) it was problem of D2Coding font.
As said I exported D2Coding directly from FontForge, but not only that, but I also tried doing same thing with FontLab and python library (as far as remember, as said), and same thing happened.
(I also uploaded same issue at naver/d2-coding-font#84 too, which shows attempt to open and re-export the font cause total breakdown of what is written in Korean.)
Never tested with other Korean-based font, but guess it won't break with other fonts. (Guess it's worth try.)
Guess it's better ping @kimwonj77 . Sorry if this bothered you.
kimwonj77 commentedon Apr 10, 2023
First, It's same as original author's image.
다람쥐 헌 쳇바퀴에 타고파.mono on windows 11 settings.
double width on windows 11 settings. but...
it's still broken on notepad.
Finii commentedon Apr 11, 2023
Thank you. I believe I see the problem now. Trying to fix...
Finii commentedon Apr 11, 2023
다람쥐 헌 쳇바퀴에 타고파 =
b2e4b78cc95020d5cc20ccc7bc14d034c5d020d0c0ace0d30cChoose for research
D2Coding/D2Coding-Ver1.3.2-20180524.ttffrom https://github.com/naver/d2codingfont/releases/tag/VER1.3.2Looks ok, width is maintained.
Hmm, testing in
tilixLooks ok. Maybe it is a Windows problem. (Comment will be continued on Windows box)
Finii commentedon Apr 11, 2023
Looks ok in windows (so far)
Windows TerminalLooks good.
Ah, you use notepad, lets see
Ah!
Looks good in writer...
So this is a
wordpadnotepadproblem?Edit: Mixed note- and wordpad 🙄
Finii commentedon Apr 11, 2023
Original font looks good in
notepadkimwonj77 commentedon Apr 12, 2023
It's bit difficult to explain, But seem like the rendering method of notepad, and some other programs are using old-school character render system. and it causes the issue. (And also, it only happens on korean character. not english.)
It's also same on
fontview.exewith korean locale (fontview.exe' is locked by windows locale.). Like og author's image.Also Eclipse

Finii commentedon Apr 12, 2023
I found the problem.
The issue is with the
OS/2xAvgCharWidthdata in the font.(
OS/2is the name of one data table within a open type font (for example.ttf))OS/2version 0 to 2 the number is the average width of the lowercase latin letters (weighted) [1][2]OS/2version 3+ it is the average width of all glyphsUnfortunately there are multiple bugs here in parallel so I do not really know how to proceed here.
notepaddetermines the advance width fromxAvgCharWidthand uses double that value for Korean glyphs (2 cell width) regardless ofOS/2version 😞D2Codingfont says it has anOS/2version 3 (!) table but fills the number as version 2 would (probably to circumvent thenotepadbug 🙄fontforgealways fills the version 3+ number, even if instructed to create the font with a version 2OS/2table 😠Possible actions
fontforge's OS/2 table version 0-2 (will not help because font says it uses version 3)font-patcherto create version 2xAvgCharWidthtable entryfont-patcherto specific font name to create for this font only a version 2xAvgCharWidthI do not really like to add options to
font-patcherif it can be avoided.Are there other - possibly Korean - fonts affected or is that only D2Coding?
[1] https://learn.microsoft.com/en-us/typography/opentype/spec/os2#xavgcharwidth
[2] https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6OS2.html
Fix snippet
This does not calculate the version 2 number but just copies over the value from the source font. Which would be ok if we just want to fix D2Coding I guess. The code is minimal, just what I used to prove that this is the issue's cause.
Edit: Typo fix
Finii commentedon Apr 12, 2023
fontforgeback-linksFinii commentedon Apr 12, 2023
Even
Glyphs3does not allow to producenotepadcompatible fonts...https://forum.glyphsapp.com/t/font-custom-parameters/1174
kimwonj77 commentedon Apr 12, 2023
Maybe the Nanum-font series has this problem too. (D2Coding is one of them). But I'm not tested.
https://hangeul.naver.com/font/nanum - All "Nanum" series fonts (for basic usage.) (in Korean)
https://github.com/naver/nanumfont - "Nanum Gothic Coding", an old version of D2 coding.
font-patcher: Add option to manipulate xAvgCharWidth
Finii commentedon Apr 12, 2023
If you use
font-patcherin-parens-version 3.7.0 or later you can now add--xavgcharwidthto copy the value and create a font usable innotepad:For your (@kimwonj77) project:
If you specify
--completeyou do not need to add all these specific glyphs sets, so it would be sufficient tofont-patcher: Add option to manipulate xAvgCharWidth
kimwonj77 commentedon Apr 12, 2023
Thank you for response! Now I can be happy with Korean font! D2Coding is (if I remember correctly) one and only Korean-Code font since the release...
Also, thank you for reviewing my script! I added it for test just in case.
dhnam commentedon Apr 13, 2023
Never expected this issue to be corrected! I just gave up using D2Coding patched with nerd font. But looks like I also can be happy with Korean font!
Huge thanks to both of you, Finni and Kimwonj77!
github-actions commentedon Oct 16, 2023
This issue has been automatically locked since there has not been any recent activity (i.e. last half year) after it was closed. It helps our maintainers focus on the active issues. If you have found a problem that seems similar, please open a new issue, complete the issue template with all the details necessary to reproduce, and mention this issue as reference.
font-patcher: Add option to manipulate xAvgCharWidth