document docstring abuse for symbol font code points

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15791 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Georg Baum 2006-11-07 20:46:38 +00:00
parent f80c16cb4d
commit d3218b9acb
5 changed files with 34 additions and 2 deletions

View File

@ -38,6 +38,11 @@
* <- width -> * <- width ->
* --------------+----------+-------<maxDescent * --------------+----------+-------<maxDescent
* *
* Caution: All char_type and docstring arguments of any method of this class
* are no UCS4 chars or strings if the font is a symbol font. They simply
* denote the code points of the font instead. You have to keep this in mind
* when you implement the methods in a frontend. You must not pass these
* parameters to a unicode conversion function in particular.
*/ */
namespace lyx { namespace lyx {

View File

@ -43,6 +43,13 @@ namespace frontend {
* management. * management.
* *
* Note that the methods return *this for convenience. * Note that the methods return *this for convenience.
*
* Caution: All char_type and docstring arguments of the text drawing
* methods of this class are no UCS4 chars or strings if the font is a
* symbol font. They simply denote the code points of the font instead.
* You have to keep this in mind when you implement the methods in a
* frontend. You must not pass these parameters to a unicode conversion
* function in particular.
*/ */
class Painter { class Painter {
public: public:

View File

@ -105,6 +105,10 @@ int GuiFontMetrics::smallcapsWidth(QString const & s) const
int GuiFontMetrics::width(char_type const * s, size_t ls) const int GuiFontMetrics::width(char_type const * s, size_t ls) const
{ {
// Caution: The following ucs4_to_something conversions work for
// symbol fonts only because they are no real conversions but simple
// casts in reality.
if (ls == 1 && !smallcaps_shape_) { if (ls == 1 && !smallcaps_shape_) {
QChar const c = ucs4_to_qchar(s[0]); QChar const c = ucs4_to_qchar(s[0]);
return width(c.unicode()); return width(c.unicode());

View File

@ -211,6 +211,10 @@ int QLPainter::smallCapsText(int x, int y,
int QLPainter::text(int x, int y, char_type const * s, size_t ls, int QLPainter::text(int x, int y, char_type const * s, size_t ls,
LyXFont const & f) LyXFont const & f)
{ {
// Caution: The following ucs4_to_qstring conversion works for
// symbol fonts only because it is no real conversion but a simple
// cast in reality.
QString str; QString str;
ucs4_to_qstring(s, ls, str); ucs4_to_qstring(s, ls, str);

View File

@ -35,11 +35,23 @@ public:
docstring name; docstring name;
/// name of a inset that handles that macro /// name of a inset that handles that macro
docstring inset; docstring inset;
/// position of the thing in a font /**
* The string or symbol to draw.
* This is a string of length 1 if \p name is a known symbol, and
* the corresponding font is available. In this case it is
* NO UCS4 STRING! The only "character" of the string simply denotes
* the code point of the symbol in the font. Therefore you have to
* be very careful if you pass \c draw to any function that takes a
* docstring argument.
* If \p name is a known symbol, but the corresponding font is not
* available, or if it is a function name, then \c draw contains a
* regular UCS4 string (actuallay \c draw == \c name) that is painted
* on screen.
*/
docstring draw; docstring draw;
/// operator/..., fontname e /// operator/..., fontname e
docstring extra; docstring extra;
/// how is this called as XML entity? /// how is this called as XML entity in MathML?
docstring xmlname; docstring xmlname;
/// required LaTeXFeatures /// required LaTeXFeatures
docstring requires; docstring requires;