[XeTeX] Could JK provide a little backgound on how OpenType MATH tables are handled?
Apostolos Syropoulos
asyropoulos at yahoo.com
Wed Aug 13 20:12:15 CEST 2008
> 2) There's also a bunch of stuff in the MATH sub-tables that I don't
> see how it could be used in the world of TeX. For instance, the
> complex way in which math accents are defined (axis, etc.) I presume
> that this stuff is just ignored, i.e. there's no MATH table rendering
> as such in XeTeX (since freetype doesn't support it AFAIK), but
> information is converted into what the olde TeX math code can handle.
> Correct?
My answer is not definitive since I am not Jonathan:-) An ordinary TeX math
font supports something like 21 numerical parameters. These are:
NUM1, NUM2, NUM3, DENOM1, DENOM2, SUP1, SUP2, SUP3, SUB1, SUB2
SUPDROP, SUBDROP, DELIM1, DELIM2, AXISHEIGHT,
DEFAULTRULETHICKNESS, BIGOPSPACING1, BIGOPSPACING2,
BIGOPSPACING3, BIGOPSPACING4, and BIGOPSPACING5
Now XeTeX reads the OpenType MATH table and maps the corresponding
numerical values to these parameters. The following code excerpt from
XeTeXOTMath.cpp shows the exact mapping:
const mathConstantIndex TeX_sym_to_OT_map[] = {
unknown,
unknown,
unknown,
unknown,
unknown,
accentBaseHeight, // x-height
unknown, // quad
unknown,
fractionNumeratorDisplayStyleShiftUp,
fractionNumeratorShiftUp,
stackTopShiftUp,
fractionDenominatorDisplayStyleShiftDown,
fractionDenominatorShiftDown,
superscriptShiftUp, // ??
superscriptShiftUp, // ??
superscriptShiftUpCramped,
subscriptShiftDown, // ??
subscriptShiftDown, // ??
superscriptBaselineDropMax, // ??
subscriptBaselineDropMin, // ??
delimitedSubFormulaMinHeight,
unknown, // using quad instead for now
axisHeight
};
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
const mathConstantIndex TeX_ext_to_OT_map[] = {
unknown,
unknown,
unknown,
unknown,
unknown,
accentBaseHeight, // x-height
unknown, // quad
unknown,
fractionRuleThickness, // default_rule_thickness
upperLimitGapMin, // big_op_spacing1
lowerLimitGapMin, // big_op_spacing2
upperLimi
RiseMin, // big_op_spacing3
lowerLimitBaselineDropMin, // big_op_spacing4
stackGapMin // big_op_spacing5
};
So to finally answer your question: yes you are correct but not
because freetype doesn't support it, but because TeX does not
understand them.
A.S.
----------------------
Apostolos Syropoulos
Xanthi, Greece
http://obelix.ee.duth.gr/~apostolo
http://asyropoulos.wordpress.com
___________________________________________________________
Χρησιμοποιείτε Yahoo!;
Βαρεθήκατε τα ενοχλητικά μηνύματα (spam); Το Yahoo! Mail
διαθέτει την καλύτερη δυνατή προστασία κατά των ενοχλητικών
μηνυμάτων http://login.yahoo.com/config/mail?.intl=gr
More information about the XeTeX
mailing list