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 @@
+[ 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.
- +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
@@ -1164,7 +1164,7 @@ A time of day, written in the form '2:34 AM' or '12:51 PM', or a length of time
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.)
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
@@ -1172,7 +1172,7 @@ The state of whether something is 'true' or 'false'. (In other computing languag
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.)
Matches: value, sayable value
- +
Some text in double quotation marks, perhaps with substitutions written in square brackets.
Matches: value, sayable value
@@ -1180,7 +1180,7 @@ A fragment of the player's most recent typed command, taking in a run of consecu
A fragment of the player's most recent typed command, taking in a run of consecutive words.
Matches: value, sayable value
- +
A single character - a letter or item of punctuation.
Matches: value, sayable value
@@ -1217,11 +1217,11 @@ One of the optional ways to configure Inform, such as the 'authorial modesty opt
A stored action, which can later be tried.
Matches: value, sayable value
- +
One of the standard responses issued by the Standard Rules or other extensions.
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
@@ -1232,7 +1232,7 @@ Like formulae in a textbook or a scientific paper, equations in Inform are writt
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.
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
@@ -1244,12 +1244,12 @@ When made with the Glulx setting, an Inform project can make limited use of file
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).
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
@@ -1275,7 +1275,7 @@ When made with the Glulx setting, an Inform project can include sound effects or
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.
neuter gender
, masculine gender
, feminine gender
- +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 kMatches: 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)
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)
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]"
"[somebody]"
- -- same as "[someone]"
"[something]"
- - - - - +- an object which is in scope, which is almost always a thing but does not have to be
"[anybody]"
+- same as "[any person]"
"[anyone]"
+- same as "[any person]"
"[anything]"
+ +- same as "[any thing]"
"[somebody]"
+ +- same as "[someone]"
"[something]"
+ + + + + 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- an object which is in scope, which is almost always a thing but does not have to be
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
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 ||
-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)
|| -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: