[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