Emoji font builder

Dzuk 7862989d43 Updated license in readme 1 년 전
compile bdbd75ddb3 added optional PayloadDescription for iOS mobileconfig building 5 년 전
docs 3b819b9f7f Removal of TrueType ligature options 4 년 전
manifest 07fd6173dc name table - an attempt was made 5 년 전
tables 2d82d311c3 Some more bytes stuff, head.checkSumAdjustment 5 년 전
transform 07fd6173dc name table - an attempt was made 5 년 전
validate 85836734fc Documentation and error improvements 5 년 전
.gitattributes 7fb4655f03 Initial commit 6 년 전
.gitignore a45bce950b repo improvements 6 년 전
code_of_conduct.md 4115964a34 Code of conduct added 6 년 전
create.py bd615c875f Structural improvements, Font self-testing 5 년 전
data.py bd615c875f Structural improvements, Font self-testing 5 년 전
files.py 07fd6173dc name table - an attempt was made 5 년 전
font.py 340c8e22fc Improved documentation and error messages 5 년 전
forc.py 3b819b9f7f Removal of TrueType ligature options 4 년 전
format.py 3b819b9f7f Removal of TrueType ligature options 4 년 전
glyph.py bd615c875f Structural improvements, Font self-testing 5 년 전
glyphProc.py bd615c875f Structural improvements, Font self-testing 5 년 전
license.txt 8f5a495271 License moved to GPL3. 1 년 전
log.py 69a7773d3e Prettier log output 5 년 전
readme.md 7862989d43 Updated license in readme 1 년 전
start.py bd615c875f Structural improvements, Font self-testing 5 년 전

readme.md

Due to changing project priorities, I have decided to officially shelve this software as of December 2022. Feel free to fork it and keep on working on it if you like, but it doesnt make sense for me to work on it any longer <3


forc

forc logo with the text 'forc' next to it on a blue background

forc (a terrible portmanteau of font and orc) is an emoji font creation tool. It takes in folders of codepoint-named images and a manifest file and returns highly-compatible emoji fonts that can work in a wide variety of platforms.

Making fonts can be really hard, so forc is designed to help you succeed every time - it has comprehensive documentation and guides on how to make your own emoji font, gives very readable and transparent error messages and is structured in a way that tries to make making highly-compatible emoji fonts as effortless as possible.

Because fonts are inconsistent and difficult, forc also tries to have a heavily documented and commented codebase, so all of the elements make as much sense as possible to someone new to TrueType/OpenType.


Features

Exports to:

  • SVGinOT
  • sbixOT: sbix with OpenType ligatures.
  • sbixOT for iOS: sbix with OpenType ligatures, packaged in an iOS Configuration Profile.
  • CBx (CBDT/CBLC): CBDT/CBLC tables with OpenType ligatures.

Other features:

  • Full range of unicode codepoints supported, including the SPUA planes.
  • Support for ligatures.
  • Support for VS16 (U+FE0F) handling.
  • Support for ZWJ (U+200D) handling.
  • Many-to-one codepoint sequence to glyph relationships via Alias Glyphs.
  • Strictly validates your input and gives you helpful error messages, ensuring that you get it right every time.
  • Designed to work as effortlessly as possible with orxporter.

Dependencies


Documentation

How to make a font

FAQ


Compatibility/stability notes

General stability

forc is very much in development and probably isn't ready for production in any serious task.

The ttx compiler (which is an external software called fonttools) will change various metadata elements you put in the manifest to different things. I cannot change this and while I've been working on a custom binary compiler to get around this and other limitations of ttx, it's not yet ready to use in production.

At the moment it will always throw some errors about the number of sbix strikes not being the same as maxp.numGlyphs. This is a non-breaking error and you can ignore this.

Format stability

This is only with the ttx compiler - the forc compiler is not yet ready for use. Also your mileage may vary depending on your input images and manifest data - fonts are complicated things.

format stability notes
SVGinOT sometimes okay If you have a single SVG with some wrong parts to it (I'm not sure what those are), then the entire font glyph set will just not display. Unfortunately SVGinOT is a really inconsistent and poorly documented format :S.
sbixOT quite stable This has been tested working within macOS and GNOME in Linux.
sbixOT for iOS quite stable This has been tested working in iOS 13.
CBDT/CBLC not working Even though the output is a valid font, glyphs don't display in any compatible environment that has been tested. It's unclear why that is at this point in time.

Collaborators

  • Dzuk
  • kiilas (helping out with various things)

Contributions

Feature requests and collaboration are welcome. Any collaborators must follow Mutant Standard's code of conduct.


License

forc is licensed under GPLv3.