<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-slevinski-formal-signwriting-09" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.9.0 -->
  <front>
    <title abbrev="FSW">Formal SignWriting</title>
    <seriesInfo name="Internet-Draft" value="draft-slevinski-formal-signwriting-09"/>
    <author fullname="Steve Slevinski" initials="S." surname="Slevinski">
      <organization>www.sutton-signwriting.io</organization>
      <address>
        <email>slevinski@signwriting.org</email>
      </address>
    </author>
    <date day="30" month="January" year="2022"/>
    <area>General</area>
    <workgroup>Sutton-Slevinski Collaboration</workgroup>
    <keyword>script</keyword>
    <keyword>encoding</keyword>
    <keyword>model</keyword>
    <keyword>Cartesian</keyword>
    <keyword>SignWriting</keyword>
    <keyword>plain text</keyword>
    <keyword>rich text</keyword>
    <keyword>sign language</keyword>
    <keyword>grammar</keyword>
    <abstract>
      <t>Sutton SignWriting is the universal and complete solution for written sign language, ISO 15924 script code "Sgnw".
      It has been applied by a wide and deep international community of sign language users.
      Sutton SignWriting is an international standard for writing sign languages by hand or with computers. 
      From education to research, from entertainment to religion, SignWriting has proven useful because people are using it to write signed languages.
      </t>
      <t>Formal SignWriting is one particular computerized design for Sutton SignWriting that envisions a sign as a two part word.
      Each word is written as a string of characters that can be recognized and processed by regular expressions.
      The design has been optimized for display, searching, sorting, text flow, and other character processing.
      </t>
      <t>Where as American Sign Language is a natural language, Formal SignWriting is a formal language.
      A formal language uses words and punctuation to form text.
      Each word is expressed as a string of characters.
      Well-formed words are governed by the structural rules of the grammar.
      A formal language is useful in mathematics, computer science, and linguistics.
      </t>
      <t>This memo defines a conceptual character encoding map for the Internet community.  It is published for reference, examination, implementation, and evaluation.  Distribution of this memo is unlimited.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="sutton_signwriting" numbered="true" toc="default">
      <name>Sutton SignWriting</name>
      <artset anchor="flow-chart">
        <artwork type="ascii-art">
