idnits 2.17.1 draft-slevinski-formal-signwriting-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (June 24, 2017) is 2497 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Missing Reference: 'ABC' is mentioned on line 259, but not defined == Missing Reference: 'A-C' is mentioned on line 262, but not defined -- Looks like a reference, but probably isn't: '123' on line 1292 == Missing Reference: '0-9a-f' is mentioned on line 1292, but not defined == Missing Reference: '0-5' is mentioned on line 1327, but not defined == Missing Reference: '5-9' is mentioned on line 563, but not defined == Missing Reference: '0-9' is mentioned on line 1327, but not defined == Missing Reference: '3-6' is mentioned on line 563, but not defined == Missing Reference: '0-4' is mentioned on line 1327, but not defined == Missing Reference: 'LMR' is mentioned on line 652, but not defined == Missing Reference: 'BLMR' is mentioned on line 852, but not defined == Missing Reference: '7-9ab' is mentioned on line 853, but not defined == Missing Reference: '0-5u' is mentioned on line 1203, but not defined == Missing Reference: '0-9a-fu' is mentioned on line 1134, but not defined == Missing Reference: '2-9' is mentioned on line 1327, but not defined == Missing Reference: '3-9' is mentioned on line 1327, but not defined == Missing Reference: '2-3' is mentioned on line 1327, but not defined Summary: 1 error (**), 0 flaws (~~), 17 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Sutton-Slevinski Collaboration S. Slevinski 3 Internet-Draft Center for Sutton Movement Writing 4 Intended status: Informational June 24, 2017 5 Expires: December 26, 2017 7 Formal SignWriting 8 draft-slevinski-formal-signwriting-02 10 Abstract 12 Sutton SignWriting is the universal and complete solution for written 13 sign language. It has been applied by a wide and deep international 14 community of sign language users. Sutton SignWriting is an 15 international standard for writing sign languages by hand or with 16 computers. From education to research, from entertainment to 17 religion, SignWriting has proven useful because people are using it 18 to write signed languages. 20 Formal SignWriting (FSW) is a faithful character-encoding of Sutton 21 SignWriting based on 2-dimensional mathematics. FSW defines a formal 22 language for written sign languages where any sign of any sign 23 language can be written as a string of ASCII or Unicode characters. 24 The mathematical names are explained with tokens and regular 25 expression patterns. Signs are written in a spatial SignBox, where 26 each symbol is positioned with a 2-dimension Cartesian coordinate. 27 For sorting, each sign can have an optional temporal sequence of 28 symbols that is outside of the SignBox. To create sentences, signs 29 are written sequentially, interspersed with punctuation symbols. 31 The styling string of Formal SignWriting uses a lite markup to define 32 a variety of styling options. The entire sign can be customized for 33 padding, coloring, and size. Individual symbols within a sign can be 34 customized for coloring and size. For SVG, class names and IDs can 35 be defined. 37 The query language of Formal SignWriting uses a lite markup, similar 38 to FSW, to define a variety of searching possibilities. The spatial 39 SignBox can be searched for symbols or ranges of symbols. For each 40 symbol or range, the search can specify if the symbol only needs to 41 be found somewhere in the SignBox, or if the symbol needs to be found 42 near certain coordinates. The temporal sequence can be searched for 43 starting symbols, written as a sequential list of symbols and ranges 44 of symbols. When searching the temporal sequence, the search results 45 will be limited to signs that start with a matching temporal 46 sequence. Each query string is transformed into one or more regular 47 expressions. The regular expressions are used to quickly search 48 large amounts of data. 50 Formal SignWriting has been specifically designed to integrate with 51 standard technology on the phone, tablet, and desktop. Four main 52 components make this integration possible: 1) Fonts, 2) Scalar Vector 53 Graphics, 3) HTML and CSS, and 4) JavaScript. 55 Formal SignWriting as ASCII characters is compatible with and 56 optimized for UTF-8. There are 2 options for Formal SignWriting in 57 Unicode. Option 1 is an alternate encoding that replaces the Sutton 58 SignWriting block in Unicode. Option 1 focuses on small size, simple 59 design, and ease of use. Option 2 is an encoding that is 97.5% 60 official Unicode with defined characters in the Sutton SignWriting 61 block. Option 2 focuses on augmenting the Unicode 8 standard with 17 62 new control characters for a design that is compatible with Formal 63 SignWriting. 65 This memo defines a conceptual character encoding map for the 66 Internet community. It is published for reference, examination, 67 implementation, and evaluation. Distribution of this memo is 68 unlimited. 70 Status of This Memo 72 This Internet-Draft is submitted in full conformance with the 73 provisions of BCP 78 and BCP 79. 75 Internet-Drafts are working documents of the Internet Engineering 76 Task Force (IETF). Note that other groups may also distribute 77 working documents as Internet-Drafts. The list of current Internet- 78 Drafts is at http://datatracker.ietf.org/drafts/current/. 80 Internet-Drafts are draft documents valid for a maximum of six months 81 and may be updated, replaced, or obsoleted by other documents at any 82 time. It is inappropriate to use Internet-Drafts as reference 83 material or to cite them other than as "work in progress." 85 This Internet-Draft will expire on December 26, 2017. 87 Copyright Notice 89 Copyright (c) 2017 IETF Trust and the persons identified as the 90 document authors. All rights reserved. 92 This document is subject to BCP 78 and the IETF Trust's Legal 93 Provisions Relating to IETF Documents 94 (http://trustee.ietf.org/license-info) in effect on the date of 95 publication of this document. Please review these documents 96 carefully, as they describe your rights and restrictions with respect 97 to this document. Code Components extracted from this document must 98 include Simplified BSD License text as described in Section 4.e of 99 the Trust Legal Provisions and are provided without warranty as 100 described in the Simplified BSD License. 102 Table of Contents 104 1. Sutton SignWriting . . . . . . . . . . . . . . . . . . . . . 4 105 1.1. Script . . . . . . . . . . . . . . . . . . . . . . . . . 4 106 1.2. Symbols . . . . . . . . . . . . . . . . . . . . . . . . . 5 107 2. Formal SignWriting . . . . . . . . . . . . . . . . . . . . . 5 108 2.1. Building Blocks . . . . . . . . . . . . . . . . . . . . . 5 109 2.1.1. Regular Expressions . . . . . . . . . . . . . . . . . 5 110 2.1.2. Token Patterns . . . . . . . . . . . . . . . . . . . 6 111 2.1.3. Characters . . . . . . . . . . . . . . . . . . . . . 7 112 2.1.4. Symbols . . . . . . . . . . . . . . . . . . . . . . . 8 113 2.1.5. Numbers . . . . . . . . . . . . . . . . . . . . . . . 12 114 2.1.6. Spatial SignBox . . . . . . . . . . . . . . . . . . . 14 115 2.1.7. Temporal Sequence . . . . . . . . . . . . . . . . . . 17 116 2.1.8. Sentences . . . . . . . . . . . . . . . . . . . . . . 18 117 2.2. Styling String . . . . . . . . . . . . . . . . . . . . . 20 118 2.2.1. Entire Sign . . . . . . . . . . . . . . . . . . . . . 20 119 2.2.2. Individual Symbols . . . . . . . . . . . . . . . . . 23 120 2.2.3. SVG Class Names and ID . . . . . . . . . . . . . . . 24 121 2.3. Query Language . . . . . . . . . . . . . . . . . . . . . 25 122 2.3.1. Searching the Spatial SignBox . . . . . . . . . . . . 26 123 2.3.2. Searching the Temporal Sequence . . . . . . . . . . . 27 124 2.3.3. Including the Styling String . . . . . . . . . . . . 28 125 2.4. Transformations . . . . . . . . . . . . . . . . . . . . . 29 126 2.4.1. Formal SignWriting to Query String . . . . . . . . . 29 127 2.4.2. Query String to Regular Expression . . . . . . . . . 29 128 3. Technology Integration . . . . . . . . . . . . . . . . . . . 30 129 3.1. Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . 30 130 3.1.1. Installing the TrueType Fonts . . . . . . . . . . . . 31 131 3.1.2. Using the Fonts without Installation . . . . . . . . 31 132 3.2. Scalar Vector Graphics . . . . . . . . . . . . . . . . . 32 133 3.2.1. Font Based SVG . . . . . . . . . . . . . . . . . . . 32 134 3.2.2. Stand Alone SVG . . . . . . . . . . . . . . . . . . . 34 135 3.3. HTML and CSS . . . . . . . . . . . . . . . . . . . . . . 35 136 3.3.1. Centering and Sizing . . . . . . . . . . . . . . . . 35 137 3.3.2. Coloring Symbols and Signs . . . . . . . . . . . . . 35 138 3.3.3. Other Effects . . . . . . . . . . . . . . . . . . . . 36 139 3.3.4. Sentences . . . . . . . . . . . . . . . . . . . . . . 36 140 3.4. JavaScript . . . . . . . . . . . . . . . . . . . . . . . 37 141 4. Unicode Considerations . . . . . . . . . . . . . . . . . . . 37 142 4.1. UTF-8 . . . . . . . . . . . . . . . . . . . . . . . . . . 37 143 4.2. Option 1 . . . . . . . . . . . . . . . . . . . . . . . . 38 144 4.2.1. Symbols . . . . . . . . . . . . . . . . . . . . . . . 38 145 4.2.2. Other Characters . . . . . . . . . . . . . . . . . . 38 147 4.3. Option 2 . . . . . . . . . . . . . . . . . . . . . . . . 39 148 4.3.1. Official Characters . . . . . . . . . . . . . . . . . 39 149 4.3.2. 17 New Characters . . . . . . . . . . . . . . . . . . 40 150 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 151 6. Security Considerations . . . . . . . . . . . . . . . . . . . 41 152 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 153 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 41 155 1. Sutton SignWriting 157 Sutton SignWriting is the universal and complete solution for written 158 sign language. It has been applied by a wide and deep international 159 community of sign languages including: American Sign Language, 160 Arabian Sign Languages, Australian Sign Language, Bolivian Sign 161 Language, Brazilian Sign Language, British Sign Language, Catalan 162 Sign Language, Colombian Sign Language, Czech Sign Language, Danish 163 Sign Language, Dutch Sign Language, Ethiopian Sign Language, Finnish 164 Sign Language, Flemish Sign Language, French-Belgian Sign Language, 165 French Sign Language, German Sign Language, Greek Sign Language, 166 Irish Sign Language, Italian Sign Language, Japanese Sign Language, 167 Malawi Sign Language, Malaysian Sign Language, Maltese Sign Language, 168 Mexican Sign Language, Nepalese Sign Language, New Zealand Sign 169 Language, Nicaraguan Sign Language, Norwegian Sign Language, Peruvian 170 Sign Language, Philippines Sign Language, Polish Sign Language, 171 Portugese Sign Language, Quebec Sign Language, South African Sign 172 Language, Spanish Sign Language, Swedish Sign Language, Swiss Sign 173 Language, Taiwanese Sign Language, and Tunisian Sign Language. 175 Sutton SignWriting is an international standard for writing sign 176 languages by hand or with computers. From education to research, 177 from entertainment to religion, SignWriting has proven useful because 178 people are using it to write signed languages. 180 1.1. Script 182 Sign language is vastly different than spoken language. Instead of 183 the sequential sounds of the voice, there is a 3 dimensional space 184 with simultaneous action. Sutton SignWriting creates 2-dimensional 185 writing that is visually icon and full of featural information. This 186 is true on the symbol level and on the sign level. A symbol 187 represents phonemic information and is full of featural information 188 to better understand the phonemes of the symbols. A sign is a 189 2-dimensional arrangement of symbols and is full of featural 190 information to better understand the morphemes of the signs. 192 Punctuation is represented by a single symbol and separates a series 193 of signs into structured sentences. Line breaks should not occur 194 before punctuation. 196 When written vertically, SignWriting can use 3 different lanes: left, 197 middle, and right. The middle lane is the default lane and 198 punctuation is always used in the middle lane. No matter the lane, 199 the center of a sign is aligned with the center of the lane. The 200 left and right lanes are used to represent body weight shifts and are 201 represented by a horizontal offset from the middle lane. Body weight 202 shifts are important to the grammar of sign languages, used for two 203 different grammatical aspects: 1) role shifting during sign language 204 storytelling, and 2) spatial comparisons of two items under 205 discussion. One "role" or "item" is placed on the right side of the 206 body (right lane), and the other on the left side of the body (left 207 lane), and the weight shifts back and forth between the two, with the 208 narrator in the middle (middle lane). 210 1.2. Symbols 212 The Sutton SignWriting Symbols are the building blocks of Sutton 213 SignWriting. The symbols are arranged in 2 dimensions to create the 214 sign images. The symbols are organized with a 16-bit coded character 215 set and a layered hierarchy. The symbols are defined in the 216 International SignWriting Alphabet 2010 (ISWA 2010). The ISWA 2010 217 is a product of the Sutton-Slevinski collaboration. 219 2. Formal SignWriting 221 Formal SignWriting (FSW) is a faithful character-encoding of Sutton 222 SignWriting based on 2-dimensional mathematics. FSW defines a formal 223 language for written sign languages where any sign of any sign 224 language can be written as a string of ASCII or Unicode characters. 225 Each sign is written as a separate word. 227 2.1. Building Blocks 229 The mathematical words of Formal SignWriting are plain text strings 230 of characters. 232 2.1.1. Regular Expressions 234 Regular Expressions define string matching criteria. Regular 235 Expressions offer fast processing and wide support on the various 236 platforms. 238 Formal SignWriting is defined with regular expressions. Formal 239 languages and regular expressions are used to solve fundamental 240 problems. 242 Regular Expression Basics 244 +------------+--------------------------+---------------------------+ 245 | Characters | Description | Example | 246 +------------+--------------------------+---------------------------+ 247 | * | Match a literal 0 or | ABC* matches AB, ABC, | 248 | | more times | ABCC, ... | 249 +------------+--------------------------+---------------------------+ 250 | + | Match a literal 1 or | ABC+ matches ABC, ABCC, | 251 | | more times | ABCCC, ... | 252 +------------+--------------------------+---------------------------+ 253 | ? | Match a literal 0 or 1 | ABC? matches AB or ABC | 254 | | times | | 255 +------------+--------------------------+---------------------------+ 256 | {#} | Match a literal "#" | AB{2} matches ABB | 257 | | times | | 258 +------------+--------------------------+---------------------------+ 259 | [ ] | Match any single literal | [ABC] matches A, B, or C | 260 | | from a list | | 261 +------------+--------------------------+---------------------------+ 262 | [ - ] | Match any single literal | [A-C] matches A, B, or C | 263 | | in a range | | 264 +------------+--------------------------+---------------------------+ 265 | ( ) | Creates a group for | A(BC)+ matches ABC, | 266 | | matching | ABCBC, ABCBCBC, ... | 267 +------------+--------------------------+---------------------------+ 268 | ( | ) | Matches one of several | (AB|BC|CD) will match AB, | 269 | | alternatives | BC, or CD | 270 +------------+--------------------------+---------------------------+ 272 Table 1 274 2.1.2. Token Patterns 276 The Formal SignWriting encoding model makes explicit those features 277 which can be effectively and efficiently processed. The mathematical 278 names are structured with 11 different tokens. They can be grouped 279 in 4 layers: the 5 structural makers (A, B, L, M, R), the 3 base 280 symbol ranges (w, s, P), the 2 modifier indexes (i, o), and the 281 numbers (n). 283 The Tokens of Formal SignWriting 285 +-------+-------------------------------+ 286 | Token | Description | 287 +-------+-------------------------------+ 288 | A | Sequence Marker | 289 +-------+-------------------------------+ 290 | B | SignBox Marker | 291 +-------+-------------------------------+ 292 | L | Left Lane Marker | 293 +-------+-------------------------------+ 294 | M | Middle Lane Marker | 295 +-------+-------------------------------+ 296 | R | Right Lane Marker | 297 +-------+-------------------------------+ 298 | w | Writing BaseSymbols | 299 +-------+-------------------------------+ 300 | s | Detailed Location BaseSymbols | 301 +-------+-------------------------------+ 302 | P | Punctuation BaseSymbols | 303 +-------+-------------------------------+ 304 | i | Fill Modifiers | 305 +-------+-------------------------------+ 306 | o | Rotation Modifiers | 307 +-------+-------------------------------+ 308 | n | Number from 250 to 749 | 309 +-------+-------------------------------+ 311 Table 2 313 These tokens are used in patterns to form written sign language. 315 2.1.3. Characters 317 Each of the tokens can be encoded with a variety of characters. 318 Formal SignWriting in ASCII has been stable since Janguary 2012. 319 Unicode option 1 was published October 2016. Unicode option 2 was 320 published December 2016. 322 Character Options 324 +---------+-------------+-------------------------------------------+ 325 | Set | Section | Description | 326 +---------+-------------+-------------------------------------------+ 327 | ASCII | Section 4.1 | Formal SignWriting as ASCII characters is | 328 | | | the standard that is currently used by | 329 | | | the Center for Sutton Movement Writing | 330 | | | and the sign language Wikipedia projects | 331 | | | on Wikimedia Incubator. The ASCII form | 332 | | | is fully supported with the fonts, | 333 | | | styling string, query string, and the | 334 | | | various transformations. | 335 +---------+-------------+-------------------------------------------+ 336 | Unicode | Section 4.2 | Formal SignWriting as an alternate | 337 | Option | | encoding that replaces the Sutton | 338 | 1 | | SignWriting block in Unicode. Option 1 | 339 | | | focuses on small size, simple design, and | 340 | | | ease of use. This option can complicate | 341 | | | processing with UTF-8 and UTF-16 | 342 | | | considerations. | 343 +---------+-------------+-------------------------------------------+ 344 | Unicode | Section 4.3 | Formal SignWriting as an encoding that is | 345 | Option | | 97.5% official Unicode with defined | 346 | 2 | | characters in the Sutton SignWriting | 347 | | | block. Option 2 focuses on augmenting | 348 | | | the Unicode 8 standard with 17 new | 349 | | | control characters for a design that is | 350 | | | compatible with Formal SignWriting. This | 351 | | | option is three times larger than Option | 352 | | | 1 and requires the support of the | 353 | | | ligature feature "ccmp" for Glyph | 354 | | | Composition/Decomposition. Support in | 355 | | | older software is limited. In the | 356 | | | browser, "ccmp" ligatures support is | 357 | | | possible, but it will require extra css | 358 | | | to define the font famiily and may | 359 | | | require extra css to enable the "ccmp" | 360 | | | feature. | 361 +---------+-------------+-------------------------------------------+ 363 Table 3 365 2.1.4. Symbols 367 Symbols can be described with 3 tokens: base symbol, fill modifier, 368 and rotation modifier. 370 Symbol Tokens 372 +---------+---------------------------------------------------------+ 373 | Token | Description | 374 | Pattern | | 375 +---------+---------------------------------------------------------+ 376 | w | Writing BaseSymbols. | 377 +---------+---------------------------------------------------------+ 378 | s | Detailed Location BaseSymbols. | 379 +---------+---------------------------------------------------------+ 380 | P | Punctuation BaseSymbols. | 381 +---------+---------------------------------------------------------+ 382 | i | Fill Modifiers. | 383 +---------+---------------------------------------------------------+ 384 | o | Rotation Modifiers. | 385 +---------+---------------------------------------------------------+ 386 | wio | A writing symbol as 3 tokens of writing base, fill | 387 | | modifier and rotation modifier. Writing symbols can be | 388 | | used in the spatial SignBox or the temporal sequence. | 389 +---------+---------------------------------------------------------+ 390 | [ws]io | A writing symbol or a detailed location symbol as 3 | 391 | | tokens of base, fill modifier, and rotation modifier. | 392 | | Writing symbols and detail location symbols can be used | 393 | | in the temporal sequence. | 394 +---------+---------------------------------------------------------+ 395 | Pio | A punctuation symbol as 3 tokens of punctuation base, | 396 | | fill modifier, and rotation modifier. Punctuation | 397 | | symbols divide signs into sentences. | 398 +---------+---------------------------------------------------------+ 400 Table 4 402 There are a variety of symbol types that are used for different 403 purposes. 405 Symbol Types and Descriptions 407 +-------------+-----------------------------------------------------+ 408 | Type | Description | 409 +-------------+-----------------------------------------------------+ 410 | all symbols | All symbols used in Formal SignWriting. | 411 +-------------+-----------------------------------------------------+ 412 | writing | Symbols that can be used in the spatial SignBox or | 413 | | the temporal sequence. | 414 +-------------+-----------------------------------------------------+ 415 | hand | Various handshapes | 416 +-------------+-----------------------------------------------------+ 417 | movement | Contact symbols, small finger movements, straight | 418 | | arrows, curved arrows and circles. | 419 +-------------+-----------------------------------------------------+ 420 | dynamic | Dynamic symbols are used to give the "feeling" or | 421 | | "tempo" to movement. | 422 +-------------+-----------------------------------------------------+ 423 | head | Symbols for the head and face. | 424 +-------------+-----------------------------------------------------+ 425 | hcenter | Used to determine the horizontal center of a sign. | 426 | | Same as the head type. | 427 +-------------+-----------------------------------------------------+ 428 | vcenter | Use to determine the vertical center of a sign. | 429 | | Includes the head and trunk types. | 430 +-------------+-----------------------------------------------------+ 431 | trunk | Symbols for torso movement, shoulders, and hips. | 432 +-------------+-----------------------------------------------------+ 433 | limb | Symbols for limbs and fingers. | 434 +-------------+-----------------------------------------------------+ 435 | location | Detailed location symbols can only be used in the | 436 | | temporal sequence. | 437 +-------------+-----------------------------------------------------+ 438 | punctuation | Punctual symbols are used to divide signs into | 439 | | sentences. | 440 +-------------+-----------------------------------------------------+ 442 Table 5 444 Symbol types occur in specific ranges depending on the characters 445 involved. 447 Symbol Types and Ranges 449 +-------------+-------------+------------------+-------------------+ 450 | Type | ASCII | Option 1 | Option 2 | 451 +-------------+-------------+------------------+-------------------+ 452 | all symbols | S100 - S38b | U+40001 -U+4F428 | U+1D800 - U+1DA8B | 453 +-------------+-------------+------------------+-------------------+ 454 | writing | S100 - S37e | U+40001 -U+4F904 | U+1D800 - U+1DA7E | 455 +-------------+-------------+------------------+-------------------+ 456 | hand | S100 - 204 | U+40001 -U+461A0 | U+1D800 - U+1D904 | 457 +-------------+-------------+------------------+-------------------+ 458 | movement | S205 - S2f6 | U+461E1 -U+4BC98 | U+1D905 - U+1D9F6 | 459 +-------------+-------------+------------------+-------------------+ 460 | dynamic | S2f7 - S2fe | U+4BCA1 -U+4BF48 | U+1D9F7 - U+1D9FE | 461 +-------------+-------------+------------------+-------------------+ 462 | head | S2ff - S36c | U+4BFA1 -U+4E8B1 | U+1D9FF - U+1DA6C | 463 +-------------+-------------+------------------+-------------------+ 464 | hcenter | S2ff - S36c | U+4BFA1 -U+4E8B1 | U+1D9FF - U+1DA6C | 465 +-------------+-------------+------------------+-------------------+ 466 | vcenter | S2ff - S375 | U+4BFA1 -U+4EC38 | U+1D9FF - U+1DA75 | 467 +-------------+-------------+------------------+-------------------+ 468 | trunk | S36d - S375 | U+4E8E1 -U+4EC38 | U+1DA6D - U+1DA75 | 469 +-------------+-------------+------------------+-------------------+ 470 | limb | S376 - S37e | U+4EC41 -U+4EFA0 | U+1DA76 - U+1DA7E | 471 +-------------+-------------+------------------+-------------------+ 472 | location | S37f - S386 | U+4EFA1 -U+4F2A0 | U+1DA7F - U+1DA86 | 473 +-------------+-------------+------------------+-------------------+ 474 | punctuation | S387 - S38b | U+4F2A1 -U+4F428 | U+1DA87 - U+1DA8B | 475 +-------------+-------------+------------------+-------------------+ 477 Table 6 479 2.1.4.1. ASCII 481 Symbol keys are 6 characters long. The first character of a symbol 482 key is always "S". The next 3 characters identify the symbol base. 483 The last two characters identify the fill and rotation modifiers 484 respectively. 486 Symbol Key Definition 488 +--------------------------------+-----------------------+ 489 | Regular Expression | Description | 490 +--------------------------------+-----------------------+ 491 | S | Start of symbol key | 492 +--------------------------------+-----------------------+ 493 | [123][0-9a-f]{2} | Symbol key base | 494 +--------------------------------+-----------------------+ 495 | [0-5] | Fill modifier | 496 +--------------------------------+-----------------------+ 497 | [0-9a-f] | Rotation modifier | 498 +--------------------------------+-----------------------+ 499 | S[123][0-9a-f]{2}[0-5][0-9a-f] | Symbol key definition | 500 +--------------------------------+-----------------------+ 502 Table 7 504 2.1.4.2. Unicode Option 1 506 The 37,811 symbols of the International SignWriting Alphabet 2010 are 507 uniquely idendified with Unicode characters in the range U+40001 to 508 U+4F428. 510 2.1.4.3. Unicode Option 2 512 The 37,811 symbols of the International SignWriting Alphabet 2010 are 513 defined with 3 characters each. A symbol is defined as a combination 514 of base symbol, fill modifier, and a rotation modifier. The base 515 symbols occur in the range U+1D800 to U+1DA8B. The fill modifiers 516 occur in the range U+1DA9A to U+1DA9F. The rotation modifiers occur 517 in the range U+1DAA0 to U+1DAAF. 519 2.1.5. Numbers 521 The numbers encode the ruler principle with characters. The ruler 522 principle is built in automatically for scripts written sequentially 523 in one dimension. The number characters are needed to specify the 524 spatial relationship between symbols. 526 Between the various forms, the numbers exist in a restricted range of 527 500 and in a general range of 1,000. The more general definition 528 simply defines 3 digits together with a potential range of 1000. A 529 more explicit definition correctly restricts the numbers to 500 530 possibilities in the 250 to 749 range. 532 Cartesian Coordinates can be described with 2 tokens: number and 533 number. These numbers represent the X and Y coordinates 534 respectively. 536 Coordinate Tokens 538 +----------------+---------------------------------------------+ 539 | Token Patterns | Description | 540 +----------------+---------------------------------------------+ 541 | n | Number from 250 to 749 | 542 +----------------+---------------------------------------------+ 543 | nn | Coordinate with X and Y values as 2 numbers | 544 +----------------+---------------------------------------------+ 546 Table 8 548 2.1.5.1. ASCII 550 There are 2 definitions for a number. The more general definition 551 simply defines 3 digits together with a potential range of 1000. A 552 more explicit definition correctly restricts the numbers to 500 553 possibilities in the 250 to 749 range. The general coordinate 554 definition is adequate for processing. 556 General 3 digit number definition: [0-9]{3} 558 General coordinate definition: [0-9]{3}x[0-9]{3} 560 Explicit number definition from 250 to 749: 561 (2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0-9]) 563 Explicit coordinate definition: (2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0- 564 9])x(2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0-9]) 566 2.1.5.2. Unicode Option 1 568 The 500 numbers of Formal SignWriting are uniquely idendified with 569 Unicode characters in the range U+1D80C to U+1D9FF. The numbers of 570 this set have a hard limit of 500. A coordinate is defined with 2 571 numbers together. Numbers and coordinates can be defined for UTF-8, 572 UTF-16, and UTF-32. 574 2.1.5.3. Unicode Option 2 576 Each of the 500 numbers of Formal SignWriting is defined with 3 577 characters in the range U+1DAB0 to U+1DAB9. The numbers of this set 578 have a soft limit of 500 and a hard limit of 1,000. A coordinate is 579 defined with 2 numbers together. Numbers and coordinates can be 580 defined for UTF-8, UTF-16, and UTF-32. 582 2.1.6. Spatial SignBox 584 The visual image of a logographic sign is a 2-dimension arrangement 585 of symbols inside of a SignBox. Each SignBox has a defined width, 586 height, and 2-dimensional center that can be calculated from the 587 plain text. 589 Each logographic sign exists on its own 2-dimensional SignBox. Each 590 point on the SignBox is identified with an X and a Y coordinate. 591 Each SignBox has a defined center. Formal numbers range from 250 to 592 749. 594 Y Axis 595 | 250 596 | 597 | 598 | 599 | 600 | 601 X Axis | 602 -----------+------------ 603 250 | 749 604 | 605 | 606 | 607 | 608 | 609 | 749 611 Symbols are placed on the SignBox with coordinates that represent the 612 top-left of the symbol image. Symbol images may overlap. 614 The Spatial SignBox can be described with 8 tokens. 616 Spatial SignBox Tokens 618 +-----------------+-------------------------------------------------+ 619 | Token Pattern | Description | 620 +-----------------+-------------------------------------------------+ 621 | B | SignBox Marker | 622 +-----------------+-------------------------------------------------+ 623 | L | Left Lane Marker | 624 +-----------------+-------------------------------------------------+ 625 | M | Middle Lane Marker | 626 +-----------------+-------------------------------------------------+ 627 | R | Right Lane Marker | 628 +-----------------+-------------------------------------------------+ 629 | w | Writing BaseSymbols | 630 +-----------------+-------------------------------------------------+ 631 | i | Fill Modifiers | 632 +-----------------+-------------------------------------------------+ 633 | o | Rotation Modifiers | 634 +-----------------+-------------------------------------------------+ 635 | n | Number from 250 to 749 | 636 +-----------------+-------------------------------------------------+ 637 | wio | A writing symbol as 3 tokens of writing base, | 638 | | fill modifier and rotation modifier | 639 +-----------------+-------------------------------------------------+ 640 | nn | Coordinate with X and Y values as 2 numbers | 641 +-----------------+-------------------------------------------------+ 642 | wionn | A spatial symbol as 5 tokens, with 3 tokens for | 643 | | a writing symbol and 2 tokens for coordinates | 644 | | of top left placement | 645 +-----------------+-------------------------------------------------+ 646 | (wionn)* | Zero or more spatial symbols | 647 +-----------------+-------------------------------------------------+ 648 | Bnn(wionn)* | A SignBox with a preprocessed maximum | 649 | | coordinate and a list of spatial symbols used | 650 | | for horizontal writing | 651 +-----------------+-------------------------------------------------+ 652 | [LMR] | A lane marker: either left, middle or right. | 653 +-----------------+-------------------------------------------------+ 654 | [LMR]nn(wionn)* | A SignBox in either the left, middle, or right | 655 | | lane with a preprocessed maximum coordinate and | 656 | | a list of spatial symbols used for vertical | 657 | | writing | 658 +-----------------+-------------------------------------------------+ 660 Table 9 662 The Spatial SignBox is assigned to a lane, has a preprocessed maximum 663 coordinate and zero or more writing symbols with X and Y coordinates. 665 Symbol key definition: S[123][0-9a-f]{2}[0-5][0-9a-f] 667 Coordinate definition: [0-9]{3}x[0-9]{3} 669 SignBox definition: [BLMR]([0-9]{3}x[0-9]{3})(S[123][0-9a- 670 f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3})* 672 2-dimensional space does not have a normative 1-dimensional order. 673 When symbols overlap, the relative order of the overlapping symbols 674 is important. Otherwise, the exact string order of the spatial 675 symbols is unpredictable. 677 2.1.6.1. Bounding Box 679 The symbols do not have a consistent width or height. The center of 680 a symbol can be safely assumed to be at half-width and half-height. 681 A bounding box for a symbol is based on the symbol width and height. 682 Each symbol has a defined width and height in a text file with 37,811 683 lines. Alternately, the symbol width and height can be calculated by 684 analyzing the glyphs in a TTF font file, using JavaScript or other 685 language. 687 The bounding box of a sign is a tight box around the symbols. The 688 bounding box is used to determine the width and height of a sign. 689 The center of a bounding box is coordinate 500,500. 691 The bounding box of a sign consists of four values: Minimum X, 692 Minimum Y, Maximum X and Maximum Y. The values of the bounding box 693 is taken straight from the coordinates in an Formal SignWriting word. 695 2.1.6.2. Maximum Coordinate 697 The maximum coordinate for a SignBox is pre-calculated to simplify 698 layout for width, height, and center. For each symbol, the width of 699 height of that symbol is added to the coordinate position of that 700 symbol. These new coordinate values represent the bottom-right 701 coordinate of each symbol bounding box. The maximum X value is 702 joined with the maximum Y value to determine the maximum coordinate. 704 2.1.6.3. Centering a Sign 706 To simplify layout and improve 2-dimensional searching, every sign 707 has a normalized center based on symbol type, size, and mathematical 708 formula. The vertical center is based on the center of the bounding 709 box around the head symbols. The horizontal center is based on the 710 center of the bounding box around the head and trunk symbols. If a 711 sign doesn't contain head or trunk symbols, then the bounding box of 712 all symbols is used. For the symbol ranges see Table 6 713 Once the center of a sign has been determined, the symbols are moved 714 so that the center is coordinate 500,500. 716 2.1.7. Temporal Sequence 718 Signs are written in 2-dimensional space which does not have a 719 normative 1-dimensional order. Any 1-dimensional order of 720 2-dimensional space is subjective. Some 1-dimensional orders may be 721 canonical according to a particular theory, but there are a variety 722 of theories on setting a 1-dimensional order. 724 The temporal sequence describes a 1-dimensional order that is 725 separate from the spatial SignBox, rather than ordering the 726 2-dimensional space directly. The temporal sequence is written as an 727 optional prefix to a spatial SignBox. The temporal sequence will use 728 the same symbols that are used in the spatial SignBox, but it does 729 not need to use all of them and it is not limited to only those 730 symbols. The temporal sequence is a list of writing symbols and/or 731 detailed location symbols that identify temporal order and additional 732 analysis. A valid sequence must contain at least one symbol and can 733 not contain punctuation. 735 The temporal sequence allows for sorting that is universally 736 supported through binary string comparison. 738 There are several theories on the best way to structure a temporal 739 sequence. The most productive is based on the SignSpelling Sequence 740 theory of Valerie Sutton. A temporal sequence is structured as a 741 series of starting handshapes followed by optional movements, 742 transitional handshapes, movement, and end handshapes. Only symbols 743 of type "hand" and "movement" should be used in this first section. 744 The last section of the temporal sequence should contain symbols of 745 of type "dynamic", "head", "trunk", and "limb". 747 Detailed location symbols of type "location" can be used in a 748 temporal sequence, but are rarely (if ever) needed for general 749 writing. 751 A temporal sequence can be described with 5 tokens. 753 Temporal Sequence Tokens 755 +---------------+---------------------------------------------------+ 756 | Token | Description | 757 | Patterns | | 758 +---------------+---------------------------------------------------+ 759 | A | Sequence Marker | 760 +---------------+---------------------------------------------------+ 761 | w | Writing BaseSymbols | 762 +---------------+---------------------------------------------------+ 763 | s | Detailed Location BaseSymbols | 764 +---------------+---------------------------------------------------+ 765 | i | Fill Modifiers | 766 +---------------+---------------------------------------------------+ 767 | o | Rotation Modifiers | 768 +---------------+---------------------------------------------------+ 769 | (A([ws]io)+)? | An optional temporal sequence to be used as a | 770 | | prefix for a SignBox | 771 +---------------+---------------------------------------------------+ 773 Table 10 775 The temporal prefix starts with a sequence marker and includes an 776 ordered list of writing symbols and detailed locations. 778 Temporal Sequence Definition 780 +---------------------------------------+---------------------------+ 781 | Regular Expression | Description | 782 +---------------------------------------+---------------------------+ 783 | (A(S[123][0-9a-f]{2}[0-5][0-9a-f])+)? | An optional temporal | 784 | | sequence as a sequence | 785 | | marker followed by one or | 786 | | more symbols. | 787 +---------------------------------------+---------------------------+ 789 Table 11 791 2.1.8. Sentences 793 Signs are mixed with punctuation to form text. Punctuation is a 794 single symbol and separates a series of signs into structured 795 sentences. A punctuation symbol is always used alone and should not 796 be used in a sign. Line breaks should not occur before punctuation. 798 When written vertically, SignWriting can use 3 different lanes: left, 799 middle, and right. The middle lane is the default lane and 800 punctuation is always used in the middle lane. No matter the lane, 801 the center of a sign is aligned with the center of the lane. 803 For body weight shifts to one side or the other, the center of the 804 sign is aligned with a fixed horizontal offset from the middle lane 805 into either the left or right lane. 807 The left and right lanes are used to represent body weight shifts and 808 are represented by a horizontal offset from the middle lane. Body 809 weight shifts are important to the grammar of sign languages, used 810 for two different grammatical aspects: 1) role shifting during sign 811 language storytelling, and 2) spatial comparisons of two items under 812 discussion. One "role" or "item" is placed on the right side of the 813 body (right lane), and the other on the left side of the body (left 814 lane), and the weight shifts back and forth between the two, with the 815 narrator in the middle (middle lane). 817 Sentence Token Patterns 819 +-----------------------------------------+-------------------------+ 820 | Regular Expression | Description | 821 +-----------------------------------------+-------------------------+ 822 | Pionn | a punctuation symbol as | 823 | | a punctuation base | 824 | | symbol with a | 825 | | preprocessed minimum | 826 | | coordinate | 827 +-----------------------------------------+-------------------------+ 828 | (((A([ws]io)+)?Bnn(wionn)*)|Pionn)+ | a sign text for | 829 | | horizontal writing as a | 830 | | string of SignBoxes | 831 | | (with optional | 832 | | prefixes) and | 833 | | punctuation | 834 +-----------------------------------------+-------------------------+ 835 | (((A([ws]io)+)?[LMR]nn(wionn)*)|Pionn)+ | a sign text for | 836 | | vertical writing as a | 837 | | string of SignBoxes in | 838 | | lanes (with optional | 839 | | prefixes) and | 840 | | punctuation | 841 +-----------------------------------------+-------------------------+ 843 Table 12 845 Sentences mix signs with punctuation to form text. 847 Punctuation definition: S38[7-9ab][0-5][0-9a-f][0-9]{3}x[0-9]{3} 848 Formal SignWriting text definition: ((A(S[123][0-9a-f]{2}[0-5][0-9a- 849 f])+)?[BLMR]([0-9]{3}x[0-9]{3})(S[123][0-9a-f]{2}[0-5][0-9a- 850 f][0-9]{3}x[0-9]{3})*|S38[7-9ab][0-5][0-9a-f][0-9]{3}x[0-9]{3})( 851 (A(S[123][0-9a-f]{2}[0-5][0-9a- 852 f])+)?[BLMR]([0-9]{3}x[0-9]{3})(S[123][0-9a-f]{2}[0-5][0-9a- 853 f][0-9]{3}x[0-9]{3})*| S38[7-9ab][0-5][0-9a-f][0-9]{3}x[0-9]{3})* 855 2.2. Styling String 857 The styling string of Formal SignWriting uses a lite markup to define 858 a variety of styling options. The entire sign can be customized for 859 padding, coloring, and size. Individual symbols within a sign can be 860 customized for coloring and size. For SVG output, class names and 861 IDs can be defined. A styling string can be added to the end of any 862 Formal SignWriting string to style a particular sign. 864 Colors can be written as CSS color names or as color hex values. 866 CSS Color Names: [a-zA-Z]+ 868 Color Hex Values: [0-9a-fA-F]{3}([0-9a-fA-F]{3})? 870 The styling string is divided into 3 sections: one for the entire 871 sign, one for individual symbols, and one for SVG class names and ID. 872 The styling string starts with a single dash, after which is the 873 section about the entire sign. A second dash, if present, marks the 874 start of the section about the individual symbols. A third dash, if 875 present, marks the start of the section about the SVG class names and 876 ID. The order of the styling options is important. 878 Styling String: -C?(P[0-9]{2})?(G_([0-9a-fA-F]{3}([0-9a-fA- 879 F]{3})?|[a-zA-Z]+)_)?(D_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA- 880 Z]+)(,([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA- 881 Z]+))?_)?(Z([0-9]+(\.[0-9]+)?|x))?(-(D[0-9]{2}_([0-9a-fA-F]{3}([0- 882 9a-fA-F]{3})?|[a-zA-Z]+)(,([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA- 883 Z]+))?_)*(Z[0-9]{2},[0-9]+(\.[0-9]+)?(,[0-9]{3}x[0-9]{3})?)*)?(-- 884 ?[_a-zA-Z][_a-zA-Z0-9-]{0,100}( -?[_a-zA-Z][_a-zA- 885 Z0-9-]{0,100})*!([a-zA-Z][_a-zA-Z0-9-]{0,100}!)?)? 887 2.2.1. Entire Sign 889 There are several options for styling an entire sign. 891 C Colorize 893 P Padding 895 G Background 896 D Detail colors 898 Z Zoom level 900 2.2.1.1. Colorize 902 Colorizing a sign will set the color of each symbol based on its 903 classification. 905 Hand 0000CC 907 Movement CC0000 909 Dynamic FF0099 911 Head 006600 913 Body 000000 915 Detailed Location 884411 917 Punctuation FF9900 919 +----------------+----------------------------------+ 920 | Styling String | Description | 921 +----------------+----------------------------------+ 922 | -C | Colorize the symbols of the sign | 923 +----------------+----------------------------------+ 925 Table 13 927 2.2.1.2. Padding 929 Padding is applied around the entire sign. A two-digit number is 930 used to set the padding. 932 +----------------+--------------------------------+ 933 | Styling String | Description | 934 +----------------+--------------------------------+ 935 | -P01 | A padding of 1 around the sign | 936 +----------------+--------------------------------+ 938 Table 14 940 2.2.1.3. Background 942 By default, the background of a sign is transparent. The background 943 color can be set with a CSS color name or with a color hex value. 944 The color name or value must be surrounded by underscores. 946 +----------------+-----------------------------------+ 947 | Styling String | Description | 948 +----------------+-----------------------------------+ 949 | -G_lightblue_ | Background color of light blue. | 950 +----------------+-----------------------------------+ 951 | -G_f00_ | Background color as 3 hex values. | 952 +----------------+-----------------------------------+ 953 | -G_ff0000_ | Background color as 6 hex values. | 954 +----------------+-----------------------------------+ 956 Table 15 958 2.2.1.4. Detail Colors 960 By default, each symbol has a line color of black and a fill color of 961 white. The line color for all of the symbols can be set with a CSS 962 color name or with a color hex value. The color name or value must 963 be surrounded by underscores. Setting the fill color is optional. 964 To set the fill color, put a comma and the fill color after the line 965 color but before the closing underscore. 967 +----------------+------------------------------------------------+ 968 | Styling String | Description | 969 +----------------+------------------------------------------------+ 970 | -D_red_ | Line color of red. | 971 +----------------+------------------------------------------------+ 972 | -D_red,yellow_ | Line color of red with a fill color of yellow. | 973 +----------------+------------------------------------------------+ 975 Table 16 977 2.2.1.5. Zoom Level 979 By default, a sign is set to zoom level 1. The zoom level can be set 980 with an integer or a decimal number. 982 Alternatively, the zoom level can be set to lower-case 'x', for 983 extendable. The SVG created will not specify the width or height, so 984 that the sign image will fill whatever container it is placed inside. 986 +----------------+--------------------------+ 987 | Styling String | Description | 988 +----------------+--------------------------+ 989 | -Z2 | Zoom level of 2 | 990 +----------------+--------------------------+ 991 | -Z15.7 | Zoom level of 15.7 | 992 +----------------+--------------------------+ 993 | -Zx | Zoom level of extendable | 994 +----------------+--------------------------+ 996 Table 17 998 2.2.2. Individual Symbols 1000 There are two options for styling individual symbols. Individual 1001 symbols are identified by a two-digit number, which identifies the 1002 order the symbol appears in the SignBox. 1004 D Detail colors 1006 Z Zoom level 1008 2.2.2.1. Detail Colors 1010 By default, each symbol has a line color of black and a fill color of 1011 white. The line color for an individual symbol can be set with a CSS 1012 color name or with a color hex value. The color name or value must 1013 be surrounded by underscores. Setting the fill color is optional. 1014 To set the fill color, put a comma and the fill color after the line 1015 color but before the closing underscore. 1017 +----------------------+--------------------------------------------+ 1018 | Styling String | Description | 1019 +----------------------+--------------------------------------------+ 1020 | --D01_red_ | First symbol line color of red. | 1021 +----------------------+--------------------------------------------+ 1022 | --D01_red,yellow_ | First symbol line color of red with a fill | 1023 | | color of yellow. | 1024 +----------------------+--------------------------------------------+ 1025 | --D01_red_D02_green_ | First symbol line color of red and second | 1026 | | symbol line color of green. | 1027 +----------------------+--------------------------------------------+ 1029 Table 18 1031 2.2.2.2. Zoom Level 1033 By default, each symbol is set to zoom level 1. The zoom level of 1034 individual symbols can be set with an integer or a decimal number. 1036 Additionally, an offset coordinate can be specified with an 1037 individual symbol's zoom level. The offset coordinate of 500x500 is 1038 considered no offset for either the x or y value. 1040 +-------------------+-----------------------------------------------+ 1041 | Styling String | Description | 1042 +-------------------+-----------------------------------------------+ 1043 | --Z03,2 | Third symbol zoom level of 2 | 1044 +-------------------+-----------------------------------------------+ 1045 | --Z04,15.7 | Fourth symbol zoom level of 15.7 | 1046 +-------------------+-----------------------------------------------+ 1047 | --Z04,1.5,480x500 | Fourth symbol zoom level of 1.5 with a -20 | 1048 | | offset applied to the X value of the symbol's | 1049 | | placement coordinate. | 1050 +-------------------+-----------------------------------------------+ 1052 Table 19 1054 2.2.3. SVG Class Names and ID 1056 When using SVG, there are two additional styling options of class 1057 names and ID. 1059 {class names}! SVG Class Names 1061 {ID}! SVG ID 1063 Both class names and ID use a restricted ASCII subset. 1065 class names -?[_a-zA-Z][_a-zA-Z0-9-]{0,100}( -?[_a-zA-Z][_a-zA- 1066 Z0-9-]{0,100})* 1068 ID [a-zA-Z][_a-zA-Z0-9-]{0,100} 1070 Each SVG can be created with a list of class names separated by 1071 spaces, ending in an exclamation (!) mark. After the class names 1072 exclamation mark, an ID can be written followed by another 1073 exclamation mark. 1075 +---------------------+---------------------------------------------+ 1076 | Styling String | Description | 1077 +---------------------+---------------------------------------------+ 1078 | ---glowing! | A class name of "glowing" | 1079 +---------------------+---------------------------------------------+ 1080 | ---flashing | Two class names of "flashing" and | 1081 | primary! | "primary". | 1082 +---------------------+---------------------------------------------+ 1083 | ---!cursor! | SVG created with an ID of "cursor" | 1084 +---------------------+---------------------------------------------+ 1085 | ---flashing!cursor! | SVG created with a class name of "flashing" | 1086 | | and an ID of "cursor" | 1087 +---------------------+---------------------------------------------+ 1089 Table 20 1091 2.3. Query Language 1093 The query language is a lite ASCII markup similar to Formal 1094 SignWriting. Any Formal SignWriting string can easily be converted 1095 into several different query string, depending on the search 1096 parameters. 1098 The query string is a concise representation for a much larger and 1099 detailed set of regular expressions. The regular expressions can be 1100 used to quickly and accurately search large files and databases 1101 containing Formal SignWriting. 1103 A filter and repeat pattern of searching is used as a series of match 1104 criteria. A file, database, or text input is searched using a 1105 sequence of steps. Each step applies a single match criteria. 1106 Matching results are collated and the next search criteria is 1107 applied. The pattern of searching the previous results continues 1108 until all regular expressions have been used. 1110 There are two main sections of a query string. The first searches 1111 the spatial SignBox. The second searches the temporal sequence. 1112 Both sections use the same definition for a symbol or a range. The 1113 symbol search can match an exact symbol, or a set of related symbols. 1114 For the fill and rotation modifiers, the "u" character is a wildcard. 1115 The "u" stands for unknown and will match all values rather than a 1116 specific character. The range search can match a range of base 1117 symbols. The base symbol range consists of 2 values: the starting 1118 base symbol and the ending base symbol. Every symbol between these 2 1119 base symbols will be matched. 1121 Symbol Search: S[123][0-9a-f]{2}[0-5u][0-9a-fu] 1122 Range Search: R[123][0-9a-f]{2}t[123][0-9a-f]{2} 1124 At the end of the query string is an optional styling string flag 1125 represented by a dash (-). If present, the Formal SignWriting 1126 strings will include any styling strings. If the styling string flag 1127 isn't included, the query string will only find plain text Formal 1128 SignWriting strings without the styling string. 1130 The full query string definition allows for the possibility of 1131 searching the temporal sequence and the spatial SignBox at the same 1132 time. 1134 Query String: Q((A(S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a- 1135 f]{2}t[123][0-9a-f]{2})+)?T)?(S[123][0-9a-f]{2}[0-5u][0-9a- 1136 fu]([0-9]{3}x[0-9]{3})?|R[123][0-9a-f]{2}t[123][0-9a- 1137 f]{2}([0-9]{3}x[0-9]{3})?)*(V[0-9]+)?-? 1139 2.3.1. Searching the Spatial SignBox 1141 The spatial SignBox is a list of symbols with 2-dimensional 1142 placement. The query "Q" will find all signs regardless of the 1143 symbols used or their placement. 1145 It is possible to specify one or more symbols (or ranges of symbols) 1146 that must be included in the SignBox to indicate a match. The order 1147 of the symbols is not important. Each symbol (or range) can include 1148 an optional coordinate. The coordinate is a restriction on the 1149 match, such that a symbol must be used within a certain variance of 1150 the coordinate to qualify as a match. 1152 The variance is a number value, 0 or greater with a default value of 1153 20. A variance of 0 will only find symbols used at an exact 1154 coordinate. A variance of 5 will match the symbols used at a 1155 coordinate, plus or minus 5 for both X and Y numbers. 1157 Symbol Search with Optional Coordinate: S[123][0-9a-f]{2}[0-5u][0- 1158 9a-fu]([0-9]{3}x[0-9]{3})? 1160 Range Search with Optional Coordinate: R[123][0-9a-f]{2}t[123][0-9a- 1161 f]{2}([0-9]{3}x[0-9]{3})? 1163 Variance: (V[0-9]+)? 1165 Spatial SignBox Search Query: Q(S[123][0-9a-f]{2}[0-5u][0-9a- 1166 fu]([0-9]{3}x[0-9]{3})?|R[123][0-9a-f]{2}t[123][0-9a- 1167 f]{2}([0-9]{3}x[0-9]{3})?)*(V[0-9]+)? 1169 Spatial SignBox Query Examples 1171 +------------------+------------------------------------------------+ 1172 | Query | Description | 1173 +------------------+------------------------------------------------+ 1174 | Q | All signs | 1175 +------------------+------------------------------------------------+ 1176 | QS100uu | Signs with the index handshape in the spatial | 1177 | | SignBox | 1178 +------------------+------------------------------------------------+ 1179 | QS100uu480x480 | Signs with the index handshape in the spatial | 1180 | | SignBox used near coordinate (480,480) | 1181 +------------------+------------------------------------------------+ 1182 | QS100uu480x480V0 | Signs with the index handshape in the spatial | 1183 | | SignBox used at the exact coordinate (480,480) | 1184 +------------------+------------------------------------------------+ 1185 | QS100uuR2fft36c | Signs with the index handshape and a symbol | 1186 | | from the head & face range | 1187 +------------------+------------------------------------------------+ 1189 Table 21 1191 2.3.2. Searching the Temporal Sequence 1193 The temporal sequence is a list of symbol keys. The query "QT" will 1194 find all signs that include a temporal sequence. 1196 It is possible to specify the start of the temporal sequence by 1197 identifying a series of symbols and/or ranges. The query will start 1198 with an "QA" and end with a "T", such as "QA...T". Between the "QA" 1199 and "T", a series of symbol searches and/or range searches will 1200 specify the desired start of the temporal sequence. The order of the 1201 symbols and ranges is important. 1203 Temporal Sequence Search Query: Q((A(S[123][0-9a-f]{2}[0-5u][0-9a- 1204 fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})+)?T)? 1206 Temporal Sequence Query Examples 1208 +-------------------------+-----------------------------------------+ 1209 | Query | Description | 1210 +-------------------------+-----------------------------------------+ 1211 | QT | All signs that include the temporal | 1212 | | sequence | 1213 +-------------------------+-----------------------------------------+ 1214 | QAS100uuT | Signs with a temporal sequence that | 1215 | | starts with the index handshape | 1216 +-------------------------+-----------------------------------------+ 1217 | QAS100uuR100t204S20500T | Signs with a temporal sequence that | 1218 | | starts with the index handshape, | 1219 | | followed by any handshape, followed by | 1220 | | the single contact | 1221 +-------------------------+-----------------------------------------+ 1223 Table 22 1225 2.3.3. Including the Styling String 1227 At the end of the query string is an optional styling string flag 1228 represented by a dash (-). If present, the Formal SignWriting 1229 strings will include any styling strings. If the styling string flag 1230 isn't included, the query string will only find plain text Formal 1231 SignWriting strings without the styling string. 1233 Styling String Search Query: Q- 1235 Styling String Search Only: - 1237 Styling String Query Examples 1239 +-------+-----------------------------------------------------------+ 1240 | Query | Description | 1241 +-------+-----------------------------------------------------------+ 1242 | Q- | All signs including the styling strings when present | 1243 +-------+-----------------------------------------------------------+ 1244 | - | Only find styling string without including the Formal | 1245 | | SignWriting | 1246 +-------+-----------------------------------------------------------+ 1248 Table 23 1250 2.4. Transformations 1252 Formal SignWriting and the surrounding technologies have been created 1253 to facilitate easy transformations between the various forms. 1255 2.4.1. Formal SignWriting to Query String 1257 Formal SignWriting strings have several natural transformations to 1258 query string. The transformation can use the temporal sequence and/ 1259 or the spatial SignBox. For each symbol, the query can include the 1260 exact symbol key, or the query can use a general symbol key where the 1261 fill and rotation modifiers are not explicitly defined. Consider the 1262 Formal SignWriting string 1263 "AS14c20S27106M518x529S14c20481x471S27106503x489". 1265 Exact Temporal Sequence Symbols: QAS14c20S27106T 1267 General Temporal Sequence Symbols: QAS14cuuS271uuT 1269 Exact Spatial SignBox Symbols: QS14c20S27106 1271 General Spatial SignBox Symbols: QS14cuuS271uu 1273 Exact Spatial SignBox Symbols with Location: 1274 QS14c20481x471S27106503x489 1276 General Spatial SignBox Symbols with Location: 1277 QS14cuu481x471S271uu503x489 1279 2.4.2. Query String to Regular Expression 1281 The transformation from query string to regular expressions has been 1282 fully implemented in the Sutton SignWriting JavaScript Library and 1283 the SignWriting Server. 1285 The query language to regular expressions generator uses the 1286 following regular expression structures as building blocks. 1288 Temporal Sequence Prefix: (A(S[123][0-9a-f]{2}[0-5][0-9a-f])+) 1290 SignBox Prefix: [BLMR]([0-9]{3}x[0-9]{3}) 1292 Spatial Symbols: (S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3})* 1294 The Temporal Sequence Prefix is a structural marker followed by one 1295 or more symbols. For the query string "QT", the prefix is required. 1296 For the general "Q", the prefix is optional so "?" is appended to the 1297 Temporal Sequence Prefix regular expression. 1299 The SignBox Prefix is a combination of structural marker and 1300 preprocessed maximum coordinate. Every constructed regular 1301 expression will include the SignBox Prefix. 1303 The Spatial Symbols is zero or more symbol definitions and associated 1304 coordinates. The Spatial Symbols regular expression is used for 1305 every search. For both "Q" and "QT", it is the only symbol matching 1306 used. When searching for specific symbols and ranges, the general 1307 Spatial Symbols definition will sandwich the specific search 1308 definitions. 1310 Searching for number ranges with regular expressions requires a 1311 unique technique. This technique requires five steps. 1313 Find a number between 122 and 455 1315 1) 10's don't match and the min 1's are not zero ( last number to 9): 1317 Match 12[2-9] 1319 2) Bring up the 10's if hundreds are different: Match 1[3-9][0-9] 1321 3) Bring up the 100's if different: Match [2-3][0-9][0-9] 1323 4) Bring up the 10's: Match 4[0-4][0-9] 1325 5) Bring up the 1's: Match 45[0-5] 1327 Final Match (12[2-9]|1[3-9][0-9]|[2-3][0-9][0-9]|4[0-4][0-9]|45[0-5]) 1329 For the styling string regular expression, see Section 2.2. 1331 3. Technology Integration 1333 Formal SignWriting has been specifically designed to integrate with 1334 standard technology on the phone, tablet, and desktop. Four main 1335 components make this integration possible: 1) Font Technology, 2) 1336 Scalar Vector Graphics, 3) HTML and CSS, and 4) a JavaScript Library. 1338 3.1. Fonts 1340 The Sutton SignWriting Fonts are available as source SVG and as two 1341 TrueType Font files. 1343 Sutton SignWriting Fonts 1344 Copyright (c) 1974-2016, Center for Sutton Movement Writing, inc 1345 Licensed under the SIL Open Font License v1.1 1347 3.1.1. Installing the TrueType Fonts 1349 The Sutton SignWriting TrueType fonts are available for download and 1350 installation. The fonts have been tailored for the Sutton 1351 SignWriting JavaScript library. Please ignore warning and unusual 1352 font previews during installation as these will not affect the fonts 1353 utility. 1355 Installing the fonts using the instructions below is not required, 1356 but it will improve the user experience. If the fonts are not 1357 installed on the system, CSS declarations will install the fonts in 1358 the browser cache. 1360 3.1.1.1. Windows, Linux, and Mac 1362 Installation is straight forward for Windows, Linux and Mac. Simply 1363 download the 2 TrueType fonts and install as usual. 1365 Sutton SignWriting TrueType Font [SuttonSignWritingFont] 1367 Sutton SignWriting Fill TrueType Font [SuttonSignWritingFontFill] 1369 3.1.1.2. iOS 1371 Installation is possible on iOS with a configuration profile that 1372 includes the 2 TrueType fonts. Simply download the configuration 1373 profile and install. 1375 Sutton SignWriting Configuration Profile 1376 [SuttonSignWritingProfile] 1378 3.1.1.3. Android 1380 Android can not install the fonts directly onto the system. The CSS 1381 declarations below will install the fonts in the browser cache. 1383 3.1.2. Using the Fonts without Installation 1385 The TrueType Fonts can be used without installing the fonts on any 1386 platform by defining two font-face statements. Simply include the 1387 following CSS in any HTML page to access the fonts. Make sure to 1388 replace the URLs with the fully qualified links for both fonts. 1390 @font-face { 1391 font-family: "SuttonSignWriting"; 1392 src: 1393 local('SuttonSignWriting'), 1394 url('https://.../SuttonSignWriting.ttf') format('truetype'); 1395 } 1396 @font-face { 1397 font-family: "SuttonSignWritingFill"; 1398 src: 1399 local('SuttonSignWritingFill'), 1400 url('https://.../SuttonSignWritingFill.ttf') format('truetype'); 1401 } 1403 If the fonts are installed, then the system fonts will be used. If 1404 the fonts are not installed when a SignWriting Font page is opened, 1405 the CSS will cause the fonts to be automatically downloaded to the 1406 browser's cache on the first visit. Once the fonts are installed in 1407 the browser cache, they will remain there until the browser cache is 1408 emptied. Any webside that uses this CSS can access the browser 1409 installed font without requesting a new copy. The fonts are 10 MB, 1410 so the first install make take a few seconds or longer depending on 1411 your download speed and processor. 1413 3.2. Scalar Vector Graphics 1415 Sutton SignWriting is a 2-dimensional script. The sign images are 1416 composed using Scalar Vector Graphic (SVG). 1418 3.2.1. Font Based SVG 1420 The conversion of Formal SignWriting to Scalar Vector Graphics 1421 requires three parts: header, text, and symbols. Consider the FSW 1422 string 1423 "M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468". 1425 3.2.1.1. SVG Header 1427 The header section contains the SVG definition along with the width, 1428 height, and viewbox. The viewbox is a combination of the minimum X, 1429 minimum Y, width, and height. 1431 Minimum X: 482 1433 Maximum X: 518 1435 Width: 36 1437 Minimum Y: 468 1438 Maximum Y: 533 1440 Height: 65 1442 1445 If the width and height properties are not included, then the 1446 resulting SVG will automatically expand in size to fill the 1447 containing element on the screen. 1449 1452 3.2.1.2. SVG Text 1454 The SVG text section is included to make it possible to copy and 1455 paste Formal SignWriting strings. The font-size is set to zero to 1456 make the text invisible. 1458 1459 M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468 1460 1462 3.2.1.3. SVG Symbols 1464 Each symbol in the SignBox is a combination of the symbol key and the 1465 positioning coordinate. 1467 Symbol 1: S1870a 489x515 1469 Symbol 2: S18701 482x490 1471 Symbol 3: S20500 508x496 1473 Symbol 4: S2e734 500x468 1475 Each spatial symbol is written as an SVG group and positioned by the 1476 transformation translate. 1478 ... 1479 ... 1480 ... 1481 ... 1483 Inside of each group, 2 text elements are written. The symbol fill 1484 is written first using the SuttonSignWritingFill font with a plane 16 1485 character. The symbol line is written second using the 1486 SuttonSignWriting font with a plane 4 character. See Section 4.2.1 1487 for the formula to convert symbol keys to codepoints. 1489 1491 {plane 16 codepoint} 1492 1493 1495 {plane 4 codepoint} 1496 1498 3.2.2. Stand Alone SVG 1500 It is possible to request completed SVG images from the SignWriting 1501 Server [SignWritingServer]. The SVG images created by the 1502 SignWriting Server are stand-alone graphics that do not use the 1503 TrueType Fonts. The SVG images use path elements to define the 1504 symbol lines and curves. 1506 The SVG header and SVG text for the server-side images are the same 1507 as the standard FSW to SVG transformation. See Section 3.2.1 1509 The SVG symbols section is structured differently. Multiple SVG 1510 elements are contained within each sign SVG image. Each sub-SVG 1511 element uses X and Y coordinates to place each symbol. Consider the 1512 FSW string 1513 "M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468". 1515 Symbol 1: S1870a 489x515 1517 Symbol 2: S18701 482x490 1519 Symbol 3: S20500 508x496 1521 Symbol 4: S2e734 500x468 1523 ... 1524 ... 1525 ... 1526 ... 1528 Inside of each sub-SVG element is a group (g) element with one or two 1529 path elements. This inside information can only be requested from 1530 the SignWriting Server or some other source of the symbol image data. 1532 1533 1534 1535 1537 3.3. HTML and CSS 1539 Basic HTML structures and CSS rules can be used with Sutton 1540 SignWriting for customization and layout. 1542 3.3.1. Centering and Sizing 1544 It is possible to center a symbol or sign within a div with a few CSS 1545 rules. The symbol or sign will automatically shrink in size if the 1546 containing div is smaller than the SVG image. Additionally, if the 1547 SVG is created with the zoom level of extendable (styling string 1548 "-Zx"), the symbol or sign will grow in size to fill as much of the 1549 containing div as possible. 1551
1552 1555 div.centered { 1556 position: relative; 1557 width: 10%; 1558 height: 10%; 1559 border: 1px solid black; 1560 } 1562 div.centered svg { 1563 position: absolute; 1564 display: block; 1565 top:2.5%; 1566 bottom: 2.5%; 1567 left: 2.5%; 1568 right: 2.5%; 1569 margin: auto; 1570 max-width: 95%; 1571 max-height: 95%; 1572 } 1574 3.3.2. Coloring Symbols and Signs 1576 Individual signs can be colored with CSS rules. The individual 1577 classes of 'sym-line' and 'sym-fill' can be used to isolate each part 1578 of a symbol, both positive and negative spaces, or the classes can be 1579 ignored to create the shadow of a symbol that includes both aspects 1580 of a symbol. 1582 1629 1630
1634 div.signtext { 1635 -webkit-writing-mode: vertical-lr; 1636 writing-mode: vertical-lr; 1637 font-size: 0%; 1638 border-left: 1px solid blue; 1639 height: 100%; 1640 } 1642 span.outside { border-left: 1px solid blue; vertical-align: top; } 1643 span.middle { vertical-align: bottom; } 1644 span.inside { border-left: 1px dashed red; } 1646 div.signtext div { 1647 writing-mode: horizontal-tb; 1648 display: inline-block; 1649 vertical-align: middle; 1650 padding: 20px; 1651 box-sizing: content-box; 1652 } 1654 3.4. JavaScript 1656 The Sutton SignWriting JavaScript Library leverages the Sutton 1657 SignWriting Fonts, without additional dependancies. 1659 The Sutton SignWriting JavaScript Library is part of the Sutton 1660 SignWriting Project [SuttonSignWritingProject] 1662 Sutton SignWriting JavaScript Library 1663 Copyright (c) 2007-2016, Stephen E Slevinski Jr 1664 Licensed under the MIT License 1666 4. Unicode Considerations 1668 4.1. UTF-8 1670 Formal SignWriting as ASCII characters is compatible with and 1671 optimized for UTF-8. 1673 Formal SignWriting as ASCII characters is the standard that is 1674 currently used by the Center for Sutton Movement Writing and the sign 1675 language Wikipedia projects on Wikimedia Incubator. The ASCII form 1676 is fully supported with the fonts, styling string, query string, and 1677 the various transformations. 1679 4.2. Option 1 1681 Formal SignWriting as an alternate encoding that replaces the Sutton 1682 SignWriting block in Unicode. Option 1 focuses on small size, simple 1683 design, and ease of use. This option can complicate processing with 1684 UTF-8 and UTF-16 considerations. 1686 4.2.1. Symbols 1688 In order to support Sutton SignWriting, you must support all of the 1689 Sutton SignWriting Symbols. This set has been designed as a 16-bit 1690 coded character set. Using these derived codepoints makes it easier 1691 to reference the individual Sutton SignWriting Symbols in a variety 1692 of ways. For inside of a font file, an entire Unicode plane can be 1693 used to reference these symbols. Inside of the font files, plane 4 1694 is used to identify each glyph, but these characters have not been 1695 officially proposed to Unicode. Alternately, plane 16 can be used, 1696 but this creates a font filled with private use area characters. 1697 Finally, the glyphs can be added to a font file without assigning a 1698 unique Unicode codepoint to each, but this results in each glyph 1699 being given a unique glyph ID that is only meaningful for that 1700 specific font file. 1702 A simple formula transforms a symbol key into a codepoint. Given a 1703 symbol key as variable "key", in JavaScript the function is defined 1704 as: 1706 var code = ((parseInt(key.slice(1,4),16) - 256) * 96) + 1707 ((parseInt(key.slice(4,5),16))*16) + parseInt(key.slice(5,6),16) + 1708 1; 1710 4.2.2. Other Characters 1712 In addition to the Sutton SignWriting symbols, the structural markers 1713 and number characters need to be supported. These other characters 1714 overwrite the Sutton SignWriting block with a viable character 1715 design. 1717 +-----------------+--------------------+-------------------------+ 1718 | Description | Formal SignWriting | x-Character-SignWriting | 1719 +-----------------+--------------------+-------------------------+ 1720 | Sequence Marker | A | U+1D800 | 1721 +-----------------+--------------------+-------------------------+ 1722 | SignBox Markers | B, L, M, R | U+1D801 to U+1D804 | 1723 +-----------------+--------------------+-------------------------+ 1724 | Numbers | 250 to 749 | U+1D80C to U+1D9FF | 1725 +-----------------+--------------------+-------------------------+ 1727 Table 24 1729 4.3. Option 2 1731 Formal SignWriting as an encoding that is 97.5% official Unicode with 1732 defined characters in the Sutton SignWriting block. Option 2 focuses 1733 on augmenting the Unicode 8 standard with 17 new control characters 1734 for a design that is compatible with Formal SignWriting. This option 1735 is three times larger than Option 1 and requires the support of the 1736 ligature feature "ccmp" for Glyph Composition/Decomposition. Support 1737 in older software is limited. In the browser, "ccmp" ligatures 1738 support is possible, but it will require extra css to define the font 1739 famiily and may require extra css to enable the "ccmp" feature. 1741 4.3.1. Official Characters 1743 In 2015, the symbols of Sutton SignWriting were added to Unicode 1744 version 8. 1746 See Section 1.2 and Section 2.1.4 1748 +----------------------------+--------------------+ 1749 | Description | Unicode Range | 1750 +----------------------------+--------------------+ 1751 | Base Charcters | U+1D800 to U+1DA8B | 1752 +----------------------------+--------------------+ 1753 | Fill Modifiers 2 to 6 | U+1DA9B to U+1DA9F | 1754 +----------------------------+--------------------+ 1755 | Rotation Modifiers 2 to 16 | U+1DAA1 to U+1DAAF | 1756 +----------------------------+--------------------+ 1758 Table 25 1760 Each symbol key can be rewritten as 3 Unicode characters of a base, a 1761 fill, and a rotation. Given a symbol key as variable "key", in 1762 JavaScript the 3 characters can be derived with the following 1763 statements: 1765 var base = parseInt(key.substr(1,3),16) + parseInt('1D700',16); 1767 var fill = parseInt(key.substr(4,1),16) + parseInt('1DA9A',16); 1769 var rotation = parseInt(key.substr(5,1),16) + 1770 parseInt('1DAA0',16); 1772 4.3.2. 17 New Characters 1774 The addition of 17 Unicode characters to the official characters will 1775 complete the script encoding and cover 2-dimensional layout. 1777 +---------------------+--------------------+--------------------+ 1778 | Description | Formal SignWriting | Proposed Unicode | 1779 +---------------------+--------------------+--------------------+ 1780 | Fill Modifier 1 | 0 | U+1DA9A | 1781 +---------------------+--------------------+--------------------+ 1782 | Rotation Modifier 1 | 0 | U+1DAA0 | 1783 +---------------------+--------------------+--------------------+ 1784 | Numbers | 0 to 9 | U+1DAB0 to U+1DAB9 | 1785 +---------------------+--------------------+--------------------+ 1786 | Sequence Marker | A | U+1DABA | 1787 +---------------------+--------------------+--------------------+ 1788 | SignBox Markers | B | U+1DABB | 1789 +---------------------+--------------------+--------------------+ 1790 | Left Lane Markers | L | U+1DABC | 1791 +---------------------+--------------------+--------------------+ 1792 | Middle Lane Markers | M | U+1DABD | 1793 +---------------------+--------------------+--------------------+ 1794 | Right Lane Markers | R | U+1DABE | 1795 +---------------------+--------------------+--------------------+ 1797 Table 26 1799 Fill Modifier 1 and Rotation Modifier 1 are included to fix sorting 1800 and simplify processing. 1802 The 10 number characters express the concept of distance, important 1803 for use with 2-dimensional scripts. 1805 The 5 structural markers define cohesive units of the script. 1807 5. IANA Considerations 1809 None. 1811 6. Security Considerations 1813 None. 1815 7. References 1817 [SignWritingServer] 1818 Slevinski, S., "SignWriting Server", 1819 . 1821 [SuttonSignWritingFont] 1822 Slevinski, S., "Sutton SignWriting TypeType Font", 1823 . 1826 [SuttonSignWritingFontFill] 1827 Slevinski, S., "Sutton SignWriting Fill TypeType Font", 1828 . 1831 [SuttonSignWritingProfile] 1832 Slevinski, S., "Sutton SignWriting Configuration Profile", 1833 . 1836 [SuttonSignWritingProject] 1837 Slevinski, S., "Sutton SignWriting Project", 1838 . 1840 Author's Address 1842 Stephen E Slevinski Jr 1843 Center for Sutton Movement Writing 1845 Email: slevinski@signwriting.org