Sutton-Slevinski Collaboration S. Slevinski Internet-Draft Center for Sutton Movement Writing Intended status: Informational January 22, 2019 Expires: July 26, 2019 Formal SignWriting draft-slevinski-formal-signwriting-06 Abstract 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. 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. Where as American Sign Language is a natural language, Formal SignWriting is a formal language. A formal language is useful in mathematics, computer science, and linguistics. 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. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any Slevinski Expires July 26, 2019 [Page 1] Internet-Draft FSW January 2019 time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on July 26, 2019. Copyright Notice Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Sutton SignWriting . . . . . . . . . . . . . . . . . . . . . 3 1.1. Script . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Symbols . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Formal SignWriting . . . . . . . . . . . . . . . . . . . . . 5 2.1. Design Principles . . . . . . . . . . . . . . . . . . . . 5 2.1.1. Complete . . . . . . . . . . . . . . . . . . . . . . 5 2.1.2. Universal . . . . . . . . . . . . . . . . . . . . . . 5 2.1.3. Empowering . . . . . . . . . . . . . . . . . . . . . 5 2.1.4. Possible . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Characters . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.1. Formal SignWriting in ASCII (FSW) . . . . . . . . . . 6 2.2.2. SignWriting in Unicode (SWU) . . . . . . . . . . . . 6 2.3. Building Blocks . . . . . . . . . . . . . . . . . . . . . 6 2.3.1. Regular Expressions . . . . . . . . . . . . . . . . . 6 2.3.2. Token Patterns . . . . . . . . . . . . . . . . . . . 7 2.3.3. Symbols . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.4. Numbers . . . . . . . . . . . . . . . . . . . . . . . 12 2.4. Two-Part Word . . . . . . . . . . . . . . . . . . . . . . 13 2.4.1. Spatial Signbox . . . . . . . . . . . . . . . . . . . 14 2.4.2. Temporal Prefix . . . . . . . . . . . . . . . . . . . 16 2.5. Styling String . . . . . . . . . . . . . . . . . . . . . 18 2.5.1. Entire Sign . . . . . . . . . . . . . . . . . . . . . 19 2.5.2. Individual Symbols . . . . . . . . . . . . . . . . . 21 2.5.3. SVG Class Names and ID . . . . . . . . . . . . . . . 22 2.6. Query Language . . . . . . . . . . . . . . . . . . . . . 23 2.6.1. Searching the Spatial Signbox . . . . . . . . . . . . 25 Slevinski Expires July 26, 2019 [Page 2] Internet-Draft FSW January 2019 2.6.2. Searching the Temporal Prefix . . . . . . . . . . . . 26 2.6.3. Including the Styling String . . . . . . . . . . . . 27 3. Technology Integration . . . . . . . . . . . . . . . . . . . 28 3.1. Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.1.1. Windows, Linux, and Mac . . . . . . . . . . . . . . . 28 3.1.2. Mac and iOS . . . . . . . . . . . . . . . . . . . . . 28 3.1.3. Android . . . . . . . . . . . . . . . . . . . . . . . 29 3.2. Fonts and CSS . . . . . . . . . . . . . . . . . . . . . . 29 3.3. Scalar Vector Graphics . . . . . . . . . . . . . . . . . 30 3.3.1. Font Based SVG . . . . . . . . . . . . . . . . . . . 30 3.3.2. Stand Alone SVG . . . . . . . . . . . . . . . . . . . 31 3.4. HTML and CSS . . . . . . . . . . . . . . . . . . . . . . 32 3.4.1. Centering and Sizing . . . . . . . . . . . . . . . . 32 3.4.2. Coloring Symbols and Signs . . . . . . . . . . . . . 33 3.4.3. Other Effects . . . . . . . . . . . . . . . . . . . . 34 3.4.4. Sentences . . . . . . . . . . . . . . . . . . . . . . 34 4. Transformations . . . . . . . . . . . . . . . . . . . . . . . 35 4.1. Formal SignWriting to Query String . . . . . . . . . . . 35 4.2. Query String to Regular Expression . . . . . . . . . . . 36 5. Unicode Considerations . . . . . . . . . . . . . . . . . . . 37 5.1. Official Characters . . . . . . . . . . . . . . . . . . . 37 5.2. 17 New Characters . . . . . . . . . . . . . . . . . . . . 38 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 7. Security Considerations . . . . . . . . . . . . . . . . . . . 39 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 39 Appendix A. For the Future of Sutton SignWriting . . . . . . . . 40 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 41 1. Sutton SignWriting 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, Portugese 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. Slevinski Expires July 26, 2019 [Page 3] Internet-Draft FSW January 2019 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. 1.1. Script 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 icon 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. Punctuation is represented by a single symbol and separates a series of signs into structured sentences. Line breaks should not occur before punctuation. 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). 1.2. Symbols 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. Slevinski Expires July 26, 2019 [Page 4] Internet-Draft FSW January 2019 2. Formal SignWriting 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. Where as American Sign Language is a natural language, Formal SignWriting is a formal language. A formal language is useful in mathematics, computer science, and linguistics. 2.1. Design Principles Formal SignWriting was created using four design principles: completeness, universality, empowerment, and possiblity. 2.1.1. Complete Sutton SignWriting is a complex script with unique requirements and processing. Formal SignWriting supports all of the structures inherent to the script. 2.1.2. Universal 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. 2.1.3. Empowering 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. 2.1.4. Possible 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. 2.2. Characters 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 Slevinski Expires July 26, 2019 [Page 5] Internet-Draft FSW January 2019 sets are isomorphic with an easy bi-directional conversion between the two sets. +-----------------+------------------+--------------------+ | Description | FSW Characters | SWU Characters | +-----------------+------------------+--------------------+ | Sequence Marker | A | U+1D800 | +-----------------+------------------+--------------------+ | Signbox Markers | B, L, M, R | U+1D801 to U+1D804 | +-----------------+------------------+--------------------+ | Numbers | 250 to 749 | U+1D80C to U+1D9FF | +-----------------+------------------+--------------------+ | Symbols | S10000 to S38b07 | U+40001 to U+4F428 | +-----------------+------------------+--------------------+ Table 1 2.2.1. Formal SignWriting in ASCII (FSW) 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". 2.2.2. SignWriting in Unicode (SWU) 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 promoted by the Center for Sutton Movement Writing. This alternate encoding overwrites the Sutton SignWriting block in Unicode and uses plane 4 for the SignWriting symbols. 2.3. Building Blocks The mathematical words of Formal SignWriting are plain text strings of characters. 2.3.1. Regular Expressions Regular Expressions define string matching criteria. Regular Expressions offer fast processing and wide support on the various platforms. Formal SignWriting is defined with regular expressions. Formal languages and regular expressions are used to solve fundamental problems. Slevinski Expires July 26, 2019 [Page 6] Internet-Draft FSW January 2019 Regular Expression Basics +------------+--------------------------+---------------------------+ | Characters | Description | Example | +------------+--------------------------+---------------------------+ | * | Match a literal 0 or | ABC* matches AB, ABC, | | | more times | ABCC, ... | +------------+--------------------------+---------------------------+ | + | Match a literal 1 or | ABC+ matches ABC, ABCC, | | | more times | ABCCC, ... | +------------+--------------------------+---------------------------+ | ? | Match a literal 0 or 1 | ABC? matches AB or ABC | | | times | | +------------+--------------------------+---------------------------+ | {#} | Match a literal "#" | AB{2} matches ABB | | | times | | +------------+--------------------------+---------------------------+ | [ ] | Match any single literal | [ABC] matches A, B, or C | | | from a list | | +------------+--------------------------+---------------------------+ | [ - ] | Match any single literal | [A-C] matches A, B, or C | | | in a range | | +------------+--------------------------+---------------------------+ | ( ) | Creates a group for | A(BC)+ matches ABC, | | | matching | ABCBC, ABCBCBC, ... | +------------+--------------------------+---------------------------+ | ( | ) | Matches one of several | (AB|BC|CD) will match AB, | | | alternatives | BC, or CD | +------------+--------------------------+---------------------------+ Table 2 2.3.2. Token Patterns 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). Slevinski Expires July 26, 2019 [Page 7] Internet-Draft FSW January 2019 The Tokens of Formal SignWriting +-------+-------------------------------+ | Token | Description | +-------+-------------------------------+ | A | Sequence Marker | +-------+-------------------------------+ | B | Signbox Marker | +-------+-------------------------------+ | L | Left Lane Marker | +-------+-------------------------------+ | M | Middle Lane Marker | +-------+-------------------------------+ | R | Right Lane Marker | +-------+-------------------------------+ | w | Writing BaseSymbols | +-------+-------------------------------+ | s | Detailed Location BaseSymbols | +-------+-------------------------------+ | P | Punctuation BaseSymbols | +-------+-------------------------------+ | i | Fill Modifiers | +-------+-------------------------------+ | o | Rotation Modifiers | +-------+-------------------------------+ | n | Number from 250 to 749 | +-------+-------------------------------+ Table 3 These tokens are used in patterns to form written sign language. 2.3.3. Symbols Symbols can be described with 3 tokens: base symbol, fill modifier, and rotation modifier. Slevinski Expires July 26, 2019 [Page 8] Internet-Draft FSW January 2019 Symbol Tokens +---------+---------------------------------------------------------+ | Token | Description | | Pattern | | +---------+---------------------------------------------------------+ | w | Writing BaseSymbols. | +---------+---------------------------------------------------------+ | s | Detailed Location BaseSymbols. | +---------+---------------------------------------------------------+ | P | Punctuation BaseSymbols. | +---------+---------------------------------------------------------+ | i | Fill Modifiers. | +---------+---------------------------------------------------------+ | o | Rotation Modifiers. | +---------+---------------------------------------------------------+ | wio | 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. | +---------+---------------------------------------------------------+ | [ws]io | 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. | +---------+---------------------------------------------------------+ | Pio | A punctuation symbol as 3 tokens of punctuation base, | | | fill modifier, and rotation modifier. Punctuation | | | symbols divide signs into sentences. | +---------+---------------------------------------------------------+ Table 4 There are a variety of symbol types that are used for different purposes. Slevinski Expires July 26, 2019 [Page 9] Internet-Draft FSW January 2019 Symbol Types and Descriptions +-------------+-----------------------------------------------------+ | Type | Description | +-------------+-----------------------------------------------------+ | all symbols | All symbols used in Formal SignWriting. | +-------------+-----------------------------------------------------+ | writing | Symbols that can be used in the spatial signbox or | | | the temporal prefix. | +-------------+-----------------------------------------------------+ | hand | Various handshapes | +-------------+-----------------------------------------------------+ | movement | Contact symbols, small finger movements, straight | | | arrows, curved arrows and circles. | +-------------+-----------------------------------------------------+ | dynamic | Dynamic symbols are used to give the "feeling" or | | | "tempo" to movement. | +-------------+-----------------------------------------------------+ | head | Symbols for the head and face. | +-------------+-----------------------------------------------------+ | hcenter | Used to determine the horizontal center of a sign. | | | Same as the head type. | +-------------+-----------------------------------------------------+ | vcenter | Use to determine the vertical center of a sign. | | | Includes the head and trunk types. | +-------------+-----------------------------------------------------+ | trunk | Symbols for torso movement, shoulders, and hips. | +-------------+-----------------------------------------------------+ | limb | Symbols for limbs and fingers. | +-------------+-----------------------------------------------------+ | location | Detailed location symbols can only be used in the | | | temporal prefix. | +-------------+-----------------------------------------------------+ | punctuation | Punctual symbols are used to divide signs into | | | sentences. | +-------------+-----------------------------------------------------+ Table 5 Symbol types occur in specific ranges depending on the characters involved. Slevinski Expires July 26, 2019 [Page 10] Internet-Draft FSW January 2019 Symbol Types and Ranges +-------------+-------------+------------------+ | Type | FSW | SWU | +-------------+-------------+------------------+ | all symbols | S100 - S38b | U+40001 -U+4F480 | +-------------+-------------+------------------+ | writing | S100 - S37e | U+40001 -U+4EFA0 | +-------------+-------------+------------------+ | hand | S100 - 204 | U+40001 -U+461E0 | +-------------+-------------+------------------+ | movement | S205 - S2f6 | U+461E1 -U+4BCA0 | +-------------+-------------+------------------+ | dynamic | S2f7 - S2fe | U+4BCA1 -U+4BFA0 | +-------------+-------------+------------------+ | head | S2ff - S36c | U+4BFA1 -U+4E8E0 | +-------------+-------------+------------------+ | hcenter | S2ff - S36c | U+4BFA1 -U+4E8E0 | +-------------+-------------+------------------+ | vcenter | S2ff - S375 | U+4BFA1 -U+4EC40 | +-------------+-------------+------------------+ | trunk | S36d - S375 | U+4E8E1 -U+4EC40 | +-------------+-------------+------------------+ | limb | S376 - S37e | U+4EC41 -U+4EFA0 | +-------------+-------------+------------------+ | location | S37f - S386 | U+4EFA1 -U+4F2A0 | +-------------+-------------+------------------+ | punctuation | S387 - S38b | U+4F2A1 -U+4F480 | +-------------+-------------+------------------+ Table 6 2.3.3.1. FSW Symbols 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. Slevinski Expires July 26, 2019 [Page 11] Internet-Draft FSW January 2019 Symbol Key Definition +--------------------------------+-----------------------+ | Regular Expression | Description | +--------------------------------+-----------------------+ | S | Start of symbol key | +--------------------------------+-----------------------+ | [123][0-9a-f]{2} | Symbol key base | +--------------------------------+-----------------------+ | [0-5] | Fill modifier | +--------------------------------+-----------------------+ | [0-9a-f] | Rotation modifier | +--------------------------------+-----------------------+ | S[123][0-9a-f]{2}[0-5][0-9a-f] | Symbol key definition | +--------------------------------+-----------------------+ Table 7 2.3.3.2. SWU Symbols The 37,811 symbols of the International SignWriting Alphabet 2010 are uniquely idendified with Unicode characters in the range U+40001 to U+4F428. A simple formula transforms a symbol key into a codepoint. Given a symbol key as variable "key", in JavaScript the function is defined as: var code = ((parseInt(key.slice(1,4),16) - 256) * 96) + ((parseInt(key.slice(4,5),16))*16) + parseInt(key.slice(5,6),16) + 1; 2.3.4. Numbers 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. Both FSW and SWU use a restricted range of 500 numbers between 250 and 749. Cartesian Coordinates can be described with 2 tokens: number and number. These numbers represent the X and Y coordinates respectively. Slevinski Expires July 26, 2019 [Page 12] Internet-Draft FSW January 2019 Coordinate Tokens +----------------+---------------------------------------------+ | Token Patterns | Description | +----------------+---------------------------------------------+ | n | Number from 250 to 749 | +----------------+---------------------------------------------+ | nn | Coordinate with X and Y values as 2 numbers | +----------------+---------------------------------------------+ Table 8 2.3.4.1. FSW Numbers 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. An X,Y coordinate is created by using the letter "x" to join two FSW numbers. General 3 digit number definition: [0-9]{3} General coordinate definition: [0-9]{3}x[0-9]{3} Explicit number definition from 250 to 749: (2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0-9]) Explicit coordinate definition: (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]) 2.3.4.2. SWU Numbers SignWriting in Unicode has a single definition for a number. Each number is uniquely idendified with Unicode characters in the range U+1D80C to U+1D9FF. A coordinate is defined as 2 numbers together. 2.4. Two-Part Word 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. Slevinski Expires July 26, 2019 [Page 13] Internet-Draft FSW January 2019 2.4.1. Spatial Signbox 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. 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. Y Axis | 250 | | | | | X Axis | -----------+------------ 250 | 749 | | | | | | 749 The Spatial Signbox can be described with 8 tokens. Slevinski Expires July 26, 2019 [Page 14] Internet-Draft FSW January 2019 Spatial Signbox Tokens +-----------------+-------------------------------------------------+ | Token Pattern | Description | +-----------------+-------------------------------------------------+ | B | Signbox Marker | +-----------------+-------------------------------------------------+ | L | Left Lane Marker | +-----------------+-------------------------------------------------+ | M | Middle Lane Marker | +-----------------+-------------------------------------------------+ | R | Right Lane Marker | +-----------------+-------------------------------------------------+ | w | Writing BaseSymbols | +-----------------+-------------------------------------------------+ | i | Fill Modifiers | +-----------------+-------------------------------------------------+ | o | Rotation Modifiers | +-----------------+-------------------------------------------------+ | n | Number from 250 to 749 | +-----------------+-------------------------------------------------+ | wio | A writing symbol as 3 tokens of writing base, | | | fill modifier and rotation modifier | +-----------------+-------------------------------------------------+ | nn | Coordinate with X and Y values as 2 numbers | +-----------------+-------------------------------------------------+ | wionn | A spatial symbol as 5 tokens, with 3 tokens for | | | a writing symbol and 2 tokens for coordinates | | | of top left placement | +-----------------+-------------------------------------------------+ | (wionn)* | Zero or more spatial symbols | +-----------------+-------------------------------------------------+ | Bnn(wionn)* | A Signbox with a preprocessed maximum | | | coordinate and a list of spatial symbols used | | | for horizontal writing | +-----------------+-------------------------------------------------+ | [LMR] | A lane marker: either left, middle or right. | +-----------------+-------------------------------------------------+ | [LMR]nn(wionn)* | 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 | +-----------------+-------------------------------------------------+ Table 9 Slevinski Expires July 26, 2019 [Page 15] Internet-Draft FSW January 2019 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. 2.4.1.1. Bounding Box 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 defined width and height 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. 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. 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 an Formal SignWriting word. 2.4.1.2. Maximum Coordinate 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. 2.4.1.3. Centering a Sign 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 Table 6 Once the center of a sign has been determined, the symbols are moved so that the center is coordinate 500,500. 2.4.2. Temporal Prefix 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 Slevinski Expires July 26, 2019 [Page 16] Internet-Draft FSW January 2019 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. 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. 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. The temporal prefix allows for sorting that is universally supported through binary string comparison. 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 of type "head", "trunk", and "limb". Detailed location symbols of type "location" can be used in a temporal prefix, but are rarely (if ever) needed for general writing. A temporal prefix can be described with 5 tokens. Slevinski Expires July 26, 2019 [Page 17] Internet-Draft FSW January 2019 Temporal Prefix Tokens +---------------+---------------------------------------------------+ | Token | Description | | Patterns | | +---------------+---------------------------------------------------+ | A | Sequence Marker | +---------------+---------------------------------------------------+ | w | Writing BaseSymbols | +---------------+---------------------------------------------------+ | s | Detailed Location BaseSymbols | +---------------+---------------------------------------------------+ | i | Fill Modifiers | +---------------+---------------------------------------------------+ | o | Rotation Modifiers | +---------------+---------------------------------------------------+ | (A([ws]io)+)? | An optional temporal prefix to be used as a | | | prefix for a Signbox | +---------------+---------------------------------------------------+ Table 10 The temporal prefix starts with a sequence marker and includes an ordered list of writing symbols and detailed locations. 2.5. Styling String 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. Colors can be written as CSS color names or as color hex values. CSS Color Names: [a-zA-Z]+ Color Hex Values: [0-9a-fA-F]{3}([0-9a-fA-F]{3})? 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. Slevinski Expires July 26, 2019 [Page 18] Internet-Draft FSW January 2019 Styling String: -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]+))?_)*(Z[0-9]{2},[0-9]+(\.[0-9]+)?(,[0-9]{3}x[0-9]{3})?)*)?(-- ?[_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}!)?)? 2.5.1. Entire Sign There are several options for styling an entire sign. C Colorize P Padding G Background D Detail colors Z Zoom level 2.5.1.1. Colorize Colorizing a sign will set the color of each symbol based on its classification. Hand 0000CC Movement CC0000 Dynamic FF0099 Head 006600 Body 000000 Detailed Location 884411 Punctuation FF9900 Slevinski Expires July 26, 2019 [Page 19] Internet-Draft FSW January 2019 +----------------+----------------------------------+ | Styling String | Description | +----------------+----------------------------------+ | -C | Colorize the symbols of the sign | +----------------+----------------------------------+ Table 11 2.5.1.2. Padding Padding is applied around the entire sign. A two-digit number is used to set the padding. +----------------+--------------------------------+ | Styling String | Description | +----------------+--------------------------------+ | -P01 | A padding of 1 around the sign | +----------------+--------------------------------+ Table 12 2.5.1.3. Background 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. +----------------+-----------------------------------+ | Styling String | Description | +----------------+-----------------------------------+ | -G_lightblue_ | Background color of light blue. | +----------------+-----------------------------------+ | -G_f00_ | Background color as 3 hex values. | +----------------+-----------------------------------+ | -G_ff0000_ | Background color as 6 hex values. | +----------------+-----------------------------------+ Table 13 2.5.1.4. Detail Colors 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. Slevinski Expires July 26, 2019 [Page 20] Internet-Draft FSW January 2019 +----------------+------------------------------------------------+ | Styling String | Description | +----------------+------------------------------------------------+ | -D_red_ | Line color of red. | +----------------+------------------------------------------------+ | -D_red,yellow_ | Line color of red with a fill color of yellow. | +----------------+------------------------------------------------+ Table 14 2.5.1.5. Zoom Level By default, a sign is set to zoom level 1. The zoom level can be set with an integer or a decimal number. 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. +----------------+--------------------------+ | Styling String | Description | +----------------+--------------------------+ | -Z2 | Zoom level of 2 | +----------------+--------------------------+ | -Z15.7 | Zoom level of 15.7 | +----------------+--------------------------+ | -Zx | Zoom level of extendable | +----------------+--------------------------+ Table 15 2.5.2. Individual Symbols There are two options for styling individual symbols. Individual symbols are identified by a two-digit number, which identifies the order the symbol appears in the Signbox. D Detail colors Z Zoom level 2.5.2.1. Detail Colors 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. Slevinski Expires July 26, 2019 [Page 21] Internet-Draft FSW January 2019 To set the fill color, put a comma and the fill color after the line color but before the closing underscore. +----------------------+--------------------------------------------+ | Styling String | Description | +----------------------+--------------------------------------------+ | --D01_red_ | First symbol line color of red. | +----------------------+--------------------------------------------+ | --D01_red,yellow_ | First symbol line color of red with a fill | | | color of yellow. | +----------------------+--------------------------------------------+ | --D01_red_D02_green_ | First symbol line color of red and second | | | symbol line color of green. | +----------------------+--------------------------------------------+ Table 16 2.5.2.2. Zoom Level By default, each symbol is set to zoom level 1. The zoom level of individual symbols can be set with an integer or a decimal number. Additionally, an offset coordinate can be specified with an individual symbol's zoom level. The offset coordinate of 500x500 is considered no offset for either the x or y value. +-------------------+-----------------------------------------------+ | Styling String | Description | +-------------------+-----------------------------------------------+ | --Z03,2 | Third symbol zoom level of 2 | +-------------------+-----------------------------------------------+ | --Z04,15.7 | Fourth symbol zoom level of 15.7 | +-------------------+-----------------------------------------------+ | --Z04,1.5,480x500 | Fourth symbol zoom level of 1.5 with a -20 | | | offset applied to the X value of the symbol's | | | placement coordinate. | +-------------------+-----------------------------------------------+ Table 17 2.5.3. SVG Class Names and ID When using SVG, there are two additional styling options of class names and ID. {class names}! SVG Class Names {ID}! SVG ID Slevinski Expires July 26, 2019 [Page 22] Internet-Draft FSW January 2019 Both class names and ID use a restricted ASCII subset. class names -?[_a-zA-Z][_a-zA-Z0-9-]{0,100}( -?[_a-zA-Z][_a-zA- Z0-9-]{0,100})* ID [a-zA-Z][_a-zA-Z0-9-]{0,100} 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. +---------------------+---------------------------------------------+ | Styling String | Description | +---------------------+---------------------------------------------+ | ---glowing! | A class name of "glowing" | +---------------------+---------------------------------------------+ | ---flashing | Two class names of "flashing" and | | primary! | "primary". | +---------------------+---------------------------------------------+ | ---!cursor! | SVG created with an ID of "cursor" | +---------------------+---------------------------------------------+ | ---flashing!cursor! | SVG created with a class name of "flashing" | | | and an ID of "cursor" | +---------------------+---------------------------------------------+ Table 18 2.6. Query Language 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. 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. The query language of Formal SignWriting is different for FSW and SWU, but allows for the same searching strategies. Any FSW string and SWU string can easily be converted into several different query string, depending on the search parameters. Slevinski Expires July 26, 2019 [Page 23] Internet-Draft FSW January 2019 There are two main sections of a query string. The first searches the spatial signbox. The second searches the temporal prefix. Both sections use the same definition for a symbol or a range. The symbol search can match an exact symbol, or a set of symbols with an unspecified fill or rotation. With FSW, the fill and rotation modifiers of a symbol key can be replaced with the "u" character as a wildcard. The "u" stands for unknown and will match all values rather than a specific character. With SWU, the letters "f' or "r" can be written after a symbol to indicate an unspecified fill or rotation respectively. The range search can match a range of base symbols. The base symbol range consists of 2 values: the starting base symbol and the ending base symbol. Every symbol between these 2 base symbols will be matched. Symbol Search in FSW: S[123][0-9a-f]{2}[0-5u][0-9a-fu] Symbol Search in SWU (UTF-16): ((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD 8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r? Range Search in FSW: R[123][0-9a-f]{2}t[123][0-9a-f]{2} Symbol Search in SWU (UTF-16): R((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\u D8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))((\uD8C0[\uDC01-\uDF FF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80])) At the end of the query string is an optional styling string flag represented by a dash (-). If present, the Formal SignWriting strings will include any styling strings. If the styling string flag isn't included, the query string will only find plain text Formal SignWriting strings without the styling string. The full query string definition allows for the possibility of searching the temporal prefix and the spatial signbox at the same time. Query String in FSW: Q((A(S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0- 9a-f]{2}t[123][0-9a-f]{2})+)?T)?(S[123][0-9a-f]{2}[0-5u][0-9a- fu]([0-9]{3}x[0-9]{3})?|R[123][0-9a-f]{2}t[123][0-9a- f]{2}([0-9]{3}x[0-9]{3})?)*(V[0-9]+)?-? Query String in SWU (UTF-16): Q((A(((\uD8C0[\uDC01-\uDFFF])|([\uD8C1 -\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?|R((\uD8C0[\u DC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC Slevinski Expires July 26, 2019 [Page 24] Internet-Draft FSW January 2019 80]))f?r?((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF]) |(\uD8FD[\uDC00-\uDC80]))f?r?)+)?T)?((R((\uD8C0[\uDC01-\uDFFF])|([ \uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?((\uD8C 0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00- \uDC80]))f?r?(\uD836[\uDC0C-\uDDFF]\uD836[\uDC0C-\uDDFF])?)|(((\uD 8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC0 0-\uDC80]))f?r?(\uD836[\uDC0C-\uDDFF]\uD836[\uDC0C-\uDDFF])?))*(V[ 0-9]+)?-? 2.6.1. Searching the Spatial Signbox The spatial signbox is a list of symbols with 2-dimensional placement. The query "Q" will find all signs regardless of the symbols used or their placement. It is possible to specify one or more symbols (or ranges of symbols) that must be included in the Signbox to indicate a match. The order of the symbols is not important. Each symbol (or range) can include an optional coordinate. The coordinate is a restriction on the match, such that a symbol must be used within a certain variance of the coordinate to qualify as a match. The variance is a number value, 0 or greater with a default value of 20. A variance of 0 will only find symbols used at an exact coordinate. A variance of 5 will match the symbols used at a coordinate, plus or minus 5 for both X and Y numbers. Symbol Search with Optional Coordinate: S[123][0-9a-f]{2}[0-5u][0- 9a-fu]([0-9]{3}x[0-9]{3})? Range Search with Optional Coordinate: R[123][0-9a-f]{2}t[123][0-9a- f]{2}([0-9]{3}x[0-9]{3})? Variance: (V[0-9]+)? Spatial Signbox Search Query: Q(S[123][0-9a-f]{2}[0-5u][0-9a- fu]([0-9]{3}x[0-9]{3})?|R[123][0-9a-f]{2}t[123][0-9a- f]{2}([0-9]{3}x[0-9]{3})?)*(V[0-9]+)? Slevinski Expires July 26, 2019 [Page 25] Internet-Draft FSW January 2019 Spatial Signbox Query Examples +------------------+------------------------------------------------+ | Query | Description | +------------------+------------------------------------------------+ | Q | All signs | +------------------+------------------------------------------------+ | QS100uu | Signs with the index handshape in the spatial | | | signbox | +------------------+------------------------------------------------+ | QS100uu480x480 | Signs with the index handshape in the spatial | | | signbox used near coordinate (480,480) | +------------------+------------------------------------------------+ | QS100uu480x480V0 | Signs with the index handshape in the spatial | | | signbox used at the exact coordinate (480,480) | +------------------+------------------------------------------------+ | QS100uuR2fft36c | Signs with the index handshape and a symbol | | | from the head & face range | +------------------+------------------------------------------------+ Table 19 2.6.2. Searching the Temporal Prefix The temporal prefix is a list of symbol keys. The query "QT" will find all signs that include a temporal prefix. It is possible to specify the start of the temporal prefix by identifying a series of symbols and/or ranges. The query will start with an "QA" and end with a "T", such as "QA...T". Between the "QA" and "T", a series of symbol searches and/or range searches will specify the desired start of the temporal prefix. The order of the symbols and ranges is important. Temporal Prefix Search Query: Q((A(S[123][0-9a-f]{2}[0-5u][0-9a- fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})+)?T)? Slevinski Expires July 26, 2019 [Page 26] Internet-Draft FSW January 2019 Temporal Prefix Query Examples +-------------------------+-----------------------------------------+ | Query | Description | +-------------------------+-----------------------------------------+ | QT | All signs that include the temporal | | | prefix | +-------------------------+-----------------------------------------+ | QAS100uuT | Signs with a temporal prefix that | | | starts with the index handshape | +-------------------------+-----------------------------------------+ | QAS100uuR100t204S20500T | Signs with a temporal prefix that | | | starts with the index handshape, | | | followed by any handshape, followed by | | | the single contact | +-------------------------+-----------------------------------------+ Table 20 2.6.3. Including the Styling String At the end of the query string is an optional styling string flag represented by a dash (-). If present, the Formal SignWriting strings will include any styling strings. If the styling string flag isn't included, the query string will only find plain text Formal SignWriting strings without the styling string. Styling String Search Query: Q- Styling String Search Only: - Styling String Query Examples +-------+-----------------------------------------------------------+ | Query | Description | +-------+-----------------------------------------------------------+ | Q- | All signs including the styling strings when present | +-------+-----------------------------------------------------------+ | - | Only find styling string without including the Formal | | | SignWriting | +-------+-----------------------------------------------------------+ Table 21 Slevinski Expires July 26, 2019 [Page 27] Internet-Draft FSW January 2019 3. Technology Integration Formal SignWriting has been specifically designed to integrate with standard technology on the phone, tablet, and desktop. 3.1. Fonts The Sutton SignWriting Fonts are available as source SVG and as three TrueType Font files. Sutton SignWriting Fonts Copyright (c) 1974-2017, Center for Sutton Movement Writing, inc Licensed under the SIL Open Font License v1.1 The Sutton SignWriting TrueType fonts are available for download and installation. 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. 3.1.1. Windows, Linux, and Mac Installation is straight forward for Windows, Linux and Mac. Simply download the TrueType fonts and install as usual. Sutton SignWriting Line TrueType Font [SuttonSignWritingFontLine] Sutton SignWriting Fill TrueType Font [SuttonSignWritingFontFill] Sutton SignWriting One-D TrueType Font [SuttonSignWritingFontOneD] 3.1.2. Mac and iOS 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. Sutton SignWriting Symbol Configuration Profile [SuttonSignWritingFontSymbol] Slevinski Expires July 26, 2019 [Page 28] Internet-Draft FSW January 2019 Sutton SignWriting One Configuration Profile [SuttonSignWritingFontOne] 3.1.3. Android Android can not install the fonts directly onto the system. The CSS declarations below will install the fonts in the browser cache. 3.2. Fonts and CSS 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. @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'); } 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. Slevinski Expires July 26, 2019 [Page 29] Internet-Draft FSW January 2019 3.3. Scalar Vector Graphics Sutton SignWriting is a 2-dimensional script. The sign images are composed using Scalar Vector Graphic (SVG). 3.3.1. Font Based SVG The conversion of Formal SignWriting to Scalar Vector Graphics requires three parts: header, text, and symbols. Consider the FSW string "M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468". 3.3.1.1. SVG Header 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. Minimum X: 482 Maximum X: 518 Width: 36 Minimum Y: 468 Maximum Y: 533 Height: 65 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. 3.3.1.2. SVG Text 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. Slevinski Expires July 26, 2019 [Page 30] Internet-Draft FSW January 2019 M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468 3.3.1.3. SVG Symbols Each symbol in the Signbox is a combination of the symbol key and the positioning coordinate. Symbol 1: S1870a 489x515 Symbol 2: S18701 482x490 Symbol 3: S20500 508x496 Symbol 4: S2e734 500x468 Each spatial symbol is written as an SVG group and positioned by the transformation translate. ... ... ... ... 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 Section 2.3.3.2 for the formula to convert symbol keys to codepoints. {plane 16 codepoint} {plane 15 codepoint} 3.3.2. Stand Alone SVG It is possible to request completed SVG images from the SignWriting Server [SignWritingServer]. 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. Slevinski Expires July 26, 2019 [Page 31] Internet-Draft FSW January 2019 The SVG header and SVG text for the server-side images are the same as the standard FSW to SVG transformation. See Section 3.3.1 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". Symbol 1: S1870a 489x515 Symbol 2: S18701 482x490 Symbol 3: S20500 508x496 Symbol 4: S2e734 500x468 ... ... ... ... 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. 3.4. HTML and CSS Basic HTML structures and CSS rules can be used with Formal SignWriting for customization and layout. 3.4.1. Centering and Sizing 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.
Slevinski Expires July 26, 2019 [Page 32] Internet-Draft FSW January 2019 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%; } 3.4.2. Coloring Symbols and Signs 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.
Slevinski Expires July 26, 2019 [Page 34] Internet-Draft FSW January 2019 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; } 4. Transformations Formal SignWriting and the surrounding technologies have been created to facilitate easy transformations between the various forms. 4.1. Formal SignWriting to Query String 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". Exact Temporal Prefix Symbols: QAS14c20S27106T General Temporal Prefix Symbols: QAS14cuuS271uuT Exact Spatial Signbox Symbols: QS14c20S27106 General Spatial Signbox Symbols: QS14cuuS271uu Exact Spatial Signbox Symbols with Location: QS14c20481x471S27106503x489 General Spatial Signbox Symbols with Location: QS14cuu481x471S271uu503x489 Slevinski Expires July 26, 2019 [Page 35] Internet-Draft FSW January 2019 4.2. Query String to Regular Expression The transformation from query string to regular expressions has been fully implemented in the Sutton SignWriting JavaScript Library and the SignWriting Server. The query language to regular expressions generator uses the following regular expression structures as building blocks. Temporal Prefix Prefix: (A(S[123][0-9a-f]{2}[0-5][0-9a-f])+) Signbox Prefix: [BLMR]([0-9]{3}x[0-9]{3}) Spatial Symbols: (S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3})* 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. The Signbox Prefix is a combination of structural marker and preprocessed maximum coordinate. Every constructed regular expression will include the Signbox Prefix. 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. Searching for number ranges with regular expressions requires a unique technique. This technique requires five steps. Find a number between 122 and 455 1) 10's don't match and the min 1's are not zero ( last number to 9): Match 12[2-9] 2) Bring up the 10's if hundreds are different: Match 1[3-9][0-9] 3) Bring up the 100's if different: Match [2-3][0-9][0-9] 4) Bring up the 10's: Match 4[0-4][0-9] 5) Bring up the 1's: Match 45[0-5] Slevinski Expires July 26, 2019 [Page 36] Internet-Draft FSW January 2019 Final Match (12[2-9]|1[3-9][0-9]|[2-3][0-9][0-9]|4[0-4][0-9]|45[0-5]) For the styling string regular expression, see Section 2.5. 5. Unicode Considerations In 2015, the Sutton SignWriting block was officially added to the Unicode standard. This block contains characters for representing the symbols of the ISWA 2010. Unfortunately, this encoding has several unresolved issues. The presentation Issues with SignWriting in Unicode 8 [Unicode8Issues] details why this encoding is incomplete, broken, and fictional. Discussions with the Unicode Technical Committee continue. The latest document submission is Design Options for Sutton SignWriting with examples and fonts [SuttonSignWritingOptions]. The Center for Sutton Movement Writing discourages the use of these characters as defined in the Unicode standard. Alternatively, the Center for Sutton Movement Writing encourages the character sets (Section 2.2) of Formal SignWriting in ASCII (FSW) or SignWriting in Unicode (SWU). This information is included for informational purposes only. 5.1. Official Characters In 2015, the symbols of Sutton SignWriting were added to Unicode version 8. See Section 1.2 and Section 2.3.3 +----------------------------+--------------------+ | Description | Unicode Range | +----------------------------+--------------------+ | Base Characters | U+1D800 to U+1DA8B | +----------------------------+--------------------+ | Fill Modifiers 2 to 6 | U+1DA9B to U+1DA9F | +----------------------------+--------------------+ | Rotation Modifiers 2 to 16 | U+1DAA1 to U+1DAAF | +----------------------------+--------------------+ Table 22 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 Slevinski Expires July 26, 2019 [Page 37] Internet-Draft FSW January 2019 Modifier 1 (U+1DAA0) are inherent characters and should be not be written in the character string. var base = parseInt(key.substr(1,3),16) + parseInt('1D700',16); var fill = parseInt(key.substr(4,1),16) + parseInt('1DA9A',16); var rotation = parseInt(key.substr(5,1),16) + parseInt('1DAA0',16); 5.2. 17 New Characters The addition of 17 Unicode characters to the official Unicode standard can complete the script encoding and cover 2-dimensional layout. +---------------------+--------------------+--------------------+ | Description | Formal SignWriting | Proposed Unicode | +---------------------+--------------------+--------------------+ | Fill Modifier 1 | 0 | U+1DA9A | +---------------------+--------------------+--------------------+ | Rotation Modifier 1 | 0 | U+1DAA0 | +---------------------+--------------------+--------------------+ | Numbers | 0 to 9 | U+1DAB0 to U+1DAB9 | +---------------------+--------------------+--------------------+ | Sequence Marker | A | U+1DABA | +---------------------+--------------------+--------------------+ | Signbox Markers | B | U+1DABB | +---------------------+--------------------+--------------------+ | Left Lane Markers | L | U+1DABC | +---------------------+--------------------+--------------------+ | Middle Lane Markers | M | U+1DABD | +---------------------+--------------------+--------------------+ | Right Lane Markers | R | U+1DABE | +---------------------+--------------------+--------------------+ Table 23 Fill Modifier 1 and Rotation Modifier 1 are included to fix sorting and simplify processing. The 10 number characters express the concept of distance, important for use with 2-dimensional scripts. The 5 structural markers define cohesive units of the script. Slevinski Expires July 26, 2019 [Page 38] Internet-Draft FSW January 2019 6. IANA Considerations None. 7. Security Considerations None. 8. References [FutureOfSignWriting] Slevinski, S., "For the Future of Sutton SignWriting", . [PatronsOfSignWriting] Slevinski, S., "Support SignWriting on Patreon", . [SignWritingServer] Slevinski, S., "SignWriting Server", . [SteveSlevinskiMe] Slevinski, S., "Steve Slevinski's Homepage", . [SuttonSignWritingFontFill] Slevinski, S., "Sutton SignWriting Fill TypeType Font", . [SuttonSignWritingFontLine] Slevinski, S., "Sutton SignWriting Line TypeType Font", . [SuttonSignWritingFontOne] Slevinski, S., "Sutton SignWriting One Configuration Profile", . [SuttonSignWritingFontOneD] Slevinski, S., "Sutton SignWriting One-D TypeType Font", < https://cdn.rawgit.com/Slevinski/SuttonSignWriting/master/ assets/SuttonSignWritingOneD.ttf>. Slevinski Expires July 26, 2019 [Page 39] Internet-Draft FSW January 2019 [SuttonSignWritingFontSymbol] Slevinski, S., "Sutton SignWriting Symbol Configuration Profile", . [SuttonSignWritingOptions] Slevinski, S., "Sutton SignWriting Design Options", . [SuttonSignWritingProject] Slevinski, S., "Sutton SignWriting Project", . [Unicode8Issues] Slevinski, S., "Issues with SignWriting in Unicode 8", . Appendix A. For the Future of Sutton SignWriting Sign languages are human languages. Around the world, over 140 sign languages have been identified. Of those recognized sign languages, I helped create and collect digital SignWriting for 60 of those sign languages. For the past 14 years, I've been working with Valerie Sutton, the inventor of SignWriting. Together, we created the Sutton SignWriting standards of 2010, 2012, and 2017. These standards will be useful far into the future. SignWriting is free to use. SignWriting is promoted by the Center for Sutton Movement Writing, a 501c3 educational non-profit (95-3068257). We've been successful with developing and spreading SignWriting, but we haven't been successful with fundraising. If I am going to continue full-time with SignWriting starting in 2019, I need an alternative and reliable funding source. I'm looking for groups and individuals who find my work meaningful to become patrons to fund development and future growth. I chose Patreon for two reasons. First, if my work is directly financed by patrons, I will no longer need to burden Valerie Sutton and the non-profit. Second, everyone who becomes my patron adds to the SignWriting platform. The size of the platform matters when dealing with educational institutions, government agencies, and international standards. Slevinski Expires July 26, 2019 [Page 40] Internet-Draft FSW January 2019 I am grateful to all of my patrons, especially those who join the team for $1 a month. For patrons who choose a larger monthly donation, I have created a few perks and incentives for joining. Thanks for your consideration, -Steve Slevinski http://SteveSlevinski.me [SteveSlevinskiMe]. For the Future of Sutton SignWriting [FutureOfSignWriting]. Support SignWriting on Patreon [PatronsOfSignWriting]. Author's Address Stephen E Slevinski Jr Center for Sutton Movement Writing Email: slevinski@signwriting.org Slevinski Expires July 26, 2019 [Page 41]