diff --git a/docs/BasicInformKit/S-chr.html b/docs/BasicInformKit/S-chr.html index 6f063dd9d3..745e89e0d0 100644 --- a/docs/BasicInformKit/S-chr.html +++ b/docs/BasicInformKit/S-chr.html @@ -64,7 +64,7 @@

To decide whether letters are upper or lower case, and convert between the two.

-
+

§1. Char Is Of Case. The following decides whether a character c belongs to case case, where 0 means lower case and 1 means upper. c is interpreted according to the @@ -170,6 +170,14 @@

} ]; +

§5. Unicode.

+ +
+[ UNICODE_CHARACTER_TY_Say c;
+    print "unicode U+";
+    PrintInBase(c, 16, 4);
+];
+
diff --git a/docs/values-module/3-ul.html b/docs/values-module/3-ul.html index c382efc521..c1881229a7 100644 --- a/docs/values-module/3-ul.html +++ b/docs/values-module/3-ul.html @@ -417,10 +417,29 @@

 int UnicodeLiterals::parse(text_stream *N) {
-    UnicodeLiterals::ensure_data();
-    if (Dictionaries::find(UnicodeData_lookup, N)) {
-        unicode_lookup_value *ulv = Dictionaries::read_value(UnicodeData_lookup, N);
-        return ulv->code_point;
+    if ((Str::get_at(N, 0) == 'U') && (Str::get_at(N, 1) == '+')) {
+        int pos = 2;
+        int t = 0;
+        while (Str::get_at(N, pos)) {
+            if (pos > 7) return -1;
+            inchar32_t c = Str::get_at(N, pos), d = 0;
+            if ((c >= '0') && (c <= '9')) d = c - '0';
+            else if ((c >= 'a') && (c <= 'f')) d = c - 'a' + 10;
+            else if ((c >= 'A') && (c <= 'F')) d = c - 'A' + 10;
+            else return -1;
+            if (d >= 16) return -1;
+            t = t*16 + (int) d;
+            pos++;
+        }
+        return t;
+    } else if ((Str::len(N) == 3) && (Str::get_at(N, 0) == '"') && (Str::get_at(N, 2) == '"')) {
+        return (int) Str::get_at(N, 1);
+    } else {
+        UnicodeLiterals::ensure_data();
+        if (Dictionaries::find(UnicodeData_lookup, N)) {
+            unicode_lookup_value *ulv = Dictionaries::read_value(UnicodeData_lookup, N);
+            return ulv->code_point;
+        }
     }
     return -1;
 }
diff --git a/inblorb/Tests/Test Cases/_Blurb_Ideal/Audiovisual.blurb b/inblorb/Tests/Test Cases/_Blurb_Ideal/Audiovisual.blurb
index 0d7ad3635b..8309561793 100644
--- a/inblorb/Tests/Test Cases/_Blurb_Ideal/Audiovisual.blurb	
+++ b/inblorb/Tests/Test Cases/_Blurb_Ideal/Audiovisual.blurb	
@@ -32,12 +32,12 @@ placeholder [BLURB] = "A work of interactive fiction."
 
 ! Other material to release
 
-status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
-status alternative ||Using 'Release along with a website' ||
-status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
-status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
-status alternative ||Using 'Release along with the source text' ||
-status alternative ||Using 'Release along with a solution' ||
-status alternative ||Using 'Release along with the library card' ||
-status alternative ||Using 'Release along with the introductory booklet' ||
-status alternative ||Using 'Release along with the introductory postcard' ||
+status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
+status alternative ||Using 'Release along with a website' ||
+status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
+status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
+status alternative ||Using 'Release along with the source text' ||
+status alternative ||Using 'Release along with a solution' ||
+status alternative ||Using 'Release along with the library card' ||
+status alternative ||Using 'Release along with the introductory booklet' ||
+status alternative ||Using 'Release along with the introductory postcard' ||
diff --git a/inblorb/Tests/Test Cases/_Blurb_Ideal/Awkward.blurb b/inblorb/Tests/Test Cases/_Blurb_Ideal/Awkward.blurb
index 4f44583894..fa4f4fffcf 100644
--- a/inblorb/Tests/Test Cases/_Blurb_Ideal/Awkward.blurb	
+++ b/inblorb/Tests/Test Cases/_Blurb_Ideal/Awkward.blurb	
@@ -27,12 +27,12 @@ placeholder [BLURB] = "A framed photograph of Icelandic Prime Minister Halldór
 
 ! Other material to release
 
-status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
-status alternative ||Using 'Release along with a website' ||
-status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
-status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
-status alternative ||Using 'Release along with the source text' ||
-status alternative ||Using 'Release along with a solution' ||
-status alternative ||Using 'Release along with the library card' ||
-status alternative ||Using 'Release along with the introductory booklet' ||
-status alternative ||Using 'Release along with the introductory postcard' ||
+status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
+status alternative ||Using 'Release along with a website' ||
+status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
+status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
+status alternative ||Using 'Release along with the source text' ||
+status alternative ||Using 'Release along with a solution' ||
+status alternative ||Using 'Release along with the library card' ||
+status alternative ||Using 'Release along with the introductory booklet' ||
+status alternative ||Using 'Release along with the introductory postcard' ||
diff --git a/inblorb/Tests/Test Cases/_Blurb_Ideal/Fancy-Z.blurb b/inblorb/Tests/Test Cases/_Blurb_Ideal/Fancy-Z.blurb
index da2f3ed64a..392c11946b 100644
--- a/inblorb/Tests/Test Cases/_Blurb_Ideal/Fancy-Z.blurb	
+++ b/inblorb/Tests/Test Cases/_Blurb_Ideal/Fancy-Z.blurb	
@@ -27,12 +27,12 @@ placeholder [BLURB] = "In Miss Austen's new interactive novella, Miss Henrietta
 
 ! Other material to release
 
-status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
-status alternative ||Using 'Release along with a website' ||
-status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
-status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
-status alternative ||Using 'Release along with the source text' ||
-status alternative ||Using 'Release along with a solution' ||
-status alternative ||Using 'Release along with the library card' ||
-status alternative ||Using 'Release along with the introductory booklet' ||
-status alternative ||Using 'Release along with the introductory postcard' ||
+status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
+status alternative ||Using 'Release along with a website' ||
+status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
+status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
+status alternative ||Using 'Release along with the source text' ||
+status alternative ||Using 'Release along with a solution' ||
+status alternative ||Using 'Release along with the library card' ||
+status alternative ||Using 'Release along with the introductory booklet' ||
+status alternative ||Using 'Release along with the introductory postcard' ||
diff --git a/inblorb/Tests/Test Cases/_Blurb_Ideal/Fancy.blurb b/inblorb/Tests/Test Cases/_Blurb_Ideal/Fancy.blurb
index b0d685a7f1..1ac2e5dc6a 100644
--- a/inblorb/Tests/Test Cases/_Blurb_Ideal/Fancy.blurb	
+++ b/inblorb/Tests/Test Cases/_Blurb_Ideal/Fancy.blurb	
@@ -27,12 +27,12 @@ placeholder [BLURB] = "In Miss Austen's new interactive novella, Miss Henrietta
 
 ! Other material to release
 
-status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
-status alternative ||Using 'Release along with a website' ||
-status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
-status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
-status alternative ||Using 'Release along with the source text' ||
-status alternative ||Using 'Release along with a solution' ||
-status alternative ||Using 'Release along with the library card' ||
-status alternative ||Using 'Release along with the introductory booklet' ||
-status alternative ||Using 'Release along with the introductory postcard' ||
+status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
+status alternative ||Using 'Release along with a website' ||
+status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
+status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
+status alternative ||Using 'Release along with the source text' ||
+status alternative ||Using 'Release along with a solution' ||
+status alternative ||Using 'Release along with the library card' ||
+status alternative ||Using 'Release along with the introductory booklet' ||
+status alternative ||Using 'Release along with the introductory postcard' ||
diff --git a/inblorb/Tests/Test Cases/_Blurb_Ideal/Plain-Z.blurb b/inblorb/Tests/Test Cases/_Blurb_Ideal/Plain-Z.blurb
index 966988b7a3..8d513eae46 100644
--- a/inblorb/Tests/Test Cases/_Blurb_Ideal/Plain-Z.blurb	
+++ b/inblorb/Tests/Test Cases/_Blurb_Ideal/Plain-Z.blurb	
@@ -27,12 +27,12 @@ placeholder [BLURB] = "A work of interactive fiction."
 
 ! Other material to release
 
-status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
-status alternative ||Using 'Release along with a website' ||
-status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
-status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
-status alternative ||Using 'Release along with the source text' ||
-status alternative ||Using 'Release along with a solution' ||
-status alternative ||Using 'Release along with the library card' ||
-status alternative ||Using 'Release along with the introductory booklet' ||
-status alternative ||Using 'Release along with the introductory postcard' ||
+status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
+status alternative ||Using 'Release along with a website' ||
+status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
+status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
+status alternative ||Using 'Release along with the source text' ||
+status alternative ||Using 'Release along with a solution' ||
+status alternative ||Using 'Release along with the library card' ||
+status alternative ||Using 'Release along with the introductory booklet' ||
+status alternative ||Using 'Release along with the introductory postcard' ||
diff --git a/inblorb/Tests/Test Cases/_Blurb_Ideal/Plain.blurb b/inblorb/Tests/Test Cases/_Blurb_Ideal/Plain.blurb
index a26d29da95..8856d0b3ae 100644
--- a/inblorb/Tests/Test Cases/_Blurb_Ideal/Plain.blurb	
+++ b/inblorb/Tests/Test Cases/_Blurb_Ideal/Plain.blurb	
@@ -27,12 +27,12 @@ placeholder [BLURB] = "A work of interactive fiction."
 
 ! Other material to release
 
-status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
-status alternative ||Using 'Release along with a website' ||
-status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
-status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
-status alternative ||Using 'Release along with the source text' ||
-status alternative ||Using 'Release along with a solution' ||
-status alternative ||Using 'Release along with the library card' ||
-status alternative ||Using 'Release along with the introductory booklet' ||
-status alternative ||Using 'Release along with the introductory postcard' ||
+status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above ||
+status alternative ||Using 'Release along with a website' ||
+status alternative ||Using 'Release along with an interpreter', for in-browser play on your website ||
+status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note ||
+status alternative ||Using 'Release along with the source text' ||
+status alternative ||Using 'Release along with a solution' ||
+status alternative ||Using 'Release along with the library card' ||
+status alternative ||Using 'Release along with the introductory booklet' ||
+status alternative ||Using 'Release along with the introductory postcard' ||
diff --git a/inblorb/Tests/Test Cases/_Tree_Ideal/Audiovisual.txt b/inblorb/Tests/Test Cases/_Tree_Ideal/Audiovisual.txt
index 32a3df37f3..f994612e30 100644
--- a/inblorb/Tests/Test Cases/_Tree_Ideal/Audiovisual.txt	
+++ b/inblorb/Tests/Test Cases/_Tree_Ideal/Audiovisual.txt	
@@ -1 +1,2 @@
 /Users/gnelson/Natural Inform/intest/Workspace/T1/Example.materials/Release
+/Users/gnelson/Natural Inform/intest/Workspace/T1/Example.materials/Release/interpreter
diff --git a/inform7/Figures/memory-diagnostics.txt b/inform7/Figures/memory-diagnostics.txt
index 800db14505..11a89334d2 100644
--- a/inform7/Figures/memory-diagnostics.txt
+++ b/inform7/Figures/memory-diagnostics.txt
@@ -1,10 +1,10 @@
-Total memory consumption was 143675K = 140 MB
+Total memory consumption was 143681K = 140 MB
 
- ---- was used for 2172784 objects, in 383637 frames in 0 x 800K = 0K = 0 MB:
+ ---- was used for 2172891 objects, in 383645 frames in 0 x 800K = 0K = 0 MB:
 
-    29.4%  inter_tree_node_array                    60 x 8192 = 491520 objects, 43255680 bytes
-    19.9%  text_stream_array                        5208 x 100 = 520800 objects, 29331456 bytes
-    18.2%  linked_list                              47823 objects, 26780880 bytes
+    29.3%  inter_tree_node_array                    60 x 8192 = 491520 objects, 43255680 bytes
+    19.9%  text_stream_array                        5209 x 100 = 520900 objects, 29337088 bytes
+    18.2%  linked_list                              47824 objects, 26781440 bytes
      9.8%  inter_symbol_array                       136 x 1024 = 139264 objects, 14487808 bytes
      9.5%  inter_error_stash_array                  107 x 1024 = 109568 objects, 14028128 bytes
      7.2%  parse_node                               134103 objects, 10728240 bytes
@@ -19,10 +19,10 @@ Total memory consumption was 143675K = 140 MB
      1.2%  package_request                          21506 objects, 1892528 bytes
      1.2%  vocabulary_entry_array                   165 x 100 = 16500 objects, 1853280 bytes
      1.1%  dict_entry_array                         530 x 100 = 53000 objects, 1712960 bytes
-     1.0%  inter_symbols_table                      27126 objects, 1519056 bytes
+     1.0%  inter_symbols_table                      27128 objects, 1519168 bytes
      1.0%  match_trie_array                         11 x 1000 = 11000 objects, 1496352 bytes
      0.9%  i6_schema_array                          24 x 100 = 2400 objects, 1440768 bytes
-     0.8%  inter_package                            27126 objects, 1302048 bytes
+     0.8%  inter_package                            27128 objects, 1302144 bytes
      0.7%  map_data                                 688 objects, 1155840 bytes
      0.7%  id_body                                  982 objects, 1123408 bytes
      0.7%  adjective_meaning                        210 objects, 1039920 bytes
@@ -42,8 +42,8 @@ Total memory consumption was 143675K = 140 MB
      0.1%  compilation_subtask                      3398 objects, 271840 bytes
      0.1%  inference_subject                        683 objects, 267736 bytes
      0.1%  inter_annotation_array                   2 x 8192 = 16384 objects, 262208 bytes
-     0.1%  vanilla_function                         3851 objects, 246464 bytes
-     0.1%  hierarchy_location                       1231 objects, 177264 bytes
+     0.1%  vanilla_function                         3852 objects, 246528 bytes
+     0.1%  hierarchy_location                       1232 objects, 177408 bytes
      0.1%  binary_predicate                         334 objects, 176352 bytes
      0.1%  linguistic_stock_item                    3358 objects, 161184 bytes
      0.1%  rule_family_data                         404 objects, 148672 bytes
@@ -265,9 +265,9 @@ Total memory consumption was 143675K = 140 MB
      ----  kind_template_definition                 1 object, 40 bytes
      ----  i6_memory_setting                        1 object, 32 bytes
 
-100.0% was used for memory not allocated for objects:
+99.9% was used for memory not allocated for objects:
 
-    63.1%  text stream storage                      92842680 bytes in 541372 claims
+    63.1%  text stream storage                      92847756 bytes in 541398 claims
      3.9%  dictionary storage                       5795776 bytes in 7837 claims
      ----  sorting                                  6424 bytes in 1489 claims
      4.8%  source text                              7200000 bytes in 3 claims
@@ -275,8 +275,8 @@ Total memory consumption was 143675K = 140 MB
      0.1%  documentation fragments                  262144 bytes in 1 claim
      ----  linguistic stock array                   81920 bytes in 2 claims
      ----  small word set array                     105600 bytes in 22 claims
-     3.2%  inter symbols storage                    4734448 bytes in 28498 claims
-    11.3%  inter bytecode storage                   16758312 bytes in 15 claims
+     3.2%  inter symbols storage                    4734704 bytes in 28500 claims
+    11.3%  inter bytecode storage                   16758340 bytes in 15 claims
      4.2%  inter links storage                      6222976 bytes in 11 claims
      0.1%  inter tree location list storage         191232 bytes in 32 claims
      1.2%  instance-of-kind counting                1790244 bytes in 1 claim
@@ -285,5 +285,5 @@ Total memory consumption was 143675K = 140 MB
      ----  code generation workspace for objects    3552 bytes in 19 claims
      0.1%  emitter array storage                    290688 bytes in 2079 claims
 
--139.-5% was overhead - -205351816 bytes = -200538K = -195 MB
+-139.-5% was overhead - -205358424 bytes = -200545K = -195 MB
 
diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt
index 74804bc4e2..2a0af3b325 100644
--- a/inform7/Figures/timings-diagnostics.txt
+++ b/inform7/Figures/timings-diagnostics.txt
@@ -1,28 +1,29 @@
 100.0% in inform7 run
-     67.2% in compilation to Inter
-         45.3% in //Sequence::undertake_queued_tasks//
-          4.8% in //MajorNodes::pre_pass//
-          3.3% in //MajorNodes::pass_1//
+     66.9% in compilation to Inter
+         45.2% in //Sequence::undertake_queued_tasks//
+          4.7% in //MajorNodes::pre_pass//
+          3.6% in //MajorNodes::pass_1//
           1.8% in //ImperativeDefinitions::assess_all//
           1.4% in //RTKindConstructors::compile//
           1.4% in //RTPhrasebook::compile_entries//
           1.1% in //Sequence::lint_inter//
+          0.7% in //ImperativeDefinitions::compile_first_block//
           0.3% in //CompletionModule::compile//
-          0.3% in //ImperativeDefinitions::compile_first_block//
           0.3% in //MajorNodes::pass_2//
           0.3% in //Sequence::undertake_queued_tasks//
           0.3% in //Sequence::undertake_queued_tasks//
           0.3% in //World::stage_V//
-          5.5% not specifically accounted for
-     27.1% in running Inter pipeline
-          8.9% in step 14/15: generate inform6 -> auto.inf
-          7.0% in step 5/15: load-binary-kits
-          5.5% in step 6/15: make-synoptic-module
+          4.8% not specifically accounted for
+     27.2% in running Inter pipeline
+          8.8% in step 14/15: generate inform6 -> auto.inf
+          6.9% in step 5/15: load-binary-kits
+          5.8% in step 6/15: make-synoptic-module
           1.8% in step 9/15: make-identifiers-unique
+          0.3% in step 11/15: eliminate-redundant-labels
           0.3% in step 12/15: eliminate-redundant-operations
           0.3% in step 4/15: compile-splats
           0.3% in step 7/15: shorten-wiring
           0.3% in step 8/15: detect-indirect-calls
-          2.2% not specifically accounted for
-      5.2% in supervisor
-      0.4% not specifically accounted for
+          1.9% not specifically accounted for
+      5.1% in supervisor
+      0.8% not specifically accounted for
diff --git a/inform7/Internal/Inter/BasicInformKit/Sections/Char.i6t b/inform7/Internal/Inter/BasicInformKit/Sections/Char.i6t
index 4d35dcefc1..da99f9cd28 100644
--- a/inform7/Internal/Inter/BasicInformKit/Sections/Char.i6t
+++ b/inform7/Internal/Inter/BasicInformKit/Sections/Char.i6t
@@ -106,3 +106,11 @@ Not actually used: simply for testing the tables.
 		print "^";
 	}
 ];
+
+@h Unicode.
+
+=
+[ UNICODE_CHARACTER_TY_Say c;
+	print "unicode U+";
+	PrintInBase(c, 16, 4);
+];
diff --git a/inform7/Internal/Inter/BasicInformKit/kinds/Core.neptune b/inform7/Internal/Inter/BasicInformKit/kinds/Core.neptune
index 72610ed7ee..662367f41f 100644
--- a/inform7/Internal/Inter/BasicInformKit/kinds/Core.neptune
+++ b/inform7/Internal/Inter/BasicInformKit/kinds/Core.neptune
@@ -144,6 +144,8 @@ builtin base UNICODE_CHARACTER_TY {
 	default-value: 32
 	constant-compilation-method: literal
 
+	say-function: UNICODE_CHARACTER_TY_Say
+
 	index-default-value: unicode 32 (a space)
 	specification-text: A single character - a letter or item of punctuation.
 }
diff --git a/inform7/Tests/Test Basic/BIP-Showme--I.txt b/inform7/Tests/Test Basic/BIP-Showme--I.txt
index 595069fe4b..67fc36d7a3 100644
--- a/inform7/Tests/Test Basic/BIP-Showme--I.txt	
+++ b/inform7/Tests/Test Basic/BIP-Showme--I.txt	
@@ -1,7 +1,7 @@
   number: 7
   number: -6
   truth state: true
-  unicode character: 1164
+  unicode character: unicode U+048C
   use option: engineering notation option
   text: This is textual.
   list of numbers: {2, 3, 5, 8, 13}
diff --git a/inform7/Tests/Test Basic/BIP-Showme-C--I.txt b/inform7/Tests/Test Basic/BIP-Showme-C--I.txt
index f7655ac622..1cf35fca0e 100644
--- a/inform7/Tests/Test Basic/BIP-Showme-C--I.txt	
+++ b/inform7/Tests/Test Basic/BIP-Showme-C--I.txt	
@@ -1,7 +1,7 @@
 number: 7
 number: -6
 truth state: true
-unicode character: 1164
+unicode character: unicode U+048C
 use option: engineering notation option
 text: This is textual.
 list of numbers: {2, 3, 5, 8, 13}
diff --git a/inform7/Tests/Test Basic/BIP-Showme-G--I.txt b/inform7/Tests/Test Basic/BIP-Showme-G--I.txt
index f7655ac622..1cf35fca0e 100644
--- a/inform7/Tests/Test Basic/BIP-Showme-G--I.txt	
+++ b/inform7/Tests/Test Basic/BIP-Showme-G--I.txt	
@@ -1,7 +1,7 @@
 number: 7
 number: -6
 truth state: true