M548x535S10019452x474S10011476x465S2ea04481x501S2ea48459x509S29b0b514x500S15a0a515x473S1eb20524x489
        </artwork>
        <artwork type="svg">
        <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="96" height="70">
          <g transform="translate(0,9)" ><g transform="scale(0.913 0.938) translate(32 10.667) rotate(45) scale(-1,1)">   <rect id="index" x="13" y="0" width="2" height="15" fill="#000000" />   <rect id="base" x="0" y="15" width="15" height="15" fill="#000000" />   <rect id="fill" x="2" y="17" width="6" height="11" fill="#ffffff" /> </g></g>
          <g transform="translate(24,0)" ><g transform="scale(0.913 0.938) translate(-9 10.667) rotate(315)">   <rect id="index" x="13" y="0" width="2" height="15" fill="#000000" />   <rect id="base" x="0" y="15" width="15" height="15" fill="#000000" />   <rect id="fill" x="2" y="17" width="6" height="11" fill="#ffffff" /> </g></g>
          <g transform="translate(29,36)" ><g>   <path id="path3279" d="M 3,13 15,13 9,19 3,13 z" fill="#000000" />   <path id="path3299" d="M 4.5,25 C 2.014719,25 0,21.19442 0,16.5 l 0,-8 C 0,3.80558 2.014719,0 4.5,0 l 2,0 c 2.0222634,0 3.714019,2.532033 4.28125,6 L 6.84375,6 C 6.4981672,3.100332 5.5853404,1 4.5,1 3.119288,1 2,4.357864 2,8.5 l 0,8 c 0,4.142136 1.119288,7.5 2.5,7.5 0.957484,0 1.7695582,-1.623991 2.1875,-4 l 3.90625,0 C 9.8882378,22.939596 8.3205237,25 6.5,25 l -2,0 z" fill="#000000" />   <path id="path2814" d="M 3,7 15,7 9,13 3,7 z" fill="#000000" /> </g></g>
          <g transform="translate(7,44)" ><g transform="scale(0.938 1)">   <path id="path3279" d="M 10.5,6.5 16,12 5,12 10.5,6.5 z m 0,1.4375 L 7.4375,11 13.5625,11 10.5,7.9375 z" fill="#000000" />   <path id="path3299" d="m 6.5,0 c 1.9203792,0 3.517387,2.2990931 4.15625,5.5 l -1.875,0 C 8.3959949,2.8580704 7.5224385,1 6.5,1 5.119288,1 4,4.357864 4,8.5 l 0,8 c 0,4.142136 1.119288,7.5 2.5,7.5 1.0853404,0 1.9981672,-2.100332 2.34375,-5 l 1.9375,0 C 10.214019,22.467967 8.5222634,25 6.5,25 l -2,0 C 2.014719,25 0,21.19442 0,16.5 l 0,-8 C 0,3.80558 2.014719,0 4.5,0 l 2,0 z" fill="#000000" />   <path id="path5184" d="M 10.5,7.9375 13.5625,11 7.4375,11 10.5,7.9375 z" fill="#ffffff" />   <path id="path3210" d="M 10.5,12.5 16,18 5,18 10.5,12.5 z m 0,1.4375 L 7.4375,17 13.5625,17 10.5,13.9375 z" fill="#000000" />   <path id="path3212" d="M 10.5,13.9375 13.5625,17 7.4375,17 10.5,13.9375 z" fill="#ffffff" /> </g></g>
          <g transform="translate(62,35)" ><g transform="scale(0.857 0.938) translate(24 37.333) rotate(135) scale(-1,1)">   <path id="path3051" d="M 12,0 0,0 0,12 12,0 z" fill="#000000" />   <path id="path2853" d="M 4.59375 7.40625 L 3.1875 8.8125 L 9.40625 15.0625 C 9.7681788 15.424429 10 15.916466 10 16.46875 C 10 17.021034 9.7681788 17.513071 9.40625 17.875 L 3.9375 23.34375 C 2.127856 25.153394 1 27.644826 1 30.40625 C 1 33.167673 2.127856 35.659106 3.9375 37.46875 L 9.46875 43 L 10.875 41.59375 L 5.34375 36.0625 C 3.896035 34.614785 3 32.615389 3 30.40625 C 3 28.197111 3.896035 26.197715 5.34375 24.75 L 10.84375 19.3125 C 11.567608 18.588642 12 17.57332 12 16.46875 C 12 15.36418 11.567608 14.348858 10.84375 13.625 L 4.59375 7.40625 z " fill="#000000" />   <path id="path2851" d="M 7.4375 4.5625 L 4.59375 7.40625 L 10.84375 13.625 C 11.567608 14.348858 12 15.36418 12 16.46875 C 12 17.57332 11.567608 18.588642 10.84375 19.3125 L 5.34375 24.75 C 3.896035 26.197715 3 28.197111 3 30.40625 C 3 32.615389 3.896035 34.614785 5.34375 36.0625 L 10.875 41.59375 L 13.71875 38.75 L 8.15625 33.25 C 7.432392 32.526142 7 31.51082 7 30.40625 C 7 29.30168 7.432392 28.286358 8.15625 27.5625 L 13.65625 22.125 C 15.103965 20.677285 16 18.677889 16 16.46875 C 16 14.259611 15.103965 12.260215 13.65625 10.8125 L 7.4375 4.5625 z " fill="#ffffff" />   <path id="rect2816" d="M 8.8125 3.1875 L 7.4375 4.5625 L 13.65625 10.8125 C 15.103965 12.260215 16 14.259611 16 16.46875 C 16 18.677889 15.103965 20.677285 13.65625 22.125 L 8.15625 27.5625 C 7.432392 28.286358 7 29.30168 7 30.40625 C 7 31.51082 7.432392 32.526142 8.15625 33.25 L 13.71875 38.75 L 15.125 37.34375 L 9.59375 31.8125 C 9.231821 31.450571 9 30.958534 9 30.40625 C 9 29.853966 9.231821 29.361929 9.59375 29 L 15.0625 23.53125 C 16.872144 21.721606 18 19.230173 18 16.46875 C 18 13.707326 16.872144 11.215894 15.0625 9.40625 L 8.8125 3.1875 z " fill="#000000" /> </g></g>
          <g transform="translate(63,8)" ><g transform="translate(27 12) rotate(90) scale(-1,1)">   <path id="base" d="M 6,0 0,6 0,27 12,27 12,6 6,0 z" fill="#000000" />   <path id="fill" d="m 6,2.8125 -4,4 L 2,25 l 8,0 0,-18.1875 -4,-4 z" fill="#ffffff" /> </g></g>
          <g transform="translate(72,24)" ><g>   <rect id="base" x="9" y="4" width="15" height="15" fill="#000000" />   <path id="index" d="M 5 0 C 0 0 0 5 0 5 L 2 5 C 2 2 5 2 5 2 L 6 2 C 9 2 9 5 9 5 L 9 4 L 10.90625 4 C 10.281867 0.011802266 6 0 6 0 L 5 0 z " fill="#000000" />   <path id="thumb" d="M 0 5 C 0 10 5 10 5 10 L 6 10 C 7.328125 10 8.2837334 9.6431503 9 9.125 L 9 5 C 9 8 6 8 6 8 L 5 8 C 2 8 2 5 2 5 L 0 5 z " fill="#000000" /> </g></g>
        </svg>
        </artwork>
      </artset>
      <t><u format="num-lit">𝠃𝤶𝤩񀀚𝣖𝣬񀀒𝣮𝣣񋟅𝣳𝤇񋠉𝣝𝤏񉨬𝤔𝤆񂇋𝤕𝣫񅡁𝤞𝣻</u></t>
      <t>Sutton SignWriting is the universal and complete solution for written sign language.  It has been applied by a wide and deep international community of sign languages including: 
      American Sign Language, Arabian Sign Languages, Australian Sign Language, Bolivian Sign Language, Brazilian Sign Language, British Sign Language, Catalan Sign Language, Colombian Sign Language, 
      Czech Sign Language, Danish Sign Language, Dutch Sign Language, Ethiopian Sign Language, Finnish Sign Language, Flemish Sign Language, French-Belgian Sign Language, French Sign Language, German Sign Language,
      Greek Sign Language, Irish Sign Language, Italian Sign Language, Japanese Sign Language, Malawi Sign Language, Malaysian Sign Language, Maltese Sign Language, Mexican Sign Language, Nepalese Sign Language, 
      New Zealand Sign Language, Nicaraguan Sign Language, Norwegian Sign Language, Peruvian Sign Language, Philippines Sign Language, Polish Sign Language, Portuguese Sign Language, Quebec Sign Language, 
      South African Sign Language, Spanish Sign Language, Swedish Sign Language, Swiss Sign Language, Taiwanese Sign Language, and Tunisian Sign Language.
      </t>
      <t>Sutton SignWriting is an international standard for writing sign languages by hand or with computers. 
      From education to research, from entertainment to religion, SignWriting has proven useful because people are using it to write signed languages.
      </t>
      <section anchor="script" numbered="true" toc="default">
        <name>Script</name>
        <t>Sign language is vastly different than spoken language.
        Instead of the sequential sounds of the voice, there is a 3-dimensional space with simultaneous action. 
        Sutton SignWriting creates 2-dimensional writing that is visually iconic and full of featural information. 
        This is true on the symbol level and on the sign level. 
        A symbol represents phonemic information and is full of featural information to better understand the phonemes of the symbols. 
        A sign is a 2-dimensional arrangement of symbols and is full of featural information to better understand the morphemes of the signs. 
        </t>
        <t>Punctuation is represented by a single symbol and separates a series of signs into structured sentences.  
        Line breaks should not occur before punctuation.
        </t>
        <t>When written vertically, SignWriting can use 3 different lanes: left, middle, and right. 
        The middle lane is the default lane and punctuation is always used in the middle lane. 
        No matter the lane, the center of a sign is aligned with the center of the lane.
        The left and right lanes are used to represent body weight shifts and are represented by a horizontal offset from the middle lane. 
        Body weight shifts are important to the grammar of sign languages, used for two different grammatical aspects: 
        1) role shifting during sign language storytelling, and 2) spatial comparisons of two items under discussion. 
        One "role" or "item" is placed on the right side of the body (right lane), and the other on the left side of the body (left lane), and the weight shifts back and forth between the two, with the narrator in the middle (middle lane). 
        </t>
      </section>
      <section anchor="sutton_symbols" numbered="true" toc="default">
        <name>Symbols</name>
        <t>The Sutton SignWriting Symbols are the building blocks of Sutton SignWriting.
        The symbols are arranged in 2 dimensions to create the sign images.
        The symbols are organized with a 16-bit coded character set and a layered hierarchy.
        The symbols are defined in the International SignWriting Alphabet 2010 (ISWA 2010).
        The ISWA 2010 is a product of the Sutton-Slevinski collaboration.
        </t>
      </section>
    </section>
    <section anchor="formal_signwriting" numbered="true" toc="default">
      <name>Formal SignWriting</name>
      <t>Formal SignWriting is one particular computerized encoding for Sutton SignWriting.
      The design is based on character processing with regular expressions.
      With Formal SignWriting, each sign is written as a two-part word of time and space.
      </t>
      <t>Where as American Sign Language is a natural language, Formal SignWriting is a formal language.
      A formal language uses words and punctuation to form text.
      Each word is expressed as a string of characters.
      Well-formed words are governed by the structural rules of the grammar.
      A formal language is useful in mathematics, computer science, and linguistics.
      </t>
      <section anchor="design_principles" numbered="true" toc="default">
        <name>Design Principles</name>
        <t>Formal SignWriting was created using four design principles: completeness, universality, empowerment, and possibility.
        </t>
        <section anchor="complete" numbered="true" toc="default">
          <name>Complete</name>
          <t>Sutton SignWriting is a complex script with unique requirements and processing.
          Formal SignWriting supports all of the structures inherent to the script.
          </t>
        </section>
        <section anchor="universal" numbered="true" toc="default">
          <name>Universal</name>
          <t>Sutton SignWriting can be used to write any sign language, natural or constructed.
          Formal SignWriting supports all sign languages without requiring the addition of new characters or updated fonts.
          Whereas chinese encoded text is an ever expanding set of ideographs which require new fonts and possiblly new characters,
          SignWriting uses a closed set for characters with completed fonts that do not need to be updated.
          </t>
        </section>
        <section anchor="empowering" numbered="true" toc="default">
          <name>Empowering</name>
          <t>Sutton SignWriting is flexible enough to let each writer decide how they want to write their signs.
          Formal SignWriting enable the writers to decide for themselves the spelling of their respective signs.
          </t>
        </section>
        <section anchor="possible" numbered="true" toc="default">
          <name>Possible</name>
          <t>Sutton SignWriting is a practical script that makes it possible to write sign language.
          Formal SignWriting is a practical encoding because it works with existing font technologies across operating systems.
          </t>
        </section>
      </section>
      <section anchor="characters" numbered="true" toc="default">
        <name>Characters</name>
        <t>Any sign can be written as a string of characters.
        Formal SignWriting has two sets of characters that can be used: Formal SignWriting in ASCII (FSW) and SignWriting in Unicode (SWU).
        These sets are isomorphic with an easy bi-directional conversion between the two sets.
        </t>
        <table align="left" anchor="table_other_codes">
          <thead>
            <tr>
              <th align="left">Description</th>
              <th align="left">FSW Characters</th>
              <th align="left">SWU Characters</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Sequence Marker</td>
              <td align="left">A</td>
              <td align="left">U+1D800</td>
            </tr>
            <tr>
              <td align="left">Signbox Markers</td>
              <td align="left">B, L, M, R</td>
              <td align="left">U+1D801 to U+1D804</td>
            </tr>
            <tr>
              <td align="left">Numbers</td>
              <td align="left">250 to 749</td>
              <td align="left">U+1D80C to U+1D9FF</td>
            </tr>
            <tr>
              <td align="left">Symbols</td>
              <td align="left">S10000 to S38b07</td>
              <td align="left">U+40001 to U+4F428</td>
            </tr>
          </tbody>
        </table>
        <section anchor="fsw" numbered="true" toc="default">
          <name>Formal SignWriting in ASCII (FSW)</name>
          <t>Formal SignWriting in ASCII (FSW) was released in January 2012 and has been stable since.
          FSW only uses characters from the ASCII subset of "ABLMRS0123456789xabcdef".
          </t>
        </section>
        <section anchor="swu" numbered="true" toc="default">
          <name>SignWriting in Unicode (SWU)</name>
          <t>SignWriting in Unicode (SWU) was first published in October 2016 and officially submitted to the Unicode Technical Committee in July 2017.
          SWU is not part of the Unicode standard.
          </t>
          <t>SignWriting in Unicode (SWU) is an experimental Unicode design that is supported by the Sutton SignWriting resources.
          This alternate encoding overwrites the Sutton SignWriting block in Unicode and uses plane 4 for the SignWriting symbols.
          </t>
        </section>
      </section>
      <section anchor="building" numbered="true" toc="default">
        <name>Building Blocks</name>
        <t>The mathematical words of Formal SignWriting are plain text strings of characters from either character set: Formal SignWriting in ASCII (FSW) or SignWriting in Unicode (SWU). 
        </t>
        <section anchor="regex" numbered="true" toc="default">
          <name>Regular Expressions</name>
          <t>Regular Expressions define string matching criteria.
          Regular Expressions offer fast processing and wide support on the various platforms.
          </t>
          <t>Formal SignWriting is defined with regular expressions.
          Formal languages and regular expressions are used to solve fundamental problems.
          </t>
          <t keepWithNext="true">Regular Expression Basics</t>
          <table align="left" anchor="table_regex">
            <thead>
              <tr>
                <th align="left">Characters</th>
                <th align="left">Description</th>
                <th align="left">Example</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">*</td>
                <td align="left">Match a literal 0 or more times </td>
                <td align="left">ABC* matches AB, ABC, ABCC, ...</td>
              </tr>
              <tr>
                <td align="left">+ </td>
                <td align="left">Match a literal 1 or more times </td>
                <td align="left">ABC+ matches ABC, ABCC, ABCCC, ...</td>
              </tr>
              <tr>
                <td align="left">? </td>
                <td align="left">Match a literal 0 or 1 times </td>
                <td align="left">ABC? matches AB or ABC</td>
              </tr>
              <tr>
                <td align="left">{#} </td>
                <td align="left">Match a literal "#" times </td>
                <td align="left">AB{2} matches ABB</td>
              </tr>
              <tr>
                <td align="left">[ ] </td>
                <td align="left">Match any single literal from a list </td>
                <td align="left">[ABC] matches A, B, or C</td>
              </tr>
              <tr>
                <td align="left">[ - ] </td>
                <td align="left">Match any single literal in a range </td>
                <td align="left">[A-C] matches A, B, or C</td>
              </tr>
              <tr>
                <td align="left">( ) </td>
                <td align="left">Creates a group for matching </td>
                <td align="left">A(BC)+ matches ABC, ABCBC, ABCBCBC, ...</td>
              </tr>
              <tr>
                <td align="left">( | ) </td>
                <td align="left">Matches one of several alternatives </td>
                <td align="left">(AB|BC|CD) will match AB, BC, or CD</td>
              </tr>
              <tr>
                <td align="left">(?: ) </td>
                <td align="left">Creates a non-capturing group </td>
                <td align="left">A(?:BC) will match ABC as one group</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="tokens" numbered="true" toc="default">
          <name>Token Patterns</name>
          <t>The Formal SignWriting encoding model makes explicit those features which can be effectively and efficiently processed. 
          The mathematical names are structured with 11 different tokens.  
          They can be grouped in 4 layers:  the 5 structural makers (A, B, L, M, R), 
          the 3 base symbol ranges (w, s, P), 
          the 2 modifier indexes (i, o), and the numbers (n).
          </t>
          <t keepWithNext="true">The Tokens of Formal SignWriting</t>
          <table align="left" anchor="table_tokens_structural">
            <thead>
              <tr>
                <th align="left">Token</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">A</td>
                <td align="left">Sequence Marker</td>
              </tr>
              <tr>
                <td align="left">B</td>
                <td align="left">Signbox Marker</td>
              </tr>
              <tr>
                <td align="left">L</td>
                <td align="left">Left Lane Marker</td>
              </tr>
              <tr>
                <td align="left">M</td>
                <td align="left">Middle Lane Marker</td>
              </tr>
              <tr>
                <td align="left">R</td>
                <td align="left">Right Lane Marker</td>
              </tr>
              <tr>
                <td align="left">w</td>
                <td align="left">Writing BaseSymbols</td>
              </tr>
              <tr>
                <td align="left">s</td>
                <td align="left">Detailed Location BaseSymbols</td>
              </tr>
              <tr>
                <td align="left">P</td>
                <td align="left">Punctuation BaseSymbols</td>
              </tr>
              <tr>
                <td align="left">i</td>
                <td align="left">Fill Modifiers</td>
              </tr>
              <tr>
                <td align="left">o</td>
                <td align="left">Rotation Modifiers</td>
              </tr>
              <tr>
                <td align="left">n</td>
                <td align="left">Number from 250 to 749</td>
              </tr>
            </tbody>
          </table>
          <t>These tokens are used in patterns to form written sign language.
          </t>
        </section>
        <section anchor="symbols" numbered="true" toc="default">
          <name>Symbols</name>
          <t>Symbols can be described with 3 tokens: base symbol, fill modifier, and rotation modifier.</t>
          <t keepWithNext="true">Symbol Tokens</t>
          <table align="left" anchor="table_tokens_symbol">
            <thead>
              <tr>
                <th align="left">Token Pattern</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">w</td>
                <td align="left">Writing BaseSymbols.</td>
              </tr>
              <tr>
                <td align="left">s</td>
                <td align="left">Detailed Location BaseSymbols.</td>
              </tr>
              <tr>
                <td align="left">P</td>
                <td align="left">Punctuation BaseSymbols.</td>
              </tr>
              <tr>
                <td align="left">i</td>
                <td align="left">Fill Modifiers.</td>
              </tr>
              <tr>
                <td align="left">o</td>
                <td align="left">Rotation Modifiers.</td>
              </tr>
              <tr>
                <td align="left">wio</td>
                <td align="left">A writing symbol as 3 tokens of writing base, fill modifier and rotation modifier.  Writing symbols can be used in the spatial signbox or the temporal prefix.</td>
              </tr>
              <tr>
                <td align="left">[ws]io</td>
                <td align="left">A writing symbol or a detailed location symbol as 3 tokens of base, fill modifier, and rotation modifier.  Writing symbols and detail location symbols can be used in the temporal prefix.</td>
              </tr>
              <tr>
                <td align="left">Pio</td>
                <td align="left">A punctuation symbol as 3 tokens of punctuation base, fill modifier, and rotation modifier.  Punctuation symbols divide signs into sentences.</td>
              </tr>
            </tbody>
          </table>
          <t>There are a variety of symbol types that are used for different purposes.
          </t>
          <t keepWithNext="true">Symbol Types and Descriptions</t>
          <table align="left" anchor="table_symbol_type_definition">
            <thead>
              <tr>
                <th align="left">Type</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">all symbols</td>
                <td align="left">All symbols used in Formal SignWriting.</td>
              </tr>
              <tr>
                <td align="left">writing</td>
                <td align="left">Symbols that can be used in the spatial signbox or the temporal prefix.</td>
              </tr>
              <tr>
                <td align="left">hand</td>
                <td align="left">Various handshapes</td>
              </tr>
              <tr>
                <td align="left">movement</td>
                <td align="left">Contact symbols, small finger movements, straight arrows, curved arrows and circles.</td>
              </tr>
              <tr>
                <td align="left">dynamic</td>
                <td align="left">Dynamic symbols are used to give the "feeling" or "tempo" to movement.</td>
              </tr>
              <tr>
                <td align="left">head</td>
                <td align="left">Symbols for the head and face.</td>
              </tr>
              <tr>
                <td align="left">hcenter</td>
                <td align="left">Used to determine the horizontal center of a sign.  Same as the head type.</td>
              </tr>
              <tr>
                <td align="left">vcenter</td>
                <td align="left">Use to determine the vertical center of a sign.  Includes the head and trunk types.</td>
              </tr>
              <tr>
                <td align="left">trunk</td>
                <td align="left">Symbols for torso movement, shoulders, and hips.</td>
              </tr>
              <tr>
                <td align="left">limb</td>
                <td align="left">Symbols for limbs and fingers.</td>
              </tr>
              <tr>
                <td align="left">location</td>
                <td align="left">Detailed location symbols can only be used in the temporal prefix.</td>
              </tr>
              <tr>
                <td align="left">punctuation</td>
                <td align="left">Punctual symbols are used to divide signs into sentences.</td>
              </tr>
            </tbody>
          </table>
          <t>Symbol types occur in specific ranges depending on the characters involved.  
          </t>
          <t keepWithNext="true">Symbol Types and Ranges</t>
          <table align="left" anchor="table_ranges_symbol_type">
            <thead>
              <tr>
                <th align="left">Type</th>
                <th align="left">FSW</th>
                <th align="left">SWU</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">all symbols</td>
                <td align="left">S100 - S38b</td>
                <td align="left">U+40001 -U+4F480</td>
              </tr>
              <tr>
                <td align="left">writing</td>
                <td align="left">S100 - S37e</td>
                <td align="left">U+40001 -U+4EFA0</td>
              </tr>
              <tr>
                <td align="left">hand</td>
                <td align="left">S100 - 204</td>
                <td align="left">U+40001 -U+461E0</td>
              </tr>
              <tr>
                <td align="left">movement</td>
                <td align="left">S205 - S2f6</td>
                <td align="left">U+461E1 -U+4BCA0</td>
              </tr>
              <tr>
                <td align="left">dynamic</td>
                <td align="left">S2f7 - S2fe</td>
                <td align="left">U+4BCA1 -U+4BFA0</td>
              </tr>
              <tr>
                <td align="left">head</td>
                <td align="left">S2ff - S36c</td>
                <td align="left">U+4BFA1 -U+4E8E0</td>
              </tr>
              <tr>
                <td align="left">hcenter</td>
                <td align="left">S2ff - S36c</td>
                <td align="left">U+4BFA1 -U+4E8E0</td>
              </tr>
              <tr>
                <td align="left">vcenter</td>
                <td align="left">S2ff - S375</td>
                <td align="left">U+4BFA1 -U+4EC40</td>
              </tr>
              <tr>
                <td align="left">trunk</td>
                <td align="left">S36d - S375</td>
                <td align="left">U+4E8E1 -U+4EC40</td>
              </tr>
              <tr>
                <td align="left">limb</td>
                <td align="left">S376 - S37e</td>
                <td align="left">U+4EC41 -U+4EFA0</td>
              </tr>
              <tr>
                <td align="left">location</td>
                <td align="left">S37f - S386</td>
                <td align="left">U+4EFA1 -U+4F2A0</td>
              </tr>
              <tr>
                <td align="left">punctuation</td>
                <td align="left">S387 - S38b</td>
                <td align="left">U+4F2A1 -U+4F480</td>
              </tr>
            </tbody>
          </table>
          <section anchor="sym_fsw" numbered="true" toc="default">
            <name>FSW Symbols</name>
            <t>Symbol keys are 6 characters long.  The first character of a symbol key is always "S".
          The next 3 characters identify the symbol base.  
          The last two characters identify the fill and rotation modifiers respectively.
            </t>
            <t keepWithNext="true">Symbol Key Definition</t>
            <table align="left" anchor="table_definition_symbol_key">
              <thead>
                <tr>
                  <th align="left">Regular Expression</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">S</td>
                  <td align="left">Start of symbol key</td>
                </tr>
                <tr>
                  <td align="left">[123][0-9a-f]{2}</td>
                  <td align="left">Symbol key base</td>
                </tr>
                <tr>
                  <td align="left">[0-5]</td>
                  <td align="left">Fill modifier</td>
                </tr>
                <tr>
                  <td align="left">[0-9a-f]</td>
                  <td align="left">Rotation modifier</td>
                </tr>
                <tr>
                  <td align="left">S[123][0-9a-f]{2}[0-5][0-9a-f]</td>
                  <td align="left">Symbol key definition</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="sym_swu" numbered="true" toc="default">
            <name>SWU Symbols</name>
            <t>The 37,811 symbols of the International SignWriting Alphabet 2010 are uniquely identified with Unicode characters in the range U+40001 to U+4F428.
            </t>
            <t>A simple formula transforms a symbol key into a codepoint.  Given a symbol key as variable "key", in JavaScript the function is defined as:
            </t>
            <ul empty="true" spacing="normal">
              <li>var code = ((parseInt(key.slice(1,4),16) - 256) * 96) + ((parseInt(key.slice(4,5),16))*16) + parseInt(key.slice(5,6),16) + 1;
            </li>
            </ul>
          </section>
        </section>
        <section anchor="numbers" numbered="true" toc="default">
          <name>Numbers</name>
          <t> The numbers encode the ruler principle with characters.
          The ruler principle is built in automatically for scripts written sequentially in one dimension.  
          The number characters are needed to specify the spatial relationship between symbols.
          </t>
          <t>
          Both FSW and SWU use a restricted range of 500 numbers between 250 and 749.
          </t>
          <t>Cartesian Coordinates can be described with 2 tokens: number and number.
          These numbers represent the X and Y coordinates respectively.
          </t>
          <t keepWithNext="true">Coordinate Tokens</t>
          <table align="left" anchor="table_tokens_coordinates">
            <thead>
              <tr>
                <th align="left">Token Patterns</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">n</td>
                <td align="left">Number from 250 to 749</td>
              </tr>
              <tr>
                <td align="left">nn</td>
                <td align="left">Coordinate with X and Y values as 2 numbers</td>
              </tr>
            </tbody>
          </table>
          <section anchor="num_fsw" numbered="true" toc="default">
            <name>FSW Numbers</name>
            <t>Formal SignWriting in ASCII has two definitions for a number.  
          The more general definition simply defines 3 digits together with a potential range of 1000.
          A more explicit definition correctly restricts the numbers to 500 possibilities in the 250 to 749 range.  The general coordinate definition is adequate for processing.
            </t>
            <t>An X,Y coordinate is created by using the letter "x" to join two FSW numbers.
            </t>
            <dl newline="false" spacing="normal">
              <dt>General 3 digit number definition:</dt>
              <dd>[0-9]{3}</dd>
              <dt>General coordinate definition:</dt>
              <dd>[0-9]{3}x[0-9]{3}</dd>
              <dt>Explicit number definition from 250 to 749:</dt>
              <dd>(2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0-9])</dd>
              <dt>Explicit coordinate definition:</dt>
              <dd>(2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0-9])x(2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0-9])</dd>
            </dl>
          </section>
          <section anchor="num_swu" numbered="true" toc="default">
            <name>SWU Numbers</name>
            <t>SignWriting in Unicode has a single definition for a number.
          Each number is uniquely identified with Unicode characters in the range U+1D80C to U+1D9FF.
          A coordinate is defined as 2 numbers together.
            </t>
          </section>
        </section>
      </section>
      <section anchor="two_part_word" numbered="true" toc="default">
        <name>Two-Part Word</name>
        <t>Formal SignWriting envisions a sign as a two-part word of time and space.
        The two-dimensional appearance of a sign is written in the spatial signbox as an objective arrangement.
        The one-dimensional order of a sign is written in the temporal prefix as a subjective analysis.
        </t>
        <section anchor="spatial_signbox" numbered="true" toc="default">
          <name>Spatial Signbox</name>
          <t>The spatial signbox is a two-dimensional cluster of symbols.
          The position of each symbol is determined by the writer and defined using Cartesian Coordinates that represent the top-left of the symbol image.
          Formal numbers range from 250 to 749.
          </t>
          <t>2-dimensional space does not have a normative 1-dimensional order.  
          When symbols overlap, the relative order of the overlapping symbols is important.
          Symbols written first appear underneath symbols that are written later.
          Otherwise, the exact string order of the spatial symbols is unpredictable.
          The spatial signbox is neither formatting nor style and represents meaning that is beyond the temporal prefix.
          </t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
           Y Axis
             | 250
             | 
             |
             |
             |
             |
X Axis       |
  -----------+------------
  250        |         749
             |
             |
             |
             |
             |
             | 749
            ]]></artwork>
          <t>
          </t>
          <t>The Spatial Signbox can be described with 8 tokens.
          </t>
          <t keepWithNext="true">Spatial Signbox Tokens</t>
          <table align="left" anchor="table_tokens_signbox">
            <thead>
              <tr>
                <th align="left">Token Pattern</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">B</td>
                <td align="left">Signbox Marker</td>
              </tr>
              <tr>
                <td align="left">L</td>
                <td align="left">Left Lane Marker</td>
              </tr>
              <tr>
                <td align="left">M</td>
                <td align="left">Middle Lane Marker</td>
              </tr>
              <tr>
                <td align="left">R</td>
                <td align="left">Right Lane Marker</td>
              </tr>
              <tr>
                <td align="left">w</td>
                <td align="left">Writing BaseSymbols</td>
              </tr>
              <tr>
                <td align="left">i</td>
                <td align="left">Fill Modifiers</td>
              </tr>
              <tr>
                <td align="left">o</td>
                <td align="left">Rotation Modifiers</td>
              </tr>
              <tr>
                <td align="left">n</td>
                <td align="left">Number from 250 to 749</td>
              </tr>
              <tr>
                <td align="left">wio</td>
                <td align="left">A writing symbol as 3 tokens of writing base, fill modifier and rotation modifier</td>
              </tr>
              <tr>
                <td align="left">nn</td>
                <td align="left">Coordinate with X and Y values as 2 numbers</td>
              </tr>
              <tr>
                <td align="left">wionn</td>
                <td align="left">A spatial symbol as 5 tokens, with 3 tokens for a writing symbol and 2 tokens for coordinates of top left placement</td>
              </tr>
              <tr>
                <td align="left">(wionn)*</td>
                <td align="left">Zero or more spatial symbols</td>
              </tr>
              <tr>
                <td align="left">Bnn(wionn)*</td>
                <td align="left">A Signbox with a preprocessed maximum coordinate and a list of spatial symbols used for horizontal writing</td>
              </tr>
              <tr>
                <td align="left">[LMR]</td>
                <td align="left">A lane marker: either left, middle or right.</td>
              </tr>
              <tr>
                <td align="left">[LMR]nn(wionn)*</td>
                <td align="left">A Signbox in either the left, middle, or right lane with a preprocessed maximum coordinate and a list of spatial symbols used for vertical writing</td>
              </tr>
            </tbody>
          </table>
          <t>The spatial signbox is assigned to a lane, has a preprocessed maximum coordinate and zero or more writing symbols with X and Y coordinates for each symbol.
          </t>
          <section anchor="bounding" numbered="true" toc="default">
            <name>Bounding Box</name>
            <t>The symbols do not have a consistent width or height.
            The center of a symbol can be safely assumed to be at half-width and half-height.
            A bounding box for a symbol is based on the symbol width and height.
            Each symbol has a <xref target="SWFontSource" format="default">defined width and height</xref> in a text file with 37,811 lines.
            Alternately, the symbol width and height can be calculated by analyzing the glyphs in a TTF font file, using JavaScript or other language.
            </t>
            <t>The bounding box of a sign is a tight box around the symbols.
            The bounding box is used to determine the width and height of a sign.
            </t>
            <t>The bounding box of a sign consists of four values: Minimum X, Minimum Y, Maximum X and Maximum Y.
            The values of the bounding box is taken straight from the coordinates in a Formal SignWriting word.
            </t>
          </section>
          <section anchor="max_coord" numbered="true" toc="default">
            <name>Maximum Coordinate</name>
            <t>The maximum coordinate for a Signbox is pre-calculated to simplify layout for width, height, and center.
            For each symbol, the width of height of that symbol is added to the coordinate position of that symbol.
            These new coordinate values represent the bottom-right coordinate of each symbol bounding box.
            The maximum X value is joined with the maximum Y value to determine the maximum coordinate.
            </t>
          </section>
          <section anchor="centering" numbered="true" toc="default">
            <name>Centering a Sign</name>
            <t>To simplify layout and improve 2-dimensional searching, every sign has a normalized center based on symbol type, size, and mathematical formula.
            The vertical center is based on the center of the bounding box around the head symbols.
            The horizontal center is based on the center of the bounding box around the head and trunk symbols.
            If a sign doesn't contain head or trunk symbols, then the bounding box of all symbols is used.
            For the symbol ranges see <xref target="table_ranges_symbol_type" format="default"/>
            </t>
            <t>Once the center of a sign has been determined, the symbols are moved so that the center is coordinate 500,500.
            </t>
          </section>
        </section>
        <section anchor="temporal_prefix" numbered="true" toc="default">
          <name>Temporal Prefix</name>
          <t>The temporal prefix is a one-dimensional list of symbols that is written by an author.
          The arrangement of the symbols is based on a particular theory of sorting.
          The order of the symbols in the temporal prefix is significant because sorting is possible with a binary string comparison.
          The temporal prefix is neither formatting nor style and represents meaning not found in the spatial signbox.
          </t>
          <t>Signs are written in 2-dimensional space which does not have a normative 1-dimensional order.
        Any 1-dimensional order of 2-dimensional space is subjective.  
        Some 1-dimensional orders may be canonical according to a particular theory, but there are a variety of theories on setting a 1-dimensional order.
          </t>
          <t>The temporal prefix will use the same symbols that are used in the spatial signbox, but it does not need to use all of them and it is not limited to only those symbols.
        The temporal prefix is a list of writing symbols and/or detailed location symbols that identify temporal order and additional analysis.
        A valid sequence must contain at least one symbol and can not contain punctuation.  
          </t>
          <t>The temporal prefix allows for sorting that is universally supported through binary string comparison.
          </t>
          <t>There are several theories on the best way to structure a temporal prefix.
        The most productive is based on the SignSpelling Sequence theory of Valerie Sutton.  
        A temporal prefix is structured as a series of beginning handshapes, followed by transitional movements and dynamics that lead to the next set of handshapes.
        This pattern continues until the end of the sign.
        The last section of the temporal prefix should contain symbols of type "head", "trunk", and "limb".
          </t>
          <t>Detailed location symbols of type "location" can be used in a temporal prefix, but are rarely (if ever) needed for general writing.
          </t>
          <t>A temporal prefix can be described with 5 tokens.
          </t>
          <t keepWithNext="true">Temporal Prefix Tokens</t>
          <table align="left" anchor="table_tokens_sequence">
            <thead>
              <tr>
                <th align="left">Token Patterns</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">A</td>
                <td align="left">Sequence Marker</td>
              </tr>
              <tr>
                <td align="left">w</td>
                <td align="left">Writing BaseSymbols</td>
              </tr>
              <tr>
                <td align="left">s</td>
                <td align="left">Detailed Location BaseSymbols</td>
              </tr>
              <tr>
                <td align="left">i</td>
                <td align="left">Fill Modifiers</td>
              </tr>
              <tr>
                <td align="left">o</td>
                <td align="left">Rotation Modifiers</td>
              </tr>
              <tr>
                <td align="left">(A([ws]io)+)?</td>
                <td align="left">An optional temporal prefix to be used as a prefix for a Signbox</td>
              </tr>
            </tbody>
          </table>
          <t>The temporal prefix starts with a sequence marker and includes an ordered list of writing symbols and detailed locations.
          </t>
        </section>
      </section>
      <section anchor="styling" numbered="true" toc="default">
        <name>Styling String</name>
        <t>The styling string of Formal SignWriting uses a lite markup to define a variety of styling options.
          The styling string is the same for FSW and SWU.
          The entire sign can be customized for padding, coloring, and size.
          Individual symbols within a sign can be customized for coloring and size.
          For SVG output, class names and IDs can be defined.
          A styling string can be added to the end of any Formal SignWriting string to style a particular sign.
        </t>
        <t>Colors can be written as CSS color names or as color hex values. 
        </t>
        <dl newline="false" spacing="normal">
          <dt>CSS Color Names:</dt>
          <dd>[a-zA-Z]+</dd>
          <dt>Color Hex Values:</dt>
          <dd>[0-9a-fA-F]{3}([0-9a-fA-F]{3})?</dd>
        </dl>
        <t>The styling string is divided into 3 sections: one for the entire sign, one for individual symbols, and one for SVG class names and ID.
          The styling string starts with a single dash, after which is the section about the entire sign.
          A second dash, if present, marks the start of the section about the individual symbols.
          A third dash, if present, marks the start of the section about the SVG class names and ID.
          The order of the styling options is important.
        </t>
        <dl newline="false" spacing="normal">
          <dt>Styling String:</dt>
          <dd>-C?(P[0-9]{2})?(G_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+)_)?(D_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+)(,([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+))?_)?(Z([0-9]+(\.[0-9]+)?|x))?(-(D[0-9]{2}_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+)(,([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+))?_)*)?(--?[_a-zA-Z][_a-zA-Z0-9-]{0,100}( -?[_a-zA-Z][_a-zA-Z0-9-]{0,100})*!([a-zA-Z][_a-zA-Z0-9-]{0,100}!)?)?</dd>
        </dl>
        <section anchor="style_sign" numbered="true" toc="default">
          <name>Entire Sign</name>
          <t>There are several options for styling an entire sign.
          </t>
          <dl newline="false" spacing="normal">
            <dt>C</dt>
            <dd>Colorize</dd>
            <dt>P</dt>
            <dd>Padding</dd>
            <dt>G</dt>
            <dd>Background</dd>
            <dt>D</dt>
            <dd>Detail colors</dd>
            <dt>Z</dt>
            <dd>Zoom level</dd>
          </dl>
          <section anchor="colorize" numbered="true" toc="default">
            <name>Colorize</name>
            <t>Colorizing a sign will set the color of each symbol based on its classification.
            </t>
            <dl newline="false" spacing="normal">
              <dt>Hand</dt>
              <dd>0000CC</dd>
              <dt>Movement</dt>
              <dd>CC0000</dd>
              <dt>Dynamic</dt>
              <dd>FF0099</dd>
              <dt>Head</dt>
              <dd>006600</dd>
              <dt>Body</dt>
              <dd>000000</dd>
              <dt>Detailed Location</dt>
              <dd>884411</dd>
              <dt>Punctuation</dt>
              <dd>FF9900</dd>
            </dl>
            <table align="left" anchor="table_style_colorize">
              <thead>
                <tr>
                  <th align="left">Styling String</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">-C</td>
                  <td align="left">Colorize the symbols of the sign</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="padding" numbered="true" toc="default">
            <name>Padding</name>
            <t>Padding is applied around the entire sign.  A two-digit number is used to set the padding.
            </t>
            <table align="left" anchor="table_style_padding">
              <thead>
                <tr>
                  <th align="left">Styling String</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">-P01</td>
                  <td align="left">A padding of 1 around the sign</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="background" numbered="true" toc="default">
            <name>Background</name>
            <t>By default, the background of a sign is transparent.  
              The background color can be set with a CSS color name or with a color hex value.  
              The color name or value must be surrounded by underscores.
            </t>
            <table align="left" anchor="table_style_background">
              <thead>
                <tr>
                  <th align="left">Styling String</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">-G_lightblue_</td>
                  <td align="left">Background color of light blue.</td>
                </tr>
                <tr>
                  <td align="left">-G_f00_</td>
                  <td align="left">Background color as 3 hex values.</td>
                </tr>
                <tr>
                  <td align="left">-G_ff0000_</td>
                  <td align="left">Background color as 6 hex values.</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="detail_colors" numbered="true" toc="default">
            <name>Detail Colors</name>
            <t>By default, each symbol has a line color of black and a fill color of white.
              The line color for all of the symbols can be set with a CSS color name or with a color hex value.  
              The color name or value must be surrounded by underscores.
              Setting the fill color is optional.  To set the fill color, put a comma and the fill color after the line color but before the closing underscore.
            </t>
            <table align="left" anchor="table_style_detail">
              <thead>
                <tr>
                  <th align="left">Styling String</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">-D_red_</td>
                  <td align="left">Line color of red.</td>
                </tr>
                <tr>
                  <td align="left">-D_red,yellow_</td>
                  <td align="left">Line color of red with a fill color of yellow.</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="zoom" numbered="true" toc="default">
            <name>Zoom Level</name>
            <t>By default, a sign is set to zoom level 1.  The zoom level can be set with an integer or a decimal number.
            </t>
            <t>Alternatively, the zoom level can be set to lower-case 'x', for extendable. 
              The SVG created will not specify the width or height, so that the sign image will fill whatever container it is placed inside.
            </t>
            <table align="left" anchor="table_style_zoom">
              <thead>
                <tr>
                  <th align="left">Styling String</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">-Z2</td>
                  <td align="left">Zoom level of 2</td>
                </tr>
                <tr>
                  <td align="left">-Z15.7</td>
                  <td align="left">Zoom level of 15.7</td>
                </tr>
                <tr>
                  <td align="left">-Zx</td>
                  <td align="left">Zoom level of extendable</td>
                </tr>
              </tbody>
            </table>
          </section>
        </section>
        <section anchor="style_symbols" numbered="true" toc="default">
          <name>Individual Symbols</name>
          <t>There is one option for styling individual symbols.
            Individual symbols are identified by a two-digit number, which identifies the order the symbol appears in the Signbox.
          </t>
          <dl newline="false" spacing="normal">
            <dt>D</dt>
            <dd>Detail colors</dd>
          </dl>
          <section anchor="detail_colors_symbols" numbered="true" toc="default">
            <name>Detail Colors</name>
            <t>By default, each symbol has a line color of black and a fill color of white.
              The line color for an individual symbol can be set with a CSS color name or with a color hex value.  
              The color name or value must be surrounded by underscores.
              Setting the fill color is optional.  To set the fill color, put a comma and the fill color after the line color but before the closing underscore.
            </t>
            <table align="left" anchor="table_style_sym_detail">
              <thead>
                <tr>
                  <th align="left">Styling String</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">--D01_red_</td>
                  <td align="left">First symbol line color of red.</td>
                </tr>
                <tr>
                  <td align="left">--D01_red,yellow_</td>
                  <td align="left">First symbol line color of red with a fill color of yellow.</td>
                </tr>
                <tr>
                  <td align="left">--D01_red_D02_green_</td>
                  <td align="left">First symbol line color of red and second symbol line color of green.</td>
                </tr>
              </tbody>
            </table>
          </section>
        </section>
        <section anchor="classes_and_id" numbered="true" toc="default">
          <name>SVG Class Names and ID</name>
          <t>When using SVG, there are two additional styling options of class names and ID.
          </t>
          <dl newline="false" spacing="normal">
            <dt>{class names}!</dt>
            <dd>SVG Class Names</dd>
            <dt>{ID}!</dt>
            <dd>SVG ID</dd>
          </dl>
          <t>Both class names and ID use a restricted ASCII subset.
          </t>
          <dl newline="false" spacing="normal">
            <dt>class names</dt>
            <dd>-?[_a-zA-Z][_a-zA-Z0-9-]{0,100}( -?[_a-zA-Z][_a-zA-Z0-9-]{0,100})*</dd>
            <dt>ID</dt>
            <dd>[a-zA-Z][_a-zA-Z0-9-]{0,100}</dd>
          </dl>
          <t>Each SVG can be created with a list of class names separated by spaces, ending in an exclamation (!) mark.
              After the class names exclamation mark, an ID can be written followed by another exclamation mark.
          </t>
          <table align="left" anchor="table_style_class_names">
            <thead>
              <tr>
                <th align="left">Styling String</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">---glowing!</td>
                <td align="left">A class name of "glowing"</td>
              </tr>
              <tr>
                <td align="left">---flashing primary!</td>
                <td align="left">Two class names of "flashing" and "primary".</td>
              </tr>
              <tr>
                <td align="left">---!cursor!</td>
                <td align="left">SVG created with an ID of "cursor"</td>
              </tr>
              <tr>
                <td align="left">---flashing!cursor!</td>
                <td align="left">SVG created with a class name of "flashing" and an ID of "cursor"</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="query" numbered="true" toc="default">
        <name>Query Language</name>
        <t>The query language of Formal SignWriting allows for precise searching of signs written in either FSW or SWU.
          A query string is a concise representation for a much larger and detailed set of regular expressions.
          The regular expressions can be used to quickly and accurately search large files and databases containing Formal SignWriting.
        </t>
        <t>A filter and repeat pattern of searching is used as a series of match criteria. 
          A file, database, or text input is searched using a sequence of steps.  
          Each step applies a single match criteria.  Matching results are collated and the next search criteria is applied.  
          The pattern of searching the previous results continues until all regular expressions have been used.
        </t>
        <t>The query language of Formal SignWriting is different for FSW and SWU, but allows for the same searching options.
          Query strings contain three major sections: prefix, signbox, and styling.
          The prefix section and the signbox section mostly use the same elements.
        </t>
        <section anchor="query_sections" numbered="true" toc="default">
          <name>Major Sections</name>
          <t>There are three major sections of the query string: the prefix, the signbox, and the styling string.
          </t>
          <t keepWithNext="true">Query Language Sections</t>
          <table align="left" anchor="table_tokens_query_sections">
            <thead>
              <tr>
                <th align="left">Token</th>
                <th align="left">Name</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Q</td>
                <td align="left">Query marker</td>
                <td align="left">The start of a query string</td>
              </tr>
              <tr>
                <td align="left">P</td>
                <td align="left">Prefix marker</td>
                <td align="left">The searching of the temporal prefix</td>
              </tr>
              <tr>
                <td align="left">X</td>
                <td align="left">Signbox marker</td>
                <td align="left">The searching of the spatial signbox</td>
              </tr>
              <tr>
                <td align="left">Y</td>
                <td align="left">Styling string marker</td>
                <td align="left">Include the styling string in search results</td>
              </tr>
            </tbody>
          </table>
          <t>A query string always starts with the query marker (Q), followed by an optional prefix marker (P), followed by an optional signbox marker (X), followed by an optional styling string marker.
          </t>
          <dl newline="false" spacing="normal">
            <dt>Full query string definition:</dt>
            <dd>QP?X?Y?</dd>
          </dl>
        </section>
        <section anchor="query_common_elements" numbered="true" toc="default">
          <name>Common Elements</name>
          <t>There are several common elements used for searching the prefix and the signbox.
          </t>
          <t keepWithNext="true">Query Common Elements</t>
          <table align="left" anchor="table_tokens_query_common">
            <thead>
              <tr>
                <th align="left">Token</th>
                <th align="left">Name</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">B</td>
                <td align="left">Symbol base marker</td>
                <td align="left">A symbol indicator that doesn't specify fill or rotation</td>
              </tr>
              <tr>
                <td align="left">f</td>
                <td align="left">Fill modifier</td>
                <td align="left">A modifier that specifies a symbol fill</td>
              </tr>
              <tr>
                <td align="left">r</td>
                <td align="left">Rotation modifier</td>
                <td align="left">A modifier that specifies a symbol rotation</td>
              </tr>
              <tr>
                <td align="left">S</td>
                <td align="left">Symbol marker</td>
                <td align="left">A marker that indicates a symbol</td>
              </tr>
              <tr>
                <td align="left">R</td>
                <td align="left">Range marker</td>
                <td align="left">A marker that starts a range definition</td>
              </tr>
              <tr>
                <td align="left">I</td>
                <td align="left">Item marker</td>
                <td align="left">An item can be either a symbol or a range definition</td>
              </tr>
              <tr>
                <td align="left">O</td>
                <td align="left">Or marker</td>
                <td align="left">A marker that connects a series of items</td>
              </tr>
              <tr>
                <td align="left">L</td>
                <td align="left">List marker</td>
                <td align="left">A marker that indicates a list of connected items</td>
              </tr>
            </tbody>
          </table>
          <t>Common definitions used in the temporal prefix and the spatial signbox.
          </t>
          <dl newline="false" spacing="normal">
            <dt>Symbol definition:</dt>
            <dd>S = Bfr</dd>
            <dt>Range definition:</dt>
            <dd>RBB</dd>
            <dt>Item definition:</dt>
            <dd>I = (S|RBB)</dd>
            <dt>List definition:</dt>
            <dd>L = I(OI)*</dd>
          </dl>
        </section>
        <section anchor="query_prefix" numbered="true" toc="default">
          <name>Searching the Temporal Prefix</name>
          <t>Searching the temporal prefix requires two additional tokens.
          </t>
          <t keepWithNext="true">Prefix Elements</t>
          <table align="left" anchor="table_tokens_query_prefix">
            <thead>
              <tr>
                <th align="left">Token</th>
                <th align="left">Name</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">A</td>
                <td align="left">Prefix start marker</td>
                <td align="left">A marker that indicates the start of prefix searching</td>
              </tr>
              <tr>
                <td align="left">T</td>
                <td align="left">Prefix end marker</td>
                <td align="left">A marker that indications the enf of prefix searching</td>
              </tr>
            </tbody>
          </table>
          <t>Definition of temporal prefix searching.
          </t>
          <dl newline="false" spacing="normal">
            <dt>Prefix searching definition:</dt>
            <dd>P = ((AL+)?T)?</dd>
          </dl>
        </section>
        <section anchor="query_signbox" numbered="true" toc="default">
          <name>Searching the Spatial Signbox</name>
          <t>Searching the spatial signbox requires two additional tokens.
          </t>
          <t keepWithNext="true">Signbox Elements</t>
          <table align="left" anchor="table_tokens_query_signbox">
            <thead>
              <tr>
                <th align="left">Token</th>
                <th align="left">Name</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">C</td>
                <td align="left">Coordinate marker</td>
                <td align="left">A marker that indicates a coordinate</td>
              </tr>
              <tr>
                <td align="left">V</td>
                <td align="left">Variance marker</td>
                <td align="left">A marker that indicates a custom variance for location searching</td>
              </tr>
            </tbody>
          </table>
          <t>Definition of spatial signbox searching.
          </t>
          <dl newline="false" spacing="normal">
            <dt>Signbox searching definition:</dt>
            <dd>X = (LC?)*V?</dd>
          </dl>
        </section>
        <section anchor="query_regex" numbered="true" toc="default">
          <name>Regular Expressions</name>
          <section anchor="fswquery_regex" numbered="true" toc="default">
            <name>FSW Query Regular Expressions</name>
            <t keepWithNext="true">FSW Query Elements</t>
            <table align="left" anchor="table_fsw_query_elements">
              <thead>
                <tr>
                  <th align="left">Token</th>
                  <th align="left">Variable</th>
                  <th align="left">Regular Expression</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">Q</td>
                  <td align="left">Q</td>
                  <td align="left">Q</td>
                </tr>
                <tr>
                  <td align="left">B</td>
                  <td align="left">base</td>
                  <td align="left">[123][0-9a-f]{2}</td>
                </tr>
                <tr>
                  <td align="left">f</td>
                  <td align="left">fill</td>
                  <td align="left">[0-5u]</td>
                </tr>
                <tr>
                  <td align="left">r</td>
                  <td align="left">rotation</td>
                  <td align="left">[0-9a-fu]</td>
                </tr>
                <tr>
                  <td align="left">S</td>
                  <td align="left">symbol</td>
                  <td align="left">S${base}${fill}${rotation}</td>
                </tr>
                <tr>
                  <td align="left">R</td>
                  <td align="left">range</td>
                  <td align="left">R${base}${base}</td>
                </tr>
                <tr>
                  <td align="left">I</td>
                  <td align="left">item</td>
                  <td align="left">(?:${symbol}|${range})</td>
                </tr>
                <tr>
                  <td align="left">O</td>
                  <td align="left">or</td>
                  <td align="left">o</td>
                </tr>
                <tr>
                  <td align="left">L</td>
                  <td align="left">list</td>
                  <td align="left">${item}(?:${or}${item})*</td>
                </tr>
                <tr>
                  <td align="left">A</td>
                  <td align="left">A</td>
                  <td align="left">A</td>
                </tr>
                <tr>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                </tr>
                <tr>
                  <td align="left">P</td>
                  <td align="left">prefix</td>
                  <td align="left">(?:${A}(?:${list})+)?${T}</td>
                </tr>
                <tr>
                  <td align="left">C</td>
                  <td align="left">coord</td>
                  <td align="left">(?:[0-9]{3}x[0-9]{3})?</td>
                </tr>
                <tr>
                  <td align="left">X</td>
                  <td align="left">signbox</td>
                  <td align="left">(?:${list}${coord})*</td>
                </tr>
                <tr>
                  <td align="left">V</td>
                  <td align="left">var</td>
                  <td align="left">V[0-9]+</td>
                </tr>
                <tr>
                  <td align="left">Y</td>
                  <td align="left">style</td>
                  <td align="left">-</td>
                </tr>
                <tr>
                  <td align="left">F</td>
                  <td align="left">full</td>
                  <td align="left">${Q}(${prefix})?(${signbox})?(${var})?(${style}?)</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="swuquery_regex" numbered="true" toc="default">
            <name>SWU Query Regular Expressions</name>
            <t keepWithNext="true">SWU Query Elements</t>
            <table align="left" anchor="table_swu_query_elements">
              <thead>
                <tr>
                  <th align="left">Token</th>
                  <th align="left">Variable</th>
                  <th align="left">Regular Expression</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">Q</td>
                  <td align="left">Q</td>
                  <td align="left">Q</td>
                </tr>
                <tr>
                  <td align="left">B</td>
                  <td align="left">base</td>
                  <td align="left">(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))</td>
                </tr>
                <tr>
                  <td align="left">f</td>
                  <td align="left">fill</td>
                  <td align="left">f?</td>
                </tr>
                <tr>
                  <td align="left">r</td>
                  <td align="left">rotation</td>
                  <td align="left">r?</td>
                </tr>
                <tr>
                  <td align="left">S</td>
                  <td align="left">symbol</td>
                  <td align="left">${base}${fill}${rotation}</td>
                </tr>
                <tr>
                  <td align="left">R</td>
                  <td align="left">range</td>
                  <td align="left">R${base}${base}</td>
                </tr>
                <tr>
                  <td align="left">I</td>
                  <td align="left">item</td>
                  <td align="left">(?:${symbol}|${range})</td>
                </tr>
                <tr>
                  <td align="left">O</td>
                  <td align="left">or</td>
                  <td align="left">o</td>
                </tr>
                <tr>
                  <td align="left">L</td>
                  <td align="left">list</td>
                  <td align="left">${item}(?:${or}${item})*</td>
                </tr>
                <tr>
                  <td align="left">A</td>
                  <td align="left">A</td>
                  <td align="left">A</td>
                </tr>
                <tr>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                </tr>
                <tr>
                  <td align="left">P</td>
                  <td align="left">prefix</td>
                  <td align="left">(?:${A}(?:${list})+)?${T}</td>
                </tr>
                <tr>
                  <td align="left">C</td>
                  <td align="left">coord</td>
                  <td align="left">(?:(?:\uD836[\uDC0C-\uDDFF]){2})?</td>
                </tr>
                <tr>
                  <td align="left">X</td>
                  <td align="left">signbox</td>
                  <td align="left">(?:${list}${coord})*</td>
                </tr>
                <tr>
                  <td align="left">V</td>
                  <td align="left">var</td>
                  <td align="left">V[0-9]+</td>
                </tr>
                <tr>
                  <td align="left">Y</td>
                  <td align="left">style</td>
                  <td align="left">-</td>
                </tr>
                <tr>
                  <td align="left">F</td>
                  <td align="left">full</td>
                  <td align="left">${Q}(${prefix})?(${signbox})?(${var})?(${style}?)</td>
                </tr>
              </tbody>
            </table>
          </section>
        </section>
      </section>
    </section>
    <section anchor="technology_integration" numbered="true" toc="default">
      <name>Technology Integration</name>
      <t>Formal SignWriting has been specifically designed to integrate with standard technology on the phone, tablet, and desktop. 
      </t>
      <section anchor="fonts" numbered="true" toc="default">
        <name>Fonts</name>
        <t>The Sutton SignWriting Fonts are available as source SVG and as three TrueType Font files.
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
      Sutton SignWriting Fonts
      Copyright (c) 1974-2017, Center for Sutton Movement Writing, inc
      Licensed under the SIL Open Font License v1.1
          ]]></artwork>
        <t>The Sutton SignWriting TrueType fonts are available for download and installation.
        </t>
        <t>Installing the fonts using the instructions below is not required, but it will improve the user experience. 
          If the fonts are not installed on the system, CSS declarations will install the fonts in the browser cache.
        </t>
        <section anchor="font_desktop" numbered="true" toc="default">
          <name>Windows, Linux, and Mac</name>
          <t>Installation is straight forward for Windows, Linux and Mac. Simply download the TrueType fonts and install as usual.
          </t>
          <dl newline="false" spacing="normal">
            <dt/>
            <dd>
              <xref target="SWFontLine" format="default">Sutton SignWriting Line TrueType Font</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SWFontFill" format="default">Sutton SignWriting Fill TrueType Font</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SWFontOneD" format="default">Sutton SignWriting One-D TrueType Font</xref>
            </dd>
          </dl>
        </section>
        <section anchor="font_ios" numbered="true" toc="default">
          <name>Mac and iOS</name>
          <t>Installation is possible for Mac OS X and iOS with a configuration profile.  
            The Sutton SignWriting Symbol configuration profile includes 2 fonts for SVG: SuttonSignWritingLine and SuttonSignWritingFill.
            The Sutton SignWriting One configuration profile includes the font SuttonSignWritingOneD.
            With the configuration profile installed, the SignWriting in Unicode (SWU) characters can be used throughout the operating system, even as file and folder names.
          </t>
          <dl newline="false" spacing="normal">
            <dt/>
            <dd>
              <xref target="SWFontSymbol" format="default">Sutton SignWriting Symbol Configuration Profile</xref></dd>
            <dt/>
            <dd>
              <xref target="SWFontOne" format="default">Sutton SignWriting One Configuration Profile</xref></dd>
          </dl>
        </section>
        <section anchor="font_android" numbered="true" toc="default">
          <name>Android</name>
          <t>Android can not install the fonts directly onto the system. 
            The CSS declarations below will install the fonts in the browser cache.
          </t>
        </section>
      </section>
      <section anchor="css_fonts" numbered="true" toc="default">
        <name>Fonts and CSS</name>
        <t>The TrueType Fonts can be used without installing the fonts on any platform by defining two font-face statements. 
          Simply include the following CSS in any HTML page to access the fonts.
          Make sure to replace the URLs with the fully qualified links for the fonts.
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
@font-face {
  font-family: "SuttonSignWritingLine";
  src: 
    local('SuttonSignWritingLine'),
    url('https://.../SuttonSignWritingLine.ttf') format('truetype');
}
@font-face {
  font-family: "SuttonSignWritingFill";
  src: 
    local('SuttonSignWritingFill'),
    url('https://.../SuttonSignWritingFill.ttf') format('truetype');
}
@font-face {
  font-family: "SuttonSignWritingOneD";
  src: 
    local('SuttonSignWritingOneD'),
    url('https://.../SuttonSignWritingOneD.ttf') format('truetype');
}
            ]]></artwork>
        <t>If the fonts are installed, then the system fonts will be used. 
          If the fonts are not installed when a SignWriting Font page is opened, the CSS will cause the fonts to be automatically downloaded to the browser's cache on the first visit. 
          Once the fonts are installed in the browser cache, they will remain there until the browser cache is emptied. 
          Any webside that uses this CSS can access the browser installed font without requesting a new copy. 
          The fonts are 18 MB, so the first page view make take a few seconds or longer depending on your download speed and processor.
        </t>
      </section>
      <section anchor="svg" numbered="true" toc="default">
        <name>Scalar Vector Graphics</name>
        <t>Sutton SignWriting is a 2-dimensional script.
        The sign images are composed using Scalar Vector Graphic (SVG).
        </t>
        <section anchor="svg_font" numbered="true" toc="default">
          <name>Font Based SVG</name>
          <t>The conversion of Formal SignWriting to Scalar Vector Graphics requires three parts: header, text, and symbols.
            Consider the FSW string "M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468".
          </t>
          <section anchor="svg_header" numbered="true" toc="default">
            <name>SVG Header</name>
            <t>The header section contains the SVG definition along with the width, height, and viewbox.  
              The viewbox is a combination of the minimum X, minimum Y, width, and height.
            </t>
            <dl newline="false" spacing="normal">
              <dt>Minimum X:</dt>
              <dd>482</dd>
              <dt>Maximum X:</dt>
              <dd>518</dd>
              <dt>Width:</dt>
              <dd>36</dd>
              <dt>Minimum Y:</dt>
              <dd>468</dd>
              <dt>Maximum Y:</dt>
              <dd>533</dd>
              <dt>Height:</dt>
              <dd>65</dd>
            </dl>
            <artwork name="" type="" align="left" alt=""><![CDATA[
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" 
  width="36" height="65" viewBox="482 468 36 65">
                ]]></artwork>
            <t>If the width and height properties are not included, then the resulting SVG will automatically expand in size to fill the containing element on the screen.
            </t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" 
  viewBox="482 468 36 65">
                ]]></artwork>
          </section>
          <section anchor="svg_text" numbered="true" toc="default">
            <name>SVG Text</name>
            <t>The SVG text section is included to make it possible to copy and paste Formal SignWriting strings.
              The font-size is set to zero to make the text invisible.
            </t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
<text style="font-size:0%;">
M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468
</text>
                ]]></artwork>
          </section>
          <section anchor="svg_syms" numbered="true" toc="default">
            <name>SVG Symbols</name>
            <t>Each symbol in the Signbox is a combination of the symbol key and the positioning coordinate.
            </t>
            <dl newline="false" spacing="normal">
              <dt>Symbol 1:</dt>
              <dd>S1870a 489x515</dd>
              <dt>Symbol 2:</dt>
              <dd>S18701 482x490</dd>
              <dt>Symbol 3:</dt>
              <dd>S20500 508x496</dd>
              <dt>Symbol 4:</dt>
              <dd>S2e734 500x468</dd>
            </dl>
            <t>Each spatial symbol is written as an SVG group and positioned by the transformation translate.
            </t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
  <g transform="translate(489,515)">...</g>
  <g transform="translate(482,490)">...</g>
  <g transform="translate(508,496)">...</g>
  <g transform="translate(500,468)">...</g>
                ]]></artwork>
            <t>Inside of each group, 2 text elements are written.  
              The symbol fill is written first using the SuttonSignWritingFill font with a plane 16 character.
              The symbol line is written second using the SuttonSignWritingLine font with a plane 15 character.
              See <xref target="sym_swu" format="default"/> for the formula to convert symbol keys to codepoints.
            </t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
<text class="sym-fill" 
 style="font-family:'SuttonSignWritingFill';font-size:30px;fill:white;">
 {plane 16 codepoint}
</text>
<text class="sym-line" 
 style="font-family:'SuttonSignWritingLine';font-size:30px;fill:black;">
 {plane 15 codepoint}
</text>
                ]]></artwork>
          </section>
        </section>
        <section anchor="svg_alone" numbered="true" toc="default">
          <name>Stand Alone SVG</name>
          <t>It is possible to request completed SVG images from SignPuddle 3.
          The SVG images created by the SignWriting Server are stand-alone graphics that do not use the TrueType Fonts.
          The SVG images use path elements to define the symbol lines and curves.
          </t>
          <t>The SVG header and SVG text for the server-side images are the same as the standard FSW to SVG transformation.  
          See <xref target="svg_font" format="default"/>
          </t>
          <t>The SVG symbols section is structured differently.
          Multiple SVG elements are contained within each sign SVG image.
          Each sub-SVG element uses X and Y coordinates to place each symbol.
          Consider the FSW string "M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468".
          </t>
          <dl newline="false" spacing="normal">
            <dt>Symbol 1:</dt>
            <dd>S1870a 489x515</dd>
            <dt>Symbol 2:</dt>
            <dd>S18701 482x490</dd>
            <dt>Symbol 3:</dt>
            <dd>S20500 508x496</dd>
            <dt>Symbol 4:</dt>
            <dd>S2e734 500x468</dd>
          </dl>
          <artwork name="" type="" align="left" alt=""><![CDATA[
<svg x="489" y="515">...</svg>
<svg x="482" y="490">...</svg>
<svg x="508" y="496">...</svg>
<svg x="500" y="468">...</svg>
            ]]></artwork>
          <t>Inside of each sub-SVG element is a group (g) element with one or two path elements.
          This inside information can only be requested from the SignWriting Server or some other source of the symbol image data.
          </t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
  <g transform="translate(0.146473559361,17.7697467366) ... ">
    <path class="sym-fill" fill="white" d="M700 1493 ... "/>
    <path class="sym-line" fill="black" d="M1826 1480 ... "/>
  </g>
            ]]></artwork>
        </section>
      </section>
      <section anchor="html" numbered="true" toc="default">
        <name>HTML and CSS</name>
        <t>Basic HTML structures and CSS rules can be used with Formal SignWriting for customization and layout.
        </t>
        <section anchor="size" numbered="true" toc="default">
          <name>Centering and Sizing</name>
          <t>It is possible to center a symbol or sign within a div with a few CSS rules.
          The symbol or sign will automatically shrink in size if the containing div is smaller than the SVG image.
          Additionally, if the SVG is created with the zoom level of extendable (styling string "-Zx"), the symbol or sign will grow in size to fill as much of the containing div as possible.
          </t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
