-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Wrong letter space after patching Korean font #522
Comments
Looks like it is own problem of FontForge. |
Maybe this can be solved by patching with Closing this now. If you still have problems, reopen. I would need a link to the problematic font for testing in that case. |
I have same issue. With same font, both with/without Build 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. |
@kimwonj77 Can you show an image were I can see the problem? |
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/d2codingfont#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. |
Thank you. I believe I see the problem now. Trying to fix... |
다람쥐 헌 쳇바퀴에 타고파 = Choose for research
Looks ok, width is maintained. Hmm, testing in Looks ok. Maybe it is a Windows problem. (Comment will be continued on Windows box) |
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 |
I found the problem.The issue is with the
Unfortunately there are multiple bugs here in parallel so I do not really know how to proceed here.
Possible actions
I do not really like to add options to Are there other - possibly Korean - fonts affected or is that only D2Coding? [1] https://learn.microsoft.com/en-us/typography/opentype/spec/os2#xavgcharwidth Fix snippetdiff --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. Edit: Typo fix |
Even |
Maybe the Nanum-font series has this problem too. (D2Coding is one of them). But I'm not tested. |
[why] Some old applications seem to depend on obsolete xAvgCharWidth values to show two-cell glyphs correctly. Fontforge can only generate OS/2 tables version 4, but these applications need 2 or less. In fact they seem to not look up the version number, but rely on the value being like it always has been ;-) One example is Windows notepad, that takes the xAvgCharWidth as base for the cell size and draws the two-cell chars in a cell twice that size - without any regard to glyph width. [how] These issue seems to be encountered rather seldom and only with some obscure (grin) applications. There is also no good way to handle this automatically. So we add a command line option that allows the user to tweak the value after patched-font generation. The option is called `--xavgcharwidth`: * If not specified the behavior of the patcher does not change * If just given the xAvgCharWidth is copied over from the source * If a number is added that number is used as xAvgCharWidth * If the number added is zero we will calculate the old style xAvgCharWidth Fixes: #522 Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
If you use For your (@kimwonj77) project:
|
[why] Some old applications seem to depend on obsolete xAvgCharWidth values to show two-cell glyphs correctly. Fontforge can only generate OS/2 tables version 4, but these applications need 2 or less. In fact they seem to not look up the version number, but rely on the value being like it always has been ;-) One example is Windows notepad, that takes the xAvgCharWidth as base for the cell size and draws the two-cell chars in a cell twice that size - without any regard to glyph width. [how] These issue seems to be encountered rather seldom and only with some obscure (grin) applications. There is also no good way to handle this automatically. So we add a command line option that allows the user to tweak the value after patched-font generation. The option is called `--xavgcharwidth`: * If not specified the behavior of the patcher does not change * If just given the xAvgCharWidth is copied over from the source * If a number is added that number is used as xAvgCharWidth * If the number added is zero we will calculate the old style xAvgCharWidth Fixes: #522 Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
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. |
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! |
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. |
[why] Some old applications seem to depend on obsolete xAvgCharWidth values to show two-cell glyphs correctly. Fontforge can only generate OS/2 tables version 4, but these applications need 2 or less. In fact they seem to not look up the version number, but rely on the value being like it always has been ;-) One example is Windows notepad, that takes the xAvgCharWidth as base for the cell size and draws the two-cell chars in a cell twice that size - without any regard to glyph width. [how] These issue seems to be encountered rather seldom and only with some obscure (grin) applications. There is also no good way to handle this automatically. So we add a command line option that allows the user to tweak the value after patched-font generation. The option is called `--xavgcharwidth`: * If not specified the behavior of the patcher does not change * If just given the xAvgCharWidth is copied over from the source * If a number is added that number is used as xAvgCharWidth * If the number added is zero we will calculate the old style xAvgCharWidth Fixes: ryanoasis#522 Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
🎯 Subject of the issue
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
D2Coding
with patcher.★ 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).
The text was updated successfully, but these errors were encountered: