2011/8/22 Mark E. Shoulson <m...@kli.org>: > I'm not certain I understand the question, but if I have it right... The > logic order is ALEF + LAMED, and the presentation... places those in a > right-to-left sequence, shall we say (since talking about the presentation > *order* is confusing here). The font table contains the lookup that ALEF + > LAMED => ALEF_LAMED_LIGATURE. It all goes according to the logical order, > since the presentation "order" isn't really an order, it's just a direction. > (this is different from things like devanagari short-i vowel, which "moves" > with respect to the other letters in the script.)
Lookup tables in fonts (at least OpenType) do not work at the character level, but at the glyph level: they substitute glyph ids by other glyph ids. Sequences of glyph ids are already reordered in visual order by the layout engine when they are searched in OpenType lookups, should they be RTL glyphs, or Indic glyphs with special reordering requirements (independant of the logical ordering of characters/code points). In addition, the same sequence of characters may be sometimes searched in several distinct sequences of glypg ids (this depends on the kind of OpenType table being consulted, as well as on character properties which also determine which lookup table will be searched and the relative order of successive lookups). The only lookup table in fonts that work at the character/code point level is their "cmap" (which maps a default glyph id from each encoded character, independantly of their logical or visual ordering, as well as independantly of the script/language in which those characters or glyphs are used, but possibly depending on the encoding used and the software platform supporting that encoding). Not all fonts need a "cmap"; for some of them, a default cmap may be implied or automatically constructed -- for example Symbol fonts in Windows, that are implicitly mapped in a PUA range; another example is Type1 or CFF fonts that have a default "standardEncoding" inherited from PostScript, based on glyph names (rather than glyph ids or code points) that may have themselves an implicit mapping to UCS codepoints (if these names are those defined in the AGL). Not all these mappings are 1-to-1, which means that they are not reversible, in the general case.