<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>