idnits 2.17.1 draft-slevinski-formal-signwriting-05.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 an Introduction section. ** 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 (July 23, 2018) is 2104 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Missing Reference: 'ABC' is mentioned on line 301, but not defined == Missing Reference: 'A-C' is mentioned on line 304, but not defined -- Looks like a reference, but probably isn't: '123' on line 1556 == Missing Reference: '0-9a-f' is mentioned on line 1556, but not defined == Missing Reference: '0-5' is mentioned on line 1590, but not defined == Missing Reference: '5-9' is mentioned on line 554, but not defined == Missing Reference: '0-9' is mentioned on line 1590, but not defined == Missing Reference: '3-6' is mentioned on line 554, but not defined == Missing Reference: '0-4' is mentioned on line 1590, but not defined == Missing Reference: 'LMR' is mentioned on line 640, but not defined == Missing Reference: '0-5u' is mentioned on line 1137, but not defined == Missing Reference: '0-9a-fu' is mentioned on line 1056, but not defined == Missing Reference: '2-9' is mentioned on line 1590, but not defined == Missing Reference: '3-9' is mentioned on line 1590, but not defined == Missing Reference: '2-3' is mentioned on line 1590, but not defined == Unused Reference: 'SuttonSignWritingProject' is defined on line 1734, but no explicit reference was found in the text Summary: 2 errors (**), 0 flaws (~~), 16 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 July 23, 2018 5 Expires: January 24, 2019 7 Formal SignWriting 8 draft-slevinski-formal-signwriting-05 10 Abstract 12 Sutton SignWriting is the universal and complete solution for written 13 sign language, ISO 15924 script code "Sgnw". It has been applied by 14 a wide and deep international community of sign language users. 15 Sutton SignWriting is an international standard for writing sign 16 languages by hand or with computers. From education to research, 17 from entertainment to religion, SignWriting has proven useful because 18 people are using it to write signed languages. 20 Formal SignWriting is one particular computerized design for Sutton 21 SignWriting that envisions a sign as a two part word. Each word is 22 written as a string of characters that can be recognized and 23 processed by regular expressions. The design has been optimized for 24 display, searching, sorting, text flow, and other character 25 processing. 27 Where as American Sign Language is a natural language, Formal 28 SignWriting is a formal language. A formal language is useful in 29 mathematics, computer science, and linguistics. 31 This memo defines a conceptual character encoding map for the 32 Internet community. It is published for reference, examination, 33 implementation, and evaluation. Distribution of this memo is 34 unlimited. 36 Status of This Memo 38 This Internet-Draft is submitted in full conformance with the 39 provisions of BCP 78 and BCP 79. 41 Internet-Drafts are working documents of the Internet Engineering 42 Task Force (IETF). Note that other groups may also distribute 43 working documents as Internet-Drafts. The list of current Internet- 44 Drafts is at https://datatracker.ietf.org/drafts/current/. 46 Internet-Drafts are draft documents valid for a maximum of six months 47 and may be updated, replaced, or obsoleted by other documents at any 48 time. It is inappropriate to use Internet-Drafts as reference 49 material or to cite them other than as "work in progress." 51 This Internet-Draft will expire on January 24, 2019. 53 Copyright Notice 55 Copyright (c) 2018 IETF Trust and the persons identified as the 56 document authors. All rights reserved. 58 This document is subject to BCP 78 and the IETF Trust's Legal 59 Provisions Relating to IETF Documents 60 (https://trustee.ietf.org/license-info) in effect on the date of 61 publication of this document. Please review these documents 62 carefully, as they describe your rights and restrictions with respect 63 to this document. Code Components extracted from this document must 64 include Simplified BSD License text as described in Section 4.e of 65 the Trust Legal Provisions and are provided without warranty as 66 described in the Simplified BSD License. 68 Table of Contents 70 1. Sutton SignWriting . . . . . . . . . . . . . . . . . . . . . 3 71 1.1. Script . . . . . . . . . . . . . . . . . . . . . . . . . 4 72 1.2. Symbols . . . . . . . . . . . . . . . . . . . . . . . . . 4 73 2. Formal SignWriting . . . . . . . . . . . . . . . . . . . . . 5 74 2.1. Design Principles . . . . . . . . . . . . . . . . . . . . 5 75 2.1.1. Complete . . . . . . . . . . . . . . . . . . . . . . 5 76 2.1.2. Universal . . . . . . . . . . . . . . . . . . . . . . 5 77 2.1.3. Empowering . . . . . . . . . . . . . . . . . . . . . 5 78 2.1.4. Possible . . . . . . . . . . . . . . . . . . . . . . 5 79 2.2. Characters . . . . . . . . . . . . . . . . . . . . . . . 5 80 2.2.1. Formal SignWriting in ASCII (FSW) . . . . . . . . . . 6 81 2.2.2. SignWriting in Unicode (SWU) . . . . . . . . . . . . 6 82 2.3. Building Blocks . . . . . . . . . . . . . . . . . . . . . 6 83 2.3.1. Regular Expressions . . . . . . . . . . . . . . . . . 6 84 2.3.2. Token Patterns . . . . . . . . . . . . . . . . . . . 7 85 2.3.3. Symbols . . . . . . . . . . . . . . . . . . . . . . . 8 86 2.3.4. Numbers . . . . . . . . . . . . . . . . . . . . . . . 12 87 2.4. Two-Part Word . . . . . . . . . . . . . . . . . . . . . . 13 88 2.4.1. Spatial Signbox . . . . . . . . . . . . . . . . . . . 14 89 2.4.2. Temporal Prefix . . . . . . . . . . . . . . . . . . . 17 90 2.5. Styling String . . . . . . . . . . . . . . . . . . . . . 18 91 2.5.1. Entire Sign . . . . . . . . . . . . . . . . . . . . . 19 92 2.5.2. Individual Symbols . . . . . . . . . . . . . . . . . 21 93 2.5.3. SVG Class Names and ID . . . . . . . . . . . . . . . 22 94 2.6. Query Language . . . . . . . . . . . . . . . . . . . . . 23 95 2.6.1. Searching the Spatial Signbox . . . . . . . . . . . . 25 96 2.6.2. Searching the Temporal Prefix . . . . . . . . . . . . 26 97 2.6.3. Including the Styling String . . . . . . . . . . . . 27 98 3. Technology Integration . . . . . . . . . . . . . . . . . . . 28 99 3.1. Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . 28 100 3.1.1. Windows, Linux, and Mac . . . . . . . . . . . . . . . 28 101 3.1.2. Mac and iOS . . . . . . . . . . . . . . . . . . . . . 28 102 3.1.3. Android . . . . . . . . . . . . . . . . . . . . . . . 29 103 3.2. Fonts and CSS . . . . . . . . . . . . . . . . . . . . . . 29 104 3.3. Scalar Vector Graphics . . . . . . . . . . . . . . . . . 30 105 3.3.1. Font Based SVG . . . . . . . . . . . . . . . . . . . 30 106 3.3.2. Stand Alone SVG . . . . . . . . . . . . . . . . . . . 31 107 3.4. HTML and CSS . . . . . . . . . . . . . . . . . . . . . . 32 108 3.4.1. Centering and Sizing . . . . . . . . . . . . . . . . 32 109 3.4.2. Coloring Symbols and Signs . . . . . . . . . . . . . 33 110 3.4.3. Other Effects . . . . . . . . . . . . . . . . . . . . 34 111 3.4.4. Sentences . . . . . . . . . . . . . . . . . . . . . . 34 112 4. Transformations . . . . . . . . . . . . . . . . . . . . . . . 35 113 4.1. Formal SignWriting to Query String . . . . . . . . . . . 35 114 4.2. Query String to Regular Expression . . . . . . . . . . . 36 115 5. Unicode Considerations . . . . . . . . . . . . . . . . . . . 37 116 5.1. Official Characters . . . . . . . . . . . . . . . . . . . 37 117 5.2. 17 New Characters . . . . . . . . . . . . . . . . . . . . 38 118 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 119 7. Security Considerations . . . . . . . . . . . . . . . . . . . 38 120 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 39 121 Appendix A. For the Future of Sutton SignWriting . . . . . . . . 40 122 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 41 124 1. Sutton SignWriting 126 Sutton SignWriting is the universal and complete solution for written 127 sign language. It has been applied by a wide and deep international 128 community of sign languages including: American Sign Language, 129 Arabian Sign Languages, Australian Sign Language, Bolivian Sign 130 Language, Brazilian Sign Language, British Sign Language, Catalan 131 Sign Language, Colombian Sign Language, Czech Sign Language, Danish 132 Sign Language, Dutch Sign Language, Ethiopian Sign Language, Finnish 133 Sign Language, Flemish Sign Language, French-Belgian Sign Language, 134 French Sign Language, German Sign Language, Greek Sign Language, 135 Irish Sign Language, Italian Sign Language, Japanese Sign Language, 136 Malawi Sign Language, Malaysian Sign Language, Maltese Sign Language, 137 Mexican Sign Language, Nepalese Sign Language, New Zealand Sign 138 Language, Nicaraguan Sign Language, Norwegian Sign Language, Peruvian 139 Sign Language, Philippines Sign Language, Polish Sign Language, 140 Portugese Sign Language, Quebec Sign Language, South African Sign 141 Language, Spanish Sign Language, Swedish Sign Language, Swiss Sign 142 Language, Taiwanese Sign Language, and Tunisian Sign Language. 144 Sutton SignWriting is an international standard for writing sign 145 languages by hand or with computers. From education to research, 146 from entertainment to religion, SignWriting has proven useful because 147 people are using it to write signed languages. 149 1.1. Script 151 Sign language is vastly different than spoken language. Instead of 152 the sequential sounds of the voice, there is a 3 dimensional space 153 with simultaneous action. Sutton SignWriting creates 2-dimensional 154 writing that is visually icon and full of featural information. This 155 is true on the symbol level and on the sign level. A symbol 156 represents phonemic information and is full of featural information 157 to better understand the phonemes of the symbols. A sign is a 158 2-dimensional arrangement of symbols and is full of featural 159 information to better understand the morphemes of the signs. 161 Punctuation is represented by a single symbol and separates a series 162 of signs into structured sentences. Line breaks should not occur 163 before punctuation. 165 When written vertically, SignWriting can use 3 different lanes: left, 166 middle, and right. The middle lane is the default lane and 167 punctuation is always used in the middle lane. No matter the lane, 168 the center of a sign is aligned with the center of the lane. The 169 left and right lanes are used to represent body weight shifts and are 170 represented by a horizontal offset from the middle lane. Body weight 171 shifts are important to the grammar of sign languages, used for two 172 different grammatical aspects: 1) role shifting during sign language 173 storytelling, and 2) spatial comparisons of two items under 174 discussion. One "role" or "item" is placed on the right side of the 175 body (right lane), and the other on the left side of the body (left 176 lane), and the weight shifts back and forth between the two, with the 177 narrator in the middle (middle lane). 179 1.2. Symbols 181 The Sutton SignWriting Symbols are the building blocks of Sutton 182 SignWriting. The symbols are arranged in 2 dimensions to create the 183 sign images. The symbols are organized with a 16-bit coded character 184 set and a layered hierarchy. The symbols are defined in the 185 International SignWriting Alphabet 2010 (ISWA 2010). The ISWA 2010 186 is a product of the Sutton-Slevinski collaboration. 188 2. Formal SignWriting 190 Formal SignWriting is one particular computerized encoding for Sutton 191 SignWriting. The design is based on character processing with 192 regular expressions. With Formal SignWriting, each sign is written 193 as a two-part word of time and space. 195 Where as American Sign Language is a natural language, Formal 196 SignWriting is a formal language. A formal language is useful in 197 mathematics, computer science, and linguistics. 199 2.1. Design Principles 201 Formal SignWriting was created using four design principles: 202 completeness, universality, empowerment, and possiblity. 204 2.1.1. Complete 206 Sutton SignWriting is a complex script with unique requirements and 207 processing. Formal SignWriting supports all of the structures 208 inherent to the script. 210 2.1.2. Universal 212 Sutton SignWriting can be used to write any sign language, natural or 213 constructed. Formal SignWriting supports all sign languages without 214 requiring the addition of new characters or updated fonts. 216 2.1.3. Empowering 218 Sutton SignWriting is flexible enough to let each writer decide how 219 they want to write their signs. Formal SignWriting enable the 220 writers to decide for themselves the spelling of their respective 221 signs. 223 2.1.4. Possible 225 Sutton SignWriting is a practical script that makes it possible to 226 write sign language. Formal SignWriting is a practical encoding 227 because it works with existing font technologies across operating 228 systems. 230 2.2. Characters 232 Any sign can be written as a string of characters. Formal 233 SignWriting has two sets of characters that can be used: Formal 234 SignWriting in ASCII (FSW) and SignWriting in Unicode (SWU). These 235 sets are isomorphic with an easy bi-directional conversion between 236 the two sets. 238 +-----------------+------------------+--------------------+ 239 | Description | FSW Characters | SWU Characters | 240 +-----------------+------------------+--------------------+ 241 | Sequence Marker | A | U+1D800 | 242 +-----------------+------------------+--------------------+ 243 | Signbox Markers | B, L, M, R | U+1D801 to U+1D804 | 244 +-----------------+------------------+--------------------+ 245 | Numbers | 250 to 749 | U+1D80C to U+1D9FF | 246 +-----------------+------------------+--------------------+ 247 | Symbols | S10000 to S38b07 | U+40001 to U+4F428 | 248 +-----------------+------------------+--------------------+ 250 Table 1 252 2.2.1. Formal SignWriting in ASCII (FSW) 254 Formal SignWriting in ASCII (FSW) was released in January 2012 and 255 has been stable since. FSW only uses characters from the ASCII 256 subset of "ABLMRS0123456789xabcdef". 258 2.2.2. SignWriting in Unicode (SWU) 260 SignWriting in Unicode (SWU) was first published in October 2016 and 261 officially submitted to the Unicode Technical Committee in July 2017. 262 SWU is not part of the Unicode standard. 264 SignWriting in Unicode is an experimental Unicode design that is 265 promoted by the Center for Sutton Movement Writing. This alternate 266 encoding replaces the Sutton SignWriting block in Unicode and uses 267 plane 4 for the SignWriting symbols. 269 2.3. Building Blocks 271 The mathematical words of Formal SignWriting are plain text strings 272 of characters. 274 2.3.1. Regular Expressions 276 Regular Expressions define string matching criteria. Regular 277 Expressions offer fast processing and wide support on the various 278 platforms. 280 Formal SignWriting is defined with regular expressions. Formal 281 languages and regular expressions are used to solve fundamental 282 problems. 284 Regular Expression Basics 286 +------------+--------------------------+---------------------------+ 287 | Characters | Description | Example | 288 +------------+--------------------------+---------------------------+ 289 | * | Match a literal 0 or | ABC* matches AB, ABC, | 290 | | more times | ABCC, ... | 291 +------------+--------------------------+---------------------------+ 292 | + | Match a literal 1 or | ABC+ matches ABC, ABCC, | 293 | | more times | ABCCC, ... | 294 +------------+--------------------------+---------------------------+ 295 | ? | Match a literal 0 or 1 | ABC? matches AB or ABC | 296 | | times | | 297 +------------+--------------------------+---------------------------+ 298 | {#} | Match a literal "#" | AB{2} matches ABB | 299 | | times | | 300 +------------+--------------------------+---------------------------+ 301 | [ ] | Match any single literal | [ABC] matches A, B, or C | 302 | | from a list | | 303 +------------+--------------------------+---------------------------+ 304 | [ - ] | Match any single literal | [A-C] matches A, B, or C | 305 | | in a range | | 306 +------------+--------------------------+---------------------------+ 307 | ( ) | Creates a group for | A(BC)+ matches ABC, | 308 | | matching | ABCBC, ABCBCBC, ... | 309 +------------+--------------------------+---------------------------+ 310 | ( | ) | Matches one of several | (AB|BC|CD) will match AB, | 311 | | alternatives | BC, or CD | 312 +------------+--------------------------+---------------------------+ 314 Table 2 316 2.3.2. Token Patterns 318 The Formal SignWriting encoding model makes explicit those features 319 which can be effectively and efficiently processed. The mathematical 320 names are structured with 11 different tokens. They can be grouped 321 in 4 layers: the 5 structural makers (A, B, L, M, R), the 3 base 322 symbol ranges (w, s, P), the 2 modifier indexes (i, o), and the 323 numbers (n). 325 The Tokens of Formal SignWriting 327 +-------+-------------------------------+ 328 | Token | Description | 329 +-------+-------------------------------+ 330 | A | Sequence Marker | 331 +-------+-------------------------------+ 332 | B | Signbox Marker | 333 +-------+-------------------------------+ 334 | L | Left Lane Marker | 335 +-------+-------------------------------+ 336 | M | Middle Lane Marker | 337 +-------+-------------------------------+ 338 | R | Right Lane Marker | 339 +-------+-------------------------------+ 340 | w | Writing BaseSymbols | 341 +-------+-------------------------------+ 342 | s | Detailed Location BaseSymbols | 343 +-------+-------------------------------+ 344 | P | Punctuation BaseSymbols | 345 +-------+-------------------------------+ 346 | i | Fill Modifiers | 347 +-------+-------------------------------+ 348 | o | Rotation Modifiers | 349 +-------+-------------------------------+ 350 | n | Number from 250 to 749 | 351 +-------+-------------------------------+ 353 Table 3 355 These tokens are used in patterns to form written sign language. 357 2.3.3. Symbols 359 Symbols can be described with 3 tokens: base symbol, fill modifier, 360 and rotation modifier. 362 Symbol Tokens 364 +---------+---------------------------------------------------------+ 365 | Token | Description | 366 | Pattern | | 367 +---------+---------------------------------------------------------+ 368 | w | Writing BaseSymbols. | 369 +---------+---------------------------------------------------------+ 370 | s | Detailed Location BaseSymbols. | 371 +---------+---------------------------------------------------------+ 372 | P | Punctuation BaseSymbols. | 373 +---------+---------------------------------------------------------+ 374 | i | Fill Modifiers. | 375 +---------+---------------------------------------------------------+ 376 | o | Rotation Modifiers. | 377 +---------+---------------------------------------------------------+ 378 | wio | A writing symbol as 3 tokens of writing base, fill | 379 | | modifier and rotation modifier. Writing symbols can be | 380 | | used in the spatial signbox or the temporal prefix. | 381 +---------+---------------------------------------------------------+ 382 | [ws]io | A writing symbol or a detailed location symbol as 3 | 383 | | tokens of base, fill modifier, and rotation modifier. | 384 | | Writing symbols and detail location symbols can be used | 385 | | in the temporal prefix. | 386 +---------+---------------------------------------------------------+ 387 | Pio | A punctuation symbol as 3 tokens of punctuation base, | 388 | | fill modifier, and rotation modifier. Punctuation | 389 | | symbols divide signs into sentences. | 390 +---------+---------------------------------------------------------+ 392 Table 4 394 There are a variety of symbol types that are used for different 395 purposes. 397 Symbol Types and Descriptions 399 +-------------+-----------------------------------------------------+ 400 | Type | Description | 401 +-------------+-----------------------------------------------------+ 402 | all symbols | All symbols used in Formal SignWriting. | 403 +-------------+-----------------------------------------------------+ 404 | writing | Symbols that can be used in the spatial signbox or | 405 | | the temporal prefix. | 406 +-------------+-----------------------------------------------------+ 407 | hand | Various handshapes | 408 +-------------+-----------------------------------------------------+ 409 | movement | Contact symbols, small finger movements, straight | 410 | | arrows, curved arrows and circles. | 411 +-------------+-----------------------------------------------------+ 412 | dynamic | Dynamic symbols are used to give the "feeling" or | 413 | | "tempo" to movement. | 414 +-------------+-----------------------------------------------------+ 415 | head | Symbols for the head and face. | 416 +-------------+-----------------------------------------------------+ 417 | hcenter | Used to determine the horizontal center of a sign. | 418 | | Same as the head type. | 419 +-------------+-----------------------------------------------------+ 420 | vcenter | Use to determine the vertical center of a sign. | 421 | | Includes the head and trunk types. | 422 +-------------+-----------------------------------------------------+ 423 | trunk | Symbols for torso movement, shoulders, and hips. | 424 +-------------+-----------------------------------------------------+ 425 | limb | Symbols for limbs and fingers. | 426 +-------------+-----------------------------------------------------+ 427 | location | Detailed location symbols can only be used in the | 428 | | temporal prefix. | 429 +-------------+-----------------------------------------------------+ 430 | punctuation | Punctual symbols are used to divide signs into | 431 | | sentences. | 432 +-------------+-----------------------------------------------------+ 434 Table 5 436 Symbol types occur in specific ranges depending on the characters 437 involved. 439 Symbol Types and Ranges 441 +-------------+-------------+------------------+ 442 | Type | FSW | SWU | 443 +-------------+-------------+------------------+ 444 | all symbols | S100 - S38b | U+40001 -U+4F480 | 445 +-------------+-------------+------------------+ 446 | writing | S100 - S37e | U+40001 -U+4EFA0 | 447 +-------------+-------------+------------------+ 448 | hand | S100 - 204 | U+40001 -U+461E0 | 449 +-------------+-------------+------------------+ 450 | movement | S205 - S2f6 | U+461E1 -U+4BCA0 | 451 +-------------+-------------+------------------+ 452 | dynamic | S2f7 - S2fe | U+4BCA1 -U+4BFA0 | 453 +-------------+-------------+------------------+ 454 | head | S2ff - S36c | U+4BFA1 -U+4E8E0 | 455 +-------------+-------------+------------------+ 456 | hcenter | S2ff - S36c | U+4BFA1 -U+4E8E0 | 457 +-------------+-------------+------------------+ 458 | vcenter | S2ff - S375 | U+4BFA1 -U+4EC40 | 459 +-------------+-------------+------------------+ 460 | trunk | S36d - S375 | U+4E8E1 -U+4EC40 | 461 +-------------+-------------+------------------+ 462 | limb | S376 - S37e | U+4EC41 -U+4EFA0 | 463 +-------------+-------------+------------------+ 464 | location | S37f - S386 | U+4EFA1 -U+4F2A0 | 465 +-------------+-------------+------------------+ 466 | punctuation | S387 - S38b | U+4F2A1 -U+4F480 | 467 +-------------+-------------+------------------+ 469 Table 6 471 2.3.3.1. FSW Symbols 473 Symbol keys are 6 characters long. The first character of a symbol 474 key is always "S". The next 3 characters identify the symbol base. 475 The last two characters identify the fill and rotation modifiers 476 respectively. 478 Symbol Key Definition 480 +--------------------------------+-----------------------+ 481 | Regular Expression | Description | 482 +--------------------------------+-----------------------+ 483 | S | Start of symbol key | 484 +--------------------------------+-----------------------+ 485 | [123][0-9a-f]{2} | Symbol key base | 486 +--------------------------------+-----------------------+ 487 | [0-5] | Fill modifier | 488 +--------------------------------+-----------------------+ 489 | [0-9a-f] | Rotation modifier | 490 +--------------------------------+-----------------------+ 491 | S[123][0-9a-f]{2}[0-5][0-9a-f] | Symbol key definition | 492 +--------------------------------+-----------------------+ 494 Table 7 496 2.3.3.2. SWU Symbols 498 The 37,811 symbols of the International SignWriting Alphabet 2010 are 499 uniquely idendified with Unicode characters in the range U+40001 to 500 U+4F428. 502 A simple formula transforms a symbol key into a codepoint. Given a 503 symbol key as variable "key", in JavaScript the function is defined 504 as: 506 var code = ((parseInt(key.slice(1,4),16) - 256) * 96) + 507 ((parseInt(key.slice(4,5),16))*16) + parseInt(key.slice(5,6),16) + 508 1; 510 2.3.4. Numbers 512 The numbers encode the ruler principle with characters. The ruler 513 principle is built in automatically for scripts written sequentially 514 in one dimension. The number characters are needed to specify the 515 spatial relationship between symbols. 517 Both FSW and SWU use a restricted range of 500 numbers between 250 518 and 749. 520 Cartesian Coordinates can be described with 2 tokens: number and 521 number. These numbers represent the X and Y coordinates 522 respectively. 524 Coordinate Tokens 526 +----------------+---------------------------------------------+ 527 | Token Patterns | Description | 528 +----------------+---------------------------------------------+ 529 | n | Number from 250 to 749 | 530 +----------------+---------------------------------------------+ 531 | nn | Coordinate with X and Y values as 2 numbers | 532 +----------------+---------------------------------------------+ 534 Table 8 536 2.3.4.1. FSW Numbers 538 Formal SignWriting in ASCII has two definitions for a number. The 539 more general definition simply defines 3 digits together with a 540 potential range of 1000. A more explicit definition correctly 541 restricts the numbers to 500 possibilities in the 250 to 749 range. 542 The general coordinate definition is adequate for processing. 544 An X,Y coordinate is created by using the letter "x" to join two FSW 545 numbers. 547 General 3 digit number definition: [0-9]{3} 549 General coordinate definition: [0-9]{3}x[0-9]{3} 551 Explicit number definition from 250 to 749: 552 (2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0-9]) 554 Explicit coordinate definition: (2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0- 555 9])x(2[5-9][0-9]|[3-6][0-9]{2}|7[0-4][0-9]) 557 2.3.4.2. SWU Numbers 559 SignWriting in Unicode has a single definition for a number. Each 560 number is uniquely idendified with Unicode characters in the range 561 U+1D80C to U+1D9FF. A coordinate is defined as 2 numbers together. 563 2.4. Two-Part Word 565 Formal SignWriting envisions a sign as a two-part word of time and 566 space. The two-dimensional appearance of a sign is written in the 567 spatial signbox as an objective arrangement. The one-dimensional 568 order of a sign is written in the temporal prefix as a subjective 569 analysis. 571 2.4.1. Spatial Signbox 573 The spatial signbox is a two-dimensional cluster of symbols. The 574 position of each symbol is determined by the writer and defined using 575 Cartesian Coordinates that represent the top-left of the symbol 576 image. Formal numbers range from 250 to 749. 578 2-dimensional space does not have a normative 1-dimensional order. 579 When symbols overlap, the relative order of the overlapping symbols 580 is important. Symbols written first appear underneath symbols that 581 are written later. Otherwise, the exact string order of the spatial 582 symbols is unpredictable. The spatial signbox is neither formatting 583 nor style and represents meaning that is beyond the temporal prefix. 585 Y Axis 586 | 250 587 | 588 | 589 | 590 | 591 | 592 X Axis | 593 -----------+------------ 594 250 | 749 595 | 596 | 597 | 598 | 599 | 600 | 749 602 The Spatial Signbox can be described with 8 tokens. 604 Spatial Signbox Tokens 606 +-----------------+-------------------------------------------------+ 607 | Token Pattern | Description | 608 +-----------------+-------------------------------------------------+ 609 | B | Signbox Marker | 610 +-----------------+-------------------------------------------------+ 611 | L | Left Lane Marker | 612 +-----------------+-------------------------------------------------+ 613 | M | Middle Lane Marker | 614 +-----------------+-------------------------------------------------+ 615 | R | Right Lane Marker | 616 +-----------------+-------------------------------------------------+ 617 | w | Writing BaseSymbols | 618 +-----------------+-------------------------------------------------+ 619 | i | Fill Modifiers | 620 +-----------------+-------------------------------------------------+ 621 | o | Rotation Modifiers | 622 +-----------------+-------------------------------------------------+ 623 | n | Number from 250 to 749 | 624 +-----------------+-------------------------------------------------+ 625 | wio | A writing symbol as 3 tokens of writing base, | 626 | | fill modifier and rotation modifier | 627 +-----------------+-------------------------------------------------+ 628 | nn | Coordinate with X and Y values as 2 numbers | 629 +-----------------+-------------------------------------------------+ 630 | wionn | A spatial symbol as 5 tokens, with 3 tokens for | 631 | | a writing symbol and 2 tokens for coordinates | 632 | | of top left placement | 633 +-----------------+-------------------------------------------------+ 634 | (wionn)* | Zero or more spatial symbols | 635 +-----------------+-------------------------------------------------+ 636 | Bnn(wionn)* | A Signbox with a preprocessed maximum | 637 | | coordinate and a list of spatial symbols used | 638 | | for horizontal writing | 639 +-----------------+-------------------------------------------------+ 640 | [LMR] | A lane marker: either left, middle or right. | 641 +-----------------+-------------------------------------------------+ 642 | [LMR]nn(wionn)* | A Signbox in either the left, middle, or right | 643 | | lane with a preprocessed maximum coordinate and | 644 | | a list of spatial symbols used for vertical | 645 | | writing | 646 +-----------------+-------------------------------------------------+ 648 Table 9 650 The spatial signbox is assigned to a lane, has a preprocessed maximum 651 coordinate and zero or more writing symbols with X and Y coordinates 652 for each symbol. 654 2.4.1.1. Bounding Box 656 The symbols do not have a consistent width or height. The center of 657 a symbol can be safely assumed to be at half-width and half-height. 658 A bounding box for a symbol is based on the symbol width and height. 659 Each symbol has a defined width and height in a text file with 37,811 660 lines. Alternately, the symbol width and height can be calculated by 661 analyzing the glyphs in a TTF font file, using JavaScript or other 662 language. 664 The bounding box of a sign is a tight box around the symbols. The 665 bounding box is used to determine the width and height of a sign. 666 The center of a bounding box is coordinate 500,500. 668 The bounding box of a sign consists of four values: Minimum X, 669 Minimum Y, Maximum X and Maximum Y. The values of the bounding box 670 is taken straight from the coordinates in an Formal SignWriting word. 672 2.4.1.2. Maximum Coordinate 674 The maximum coordinate for a Signbox is pre-calculated to simplify 675 layout for width, height, and center. For each symbol, the width of 676 height of that symbol is added to the coordinate position of that 677 symbol. These new coordinate values represent the bottom-right 678 coordinate of each symbol bounding box. The maximum X value is 679 joined with the maximum Y value to determine the maximum coordinate. 681 2.4.1.3. Centering a Sign 683 To simplify layout and improve 2-dimensional searching, every sign 684 has a normalized center based on symbol type, size, and mathematical 685 formula. The vertical center is based on the center of the bounding 686 box around the head symbols. The horizontal center is based on the 687 center of the bounding box around the head and trunk symbols. If a 688 sign doesn't contain head or trunk symbols, then the bounding box of 689 all symbols is used. For the symbol ranges see Table 6 691 Once the center of a sign has been determined, the symbols are moved 692 so that the center is coordinate 500,500. 694 2.4.2. Temporal Prefix 696 The temporal prefix is a one-dimensional list of symbols that is 697 written by an author. The arrangement of the symbols is based on a 698 particular theory of sorting. The order of the symbols in the 699 temporal prefix is significant because sorting is possible with a 700 binary string comparison. The temporal prefix is neither formatting 701 nor style and represents meaning not found in the spatial signbox. 703 Signs are written in 2-dimensional space which does not have a 704 normative 1-dimensional order. Any 1-dimensional order of 705 2-dimensional space is subjective. Some 1-dimensional orders may be 706 canonical according to a particular theory, but there are a variety 707 of theories on setting a 1-dimensional order. 709 The temporal prefix will use the same symbols that are used in the 710 spatial signbox, but it does not need to use all of them and it is 711 not limited to only those symbols. The temporal prefix is a list of 712 writing symbols and/or detailed location symbols that identify 713 temporal order and additional analysis. A valid sequence must 714 contain at least one symbol and can not contain punctuation. 716 The temporal prefix allows for sorting that is universally supported 717 through binary string comparison. 719 There are several theories on the best way to structure a temporal 720 prefix. The most productive is based on the SignSpelling Sequence 721 theory of Valerie Sutton. A temporal prefix is structured as a 722 series of beginning handshapes, followed by transitional movements 723 and dynamics that lead to the next set of handshapes. This pattern 724 continues until the end of the sign. The last section of the 725 temporal prefix should contain symbols of of type "head", "trunk", 726 and "limb". 728 Detailed location symbols of type "location" can be used in a 729 temporal prefix, but are rarely (if ever) needed for general writing. 731 A temporal prefix can be described with 5 tokens. 733 Temporal Prefix Tokens 735 +---------------+---------------------------------------------------+ 736 | Token | Description | 737 | Patterns | | 738 +---------------+---------------------------------------------------+ 739 | A | Sequence Marker | 740 +---------------+---------------------------------------------------+ 741 | w | Writing BaseSymbols | 742 +---------------+---------------------------------------------------+ 743 | s | Detailed Location BaseSymbols | 744 +---------------+---------------------------------------------------+ 745 | i | Fill Modifiers | 746 +---------------+---------------------------------------------------+ 747 | o | Rotation Modifiers | 748 +---------------+---------------------------------------------------+ 749 | (A([ws]io)+)? | An optional temporal prefix to be used as a | 750 | | prefix for a Signbox | 751 +---------------+---------------------------------------------------+ 753 Table 10 755 The temporal prefix starts with a sequence marker and includes an 756 ordered list of writing symbols and detailed locations. 758 2.5. Styling String 760 The styling string of Formal SignWriting uses a lite markup to define 761 a variety of styling options. The styling string is the same for FSW 762 and SWU. The entire sign can be customized for padding, coloring, 763 and size. Individual symbols within a sign can be customized for 764 coloring and size. For SVG output, class names and IDs can be 765 defined. A styling string can be added to the end of any Formal 766 SignWriting string to style a particular sign. 768 Colors can be written as CSS color names or as color hex values. 770 CSS Color Names: [a-zA-Z]+ 772 Color Hex Values: [0-9a-fA-F]{3}([0-9a-fA-F]{3})? 774 The styling string is divided into 3 sections: one for the entire 775 sign, one for individual symbols, and one for SVG class names and ID. 776 The styling string starts with a single dash, after which is the 777 section about the entire sign. A second dash, if present, marks the 778 start of the section about the individual symbols. A third dash, if 779 present, marks the start of the section about the SVG class names and 780 ID. The order of the styling options is important. 782 Styling String: -C?(P[0-9]{2})?(G_([0-9a-fA-F]{3}([0-9a-fA- 783 F]{3})?|[a-zA-Z]+)_)?(D_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA- 784 Z]+)(,([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA- 785 Z]+))?_)?(Z([0-9]+(\.[0-9]+)?|x))?(-(D[0-9]{2}_([0-9a-fA-F]{3}([0- 786 9a-fA-F]{3})?|[a-zA-Z]+)(,([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA- 787 Z]+))?_)*(Z[0-9]{2},[0-9]+(\.[0-9]+)?(,[0-9]{3}x[0-9]{3})?)*)?(-- 788 ?[_a-zA-Z][_a-zA-Z0-9-]{0,100}( -?[_a-zA-Z][_a-zA- 789 Z0-9-]{0,100})*!([a-zA-Z][_a-zA-Z0-9-]{0,100}!)?)? 791 2.5.1. Entire Sign 793 There are several options for styling an entire sign. 795 C Colorize 797 P Padding 799 G Background 801 D Detail colors 803 Z Zoom level 805 2.5.1.1. Colorize 807 Colorizing a sign will set the color of each symbol based on its 808 classification. 810 Hand 0000CC 812 Movement CC0000 814 Dynamic FF0099 816 Head 006600 818 Body 000000 820 Detailed Location 884411 822 Punctuation FF9900 823 +----------------+----------------------------------+ 824 | Styling String | Description | 825 +----------------+----------------------------------+ 826 | -C | Colorize the symbols of the sign | 827 +----------------+----------------------------------+ 829 Table 11 831 2.5.1.2. Padding 833 Padding is applied around the entire sign. A two-digit number is 834 used to set the padding. 836 +----------------+--------------------------------+ 837 | Styling String | Description | 838 +----------------+--------------------------------+ 839 | -P01 | A padding of 1 around the sign | 840 +----------------+--------------------------------+ 842 Table 12 844 2.5.1.3. Background 846 By default, the background of a sign is transparent. The background 847 color can be set with a CSS color name or with a color hex value. 848 The color name or value must be surrounded by underscores. 850 +----------------+-----------------------------------+ 851 | Styling String | Description | 852 +----------------+-----------------------------------+ 853 | -G_lightblue_ | Background color of light blue. | 854 +----------------+-----------------------------------+ 855 | -G_f00_ | Background color as 3 hex values. | 856 +----------------+-----------------------------------+ 857 | -G_ff0000_ | Background color as 6 hex values. | 858 +----------------+-----------------------------------+ 860 Table 13 862 2.5.1.4. Detail Colors 864 By default, each symbol has a line color of black and a fill color of 865 white. The line color for all of the symbols can be set with a CSS 866 color name or with a color hex value. The color name or value must 867 be surrounded by underscores. Setting the fill color is optional. 868 To set the fill color, put a comma and the fill color after the line 869 color but before the closing underscore. 871 +----------------+------------------------------------------------+ 872 | Styling String | Description | 873 +----------------+------------------------------------------------+ 874 | -D_red_ | Line color of red. | 875 +----------------+------------------------------------------------+ 876 | -D_red,yellow_ | Line color of red with a fill color of yellow. | 877 +----------------+------------------------------------------------+ 879 Table 14 881 2.5.1.5. Zoom Level 883 By default, a sign is set to zoom level 1. The zoom level can be set 884 with an integer or a decimal number. 886 Alternatively, the zoom level can be set to lower-case 'x', for 887 extendable. The SVG created will not specify the width or height, so 888 that the sign image will fill whatever container it is placed inside. 890 +----------------+--------------------------+ 891 | Styling String | Description | 892 +----------------+--------------------------+ 893 | -Z2 | Zoom level of 2 | 894 +----------------+--------------------------+ 895 | -Z15.7 | Zoom level of 15.7 | 896 +----------------+--------------------------+ 897 | -Zx | Zoom level of extendable | 898 +----------------+--------------------------+ 900 Table 15 902 2.5.2. Individual Symbols 904 There are two options for styling individual symbols. Individual 905 symbols are identified by a two-digit number, which identifies the 906 order the symbol appears in the Signbox. 908 D Detail colors 910 Z Zoom level 912 2.5.2.1. Detail Colors 914 By default, each symbol has a line color of black and a fill color of 915 white. The line color for an individual symbol can be set with a CSS 916 color name or with a color hex value. The color name or value must 917 be surrounded by underscores. Setting the fill color is optional. 919 To set the fill color, put a comma and the fill color after the line 920 color but before the closing underscore. 922 +----------------------+--------------------------------------------+ 923 | Styling String | Description | 924 +----------------------+--------------------------------------------+ 925 | --D01_red_ | First symbol line color of red. | 926 +----------------------+--------------------------------------------+ 927 | --D01_red,yellow_ | First symbol line color of red with a fill | 928 | | color of yellow. | 929 +----------------------+--------------------------------------------+ 930 | --D01_red_D02_green_ | First symbol line color of red and second | 931 | | symbol line color of green. | 932 +----------------------+--------------------------------------------+ 934 Table 16 936 2.5.2.2. Zoom Level 938 By default, each symbol is set to zoom level 1. The zoom level of 939 individual symbols can be set with an integer or a decimal number. 941 Additionally, an offset coordinate can be specified with an 942 individual symbol's zoom level. The offset coordinate of 500x500 is 943 considered no offset for either the x or y value. 945 +-------------------+-----------------------------------------------+ 946 | Styling String | Description | 947 +-------------------+-----------------------------------------------+ 948 | --Z03,2 | Third symbol zoom level of 2 | 949 +-------------------+-----------------------------------------------+ 950 | --Z04,15.7 | Fourth symbol zoom level of 15.7 | 951 +-------------------+-----------------------------------------------+ 952 | --Z04,1.5,480x500 | Fourth symbol zoom level of 1.5 with a -20 | 953 | | offset applied to the X value of the symbol's | 954 | | placement coordinate. | 955 +-------------------+-----------------------------------------------+ 957 Table 17 959 2.5.3. SVG Class Names and ID 961 When using SVG, there are two additional styling options of class 962 names and ID. 964 {class names}! SVG Class Names 966 {ID}! SVG ID 967 Both class names and ID use a restricted ASCII subset. 969 class names -?[_a-zA-Z][_a-zA-Z0-9-]{0,100}( -?[_a-zA-Z][_a-zA- 970 Z0-9-]{0,100})* 972 ID [a-zA-Z][_a-zA-Z0-9-]{0,100} 974 Each SVG can be created with a list of class names separated by 975 spaces, ending in an exclamation (!) mark. After the class names 976 exclamation mark, an ID can be written followed by another 977 exclamation mark. 979 +---------------------+---------------------------------------------+ 980 | Styling String | Description | 981 +---------------------+---------------------------------------------+ 982 | ---glowing! | A class name of "glowing" | 983 +---------------------+---------------------------------------------+ 984 | ---flashing | Two class names of "flashing" and | 985 | primary! | "primary". | 986 +---------------------+---------------------------------------------+ 987 | ---!cursor! | SVG created with an ID of "cursor" | 988 +---------------------+---------------------------------------------+ 989 | ---flashing!cursor! | SVG created with a class name of "flashing" | 990 | | and an ID of "cursor" | 991 +---------------------+---------------------------------------------+ 993 Table 18 995 2.6. Query Language 997 The query language of Formal SignWriting allows for precise searching 998 of signs written in either FSW or SWU. A query string is a concise 999 representation for a much larger and detailed set of regular 1000 expressions. The regular expressions can be used to quickly and 1001 accurately search large files and databases containing Formal 1002 SignWriting. 1004 A filter and repeat pattern of searching is used as a series of match 1005 criteria. A file, database, or text input is searched using a 1006 sequence of steps. Each step applies a single match criteria. 1007 Matching results are collated and the next search criteria is 1008 applied. The pattern of searching the previous results continues 1009 until all regular expressions have been used. 1011 The query language of Formal SignWriting is different for FSW and 1012 SWU, but allows for the same searching strategies. Any FSW string 1013 and SWU string can easily be converted into several different query 1014 string, depending on the search parameters. 1016 There are two main sections of a query string. The first searches 1017 the spatial signbox. The second searches the temporal prefix. Both 1018 sections use the same definition for a symbol or a range. 1020 The symbol search can match an exact symbol, or a set of symbols with 1021 an unspecified fill or rotation. 1023 With FSW, the fill and rotation modifiers of a symbol key can be 1024 replaced with the "u" character as a wildcard. The "u" stands for 1025 unknown and will match all values rather than a specific character. 1027 With SWU, the letters "f' or "r" can be written after a symbol to 1028 indicate an unspecified fill or rotation respectively. 1030 The range search can match a range of base symbols. The base symbol 1031 range consists of 2 values: the starting base symbol and the ending 1032 base symbol. Every symbol between these 2 base symbols will be 1033 matched. 1035 Symbol Search in FSW: S[123][0-9a-f]{2}[0-5u][0-9a-fu] 1037 Symbol Search in SWU (UTF-16): ((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD 1038 8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r? 1040 Range Search in FSW: R[123][0-9a-f]{2}t[123][0-9a-f]{2} 1042 Symbol Search in SWU (UTF-16): R((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\u 1043 D8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))((\uD8C0[\uDC01-\uDF 1044 FF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80])) 1046 At the end of the query string is an optional styling string flag 1047 represented by a dash (-). If present, the Formal SignWriting 1048 strings will include any styling strings. If the styling string flag 1049 isn't included, the query string will only find plain text Formal 1050 SignWriting strings without the styling string. 1052 The full query string definition allows for the possibility of 1053 searching the temporal prefix and the spatial signbox at the same 1054 time. 1056 Query String in FSW: Q((A(S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0- 1057 9a-f]{2}t[123][0-9a-f]{2})+)?T)?(S[123][0-9a-f]{2}[0-5u][0-9a- 1058 fu]([0-9]{3}x[0-9]{3})?|R[123][0-9a-f]{2}t[123][0-9a- 1059 f]{2}([0-9]{3}x[0-9]{3})?)*(V[0-9]+)?-? 1061 Query String in SWU (UTF-16): Q((A(((\uD8C0[\uDC01-\uDFFF])|([\uD8C1 1062 -\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?|R((\uD8C0[\u 1063 DC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC 1064 80]))f?r?((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF]) 1065 |(\uD8FD[\uDC00-\uDC80]))f?r?)+)?T)?((R((\uD8C0[\uDC01-\uDFFF])|([ 1066 \uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?((\uD8C 1067 0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00- 1068 \uDC80]))f?r?(\uD836[\uDC0C-\uDDFF]\uD836[\uDC0C-\uDDFF])?)|(((\uD 1069 8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC0 1070 0-\uDC80]))f?r?(\uD836[\uDC0C-\uDDFF]\uD836[\uDC0C-\uDDFF])?))*(V[ 1071 0-9]+)?-? 1073 2.6.1. Searching the Spatial Signbox 1075 The spatial signbox is a list of symbols with 2-dimensional 1076 placement. The query "Q" will find all signs regardless of the 1077 symbols used or their placement. 1079 It is possible to specify one or more symbols (or ranges of symbols) 1080 that must be included in the Signbox to indicate a match. The order 1081 of the symbols is not important. Each symbol (or range) can include 1082 an optional coordinate. The coordinate is a restriction on the 1083 match, such that a symbol must be used within a certain variance of 1084 the coordinate to qualify as a match. 1086 The variance is a number value, 0 or greater with a default value of 1087 20. A variance of 0 will only find symbols used at an exact 1088 coordinate. A variance of 5 will match the symbols used at a 1089 coordinate, plus or minus 5 for both X and Y numbers. 1091 Symbol Search with Optional Coordinate: S[123][0-9a-f]{2}[0-5u][0- 1092 9a-fu]([0-9]{3}x[0-9]{3})? 1094 Range Search with Optional Coordinate: R[123][0-9a-f]{2}t[123][0-9a- 1095 f]{2}([0-9]{3}x[0-9]{3})? 1097 Variance: (V[0-9]+)? 1099 Spatial Signbox Search Query: Q(S[123][0-9a-f]{2}[0-5u][0-9a- 1100 fu]([0-9]{3}x[0-9]{3})?|R[123][0-9a-f]{2}t[123][0-9a- 1101 f]{2}([0-9]{3}x[0-9]{3})?)*(V[0-9]+)? 1103 Spatial Signbox Query Examples 1105 +------------------+------------------------------------------------+ 1106 | Query | Description | 1107 +------------------+------------------------------------------------+ 1108 | Q | All signs | 1109 +------------------+------------------------------------------------+ 1110 | QS100uu | Signs with the index handshape in the spatial | 1111 | | signbox | 1112 +------------------+------------------------------------------------+ 1113 | QS100uu480x480 | Signs with the index handshape in the spatial | 1114 | | signbox used near coordinate (480,480) | 1115 +------------------+------------------------------------------------+ 1116 | QS100uu480x480V0 | Signs with the index handshape in the spatial | 1117 | | signbox used at the exact coordinate (480,480) | 1118 +------------------+------------------------------------------------+ 1119 | QS100uuR2fft36c | Signs with the index handshape and a symbol | 1120 | | from the head & face range | 1121 +------------------+------------------------------------------------+ 1123 Table 19 1125 2.6.2. Searching the Temporal Prefix 1127 The temporal prefix is a list of symbol keys. The query "QT" will 1128 find all signs that include a temporal prefix. 1130 It is possible to specify the start of the temporal prefix by 1131 identifying a series of symbols and/or ranges. The query will start 1132 with an "QA" and end with a "T", such as "QA...T". Between the "QA" 1133 and "T", a series of symbol searches and/or range searches will 1134 specify the desired start of the temporal prefix. The order of the 1135 symbols and ranges is important. 1137 Temporal Prefix Search Query: Q((A(S[123][0-9a-f]{2}[0-5u][0-9a- 1138 fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})+)?T)? 1140 Temporal Prefix Query Examples 1142 +-------------------------+-----------------------------------------+ 1143 | Query | Description | 1144 +-------------------------+-----------------------------------------+ 1145 | QT | All signs that include the temporal | 1146 | | prefix | 1147 +-------------------------+-----------------------------------------+ 1148 | QAS100uuT | Signs with a temporal prefix that | 1149 | | starts with the index handshape | 1150 +-------------------------+-----------------------------------------+ 1151 | QAS100uuR100t204S20500T | Signs with a temporal prefix that | 1152 | | starts with the index handshape, | 1153 | | followed by any handshape, followed by | 1154 | | the single contact | 1155 +-------------------------+-----------------------------------------+ 1157 Table 20 1159 2.6.3. Including the Styling String 1161 At the end of the query string is an optional styling string flag 1162 represented by a dash (-). If present, the Formal SignWriting 1163 strings will include any styling strings. If the styling string flag 1164 isn't included, the query string will only find plain text Formal 1165 SignWriting strings without the styling string. 1167 Styling String Search Query: Q- 1169 Styling String Search Only: - 1171 Styling String Query Examples 1173 +-------+-----------------------------------------------------------+ 1174 | Query | Description | 1175 +-------+-----------------------------------------------------------+ 1176 | Q- | All signs including the styling strings when present | 1177 +-------+-----------------------------------------------------------+ 1178 | - | Only find styling string without including the Formal | 1179 | | SignWriting | 1180 +-------+-----------------------------------------------------------+ 1182 Table 21 1184 3. Technology Integration 1186 Formal SignWriting has been specifically designed to integrate with 1187 standard technology on the phone, tablet, and desktop. 1189 3.1. Fonts 1191 The Sutton SignWriting Fonts are available as source SVG and as three 1192 TrueType Font files. 1194 Sutton SignWriting Fonts 1195 Copyright (c) 1974-2017, Center for Sutton Movement Writing, inc 1196 Licensed under the SIL Open Font License v1.1 1198 The Sutton SignWriting TrueType fonts are available for download and 1199 installation. 1201 Installing the fonts using the instructions below is not required, 1202 but it will improve the user experience. If the fonts are not 1203 installed on the system, CSS declarations will install the fonts in 1204 the browser cache. 1206 3.1.1. Windows, Linux, and Mac 1208 Installation is straight forward for Windows, Linux and Mac. Simply 1209 download the TrueType fonts and install as usual. 1211 Sutton SignWriting Line TrueType Font [SuttonSignWritingFontLine] 1213 Sutton SignWriting Fill TrueType Font [SuttonSignWritingFontFill] 1215 Sutton SignWriting One-D TrueType Font [SuttonSignWritingFontOneD] 1217 3.1.2. Mac and iOS 1219 Installation is possible for Mac OS X and iOS with a configuration 1220 profile. The Sutton SignWriting Symbol configuration profile 1221 includes 2 fonts for SVG: SuttonSignWritingLine and 1222 SuttonSignWritingFill. The Sutton SignWriting One configuration 1223 profile includes the font SuttonSignWritingOneD. With the 1224 configuration profile installed, the Unicode Option 1 characters can 1225 be used throughout the operating system, even as file and folder 1226 names. 1228 Sutton SignWriting Symbol Configuration Profile 1229 [SuttonSignWritingFontSymbol] 1230 Sutton SignWriting One Configuration Profile 1231 [SuttonSignWritingFontOne] 1233 3.1.3. Android 1235 Android can not install the fonts directly onto the system. The CSS 1236 declarations below will install the fonts in the browser cache. 1238 3.2. Fonts and CSS 1240 The TrueType Fonts can be used without installing the fonts on any 1241 platform by defining two font-face statements. Simply include the 1242 following CSS in any HTML page to access the fonts. Make sure to 1243 replace the URLs with the fully qualified links for the fonts. 1245 @font-face { 1246 font-family: "SuttonSignWritingLine"; 1247 src: 1248 local('SuttonSignWritingLine'), 1249 url('https://.../SuttonSignWritingLine.ttf') format('truetype'); 1250 } 1251 @font-face { 1252 font-family: "SuttonSignWritingFill"; 1253 src: 1254 local('SuttonSignWritingFill'), 1255 url('https://.../SuttonSignWritingFill.ttf') format('truetype'); 1256 } 1257 @font-face { 1258 font-family: "SuttonSignWritingOneD"; 1259 src: 1260 local('SuttonSignWritingOneD'), 1261 url('https://.../SuttonSignWritingOneD.ttf') format('truetype'); 1262 } 1264 If the fonts are installed, then the system fonts will be used. If 1265 the fonts are not installed when a SignWriting Font page is opened, 1266 the CSS will cause the fonts to be automatically downloaded to the 1267 browser's cache on the first visit. Once the fonts are installed in 1268 the browser cache, they will remain there until the browser cache is 1269 emptied. Any webside that uses this CSS can access the browser 1270 installed font without requesting a new copy. The fonts are 18 MB, 1271 so the first page view make take a few seconds or longer depending on 1272 your download speed and processor. 1274 3.3. Scalar Vector Graphics 1276 Sutton SignWriting is a 2-dimensional script. The sign images are 1277 composed using Scalar Vector Graphic (SVG). 1279 3.3.1. Font Based SVG 1281 The conversion of Formal SignWriting to Scalar Vector Graphics 1282 requires three parts: header, text, and symbols. Consider the FSW 1283 string 1284 "M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468". 1286 3.3.1.1. SVG Header 1288 The header section contains the SVG definition along with the width, 1289 height, and viewbox. The viewbox is a combination of the minimum X, 1290 minimum Y, width, and height. 1292 Minimum X: 482 1294 Maximum X: 518 1296 Width: 36 1298 Minimum Y: 468 1300 Maximum Y: 533 1302 Height: 65 1304 1307 If the width and height properties are not included, then the 1308 resulting SVG will automatically expand in size to fill the 1309 containing element on the screen. 1311 1314 3.3.1.2. SVG Text 1316 The SVG text section is included to make it possible to copy and 1317 paste Formal SignWriting strings. The font-size is set to zero to 1318 make the text invisible. 1320 1321 M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468 1322 1324 3.3.1.3. SVG Symbols 1326 Each symbol in the Signbox is a combination of the symbol key and the 1327 positioning coordinate. 1329 Symbol 1: S1870a 489x515 1331 Symbol 2: S18701 482x490 1333 Symbol 3: S20500 508x496 1335 Symbol 4: S2e734 500x468 1337 Each spatial symbol is written as an SVG group and positioned by the 1338 transformation translate. 1340 ... 1341 ... 1342 ... 1343 ... 1345 Inside of each group, 2 text elements are written. The symbol fill 1346 is written first using the SuttonSignWritingFill font with a plane 16 1347 character. The symbol line is written second using the 1348 SuttonSignWritingLine font with a plane 15 character. See 1349 Section 2.3.3.2 for the formula to convert symbol keys to codepoints. 1351 1353 {plane 16 codepoint} 1354 1355 1357 {plane 15 codepoint} 1358 1360 3.3.2. Stand Alone SVG 1362 It is possible to request completed SVG images from the SignWriting 1363 Server [SignWritingServer]. The SVG images created by the 1364 SignWriting Server are stand-alone graphics that do not use the 1365 TrueType Fonts. The SVG images use path elements to define the 1366 symbol lines and curves. 1368 The SVG header and SVG text for the server-side images are the same 1369 as the standard FSW to SVG transformation. See Section 3.3.1 1371 The SVG symbols section is structured differently. Multiple SVG 1372 elements are contained within each sign SVG image. Each sub-SVG 1373 element uses X and Y coordinates to place each symbol. Consider the 1374 FSW string 1375 "M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468". 1377 Symbol 1: S1870a 489x515 1379 Symbol 2: S18701 482x490 1381 Symbol 3: S20500 508x496 1383 Symbol 4: S2e734 500x468 1385 ... 1386 ... 1387 ... 1388 ... 1390 Inside of each sub-SVG element is a group (g) element with one or two 1391 path elements. This inside information can only be requested from 1392 the SignWriting Server or some other source of the symbol image data. 1394 1395 1396 1397 1399 3.4. HTML and CSS 1401 Basic HTML structures and CSS rules can be used with Sutton 1402 SignWriting for customization and layout. 1404 3.4.1. Centering and Sizing 1406 It is possible to center a symbol or sign within a div with a few CSS 1407 rules. The symbol or sign will automatically shrink in size if the 1408 containing div is smaller than the SVG image. Additionally, if the 1409 SVG is created with the zoom level of extendable (styling string 1410 "-Zx"), the symbol or sign will grow in size to fill as much of the 1411 containing div as possible. 1413
1414 1416 div.centered { 1417 position: relative; 1418 width: 10%; 1419 height: 10%; 1420 border: 1px solid black; 1421 } 1423 div.centered svg { 1424 position: absolute; 1425 display: block; 1426 top:2.5%; 1427 bottom: 2.5%; 1428 left: 2.5%; 1429 right: 2.5%; 1430 margin: auto; 1431 max-width: 95%; 1432 max-height: 95%; 1433 } 1435 3.4.2. Coloring Symbols and Signs 1437 Individual signs can be colored with CSS rules. The individual 1438 classes of 'sym-line' and 'sym-fill' can be used to isolate each part 1439 of a symbol, both positive and negative spaces, or the classes can be 1440 ignored to create the shadow of a symbol that includes both aspects 1441 of a symbol. 1443 1490 1491
1494 div.signtext { 1495 -webkit-writing-mode: vertical-lr; 1496 writing-mode: vertical-lr; 1497 font-size: 0%; 1498 border-left: 1px solid blue; 1499 height: 100%; 1500 } 1502 span.outside { border-left: 1px solid blue; vertical-align: top; } 1503 span.middle { vertical-align: bottom; } 1504 span.inside { border-left: 1px dashed red; } 1506 div.signtext div { 1507 writing-mode: horizontal-tb; 1508 display: inline-block; 1509 vertical-align: middle; 1510 padding: 20px; 1511 box-sizing: content-box; 1512 } 1514 4. Transformations 1516 Formal SignWriting and the surrounding technologies have been created 1517 to facilitate easy transformations between the various forms. 1519 4.1. Formal SignWriting to Query String 1521 Formal SignWriting strings have several natural transformations to 1522 query string. The transformation can use the temporal prefix and/or 1523 the spatial signbox. For each symbol, the query can include the 1524 exact symbol key, or the query can use a general symbol key where the 1525 fill and rotation modifiers are not explicitly defined. Consider the 1526 Formal SignWriting string 1527 "AS14c20S27106M518x529S14c20481x471S27106503x489". 1529 Exact Temporal Prefix Symbols: QAS14c20S27106T 1531 General Temporal Prefix Symbols: QAS14cuuS271uuT 1533 Exact Spatial Signbox Symbols: QS14c20S27106 1535 General Spatial Signbox Symbols: QS14cuuS271uu 1537 Exact Spatial Signbox Symbols with Location: 1538 QS14c20481x471S27106503x489 1540 General Spatial Signbox Symbols with Location: 1541 QS14cuu481x471S271uu503x489 1543 4.2. Query String to Regular Expression 1545 The transformation from query string to regular expressions has been 1546 fully implemented in the Sutton SignWriting JavaScript Library and 1547 the SignWriting Server. 1549 The query language to regular expressions generator uses the 1550 following regular expression structures as building blocks. 1552 Temporal Prefix Prefix: (A(S[123][0-9a-f]{2}[0-5][0-9a-f])+) 1554 Signbox Prefix: [BLMR]([0-9]{3}x[0-9]{3}) 1556 Spatial Symbols: (S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3})* 1558 The Temporal Prefix Prefix is a structural marker followed by one or 1559 more symbols. For the query string "QT", the prefix is required. 1560 For the general "Q", the prefix is optional so "?" is appended to the 1561 Temporal Prefix Prefix regular expression. 1563 The Signbox Prefix is a combination of structural marker and 1564 preprocessed maximum coordinate. Every constructed regular 1565 expression will include the Signbox Prefix. 1567 The Spatial Symbols is zero or more symbol definitions and associated 1568 coordinates. The Spatial Symbols regular expression is used for 1569 every search. For both "Q" and "QT", it is the only symbol matching 1570 used. When searching for specific symbols and ranges, the general 1571 Spatial Symbols definition will sandwich the specific search 1572 definitions. 1574 Searching for number ranges with regular expressions requires a 1575 unique technique. This technique requires five steps. 1577 Find a number between 122 and 455 1579 1) 10's don't match and the min 1's are not zero ( last number to 9): 1581 Match 12[2-9] 1583 2) Bring up the 10's if hundreds are different: Match 1[3-9][0-9] 1585 3) Bring up the 100's if different: Match [2-3][0-9][0-9] 1587 4) Bring up the 10's: Match 4[0-4][0-9] 1589 5) Bring up the 1's: Match 45[0-5] 1590 Final Match (12[2-9]|1[3-9][0-9]|[2-3][0-9][0-9]|4[0-4][0-9]|45[0-5]) 1592 For the styling string regular expression, see Section 2.5. 1594 5. Unicode Considerations 1596 In 2015, the Sutton SignWriting block was officially added to the 1597 Unicode standard. This block contains characters for representing 1598 the symbols of the ISWA 2010. Unfortunately, this encoding has 1599 several unresolved issues. The presentation Issues with SignWriting 1600 in Unicode 8 [Unicode8Issues] details why this encoding is 1601 incomplete, broken, and fictional. 1603 Discussions with the Unicode Technical Committee continue. The 1604 latest document submission is Design Options for Sutton SignWriting 1605 with examples and fonts [SuttonSignWritingOptions]. 1607 The Center for Sutton Movement Writing discourages the use of these 1608 characters as defined in the Unicode standard. This information is 1609 included for informational purposes only. 1611 5.1. Official Characters 1613 In 2015, the symbols of Sutton SignWriting were added to Unicode 1614 version 8. 1616 See Section 1.2 and Section 2.3.3 1618 +----------------------------+--------------------+ 1619 | Description | Unicode Range | 1620 +----------------------------+--------------------+ 1621 | Base Characters | U+1D800 to U+1DA8B | 1622 +----------------------------+--------------------+ 1623 | Fill Modifiers 2 to 6 | U+1DA9B to U+1DA9F | 1624 +----------------------------+--------------------+ 1625 | Rotation Modifiers 2 to 16 | U+1DAA1 to U+1DAAF | 1626 +----------------------------+--------------------+ 1628 Table 22 1630 Each symbol key can be rewritten as 3 Unicode characters of a base, a 1631 fill, and a rotation. Given a symbol key as variable "key", in 1632 JavaScript the 3 characters can be derived with the following 1633 statements: 1635 var base = parseInt(key.substr(1,3),16) + parseInt('1D700',16); 1637 var fill = parseInt(key.substr(4,1),16) + parseInt('1DA9A',16); 1638 var rotation = parseInt(key.substr(5,1),16) + 1639 parseInt('1DAA0',16); 1641 5.2. 17 New Characters 1643 The addition of 17 Unicode characters to the official Unicode 1644 standard can complete the script encoding and cover 2-dimensional 1645 layout. 1647 +---------------------+--------------------+--------------------+ 1648 | Description | Formal SignWriting | Proposed Unicode | 1649 +---------------------+--------------------+--------------------+ 1650 | Fill Modifier 1 | 0 | U+1DA9A | 1651 +---------------------+--------------------+--------------------+ 1652 | Rotation Modifier 1 | 0 | U+1DAA0 | 1653 +---------------------+--------------------+--------------------+ 1654 | Numbers | 0 to 9 | U+1DAB0 to U+1DAB9 | 1655 +---------------------+--------------------+--------------------+ 1656 | Sequence Marker | A | U+1DABA | 1657 +---------------------+--------------------+--------------------+ 1658 | Signbox Markers | B | U+1DABB | 1659 +---------------------+--------------------+--------------------+ 1660 | Left Lane Markers | L | U+1DABC | 1661 +---------------------+--------------------+--------------------+ 1662 | Middle Lane Markers | M | U+1DABD | 1663 +---------------------+--------------------+--------------------+ 1664 | Right Lane Markers | R | U+1DABE | 1665 +---------------------+--------------------+--------------------+ 1667 Table 23 1669 Fill Modifier 1 and Rotation Modifier 1 are included to fix sorting 1670 and simplify processing. 1672 The 10 number characters express the concept of distance, important 1673 for use with 2-dimensional scripts. 1675 The 5 structural markers define cohesive units of the script. 1677 6. IANA Considerations 1679 None. 1681 7. Security Considerations 1683 None. 1685 8. References 1687 [FutureOfSignWriting] 1688 Slevinski, S., "For the Future of Sutton SignWriting", 1689 . 1692 [PatronsOfSignWriting] 1693 Slevinski, S., "Support SignWriting on Patreon", 1694 . 1696 [SignWritingServer] 1697 Slevinski, S., "SignWriting Server", 1698 . 1700 [SteveSlevinskiMe] 1701 Slevinski, S., "Steve Slevinski's Homepage", 1702 . 1704 [SuttonSignWritingFontFill] 1705 Slevinski, S., "Sutton SignWriting Fill TypeType Font", . 1709 [SuttonSignWritingFontLine] 1710 Slevinski, S., "Sutton SignWriting Line TypeType Font", . 1714 [SuttonSignWritingFontOne] 1715 Slevinski, S., "Sutton SignWriting One Configuration 1716 Profile", . 1719 [SuttonSignWritingFontOneD] 1720 Slevinski, S., "Sutton SignWriting One-D TypeType Font", < 1721 https://cdn.rawgit.com/Slevinski/SuttonSignWriting/master/ 1722 assets/SuttonSignWritingOneD.ttf>. 1724 [SuttonSignWritingFontSymbol] 1725 Slevinski, S., "Sutton SignWriting Symbol Configuration 1726 Profile", . 1729 [SuttonSignWritingOptions] 1730 Slevinski, S., "Sutton SignWriting Design Options", 1731 . 1734 [SuttonSignWritingProject] 1735 Slevinski, S., "Sutton SignWriting Project", 1736 . 1738 [Unicode8Issues] 1739 Slevinski, S., "Issues with SignWriting in Unicode 8", 1740 . 1743 Appendix A. For the Future of Sutton SignWriting 1745 Sign languages are human languages. Around the world, over 140 sign 1746 languages have been identified. Of those recognized sign languages, 1747 I helped create and collect digital SignWriting for 60 of those sign 1748 languages. 1750 For the past 14 years, I've been working with Valerie Sutton, the 1751 inventor of SignWriting. Together, we created the Sutton SignWriting 1752 standards of 2010, 2012, and 2017. These standards will be useful 1753 far into the future. 1755 SignWriting is free to use. SignWriting is promoted by the Center 1756 for Sutton Movement Writing, a 5013c educational non-profit 1757 (95-3068257). We've been successful with developing and spreading 1758 SignWriting, but we haven't been successful with fundraising. 1760 If I am going to continue full-time with SignWriting starting in 1761 2019, I need an alternative and reliable funding source. I'm looking 1762 for groups and individuals who find my work meaningful to become 1763 patrons to fund development and future growth. 1765 I chose Patreon for two reasons. First, if my work is directly 1766 financed by patrons, I will no longer need to burden Valerie Sutton 1767 and the non-profit. Second, everyone who becomes my patron adds to 1768 the SignWriting platform. The size of the platform matters when 1769 dealing with educational institutions, government agencies, and 1770 international standards. 1772 I am grateful to all of my patrons, especially those who join the 1773 team for $1 a month. For patrons who choose a larger monthly 1774 donation, I have created a few perks and incentives for joining. 1776 Thanks for your consideration, 1778 -Steve Slevinski 1780 http://SteveSlevinski.me [SteveSlevinskiMe]. 1782 For the Future of Sutton SignWriting [FutureOfSignWriting]. 1784 Support SignWriting on Patreon [PatronsOfSignWriting]. 1786 Author's Address 1788 Stephen E Slevinski Jr 1789 Center for Sutton Movement Writing 1791 Email: slevinski@signwriting.org