-unicode character: 1164
+unicode character: unicode U+048C
 use option: engineering notation option
 text: This is textual.
 list of numbers: {2, 3, 5, 8, 13}
diff --git a/inform7/Tests/Test Internals/Index-Chart--I.txt b/inform7/Tests/Test Internals/Index-Chart--I.txt
index effec12116..5edd0c7ee8 100644
--- a/inform7/Tests/Test Internals/Index-Chart--I.txt	
+++ b/inform7/Tests/Test Internals/Index-Chart--I.txt	
@@ -404,7 +404,7 @@
     
     
         
-            number       
+            number       
         
         
             0 
@@ -421,7 +421,7 @@
     
     
         
-            real number       
+            real number       
         
         
             0 
@@ -472,7 +472,7 @@
     
     
         
-            truth state      
+            truth state      
         
         
             false 
@@ -506,7 +506,7 @@
     
     
         
-            snippet      
+            snippet      
         
         
             word 1 of command 
@@ -540,7 +540,7 @@
     
     
         
-            action      
+            action      
         
         
             waiting 
@@ -642,7 +642,7 @@
     
     
         
-            verb      
+            verb      
         
         
             verb be 
@@ -659,7 +659,7 @@
     
     
         
-            table name      
+            table name      
         
         
             a table with no rows or columns 
@@ -710,7 +710,7 @@
     
     
         
-            external file      
+            external file      
         
         
             a non-file 
@@ -761,7 +761,7 @@
     
     
         
-            figure name  [1]     
+            figure name  [1]     
         
         
             Figure of cover 
@@ -778,7 +778,7 @@
     
     
         
-            sound name      
+            sound name      
         
         
             a silent non-sound 
@@ -912,7 +912,7 @@
     
     
         
-            list of K      
+            list of K      
         
         
             { }
@@ -936,7 +936,7 @@
     
     
         
-            K based rule producing L      
+            K based rule producing L      
         
         
             the little-used do nothing rule
@@ -944,7 +944,7 @@
     
     
         
-            K based rulebook producing L      
+            K based rulebook producing L      
         
         
             the action-processing rules
@@ -952,7 +952,7 @@
     
     
         
-            activity on K      
+            activity on K      
         
         
             printing the name
@@ -960,7 +960,7 @@
     
     
         
-            description of K      
+            description of K      
         
         
             matching nothing
@@ -1148,11 +1148,11 @@ and are optional.


-

number (plural numbers) 

+

number (plural numbers) 

Matches: value, sayable value, understandable value, arithmetic value
Whole number in the range -32768, -32767, ..., -2, -1, 0, 1, 2, 3, ..., 32767: small numbers can be written textually as 'one', 'two', 'three', ..., 'ten', 'eleven', 'twelve'. (A much larger number range is allowed if we compile the source to Glulx rather than the Z-machine: see the Settings panel.)

-

real number (plural real numbers) 

+

real number (plural real numbers) 

Matches: value, sayable value, understandable value, arithmetic value, real arithmetic value
A real, or 'floating-point' number: the difference between this and ordinary "number" is that real numbers can hold values like 3.141, which aren't whole numbers, and can also hold very large or very small quantities in an approximate way. (Use of real numbers is only allowed if we compile the source to Glulx rather than the Z-machine: see the Settings panel.)

@@ -1164,7 +1164,7 @@ A time of day, written in the form '2:34 AM' or '12:51 PM', or a length of time

Matches: value, sayable value, understandable value, arithmetic value
A length of time such as '10 minutes' or '3 hours 31 minutes'.

-

truth state (plural truth states) 

+

truth state (plural truth states) 

Matches: value, sayable value, understandable value
The state of whether something is 'true' or 'false'. (In other computing languages, this might be called 'boolean', after the 19th-century logician George Boole, who first realised this was a kind of value.)

@@ -1172,7 +1172,7 @@ The state of whether something is 'true' or 'false'. (In other computing languag

Matches: value, sayable value
Some text in double quotation marks, perhaps with substitutions written in square brackets.

-

snippet (plural snippets) 

+

snippet (plural snippets) 

Matches: value, sayable value
A fragment of the player's most recent typed command, taking in a run of consecutive words.

@@ -1180,7 +1180,7 @@ A fragment of the player's most recent typed command, taking in a run of consecu

Matches: value, sayable value
A single character - a letter or item of punctuation.

-

action (plural actions) 

+

action (plural actions) 

Matches: value, sayable value
A stored action, which can later be tried.

@@ -1217,11 +1217,11 @@ One of the optional ways to configure Inform, such as the 'authorial modesty opt

Matches: value, sayable value
One of the standard responses issued by the Standard Rules or other extensions.

-

verb (plural verbs) 

+

verb (plural verbs) 

Matches: value, sayable value
One of the verbs which Inform knows how to conjugate.

-

table name (plural table names) 

+

table name (plural table names) 

Matches: value, sayable value
Like tables of information in a book or newspaper, tables in Inform hold values which have been organised into rows and columns. A table name is just a single value, identifying which table is meant - say, 'Table of US Presidents' might be a table name value.

@@ -1232,7 +1232,7 @@ Like formulae in a textbook or a scientific paper, equations in Inform are writt

rulebook outcome (plural rulebook outcomes)

Matches: value, sayable value

-

external file (plural external files) 

+

external file (plural external files) 

Matches: value, sayable value, understandable value, enumerated value
When made with the Glulx setting, an Inform project can make limited use of files stored on the computer which is operating the story at run-time. An external-file is just the name of one of these files (not the filename in the usual sense, but a name given to it in the Inform source text).

@@ -1244,12 +1244,12 @@ When made with the Glulx setting, an Inform project can make limited use of file

Matches: value, sayable value
An action is what happens when one of the people in the simulated world decides to do something. A full action would be something like 'dropping the box', but an action name is just the choice of which sort of thing is being done: here, it's 'the dropping action'. (Action names are always written with the word 'action' at the end, to make sure they aren't mistaken for full actions.)

-

figure name (plural figure names) 

+

figure name (plural figure names) 

Matches: value, sayable value, understandable value, enumerated value
When made with the Glulx setting, an Inform project can include images as well as words, and these are called figures. A figure name is just the name of one of the figures in the current project.

Figure of cover

-

sound name (plural sound names) 

+

sound name (plural sound names) 

Matches: value, sayable value, understandable value, enumerated value
When made with the Glulx setting, an Inform project can include sound effects or pieces of music. A sound name is just the name of one of these sounds in the current project.

@@ -1275,7 +1275,7 @@ When made with the Glulx setting, an Inform project can include sound effects or

neuter gender , masculine gender , feminine gender 


-

list of K (plural lists of K) 

+

list of K (plural lists of K) 

covariant 

Matches: value, sayable value
A flexible-length list of values, where all of the items have to have the same kind of value as each other - for instance, a list of rooms, or a list of lists of numbers. The empty list, with no items yet, is written { }, and a list with items in is written with commas dividing them - say {2, 5, 9}.
@@ -1288,22 +1288,22 @@ A flexible-length list of values, where all of the items have to have the same k

covariant 

Matches: value, sayable value

-