<div class="centered"> 
  <svg version="1.1" xmlns="http://www.w3.org/2000/svg" ...
</div> 
           ]]></artwork>
          <artwork name="" type="" align="left" alt=""><![CDATA[
div.centered {
  position: relative;
  width: 10%;
  height: 10%; 
  border: 1px solid black;
} 

div.centered svg { 
  position: absolute; 
  display: block; 
  top:2.5%; 
  bottom: 2.5%; 
  left: 2.5%; 
  right: 2.5%; 
  margin: auto; 
  max-width: 95%; 
  max-height: 95%; 
}
           ]]></artwork>
        </section>
        <section anchor="html_color" numbered="true" toc="default">
          <name>Coloring Symbols and Signs</name>
          <t>Individual signs can be colored with CSS rules.
          The individual classes of 'sym-line' and 'sym-fill' can be used to isolate each part of a symbol, both positive and negative spaces,
          or the classes can be ignored to create the shadow of a symbol that includes both aspects of a symbol.</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
<svg class="primary" ...
<svg class="success" ...
<svg class="info" ...
<svg class="warning" ...
<svg class="danger" ...
<svg class="shadow" ...
<svg class="inverse" ...
            ]]></artwork>
          <artwork name="" type="" align="left" alt=""><![CDATA[
svg.primary g text.sym-line { fill: #337ab7 !important; }
svg.success g text.sym-line { fill: #5cb85c !important; }
svg.info g text.sym-line { fill: #5bc0de !important; }
svg.warning g text.sym-line { fill: #f0ad4e !important; }
svg.danger g text.sym-line { fill: #d9534f !important; }
svg.shadow g text { fill: grey !important; }
svg.inverse g text.sym-line { fill: white !important; } 
svg.inverse g text.sym-fill { fill: black !important; }
           ]]></artwork>
        </section>
        <section anchor="html_other" numbered="true" toc="default">
          <name>Other Effects</name>
          <t>Other CSS rules can be used for other effect.
          Please note that transform property does not effect the document flow and should not be used for general layout.</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
svg.shadowed {
  text-shadow: -1px -1px 1px #fff, 1px 1px 1px #000;
}
svg.rotate {
  transform: rotate(0.5turn);
}
svg.bigger {
  transform: scale(2);
}
svg.skewed {
  transform: skewX(30deg);
}
           ]]></artwork>
        </section>
        <section anchor="html_sentence" numbered="true" toc="default">
          <name>Sentences</name>
          <t>SignWriting is written vertically using the vertical writing mode of CSS.
          To create the center lane and to visually divide the columns of text, several span elements are used.
          Each sign is contained in a div with a width and height that matches the enclosed sign.
          To properly align each sign with the center of its lane, the containing div will either use "margin-right" or "border-left".
          With "border-left", the rule must include "solid transparent" after the size.
          </t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
<div class="signtext"> 
 <span class="outside"><span class="middle"><span class="inside">
  <div style="width:42px;height:77px;margin-right:2px;"><svg ...
  <div style="width:38px;height:48px;margin-right:2px;"><svg ...
  <div style="width:25px;height:9px;border-left:7px solid transparent;">

            ]]></artwork>
          <artwork name="" type="" align="left" alt=""><![CDATA[
div.signtext { 
  -webkit-writing-mode: vertical-lr; 
  writing-mode: vertical-lr; 
  font-size: 0%; 
  border-left: 1px solid blue; 
  height: 100%; 
} 

span.outside { border-left: 1px solid blue; vertical-align: top; } 
span.middle { vertical-align: bottom; } 
span.inside { border-left: 1px dashed red; } 

div.signtext div { 
  writing-mode: horizontal-tb; 
  display: inline-block; 
  vertical-align: middle; 
  padding: 20px; 
  box-sizing: content-box; 
}
           ]]></artwork>
        </section>
      </section>
      <section anchor="swJS" numbered="true" toc="default">
        <name>JavaScript Packages</name>
        <t>For modern web and app development, several packages are available on Github and NPM.</t>
        <section anchor="swCore" numbered="true" toc="default">
          <name>@sutton-signwriting/core</name>
          <t>a javascript package for node and browsers that supports general processing of the Sutton SignWriting script</t>
          <dl newline="false" spacing="normal">
            <dt/>
            <dd>
              <xref target="SSWCoreSrc" format="default">Source</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SSWCoreDoc" format="default">Documentation</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SSWCoreDist" format="default">Distribution</xref>
            </dd>
          </dl>
          <artwork name="" type="" align="left" alt=""><![CDATA[
npm install @sutton-signwriting/core
           ]]></artwork>
        </section>
        <section anchor="swTTF" numbered="true" toc="default">
          <name>@sutton-signwriting/font-ttf</name>
          <t>a javascript package for the web components and browser that generates SVG and PNG images for individual symbols and complete signs</t>
          <dl newline="false" spacing="normal">
            <dt/>
            <dd>
              <xref target="SSWTTFSrc" format="default">Source</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SSWTTFDoc" format="default">Documentation</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SSWTTFDist" format="default">Distribution</xref>
            </dd>
          </dl>
          <artwork name="" type="" align="left" alt=""><![CDATA[
npm install @sutton-signwriting/font-ttf
           ]]></artwork>
        </section>
        <section anchor="swFontDB" numbered="true" toc="default">
          <name>@sutton-signwriting/font-db</name>
          <t>a javascript package for node that generates SVG and PNG images for individual symbols and complete signs</t>
          <dl newline="false" spacing="normal">
            <dt/>
            <dd>
              <xref target="SSWFontDBSrc" format="default">Source</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SSWFontDBDoc" format="default">Documentation</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SSWFontDBDist" format="default">Distribution</xref>
            </dd>
          </dl>
          <artwork name="" type="" align="left" alt=""><![CDATA[
npm install @sutton-signwriting/font-db
           ]]></artwork>
        </section>
        <section anchor="swSgnw" numbered="true" toc="default">
          <name>@sutton-signwriting/sgnw-components</name>
          <t>a javascript package of Web Components for use with the SignWriting script</t>
          <dl newline="false" spacing="normal">
            <dt/>
            <dd>
              <xref target="SSWSgnwSrc" format="default">Source</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SSWSgnwDoc" format="default">Documentation</xref>
            </dd>
            <dt/>
            <dd>
              <xref target="SSWSgnwDist" format="default">Distribution</xref>
            </dd>
          </dl>
          <artwork name="" type="" align="left" alt=""><![CDATA[
npm install @sutton-signwriting/sgnw-components
           ]]></artwork>
        </section>
      </section>

    </section>
    <section anchor="transformation" numbered="true" toc="default">
      <name>Transformations</name>
      <t>Formal SignWriting and the surrounding technologies have been created to facilitate easy transformations between the various forms.
      </t>
      <section anchor="fsw2query" numbered="true" toc="default">
        <name>Formal SignWriting to Query String</name>
        <t>Formal SignWriting strings have several natural transformations to query string.
            The transformation can use the temporal prefix and/or the spatial signbox.
            For each symbol, the query can include the exact symbol key, 
            or the query can use a general symbol key where the fill and rotation modifiers are not explicitly defined.
            Consider the Formal SignWriting string "AS14c20S27106M518x529S14c20481x471S27106503x489".
        </t>
        <dl newline="false" spacing="normal">
          <dt>Exact Temporal Prefix Symbols:</dt>
          <dd>QAS14c20S27106T</dd>
          <dt>General Temporal Prefix Symbols:</dt>
          <dd>QAS14cuuS271uuT</dd>
          <dt>Exact Spatial Signbox Symbols:</dt>
          <dd>QS14c20S27106</dd>
          <dt>General Spatial Signbox Symbols:</dt>
          <dd>QS14cuuS271uu</dd>
          <dt>Exact Spatial Signbox Symbols with Location:</dt>
          <dd>QS14c20481x471S27106503x489</dd>
          <dt>General Spatial Signbox Symbols with Location:</dt>
          <dd>QS14cuu481x471S271uu503x489</dd>
        </dl>
      </section>
      <section anchor="query2regex" numbered="true" toc="default">
        <name>Query String to Regular Expression</name>
        <t>The transformation from query string to regular expressions has been fully implemented in the Sutton SignWriting JavaScript Library and the SignWriting Server.
        </t>
        <t>The query language to regular expressions generator uses the following regular expression structures as building blocks.
        </t>
        <dl newline="false" spacing="normal">
          <dt>Temporal Prefix Prefix:</dt>
          <dd>(A(S[123][0-9a-f]{2}[0-5][0-9a-f])+)</dd>
          <dt>Signbox Prefix:</dt>
          <dd>[BLMR]([0-9]{3}x[0-9]{3})</dd>
          <dt>Spatial Symbols:</dt>
          <dd>(S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3})*</dd>
        </dl>
        <t>The Temporal Prefix Prefix is a structural marker followed by one or more symbols.  
            For the query string "QT", the prefix is required.  
            For the general "Q", the prefix is optional so "?" is appended to the Temporal Prefix Prefix regular expression.
        </t>
        <t>The Signbox Prefix is a combination of structural marker and preprocessed maximum coordinate.
            Every constructed regular expression will include the Signbox Prefix.
        </t>
        <t>The Spatial Symbols is zero or more symbol definitions and associated coordinates.  
            The Spatial Symbols regular expression is used for every search.
            For both "Q" and "QT", it is the only symbol matching used.
            When searching for specific symbols and ranges, 
            the general Spatial Symbols definition will sandwich the specific search definitions.
        </t>
        <t>Searching for number ranges with regular expressions requires a unique technique.
            This technique requires five steps.
        </t>
        <t>Find a number between 122 and 455
        </t>
        <dl newline="false" spacing="normal">
          <dt>1) 10's don't match and the min 1's are not zero ( last number to 9):</dt>
          <dd>Match 12[2-9]</dd>
          <dt>2) Bring up the 10's if hundreds are different:</dt>
          <dd>Match 1[3-9][0-9]</dd>
          <dt>3) Bring up the 100's if different:</dt>
          <dd>Match [2-3][0-9][0-9]</dd>
          <dt>4) Bring up the 10's:</dt>
          <dd>Match 4[0-4][0-9]</dd>
          <dt>5) Bring up the 1's:</dt>
          <dd>Match 45[0-5]</dd>
        </dl>
        <t>
              Final Match (12[2-9]|1[3-9][0-9]|[2-3][0-9][0-9]|4[0-4][0-9]|45[0-5])
        </t>
        <t>For the styling string regular expression, see <xref target="styling" format="default"/>.
        </t>
      </section>
    </section>
    <section anchor="unicode" numbered="true" toc="default">
      <name>Unicode Considerations</name>
      <t>"The plan for encoding Sutton SignWriting in Unicode is for there to be two separate Unicode proposals. 
          The first is for the symbol set covered by [the] ISWA 2010... 
          The second is for an encoding that takes symbols and turns them into signs." -<xref target="UnicodeScript" format="default">ScriptSource</xref>
      </t>
      <section anchor="utc" numbered="true" toc="default">
        <name>Unicode Technical Committee</name>
        <t>In 2011, two documents were submitted:
            <xref target="UnicodeN4015" format="default">N4015 L2/11-101</xref> and 
            <xref target="UnicodeN4090" format="default">N4090 L2/11-217</xref>.
        </t>
        <t>In 2012, one document was submitted:
            <xref target="UnicodeN4342" format="default">N4342 L2/12-321</xref>.
        </t>
        <t>In 2015, the Sutton SignWriting Block was officially added to the Unicode standard.
            A documement was submitted: <xref target="Unicode15194" format="default">L2/15-194</xref>.
            In July, Steve Slevinski attended UTC #144.
            After the meeting, another document was submitted: <xref target="Unicode15219" format="default">L2/15-219</xref>.
        </t>
        <t>In 2016, one document was submitted:
            <xref target="Unicode16225" format="default">L2/16-225</xref>.
            In August, Steve Slevinski attended UTC #148.
        </t>
        <t>In 2017, two documents were submitted:
            <xref target="Unicode17220" format="default">L2/17-220</xref> and 
            <xref target="Unicode17282" format="default">L2/17-282</xref>.
            In August, Steve Slevinski attended UTC #152.
        </t>
        <t>Further discussions with the Unicode Technical Committee are dependent on the support of a voting member.
        </t>
      </section>
      <section anchor="uni8" numbered="true" toc="default">
        <name>SignWriting in Unicode 8</name>
        <t>The Sutton SignWriting symbol set based on the ISWA 2010 was encoded in the Unicode Standard version 8.0.
        </t>
        <t>This encoding is based on the Unicode proposal from <xref target="UnicodeProposal" format="default">section 5.1 of draft-slevinski-iswa-2010</xref>, first published in January 2011.
        </t>
        <t>The first draft officially submitted to the Unicode Technical Committee was N4015, a compromise with the Unicode committee that removed two-dimensional layout by dropping five structural markers and 500 number characters.
        </t>
        <t>The second draft N4090 was under protest because it broke sorting and introduced variable length symbol names.</t>
        <t>The third draft N4342 was rejected by the Center for Sutton Movement Writing.  
            A new facial diacritic model was forced into the proposal that was neither defined nor tested.
        </t>
        <t>In 2020, Google released <xref target="UnicodeGoogle" format="default">Noto Sans SignWriting</xref>, a font for Sutton SignWriting that fully implements the official Unicode 8 design with modifying characters and facial diacritics.
        The font can be used to view any symbol of the International SignWriting Alphabet 2010 (ISWA 2010) as well as create complex facial expressions with diacritics.
        General layout of SignWriting is not part of the Unicode 8 design. Outside of facial expressions, layout requires a higher level protocol such as SVG.
        </t>

        <section anchor="uni_8" numbered="true" toc="default">
          <name>Official Characters</name>
          <t>In 2015, the symbols of Sutton SignWriting (<xref target="sutton_symbols" format="default"/> and <xref target="symbols" format="default"/>) were added to Unicode version 8.
          </t>
          <table align="left" anchor="table_uni_8">
            <thead>
              <tr>
                <th align="left">Description</th>
                <th align="left">Unicode 8 Range</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Base Characters</td>
                <td align="left">U+1D800 to U+1DA8B</td>
              </tr>
              <tr>
                <td align="left">Fill Modifiers 2 to 6</td>
                <td align="left">U+1DA9B to U+1DA9F</td>
              </tr>
              <tr>
                <td align="left">Rotation Modifiers 2 to 16</td>
                <td align="left">U+1DAA1 to U+1DAAF</td>
              </tr>
            </tbody>
          </table>
          <t>Each symbol key can be rewritten using 1 to 3 Unicode characters of a base, optional fill, and optional rotation.
            Given a symbol key as variable "key", in JavaScript the 3 characters can be derived with simple formulas.
            Both Fill Modifier 1 (U+1DA9A) and Rotation Modifier 1 (U+1DAA0) are inherent characters and should be not be written in the character string.
          </t>
          <ul empty="true" spacing="normal">
            <li>var base = parseInt(key.substr(1,3),16) + parseInt('1D700',16);
              </li>
            <li>var fill = parseInt(key.substr(4,1),16) + parseInt('1DA9A',16);
              </li>
            <li>var rotation = parseInt(key.substr(5,1),16) + parseInt('1DAA0',16);
              </li>
          </ul>
          <t>
              The Sutton SignWriting Resources do not support these characters as defined in the Unicode standard.
              The presentation <xref target="Unicode8Issues" format="default">Issues with SignWriting in Unicode 8</xref> details why this encoding is incomplete, broken, and fictional.
              Alternatively, the Sutton SignWriting Resources support the <xref target="characters" format="default">character sets</xref> of Formal SignWriting in ASCII (FSW) and SignWriting in Unicode (SWU).
          </t>
        </section>
        <section anchor="uni_new" numbered="true" toc="default">
          <name>17 New Characters</name>
          <t>The addition of 17 Unicode characters to the official Unicode standard can complete the script encoding and cover 2-dimensional layout.
          </t>
          <table align="left" anchor="table_uni_new">
            <thead>
              <tr>
                <th align="left">Description</th>
                <th align="left">Formal SignWriting</th>
                <th align="left">Proposed Unicode</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Fill Modifier 1</td>
                <td align="left">0</td>
                <td align="left">U+1DA9A</td>
              </tr>
              <tr>
                <td align="left">Rotation Modifier 1</td>
                <td align="left">0</td>
                <td align="left">U+1DAA0</td>
              </tr>
              <tr>
                <td align="left">Numbers</td>
                <td align="left">0 to 9</td>
                <td align="left">U+1DAB0 to U+1DAB9</td>
              </tr>
              <tr>
                <td align="left">Sequence Marker</td>
                <td align="left">A</td>
                <td align="left">U+1DABA</td>
              </tr>
              <tr>
                <td align="left">Signbox Markers</td>
                <td align="left">B</td>
                <td align="left">U+1DABB</td>
              </tr>
              <tr>
                <td align="left">Left Lane Markers</td>
                <td align="left">L</td>
                <td align="left">U+1DABC</td>
              </tr>
              <tr>
                <td align="left">Middle Lane Markers</td>
                <td align="left">M</td>
                <td align="left">U+1DABD</td>
              </tr>
              <tr>
                <td align="left">Right Lane Markers</td>
                <td align="left">R</td>
                <td align="left">U+1DABE</td>
              </tr>
            </tbody>
          </table>
          <t>Fill Modifier 1 and Rotation Modifier 1 are included to fix sorting and simplify processing.</t>
          <t>The 10 number characters express the concept of distance, important for use with 2-dimensional scripts.</t>
          <t>The 5 structural markers define cohesive units of the script.</t>
        </section>
      </section>
      <section anchor="swunicode" numbered="true" toc="default">
        <name>SignWriting in Unicode (SWU)</name>
        <t>Characters are used to name signs.
            Fonts are used to view signs.
        </t>
        <t>
            SignWriting in Unicode (SWU) was first published in October 2016 and officially submitted to the Unicode Technical Committee in July 2017. 
            SWU is not part of the Unicode standard.
            SignWriting in Unicode is an experimental Unicode design that is supported by the Sutton SignWriting Resources.
            This alternate encoding overwrites the Sutton SignWriting block in Unicode and uses plane 4 for the SignWriting symbols.
        </t>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>None.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>None.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <reference anchor="SLlegal" target="https://en.wikipedia.org/wiki/Legal_recognition_of_sign_languages">
        <front>
          <title>Legal Recognition of Sign Language</title>
          <author initials="" surname="" fullname=""/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWio" target="https://www.sutton-signwriting.io">
        <front>
          <title>Sutton SignWriting Resources</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWbyHand" target="https://www.signwriting.org/lessons/cursive">
        <front>
          <title>Writing SignWriting by Hand</title>
          <author initials="V.S." surname="Sutton" fullname="Valerie Sutton"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWScript" target="https://www.signpuddle.net/wiki/index.php/SignWriting_Script/">
        <front>
          <title>SignWriting Script: an ode to writing by hand</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWWeb" target="https://signwriting.org">
        <front>
          <title>SignWriting Website</title>
          <author initials="V.S." surname="Sutton" fullname="Valerie Sutton"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWMobile" target="https://m.signwriting.org">
        <front>
          <title>SignWriting Mobile Site</title>
          <author initials="R.G." surname="Gleaves" fullname="Richard Gleaves"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWList" target="http://www.signwriting.org/forums/swlist/">
        <front>
          <title>SignWriting Email List</title>
          <author initials="" surname="" fullname=""/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWFacebook" target="https://www.facebook.com/groups/SuttonSignWriting/">
        <front>
          <title>Sutton SignWriting Facebook Group</title>
          <author initials="" surname="" fullname=""/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWWikipedia" target="https://en.wikipedia.org/wiki/SignWriting">
        <front>
          <title>SignWriting Wikipedia Page</title>
          <author initials="" surname="" fullname=""/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWChat" target="https://gitter.im/sutton-signwriting/community">
        <front>
          <title>Sutton SignWriting Chat on Gitter</title>
          <author initials="" surname="" fullname=""/>
          <date/>
        </front>
      </reference>
      <reference anchor="SteveSlevinski" target="https://SteveSlevinski.me">
        <front>
          <title>Steve Slevinski's Homepage</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWPatrons" target="https://patreon.com/signwriting">
        <front>
          <title>Support SignWriting on Patreon</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWFontSource" target="https://github.com/Slevinski/signwriting_2010_fonts/tree/master/source">
        <front>
          <title>Sutton SignWriting Font Source</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWFontLine" target="https://unpkg.com/@sutton-signwriting/font-ttf@1.0.0/font/SuttonSignWritingLine.ttf">
        <front>
          <title>Sutton SignWriting Line TypeType Font</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWFontFill" target="https://unpkg.com/@sutton-signwriting/font-ttf@1.0.0/font/SuttonSignWritingFill.ttf">
        <front>
          <title>Sutton SignWriting Fill TypeType Font</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWFontOneD" target="https://unpkg.com/@sutton-signwriting/font-ttf@1.0.0/font/SuttonSignWritingOneD.ttf">
        <front>
          <title>Sutton SignWriting One-D TypeType Font</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWFontSymbol" target="https://cdn.jsdelivr.net/gh/slevinski/signwriting_2010_fonts/fonts/SuttonSignWritingSymbol.mobileconfig">
        <front>
          <title>Sutton SignWriting Symbol Configuration Profile</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SWFontOne" target="https://cdn.jsdelivr.net/gh/slevinski/signwriting_2010_fonts/fonts/SuttonSignWritingOne.mobileconfig">
        <front>
          <title>Sutton SignWriting One Configuration Profile</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="TwoDFont" target="https://www.signwriting.org/symposium/presentation0019.html">
        <front>
          <title>Two-Dimensional Font Prototype</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="TwoDFontProject" target="https://meta.wikimedia.org/wiki/Grants:Project/slevinski/ASL_Wikipedia_2-D_Font_Development_for_SignWriting">
        <front>
          <title>Two-Dimensional Font Project</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SW2010" target="https://steveslevinski.me/#standard2010">
        <front>
          <title>Sutton SignWriting Standard of 2010</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SW2012" target="https://steveslevinski.me/#standard2012">
        <front>
          <title>Sutton SignWriting Standard of 2012</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SW2017" target="https://steveslevinski.me/#standard2017">
        <front>
          <title>Sutton SignWriting Standard of 2017</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWCoreDoc" target="https://sutton-signwriting.github.io/core/">
        <front>
          <title>Sutton SignWriting Core Documentation</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWCoreSrc" target="https://github.com/sutton-signwriting/core">
        <front>
          <title>Sutton SignWriting Core Source</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWCoreDist" target="https://unpkg.com/browse/@sutton-signwriting/core/">
        <front>
          <title>Sutton SignWriting Core Distribution</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>

      <reference anchor="SSWTTFDoc" target="https://sutton-signwriting.github.io/font-ttf/">
        <front>
          <title>Sutton SignWriting Font TTF Documentation</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWTTFSrc" target="https://github.com/sutton-signwriting/font-ttf">
        <front>
          <title>Sutton SignWriting Font TTF Source</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWTTFDist" target="https://unpkg.com/browse/@sutton-signwriting/font-ttf/">
        <front>
          <title>Sutton SignWriting Font TTF Distribution</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWFontDBDoc" target="https://sutton-signwriting.github.io/font-db/">
        <front>
          <title>Sutton SignWriting Font DB Documentation</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWFontDBSrc" target="https://github.com/sutton-signwriting/font-db">
        <front>
          <title>Sutton SignWriting Font DB Source</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWFontDBDist" target="https://unpkg.com/browse/@sutton-signwriting/font-db/">
        <front>
          <title>Sutton SignWriting Font DB Distribution</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWSgnwDoc" target="https://sutton-signwriting.github.io/sgnw-components/">
        <front>
          <title>Sutton SignWriting Web Components Documentation</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWSgnwSrc" target="https://github.com/sutton-signwriting/sgnw-components">
        <front>
          <title>Sutton SignWriting Web Components Source</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SSWSgnwDist" target="https://unpkg.com/browse/@sutton-signwriting/sgnw-components/">
        <front>
          <title>Sutton SignWriting Web Components Distribution</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="SignSpelling" target="https://www.signwriting.org/archive/docs6/sw0534-SignSpellingGuidelines-2008.pdf">
        <front>
          <title>SignSpelling Guidelines</title>
          <author initials="V.S." surname="Sutton" fullname="Valerie Sutton"/>
          <date/>
        </front>
      </reference>
      <reference anchor="Unicode" target="http://unicode.org/standard/principles.html">
        <front>
          <title>The Unicode Standard: A Technical Introduction</title>
          <author initials="" surname="" fullname=""/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodePragmatic" target="https://www.youtube.com/watch?v=sgHbC6udIqc">
        <front>
          <title>Pragmatic Unicode, or, How do I stop the pain?</title>
          <author initials="N.B." surname="Batchelder" fullname="Ned Batchelder"/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeChinese" target="https://www.theatlantic.com/technology/archive/2016/11/chinese-computers/504851/">
        <front>
          <title>Chinese Characters Are Futuristic and the Alphabet Is Old News</title>
          <author initials="S.Z." surname="Zhang" fullname="Sarah Zhang"/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeScript" target="https://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&amp;uid=jt4fblkvhu">
        <front>
          <title>Unicode Status (SignWriting)</title>
          <author initials="" surname="" fullname=""/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeProposal" target="https://tools.ietf.org/html/draft-slevinski-iswa-2010-00#section-5.1">
        <front>
          <title>Encoding the graphemes of the SignWriting Script with the x-ISWA-2010</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="Unicode8Issues" target="https://www.slideshare.net/StephenSlevinski/sign-writing-in-unicode-8-issues">
        <front>
          <title>Issues with SignWriting in Unicode 8</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeGoogle" target="https://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&amp;uid=wb9v9lchat">
        <front>
          <title>Noto Sans SignWriting</title>
          <author initials="G" surname="Google" fullname="Google"/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeN4015" target="http://www.unicode.org/L2/L2011/11101-n4015-signwriting.pdf">
        <front>
          <title>Preliminary proposal for encoding the SignWriting script in the SMP of the UCS</title>
          <author initials="M.E." surname="Everson" fullname="Michael Everson"/>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <author initials="V.S." surname="Sutton" fullname="Valerie Sutton"/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeN4090" target="https://www.unicode.org/L2/L2011/11217-n4090-signwriting.pdf">
        <front>
          <title>Revised proposal for encoding the SignWriting script in the SMP of the UCS</title>
          <author initials="M.E." surname="Everson" fullname="Michael Everson"/>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <author initials="V.S." surname="Sutton" fullname="Valerie Sutton"/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeN4342" target="https://www.unicode.org/L2/L2012/12321-n4342-signwriting.pdf">
        <front>
          <title>Proposal for encoding Sutton SignWriting in the UCS</title>
          <author initials="M.E." surname="Everson" fullname="Michael Everson"/>
          <author initials="M.H." surname="Hosken" fullname="Martin Hosken"/>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <author initials="V.S." surname="Sutton" fullname="Valerie Sutton"/>
          <date/>
        </front>
      </reference>
      <reference anchor="Unicode15194" target="https://www.unicode.org/L2/L2015/15194-signwriting-response.pdf">
        <front>
          <title>Addressing SignWriting Collation in DUCET</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="Unicode15219" target="https://www.unicode.org/L2/L2015/15219-signwriting-design.pdf">
        <front>
          <title>SignWriting Design, With Three Examples and Their Representation</title>
          <author initials="D.A." surname="Anderson" fullname="Deborah Anderson"/>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <author initials="K.W." surname="Whistler" fullname="Ken Whistler"/>
          <date/>
        </front>
      </reference>
      <reference anchor="Unicode16225" target="http://www.unicode.org/cgi-bin/GetMatchingDocs.pl?L2/16-225">
        <front>
          <title>SignWriting in Unicode Next</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="Unicode17220" target="https://www.unicode.org/L2/L2017/17220-signwriting-design-opt.pdf">
        <front>
          <title>Design Options for Sutton SignWriting with examples and fonts</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="Unicode17282" target="https://www.unicode.org/L2/L2017/17282-signwriting-design-aux.pdf">
        <front>
          <title>Design Options for Sutton SignWriting Auxiliary</title>
          <author initials="S.S." surname="Slevinski" fullname="Steve Slevinski"/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeAnalysis" target="https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=A5A55FFC4B59332074F2B0670B758D4F?doi=10.1.1.188.7470&amp;rep=rep1&amp;type=pdf">
        <front>
          <title>Analysis of the different methods to encode SignWriting in Unicode</title>
          <author initials="G.A." surname="Aznar" fullname="Guylhem Aznar"/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeIdeas" target="https://scriptsource.org/cms/scripts/render_download.php?format=file&amp;media_id=..%2Fsites%2Fs%2Fmedia%2Fdatabase%2Fssproto%2Fentries%2Fjt%2F4f%2Fjt4fblkvhu_Signwriting_layout_discuss_v2.pdf&amp;filename=Signwriting_layout_discuss_v2.pdf">
        <front>
          <title>SignWriting Layout Discussion v2</title>
          <author initials="M.H." surname="Hosken" fullname="Martin Hosken"/>
          <date/>
        </front>
      </reference>
      <reference anchor="UnicodeGraphite" target="https://sourceforge.net/p/silgraphite/mailman/silgraphite-devel/thread/20121120152328.5984b784%40sil-mh6/#msg30121143">
        <front>
          <title>New engine feature proposal</title>
          <author initials="M.H." surname="Hosken" fullname="Martin Hosken"/>
          <date/>
        </front>
      </reference>
    </references>
    <section anchor="history" numbered="true" toc="default">
      <name>A brief history</name>
        <section anchor="historySW" numbered="true" toc="default">
          <name>SignWriting</name>
          <table align="left" anchor="table_brief_history">
            <thead>
              <tr>
                <th align="left">Year(s)</th>
                <th align="left">Event(s)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">1966</td>
                <td align="left">Valerie Sutton invented DanceWriting</td>
              </tr>
              <tr>
                <td align="left">1974</td>
                <td align="left">Valerie Sutton invented SignWriting</td>
              </tr>
              <tr>
                <td align="left">1974 to 1986</td>
                <td align="left">SignWriting is written exclusively by hand</td>
              </tr>
              <tr>
                <td align="left">1981 to 1984</td>
                <td align="left">publishing efforts include stencils and wax transfers</td>
              </tr>
              <tr>
                <td align="left">1986 to 1995</td>
                <td align="left">SignWriting is successfully computer encoding with keyboarding support</td>
              </tr>
              <tr>
                <td align="left">2002</td>
                <td align="left">advanced sorting of SignWriting dictionaries is available</td>
              </tr>
              <tr>
                <td align="left">2004</td>
                <td align="left">a drag-and-drop interface is created for SignWriting</td>
              </tr>
              <tr>
                <td align="left">2006</td>
                <td align="left">SignWriting received the ISO 15924 script code "Sgnw"</td>
              </tr>
              <tr>
                <td align="left">2010</td>
                <td align="left">the International SignWriting Alphabet 2020 (ISWA 2010) is released</td>
              </tr>
              <tr>
                <td align="left">2012</td>
                <td align="left">the Formal SignWriting in ASCII (FSW) specification is released</td>
              </tr>
              <tr>
                <td align="left">2015</td>
                <td align="left">the Sutton SignWriting Block is added to the Unicode Standard</td>
              </tr>
              <tr>
                <td align="left">2017</td>
                <td align="left">the SignWriting in Unicode (SWU) specification is released</td>
              </tr>
              <tr>
                <td align="left">2020 to present</td>
                <td align="left">Steve Slevinski assumed full responsibility for administering and financially supporting the SignWriting websites</td>
              </tr>
              <tr>
                <td align="left">2020 to present</td>
                <td align="left">Valerie Sutton continues her personal support for SignWriting with plans for a new series of SignWriting instruction books and a future SignWriting Trust for the long-term support of SignWriting</td>
              </tr>
              <tr>
                <td align="left">2021</td>
                <td align="left">SignWriting is expanding into the machine learning space with a focus on video analysis and translation</td>
              </tr>
            </tbody>
          </table>
          <t>
          </t>
        </section>
        <section anchor="historySteve" numbered="true" toc="default">
          <name>Steve Slevinski</name>
          <table align="left" anchor="table_steve">
            <thead>
              <tr>
                <th align="left">Year(s)</th>
                <th align="left">Event(s)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">1994</td>
                <td align="left">Steve graduated from Grove City College with a Bachelor of Science in Mathematics, computer science applied</td>
              </tr>
              <tr>
                <td align="left">1994</td>
                <td align="left">Steve was hired by the New York State Education Department as a Senior Computer Programmer / Analyst</td>
              </tr>
              <tr>
                <td align="left">1996</td>
                <td align="left">Steve was hired by Danet Inc in telecommunications for quality assurance and in 1998 he was promoted to the maintainer of the internal business systems</td>
              </tr>
              <tr>
                <td align="left">1999</td>
                <td align="left">Steve raised his first son with sign language, who learned to use several dozen signs before he spoke his first word</td>
              </tr>
              <tr>
                <td align="left">2004</td>
                <td align="left">Steve raised his daughter with sign language, but she only learned a few signs before she started talking</td>
              </tr>
              <tr>
                <td align="left">2002</td>
                <td align="left">Steve became a friend of the deaf through his wife's work in Pittsburgh and through connections at the Western Pennsylvania School for the Deaf (WPSD)</td>
              </tr>
              <tr>
                <td align="left">2004 to present</td>
                <td align="left">Steve has been actively working with Valerie Sutton on a weekly basis with Valerie sharing her invention and Steve trying to make it a reality with technology</td>
              </tr>
              <tr>
                <td align="left">2004 to 2019</td>
                <td align="left">Steve was a paid consultant to the Center for Sutton Movement Writing non-profit</td>
              </tr>
              <tr>
                <td align="left">2020 to present</td>
                <td align="left">Steve was hired by the University of Iowa as a data manager for psychiatry research and neuroimaging</td>
              </tr>
              <tr>
                <td align="left">2020 forward</td>
                <td align="left">Steve continues his work with SignWriting on the weekends and early mornings</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="historySupport" numbered="true" toc="default">
          <name>Financial Support</name>
          <table align="left" anchor="table_brief_history_support">
            <thead>
              <tr>
                <th align="left">Year(s)</th>
                <th align="left">Event(s)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">1974 to 2019</td>
                <td align="left">SignWriting was financially supported and promoted through the Center for Sutton Movement Writing (CSMW) non-profit</td>
              </tr>
              <tr>
                <td align="left">2018</td>
                <td align="left">the Center for Sutton Movement Writing (CSMW) lost a major funding source</td>
              </tr>
              <tr>
                <td align="left">2019</td>
                <td align="left">the Center for Sutton Movement Writing closed the non-profit status of the organization due to excessive government paperwork and a focus on fundraising rather than productive work</td>
              </tr>
              <tr>
                <td align="left">2019</td>
                <td align="left">Steve Slevinski started a <xref target="SWPatrons" format="default">Patreon campaign</xref> to support current and future work with SignWriting</td>
              </tr>
              <tr>
                <td align="left">2022</td>
                <td align="left">
                  <t>Added crypto options to support current and future work with SignWriting</t>
                  <ul>
                    <li>Bitcoin: bc1qj0fxphz4qsdt6xd4f3cr4lc96rxyp2ngh0npdp</li>
                    <li>Ethereum: 0x68733c1Dd7CB5A76d38b0711d937FBb953928357</li>
                    <li>Dogecoin: DC8K7qWC7WdTrbDSpAJhFtp3kr9owzMF8j</li>
                  </ul>
                </td>
              </tr>
            </tbody>
          </table>
          <t>
          </t>
        </section>
    </section>
    <section anchor="swGeneral" numbered="true" toc="default">
      <name>SignWriting General Interest</name>
      <t>The Sutton SignWriting resources are free to use by anyone for any purpose.
      Sutton SignWriting supports free culture and the creation of free culture works.
      </t>
      <dl newline="false" spacing="normal">
        <dt/>
        <dd>
          <xref target="SWio" format="default">Sutton SignWriting Resources</xref>
        </dd>
        <dt/>
        <dd>
          <xref target="SWWeb" format="default">SignWriting Website</xref>
        </dd>
        <dt/>
        <dd>
          <xref target="SWMobile" format="default">SignWriting Mobile Site</xref>
        </dd>
        <dt/>
        <dd>
          <xref target="SWWikipedia" format="default">SignWriting Wikipedia Page</xref>
        </dd>
        <dt/>
        <dd>
          <xref target="SWList" format="default">SignWriting Email List</xref>
        </dd>
        <dt/>
        <dd>
          <xref target="SWFacebook" format="default">SignWriting Group on Facebook</xref>
        </dd>
        <dt/>
        <dd>
          <xref target="SWChat" format="default">SignWriting Online Chat</xref>
        </dd>
      </dl>
    </section>
    <section anchor="swNullSym" numbered="true" toc="default">
      <name>Proposed Null Symbol</name>
      <t>For consideration and comment, a new null symbol is proposed.
      This new symbol is for use in the temporal prefix and not in the spatial signbox.
      The null symbol can be used for one-handed signs so that they will be sorted before two-handed signs.
      </t>
      <table align="left" anchor="table_null_symbol">
        <thead>
          <tr>
            <th align="left">Type</th>
            <th align="left">FSW</th>
            <th align="left">SWU</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">null symbol</td>
            <td align="left">S00000</td>
            <td align="left">U+40000</td>
          </tr>
        </tbody>
      </table>
      <t>Sorting uses a binary string comparison.
      The null symbol will sort before all other symbols.
      Following the <xref target="SignSpelling" format="default">SignSpelling guidelines</xref>, the temporal prefix starts with the dominant hand and is followed by the non-dominant hand.
      For one-handed signs, the null symbol can be used in place of the non-dominant hand.
      </t>
      <table align="left" anchor="table_null_symbol_example">
        <thead>
          <tr>
            <th align="left">Sort Order</th>
            <th align="left">Symbol Key</th>
            <th align="left">Definition</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">S00000</td>
            <td align="left">Null Symbol</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">S10000</td>
            <td align="left">Index</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">S10100</td>
            <td align="left">Index on Circle</td>
          </tr>
          <tr>
            <td align="left">4</td>
            <td align="left">S20500</td>
            <td align="left">Touch Single</td>
          </tr>
        </tbody>
      </table>
      <section anchor="withoutNull" numbered="true" toc="default">
        <name>Sorting without the Null Symbol</name>
        <t>Without the null symbol, the one-handed signs may be sorted after two-handed signs.
        This is suboptimal.
        </t>
        <table align="left" anchor="table_without_null">
          <thead>
            <tr>
              <th align="left">Sort Order</th>
              <th align="left">Temporal Prefix</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">AS10000</td>
              <td align="left">Single hand</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">AS10000S10100</td>
              <td align="left">Two hands</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">AS10000S20500</td>
              <td align="left">Single hand and contact</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="withNull" numbered="true" toc="default">
        <name>Sorting with the Null Symbol</name>
        <t>With the null symbol, all one-handed signs can be sorted before two-handed signs.
        This is ideal.
        </t>
        <table align="left" anchor="table_with_null">
          <thead>
            <tr>
              <th align="left">Sort Order</th>
              <th align="left">Temporal Prefix</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">AS10000</td>
              <td align="left">Single hand</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">AS10000S00000S20500</td>
              <td align="left">Single hand, null symbol, and contact</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">AS10000S10100</td>
              <td align="left">Two hands</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </back>
</rfc>
