james_lohr's picture

QuickFont

I'd just like to announce the release of QuickFont, a text printing and font generation library: http://www.opentk.com/project/QuickFont

I could only upload 4 images on the project page, so I've uploaded the remaining screenshots here.

Enjoy. :)

James L.

Images

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Robmaister's picture

Hey guys, I've recently been working on FreeType bindings for .NET that are complete and have the look-and-feel of a managed .NET library, and I was wondering if you would consider switching the renderer from GDI+ to FreeType. If you don't know what FreeType is, it's a cross-platform library that reads font files and can render glyphs from them.

FreeType is automatically installed as a part of OS X, installed on most Linux distributions/available through the package manager, and can easily be compiled to a .dll on Windows. The only pitfall is it's use of the "long" type. Windows 64-bit forces longs to be 32 bits long, while all other major operating systems make longs 64 bits long on the 64-bit version. So right now you have to compile separately for Windows 64-bit support, but that mess can be avoided by compiling your application as "x86" instead of "Any CPU". Eventually I'll find a way to dynamically detect a Windows 64-bit system and swap the struct that I use for marshaling, but for now that's the solution.

My bindings are complete and mostly bug-free (haven't tested outlining, custom rasterizers, or the caching subsystem yet) and are available on github: https://github.com/Robmaister/SharpFont

There are a few discrepancies between the Mono and Microsoft implementations of GDI+ that cause some weird effects with certain fonts on Linux/OS X that would be fixed by using the only implementation of FreeType, you would get full Unicode support, be provided with proper metrics for right-to-left and vertical fonts, and use it's amazing outlining system.

Oh, and it's MIT licensed.

Thanks, and let me know if you want to use it. I can help you get started with FreeType. There's also an example available on the github page.

RJF's picture

Thanks James for your efforts.
I've a desire to "anchor" standard text (labels) to specific vertex (x,y,z) Points.
I understand that QuickFont is 2D, but if I relinquish ~care about the text rotation,
I wonder if perhaps there is a method using QuickFont.
The points are being viewed/rotated by user mouse & user needs to see point labels.
Thx in advance for any input. Bests, RJ.

swax's picture

I added vertex buffer support to QuickFont, the fork is here -

https://github.com/swax/QuickFont

It has z support as well, but not rotation. Maybe someone would like to add that? :)

rounder8's picture

Hi,

Thanks for the great tool!

There seems to be a problem when resizing the window. All the text will be dislocated on X-axis. Here is a detailed description of the problem:

http://www.opentk.com/node/3074

Anyone care to investigate? I'm trying but it's not easy for me ...

AltSoftLab's picture

We ported QuickFont to AltSketch. AltSketch QuickFont not depends on System.Drawing (we use C# port of wonderful font rendering library Freetype). Also we implemented rendering abstraction layer. So QuickFont can be easy integrated to any rendering engine.

AltSketch QuickFont
AltSketch QuickFont

OpenTK AltSketch QuickFont Start Sample
AltSketch QuickFont

AltSoftLab's picture

In AltQuickFont center text alignment bug fixed (native QuickFont bug). Improved & optimized loading operations for faster library initialization.

AltSketch QuickFont (Bounds and Justify) - Alignment Centre
AltSketch QuickFont (Bounds and Justify) - Alignment Centre

OpenTK AltSketch QuickFont (Bounds and Justify) - Alignment Centre
OpenTK AltSketch QuickFont (Bounds and Justify) - Alignment Centre

AltSoftLab's picture

QuickFont integrated to AltSketch SDK can be used now in many Render Platforms:

Unity Game Engine
Windows Phone
Android
iOS
Silverlight / Moonlight
XNA / MonoGame
OGRE 3D Engine
Axiom 3D Engine
NeoAxis 3D Engine
Irrlicht 3D Engine
OpenTK / AltOpenTK
SdlDotNet / AltSdlDotNet
SharpDX
Windows Forms (throw System.Drawing, OpenGL, DirectX, DirectDraw)
WPF (throw System.Windows.Media, OpenGL, DirectX, DirectDraw)
GTK (throw Gtk.Image, OpenGL)
Qt: Qyoto & Qt4Dotnet​ (throw Qt.Image, OpenGL)
wxWidgets (throw wxWidgets.Image)

AltSketch Unity QuickFont
AltSketch Unity QuickFont

AltSketch XNA MonoGame QuickFont
AltSketch XNA MonoGame QuickFont

AltSketch Irrlicht QuickFont
AltSketch Irrlicht QuickFont

AltSketch Axiom QuickFont
AltSketch Axiom QuickFont

AltSketch OGRE QuickFont
AltSketch OGRE QuickFont