K based rule producing L (plural K based rules producing L

+

K based rule producing L (plural K based rules producing L

contravariant in K, covariant in L 

Matches: value, sayable value
One of many, many rules which determine what happens during play. Rules can be triggered by scenes beginning or ending, by certain actions, at certain times, or in the course of carrying out certain activities.

-

K based rulebook producing L (plural K based rulebooks producing L

+

K based rulebook producing L (plural K based rulebooks producing L

contravariant in K, covariant in L 

Matches: value, sayable value
A list of rules to follow, in sequence, to get something done. A rulebook is like a ring-binder, with the individual rules as sheets of paper. Inform normally sorts these into their 'natural' order, with the most specific rules first, but it's easy to shuffle the pages if you need to. When some task is carried out during play, Inform is normally working through a rulebook, turning the pages one by one.

-

activity on K (plural activities on K

+

activity on K (plural activities on K

contravariant 

Matches: value
An activity is something which Inform does as part of the mechanics of play - for instance, printing the name of an object, which Inform often has to do. An activity can happen by itself ('printing the banner text', for instance) or can be applied to an object ('printing the name of something', say).

-

description of K (plural descriptions of K) 

+

description of K (plural descriptions of K) 

covariant 

Matches: value
A description of a set of values, where all of the items have to have the same kind of value as each other - for instance, 'even numbers' or 'open doors which are in lighted rooms'.
diff --git a/inform7/Tests/Test Internals/Index-Tokens--I.txt b/inform7/Tests/Test Internals/Index-Tokens--I.txt index a0e2b17667..b35cbcdb36 100644 --- a/inform7/Tests/Test Internals/Index-Tokens--I.txt +++ b/inform7/Tests/Test Internals/Index-Tokens--I.txt @@ -7,18 +7,18 @@ (which roughly means: within sight), but writing "any" lifts this restriction. So "[any person]" allows every name of a person, wherever they happen to be, even if they are out of play and not found in any room.

-

"[anybody]"  - same as "[any person]"

-

"[anyone]"  - same as "[any person]"

-

"[anything]"  - same as "[any thing]"

-

"[other things]" 

-

"[somebody]"  - same as "[someone]"

-

"[someone]" 

-

"[something]"  - an object which is in scope, which is almost always a thing but does not have to be

-

"[something preferably held]" 

-

"[text]" 

-

"[things]" 

-

"[things inside]" 

-

"[things preferably held]" 

+

"[anybody]"  - same as "[any person]"

+

"[anyone]"  - same as "[any person]"

+

"[anything]"  - same as "[any thing]"

+

"[other things]" 

+

"[somebody]"  - same as "[someone]"

+

"[someone]" 

+

"[something]"  - an object which is in scope, which is almost always a thing but does not have to be

+

"[something preferably held]" 

+

"[text]" 

+

"[things]" 

+

"[things inside]" 

+

"[things preferably held]" 

"[wobbly]" 

= "that darned [container]" 

or "my [container]" 

diff --git a/inform7/Tests/Test Internals/Index-Values--I.txt b/inform7/Tests/Test Internals/Index-Values--I.txt index 3449f4bbd3..48b6135dd9 100644 --- a/inform7/Tests/Test Internals/Index-Values--I.txt +++ b/inform7/Tests/Test Internals/Index-Values--I.txt @@ -17,18 +17,18 @@ darkness witnessed - truth state

Current action
noun  - object
second noun - object
-person asked  - object
-reason the action failed  - rule
+person asked  - object
+reason the action failed  - rule
item described - object

Used when ruling on accessibility
-person reaching  - object
+person reaching  - object
container in question - object
supporter in question - object
-particular possession  - thing
+particular possession  - thing

Used when understanding typed commands
-player's command  - snippet
+player's command  - snippet
matched text - snippet
kind understood - value
current item from the multiple object list - object
@@ -52,7 +52,7 @@ story viewpoint  (F=ma)

diff --git a/inform7/Tests/Test Releases/Audiovisual--IBlurb.txt b/inform7/Tests/Test Releases/Audiovisual--IBlurb.txt index 3e185f0629..f6e912fc1f 100644 --- a/inform7/Tests/Test Releases/Audiovisual--IBlurb.txt +++ b/inform7/Tests/Test Releases/Audiovisual--IBlurb.txt @@ -33,11 +33,11 @@ placeholder [BLURB] = "A work of interactive fiction." ! Other material to release status instruction || || -status alternative ||Using 'Release along with a website' || -status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || -status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || -status alternative ||Using 'Release along with the source text' || -status alternative ||Using 'Release along with a solution' || -status alternative ||Using 'Release along with the library card' || -status alternative ||Using 'Release along with the introductory booklet' || -status alternative ||Using 'Release along with the introductory postcard' || +status alternative ||Using 'Release along with a website' || +status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || +status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || +status alternative ||Using 'Release along with the source text' || +status alternative ||Using 'Release along with a solution' || +status alternative ||Using 'Release along with the library card' || +status alternative ||Using 'Release along with the introductory booklet' || +status alternative ||Using 'Release along with the introductory postcard' || diff --git a/inform7/Tests/Test Releases/Awkward--IBlurb.txt b/inform7/Tests/Test Releases/Awkward--IBlurb.txt index 4f44583894..fa4f4fffcf 100644 --- a/inform7/Tests/Test Releases/Awkward--IBlurb.txt +++ b/inform7/Tests/Test Releases/Awkward--IBlurb.txt @@ -27,12 +27,12 @@ placeholder [BLURB] = "A framed photograph of Icelandic Prime Minister Halldór ! Other material to release -status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || -status alternative ||Using 'Release along with a website' || -status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || -status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || -status alternative ||Using 'Release along with the source text' || -status alternative ||Using 'Release along with a solution' || -status alternative ||Using 'Release along with the library card' || -status alternative ||Using 'Release along with the introductory booklet' || -status alternative ||Using 'Release along with the introductory postcard' || +status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || +status alternative ||Using 'Release along with a website' || +status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || +status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || +status alternative ||Using 'Release along with the source text' || +status alternative ||Using 'Release along with a solution' || +status alternative ||Using 'Release along with the library card' || +status alternative ||Using 'Release along with the introductory booklet' || +status alternative ||Using 'Release along with the introductory postcard' || diff --git a/inform7/Tests/Test Releases/Fancy-G--IBlurb.txt b/inform7/Tests/Test Releases/Fancy-G--IBlurb.txt index 135aa777a1..3cf3836dd5 100644 --- a/inform7/Tests/Test Releases/Fancy-G--IBlurb.txt +++ b/inform7/Tests/Test Releases/Fancy-G--IBlurb.txt @@ -27,12 +27,12 @@ placeholder [BLURB] = "In Miss Austen's new interactive novella, Miss Henrietta ! Other material to release -status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || -status alternative ||Using 'Release along with a website' || -status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || -status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || -status alternative ||Using 'Release along with the source text' || -status alternative ||Using 'Release along with a solution' || -status alternative ||Using 'Release along with the library card' || -status alternative ||Using 'Release along with the introductory booklet' || -status alternative ||Using 'Release along with the introductory postcard' || +status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || +status alternative ||Using 'Release along with a website' || +status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || +status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || +status alternative ||Using 'Release along with the source text' || +status alternative ||Using 'Release along with a solution' || +status alternative ||Using 'Release along with the library card' || +status alternative ||Using 'Release along with the introductory booklet' || +status alternative ||Using 'Release along with the introductory postcard' || diff --git a/inform7/Tests/Test Releases/Fancy-Z--IBlurb.txt b/inform7/Tests/Test Releases/Fancy-Z--IBlurb.txt index 75a1de8fbc..59ea3f161d 100644 --- a/inform7/Tests/Test Releases/Fancy-Z--IBlurb.txt +++ b/inform7/Tests/Test Releases/Fancy-Z--IBlurb.txt @@ -27,12 +27,12 @@ placeholder [BLURB] = "In Miss Austen's new interactive novella, Miss Henrietta ! Other material to release -status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || -status alternative ||Using 'Release along with a website' || -status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || -status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || -status alternative ||Using 'Release along with the source text' || -status alternative ||Using 'Release along with a solution' || -status alternative ||Using 'Release along with the library card' || -status alternative ||Using 'Release along with the introductory booklet' || -status alternative ||Using 'Release along with the introductory postcard' || +status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || +status alternative ||Using 'Release along with a website' || +status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || +status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || +status alternative ||Using 'Release along with the source text' || +status alternative ||Using 'Release along with a solution' || +status alternative ||Using 'Release along with the library card' || +status alternative ||Using 'Release along with the introductory booklet' || +status alternative ||Using 'Release along with the introductory postcard' || diff --git a/inform7/Tests/Test Releases/Ingredients--IBlurb.txt b/inform7/Tests/Test Releases/Ingredients--IBlurb.txt index 41dab0668a..544aacdd5e 100644 --- a/inform7/Tests/Test Releases/Ingredients--IBlurb.txt +++ b/inform7/Tests/Test Releases/Ingredients--IBlurb.txt @@ -56,5 +56,5 @@ template path "inform7/Internal/Templates" css website "Standard" status instruction || || -status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || -status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || +status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || +status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || diff --git a/inform7/Tests/Test Releases/Plain-G--IBlurb.txt b/inform7/Tests/Test Releases/Plain-G--IBlurb.txt index 8fa5858dfd..c6ec235d6c 100644 --- a/inform7/Tests/Test Releases/Plain-G--IBlurb.txt +++ b/inform7/Tests/Test Releases/Plain-G--IBlurb.txt @@ -27,12 +27,12 @@ placeholder [BLURB] = "A work of interactive fiction." ! Other material to release -status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || -status alternative ||Using 'Release along with a website' || -status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || -status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || -status alternative ||Using 'Release along with the source text' || -status alternative ||Using 'Release along with a solution' || -status alternative ||Using 'Release along with the library card' || -status alternative ||Using 'Release along with the introductory booklet' || -status alternative ||Using 'Release along with the introductory postcard' || +status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || +status alternative ||Using 'Release along with a website' || +status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || +status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || +status alternative ||Using 'Release along with the source text' || +status alternative ||Using 'Release along with a solution' || +status alternative ||Using 'Release along with the library card' || +status alternative ||Using 'Release along with the introductory booklet' || +status alternative ||Using 'Release along with the introductory postcard' || diff --git a/inform7/Tests/Test Releases/Plain-Z--IBlurb.txt b/inform7/Tests/Test Releases/Plain-Z--IBlurb.txt index 622402b2f2..ff6ddf66e8 100644 --- a/inform7/Tests/Test Releases/Plain-Z--IBlurb.txt +++ b/inform7/Tests/Test Releases/Plain-Z--IBlurb.txt @@ -27,12 +27,12 @@ placeholder [BLURB] = "A work of interactive fiction." ! Other material to release -status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || -status alternative ||Using 'Release along with a website' || -status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || -status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || -status alternative ||Using 'Release along with the source text' || -status alternative ||Using 'Release along with a solution' || -status alternative ||Using 'Release along with the library card' || -status alternative ||Using 'Release along with the introductory booklet' || -status alternative ||Using 'Release along with the introductory postcard' || +status alternative ||Using 'Release along with cover art', to provide something more distinctive than the default artwork above || +status alternative ||Using 'Release along with a website' || +status alternative ||Using 'Release along with an interpreter', for in-browser play on your website || +status alternative ||Using 'Release along with a file of "Such-and-Such" called "whatever.pdf"', perhaps to add a manual, or a welcoming note || +status alternative ||Using 'Release along with the source text' || +status alternative ||Using 'Release along with a solution' || +status alternative ||Using 'Release along with the library card' || +status alternative ||Using 'Release along with the introductory booklet' || +status alternative ||Using 'Release along with the introductory postcard' || diff --git a/inform7/values-module/Chapter 3/Unicode Literals.w b/inform7/values-module/Chapter 3/Unicode Literals.w index af1fc0e0bd..79c81ddb31 100644 --- a/inform7/values-module/Chapter 3/Unicode Literals.w +++ b/inform7/values-module/Chapter 3/Unicode Literals.w @@ -319,10 +319,29 @@ specification data file. But after that everything runs quite swiftly. = int UnicodeLiterals::parse(text_stream *N) { - UnicodeLiterals::ensure_data(); - if (Dictionaries::find(UnicodeData_lookup, N)) { - unicode_lookup_value *ulv = Dictionaries::read_value(UnicodeData_lookup, N); - return ulv->code_point; + if ((Str::get_at(N, 0) == 'U') && (Str::get_at(N, 1) == '+')) { + int pos = 2; + int t = 0; + while (Str::get_at(N, pos)) { + if (pos > 7) return -1; + inchar32_t c = Str::get_at(N, pos), d = 0; + if ((c >= '0') && (c <= '9')) d = c - '0'; + else if ((c >= 'a') && (c <= 'f')) d = c - 'a' + 10; + else if ((c >= 'A') && (c <= 'F')) d = c - 'A' + 10; + else return -1; + if (d >= 16) return -1; + t = t*16 + (int) d; + pos++; + } + return t; + } else if ((Str::len(N) == 3) && (Str::get_at(N, 0) == '"') && (Str::get_at(N, 2) == '"')) { + return (int) Str::get_at(N, 1); + } else { + UnicodeLiterals::ensure_data(); + if (Dictionaries::find(UnicodeData_lookup, N)) { + unicode_lookup_value *ulv = Dictionaries::read_value(UnicodeData_lookup, N); + return ulv->code_point; + } } return -1; } diff --git a/resources/Documentation/Writing with Inform.md b/resources/Documentation/Writing with Inform.md index 40c47617f5..31589f35e2 100644 --- a/resources/Documentation/Writing with Inform.md +++ b/resources/Documentation/Writing with Inform.md @@ -2777,13 +2777,15 @@ As we have seen, Inform allows us to type a wide range of characters into the so Unicode characters can be named (or numbered) directly in text. For example: - "[unicode 321]odz Churchyard" + "[unicode U+0141]odz Churchyard" -produces a Polish slashed L. Characters can also be named as well as numbered: +produces a Polish slashed L, that is, prints as ``Łodz Churchyard``. The notation `unicode U+0141` uses hexadecimal digits, and actually refers to the character whose number is 321, because 321 in base 16 is 141. (Inform would also have accepted `unicode 321` in decimal, but it's far more usual for Unicode to be quoted in hexadecimal.) + +Characters can also be named as well as numbered: "[unicode Latin capital letter L with stroke]odz Churchyard" -The Unicode standard assigns character numbers to essentially every marking used in text from any human language: its full range is enormous. (Note that Inform writes these numbers in decimal: many reference charts show them in hexadecimal, or base 16, which can cause confusion.) +The Unicode standard assigns character numbers to essentially every marking used in text from any human language: its full range is enormous. This means, for instance, that we can write text such as: @@ -2802,11 +2804,17 @@ This can be avoided by using brackets around the name, to make clear how the sen The secret sign is initially unicode (Latin capital letter L with stroke). -Inform can "only" handle codes in the range 32 to 131071, and note that if the project Settings are to compile to the Z-machine, this range stops at 65535: thus many emoji characters – say, `"[unicode fish cake with swirl design]"` – can only be used if the story will compile to Glulx or another modern target. But by default, stories are compiled the modern way, so this should not be a problem in practice. +Inform can "only" handle codes in the range `unicode U+20` to `unicode U+1FFFF`, that is, 32 to 131071 in decimal, and note that if the project Settings are to compile to the Z-machine, this range stops at `unicode U+FFFF`: thus many emoji characters – say, `unicode fish cake with swirl design` – can only be used if the story will compile to Glulx or another modern target. But by default, stories are compiled the modern way, so this should not be a problem in practice. There are far too many possible names to list here: formally, any character name in the Basic Multilingual Plane or the Supplementary Multilingual Plane of version 15.0.0 of the Unicode standard can be used. -But before getting carried away, we should remember the hazards: Inform allows us to type, say, `"[unicode Saturn]"` (an astrological sign) but it appears only as a black square if the resulting story is played by an interpreter using a font which lacks the relevant sign. For instance, Zoom for OS X uses the Lucida Grande and Apple Symbol fonts by default, and this combination does contain the Saturn sign: but Windows Frotz tends to use the Tahoma font by default, which does not. (Another issue is that the fixed letter spacing font, such as used in the status line, may not contain all the characters that the font of the main text contains.) To write something with truly outré characters is therefore a little chancy: users would have to be told quite carefully what interpreter and font to use to play it. +Still another alternative is to write `unicode "C"`: this is no use inside a text substitution because the double-quotation marks can't be used there, but something like: + + The secret sign is initially unicode "☣". + +...will work fine. `unicode "☣"`, `unicode U+2623`, `unicode 9763` and `unicode Biohazard Sign` are all ways to write the same value, which has the kind `unicode character`. + +But before getting carried away, we should remember the hazards: Inform allows us to type, say, `unicode Saturn` (an astrological sign) but it appears only as a black square if the resulting story is played using a font which lacks the relevant sign. (Another issue is that the fixed letter spacing font, such as used in the status line, may not contain all the characters that the font of the main text contains.) To write something with truly outré characters is therefore a little chancy. At one time, Inform could only use named Unicode values in a story which had first included an extension: