Given that some of the programming fonts (like Iosevka) may contain special metadata to achieve some special targets (like being used within Windows console window). Therefore the current patching script (using FontForge) may not be appropriate since FontForge cannot generate a font with such specialized data. A replacement used for patching may be involved with otfcc, which is a high-performance font manipulator dumps a font into JSON, and vice versa.
We can investigate an alternative patching script using otfcc, to create a “special-data-preserving” font patching workflow.
PROPOSAL
<target.ttf> into JSON <target.otd> using otfccdump.<patch.ttf> containing Nerd symbols matching <target.otd>’s head.unitsPerEm.<patch.ttf> into JSON <patch.otd> with glyph names prefixed.<patch.otd> into <target.otd> (using some script. Python?), with the following tables merged:cmapglyf<product.ttf> from <target.otd> using otfccbuild with --keep-average-char-width and --ship options.<product.ttf> with ttfautohint.@ryanoasis I've made a sample code using Node.js and otfcc: nerdpatcher.7z
The nerd.ttf is a TrueType font matching the target font's upm. The current patching script simply drops the hints of the Nerd part. You can re-hint it using ttfautohint after the patched .ttf is created.
This script preserves all metadata from the original font, therefore it shares the compatibility of the original font.
In this script naming entries are not modified. If you want to change the font's name, set the nameString field of entries in orig.name in merge.js.
LIMITATIONS: ONLY TTFS ARE SUPPORTED (because otfcc's CFF OTF suppport is still under development)
@be5invis I really appreciate all this thanks. Not sure when I will get around to trying it out but I want to! :+1:
ps. I suggest that the name of the patched font is “Imposevka” :ghost:
Means “Iosevka with imported glyphs”
@be5invis Good idea and that is a pretty clever name :smile:
I will update the name in the next release (the otfcc patching ... probably will not be soon though :blush:).
Are you wanting or saying you are Reserving the Iosevka name ?
I did not see the typical 'Reserved Font Name' declaration in the Iosevka License even though the license is SIL OFL like I typically do on OFL licensed fonts (e.g. Hack License)
Maybe you want to add that to the license (unless I am behind or misunderstanding the license)?
source: http://scripts.sil.org/cms/scripts/page.php?item_id=OFL-FAQ_web#9d7a93f7
@ryanoasis I thought that name reservation does not need to declare it explicitly in LICENSE. :cry:
It is now added.
Heh that is what I wasn't exactly sure about either but it _sounds_ like it from what I was reading. Either way I would have done the name change as it is your font after all :wink:
My suggested patching workflow is to use the script in my previous comment, which preserves all “good” properties of Iosevka. Perhaps you can try to create a ttf with only NERD glyphs, and set upm to 1000, char width to 500.
@ryanoasis I've added the declaration into LICENSE.md.
Thanks for the info on the ttf i'll give that a try sometime
@ryanoasis I’ve made a full script to build Imposevka, and sample fonts built from the latest 1.9.0 release. Link: http://7xpe0v.com1.z0.glb.clouddn.com/imposevka-patcher.7z
To build:
src/nerd.ttfmake@be5invis Wow really great stuff thanks :+1:
Apologies, I hope you don't take my slow response for lack of interest.
Any plans to update patched iosevka to the latest version 1.9.3?
@vbauerster oh wow didn't see your comment. We can target it for v1.2.0 release. I'll make a ticket so it's not lost
update patched iosevka to the latest version 1.9.3
We can target it for v1.2.0 release. I'll make a ticket so it's not lost
@vbauerster Looks like I dropped the ball on this :cry:
@vbauerster done: #229
The linked script is no longer available, though it is fortunately preserved in fmthoma/config-files@6403f759c6a231cb016e48ccf993f17d6210efbe, what I'm not clear on however is how to generate nerd.ttf? ./font-patcher from the repo requires an extant font to patch.
@OJFord The way I did it was to create a new font in FontForge, draw one rubbish character (had to be non-empty to let FontForge create it) -- patch that, then remove the character I added from the patched font.
Oh, though I suspect https://github.com/ryanoasis/nerd-fonts/blob/master/src/glyphs/Symbols-1000-em%20Nerd%20Font%20Complete.ttf might be the same file.
If it would useful to anyone I can put my patched version somewhere -- just let me know which variant/style of Iosevka you would like patched.
Hi @ryanoasis , would it be possible to update Iosevka to the latest version 3.6.2 ?
Thanks
Most helpful comment
Any plans to update patched iosevka to the latest version 1.9.3?