<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body style="background-color: rgb(255, 255, 255); color: rgb(0, 0,
0);" bgcolor="#FFFFFF" text="#000000">
I apologize in advance if this information is already available --
please just point me to it if so. Or, if it is straightforward to
deduce this from the source code, I'm happy to try that -- but I
took a brief look and wasn't successful so I'll need some coaching.<br>
<br>
As we are aware, Uniscribe makes multiple passes over the text,
more-or-less one pass per feature. In the <a
href="http://www.microsoft.com/typography/OpenTypeDev/arabic/intro.htm">Arabic
spec</a>, for example, Microsoft says:<br>
<blockquote type="cite"><span style="color: rgb(51, 51, 51);
font-size: 14px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: 21px;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; word-spacing: 0px; display: inline !
important; float: none; background-color: rgb(255, 255, 255);">All
OTL processing is divided into a set of predefined<span
class="Apple-converted-space"> </span></span><em
style="font-style: italic; color: rgb(51, 51, 51); font-size:
14px; font-variant: normal; font-weight: normal; letter-spacing:
normal; line-height: 21px; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; word-spacing: 0px;
background-color: rgb(255, 255, 255);">features</em><span
style="color: rgb(51, 51, 51); font-size: 14px; font-style:
normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: 21px; text-align: start;
text-indent: 0px; text-transform: none; white-space: normal;
word-spacing: 0px; display: inline ! important; float: none;
background-color: rgb(255, 255, 255);">(described and
illustrated in the Features section of this document). Each
feature is applied, one by one, to the appropriate glyphs in the
syllable and OTLS processes them. Uniscribe makes as many calls
to the OTL Services as there are features.</span></blockquote>
and:<br>
<blockquote type="cite"><span style="color: rgb(51, 51, 51);
font-size: 14px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: 21px;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; word-spacing: 0px; display: inline !
important; float: none; background-color: rgb(255, 255, 255);">Regardless
of the model an application chooses for supporting layout of
complex scripts, Uniscribe requires a fixed order for executing
features within a run of text to consistently obtain the proper
basic form. This is achieved by calling features one-by-one in
the standard order listed below.</span></blockquote>
and finally the list of features, in order: ccmp, isol, fina, medi,
init, rlig, calt, liga, dlig, cswh, mset, curs, kern, mark, and mkmk.<br>
<br>
(This is, of course, not what the OT spec says should be done, but
that is water under the bridge and we are stuck with Uniscribe
compatibility)<br>
<br>
What I'd like to know is what is the equivalent sequence for
Harfbuzz? Presumably Harfbuzz implements additional features (clig,
locl, rtla, rtlm and salt come to mind) and it would be helpful to
know where they fall in the sequence. Also, where do things like
Stylistic Sets (ssxx) and Character Variants (cvxx) fall in this
list?<br>
<br>
(And while this post is about Arabic, presumably other scripts have
similar needs).<br>
<br>
Thanks for any help you can provide,<br>
<br>
Bob<br>
<br>
<br>
<br>
</body>
</html>