From: Tomas Frydrych (tomasfrydrych@yahoo.co.uk)
Date: Sat Jun 21 2003 - 12:27:28 EDT
I have made further changes to the glyphshaping engine to allow to
check for glyph availability, plus added a new virtual function
bool GR_Font::doesGlyphExist(UT_UCS4Char g).
For this whole thing to work some platform specific code needs to be
written; there are two options on each platform:
1. Modify GR_*Font::measureUnremappedCharForCache so that if a glyph
is absent its width is set to GR_CW_ABSENT. The GR_Font version of
doesGlyphExist() then will handle the rest for you.
2. Overwrite the GR_Font::doesGlyphExist() with a platform-specific
version.
Choose which ever will be more efficient on the given platform, i.e.,
if you can tell in the process of measuring that a glyph is absent,
it is probably best to use (1), as that will save us having to call
the system API again.
For now, this functionality is not turned on. We will see how
easy/hard it is to implement this. It would be desirable to have this
prior to 2.0, but I am having hard time to come up with some way of
determining the presence or absence of a glyph on win32 since the
win32 font renderer automatically remaps missing glyphs to the
default character. If anyone knows how to do this, please let me
know.
files: gr_Graphics.h/cpp, gr_CharWidths.h, gr_Win32Graphics.h/cpp,
ut_contextGlyph.h/cpp, fp_TextRun.cpp.
Tomas
This archive was generated by hypermail 2.1.4 : Sat Jun 21 2003 - 12:41:02 EDT