History log of /haiku/src/servers/app/font/FontEngine.h
Revision Date Author Comments
# 85b82f85 19-Jul-2022 Dale Cieslak <dcieslak@yahoo.com>

BFont: allow loading of user fonts from disk or memory

This patch adds an API call to BFont, called LoadFont, that
takes a string path to a font file. The user fonts are managed
via a new class called AppFontManager that inherits from the base
class FontManagerBase but adds the methods to add and remove user
fonts from disk or memory. There is also a new method called UnloadFont
to remove a user font, but on exit of an app all user fonts should be
automatically cleaned up.

Global/system fonts are managed by the GlobalFontManager, which is
a new class that also inherits from the base class FontManagerBase,
replacing the old "FontManager" class.

A maximum of 128 user fonts may be loaded, and memory fonts
may not exceed 20MB.

There's also an overloaded version of LoadFont that accepts
an area_id and loads the font from memory. A size and offset may
optionally be provided to allow for an area that contains more
than just a font.

Change-Id: I6add42bdf0c0cefc0e2e2a4984fd848c3e7269e5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4790
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# d9d14326 26-Feb-2014 Stephan Aßmus <superstippi@gmx.de>

app_server: Implemented support for B_CHAR_SPACING.

It doesn't yield quiet the expected results, yet. When hinting is turned on,
FontEngine takes a measurement of the precise advance values for each
cached glyph by invoking FT_Load_Glyph() with the FT_LOAD_NO_HINTING flag,
before loading the glyph for real without that flag. In GlyphLayoutEngine.h,
the precise advance value is used for B_CHAR_SPACING. The intended result
is that glyphs are rendered hinted (according to global Appearance settings),
but spaced along the base-line with precise, unhinted advance values. An
application would use this for example to implement precise page or print
preview and also for zooming text without altering the placement of glyphs.
For Gobe Productive, problems can be observed, because we don't implement this
correctly, yet.


# f4f30311 24-Jul-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Cleanup app server directory a bit by creating a font and a decorator sub folder.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42483 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d9d14326ca3acb76b37202f2926f9d7cff44b3f0 26-Feb-2014 Stephan Aßmus <superstippi@gmx.de>

app_server: Implemented support for B_CHAR_SPACING.

It doesn't yield quiet the expected results, yet. When hinting is turned on,
FontEngine takes a measurement of the precise advance values for each
cached glyph by invoking FT_Load_Glyph() with the FT_LOAD_NO_HINTING flag,
before loading the glyph for real without that flag. In GlyphLayoutEngine.h,
the precise advance value is used for B_CHAR_SPACING. The intended result
is that glyphs are rendered hinted (according to global Appearance settings),
but spaced along the base-line with precise, unhinted advance values. An
application would use this for example to implement precise page or print
preview and also for zooming text without altering the placement of glyphs.
For Gobe Productive, problems can be observed, because we don't implement this
correctly, yet.


# f4f30311aab9b2768d3ef7e590f85598298edfe0 24-Jul-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Cleanup app server directory a bit by creating a font and a decorator sub folder.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42483 a95241bf-73f2-0310-859d-f6bbb57e9c96