wovnrb 2.6.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +21 -10
  3. data/.rubocop_todo.yml +13 -43
  4. data/Gemfile +0 -5
  5. data/README.en.md +24 -0
  6. data/docker/docker-compose.yml +16 -0
  7. data/docker/rails/Dockerfile +6 -0
  8. data/docker/rails/TestSite/.browserslistrc +1 -0
  9. data/docker/rails/TestSite/.gitignore +63 -0
  10. data/docker/rails/TestSite/Gemfile +56 -0
  11. data/docker/rails/TestSite/README.md +24 -0
  12. data/docker/rails/TestSite/Rakefile +6 -0
  13. data/docker/rails/TestSite/app/assets/config/manifest.js +2 -0
  14. data/docker/rails/TestSite/app/assets/images/.keep +0 -0
  15. data/docker/rails/TestSite/app/assets/stylesheets/application.css +15 -0
  16. data/docker/rails/TestSite/app/assets/stylesheets/redirects.scss +3 -0
  17. data/docker/rails/TestSite/app/channels/application_cable/channel.rb +4 -0
  18. data/docker/rails/TestSite/app/channels/application_cable/connection.rb +4 -0
  19. data/docker/rails/TestSite/app/controllers/application_controller.rb +2 -0
  20. data/docker/rails/TestSite/app/controllers/concerns/.keep +0 -0
  21. data/docker/rails/TestSite/app/controllers/custom_response_controller.rb +16 -0
  22. data/docker/rails/TestSite/app/controllers/pages_controller.rb +7 -0
  23. data/docker/rails/TestSite/app/controllers/redirects_controller.rb +5 -0
  24. data/docker/rails/TestSite/app/helpers/application_helper.rb +2 -0
  25. data/docker/rails/TestSite/app/helpers/pages_helper.rb +2 -0
  26. data/docker/rails/TestSite/app/helpers/redirects_helper.rb +2 -0
  27. data/docker/rails/TestSite/app/javascript/channels/consumer.js +6 -0
  28. data/docker/rails/TestSite/app/javascript/channels/index.js +5 -0
  29. data/docker/rails/TestSite/app/javascript/packs/application.js +17 -0
  30. data/docker/rails/TestSite/app/jobs/application_job.rb +7 -0
  31. data/docker/rails/TestSite/app/mailers/application_mailer.rb +4 -0
  32. data/docker/rails/TestSite/app/models/application_record.rb +3 -0
  33. data/docker/rails/TestSite/app/models/concerns/.keep +0 -0
  34. data/docker/rails/TestSite/app/views/layouts/application.html.erb +15 -0
  35. data/docker/rails/TestSite/app/views/layouts/mailer.html.erb +13 -0
  36. data/docker/rails/TestSite/app/views/layouts/mailer.text.erb +1 -0
  37. data/docker/rails/TestSite/babel.config.js +72 -0
  38. data/docker/rails/TestSite/bin/bundle +114 -0
  39. data/docker/rails/TestSite/bin/rails +4 -0
  40. data/docker/rails/TestSite/bin/rake +4 -0
  41. data/docker/rails/TestSite/bin/setup +36 -0
  42. data/docker/rails/TestSite/bin/webpack +18 -0
  43. data/docker/rails/TestSite/bin/webpack-dev-server +18 -0
  44. data/docker/rails/TestSite/bin/yarn +11 -0
  45. data/docker/rails/TestSite/config/application.rb +26 -0
  46. data/docker/rails/TestSite/config/boot.rb +4 -0
  47. data/docker/rails/TestSite/config/cable.yml +10 -0
  48. data/docker/rails/TestSite/config/credentials.yml.enc +1 -0
  49. data/docker/rails/TestSite/config/database.yml +25 -0
  50. data/docker/rails/TestSite/config/environment.rb +5 -0
  51. data/docker/rails/TestSite/config/environments/development.rb +62 -0
  52. data/docker/rails/TestSite/config/environments/production.rb +112 -0
  53. data/docker/rails/TestSite/config/environments/test.rb +49 -0
  54. data/docker/rails/TestSite/config/initializers/application_controller_renderer.rb +8 -0
  55. data/docker/rails/TestSite/config/initializers/assets.rb +14 -0
  56. data/docker/rails/TestSite/config/initializers/backtrace_silencers.rb +7 -0
  57. data/docker/rails/TestSite/config/initializers/content_security_policy.rb +30 -0
  58. data/docker/rails/TestSite/config/initializers/cookies_serializer.rb +5 -0
  59. data/docker/rails/TestSite/config/initializers/filter_parameter_logging.rb +4 -0
  60. data/docker/rails/TestSite/config/initializers/inflections.rb +16 -0
  61. data/docker/rails/TestSite/config/initializers/mime_types.rb +4 -0
  62. data/docker/rails/TestSite/config/initializers/wrap_parameters.rb +14 -0
  63. data/docker/rails/TestSite/config/locales/en.yml +33 -0
  64. data/docker/rails/TestSite/config/puma.rb +38 -0
  65. data/docker/rails/TestSite/config/routes.rb +5 -0
  66. data/docker/rails/TestSite/config/spring.rb +6 -0
  67. data/docker/rails/TestSite/config/storage.yml +34 -0
  68. data/docker/rails/TestSite/config/webpack/development.js +5 -0
  69. data/docker/rails/TestSite/config/webpack/environment.js +3 -0
  70. data/docker/rails/TestSite/config/webpack/production.js +5 -0
  71. data/docker/rails/TestSite/config/webpack/test.js +5 -0
  72. data/docker/rails/TestSite/config/webpacker.yml +96 -0
  73. data/docker/rails/TestSite/config.ru +5 -0
  74. data/docker/rails/TestSite/db/seeds.rb +7 -0
  75. data/docker/rails/TestSite/lib/assets/.keep +0 -0
  76. data/docker/rails/TestSite/lib/tasks/.keep +0 -0
  77. data/docker/rails/TestSite/log/.keep +0 -0
  78. data/docker/rails/TestSite/package.json +15 -0
  79. data/docker/rails/TestSite/postcss.config.js +12 -0
  80. data/docker/rails/TestSite/public/index.html +9 -0
  81. data/docker/rails/TestSite/public/page.html +13 -0
  82. data/docker/rails/TestSite/public/pages/files/plaintext_unicode.txt +204 -0
  83. data/docker/rails/TestSite/public/pages/files/simple_css.css +8 -0
  84. data/docker/rails/TestSite/public/pages/files/simple_javascript.js +2 -0
  85. data/docker/rails/TestSite/public/pages/html5test.html +555 -0
  86. data/docker/rails/TestSite/public/pages/oldhtml.html +335 -0
  87. data/docker/rails/TestSite/public/pages/xhtml.xhtml +726 -0
  88. data/docker/rails/TestSite/public/redirection_target.html +10 -0
  89. data/docker/rails/TestSite/public/testdir/testpage-dir.html +9 -0
  90. data/docker/rails/TestSite/public/testdir/testpage-redirect-destination.html +9 -0
  91. data/docker/rails/TestSite/public/testpage.html +9 -0
  92. data/docker/rails/TestSite/public/wovn_index.html +24 -0
  93. data/docker/rails/TestSite/start.sh +13 -0
  94. data/docker/rails/TestSite/storage/.keep +0 -0
  95. data/docker/rails/TestSite/test/application_system_test_case.rb +5 -0
  96. data/docker/rails/TestSite/test/channels/application_cable/connection_test.rb +11 -0
  97. data/docker/rails/TestSite/test/controllers/.keep +0 -0
  98. data/docker/rails/TestSite/test/controllers/pages_controller_test.rb +7 -0
  99. data/docker/rails/TestSite/test/controllers/redirects_controller_test.rb +7 -0
  100. data/docker/rails/TestSite/test/fixtures/.keep +0 -0
  101. data/docker/rails/TestSite/test/fixtures/files/.keep +0 -0
  102. data/docker/rails/TestSite/test/helpers/.keep +0 -0
  103. data/docker/rails/TestSite/test/integration/.keep +0 -0
  104. data/docker/rails/TestSite/test/mailers/.keep +0 -0
  105. data/docker/rails/TestSite/test/models/.keep +0 -0
  106. data/docker/rails/TestSite/test/system/.keep +0 -0
  107. data/docker/rails/TestSite/test/test_helper.rb +13 -0
  108. data/docker/rails/TestSite/yarn.lock +7642 -0
  109. data/lib/wovnrb/api_translator.rb +1 -1
  110. data/lib/wovnrb/headers.rb +30 -39
  111. data/lib/wovnrb/helpers/nokogumbo_helper.rb +7 -9
  112. data/lib/wovnrb/lang.rb +15 -14
  113. data/lib/wovnrb/railtie.rb +3 -15
  114. data/lib/wovnrb/services/html_converter.rb +8 -8
  115. data/lib/wovnrb/store.rb +8 -14
  116. data/lib/wovnrb/version.rb +1 -1
  117. data/lib/wovnrb.rb +1 -3
  118. data/makefile +16 -0
  119. data/test/lib/api_translator_test.rb +3 -4
  120. data/test/lib/lang_test.rb +5 -136
  121. data/test/lib/services/html_converter_test.rb +14 -14
  122. data/test/lib/store_test.rb +8 -6
  123. data/test/lib/wovnrb_test.rb +16 -16
  124. data/wovnrb.gemspec +5 -4
  125. metadata +117 -16
  126. data/.travis.yml +0 -14
  127. data/lib/wovnrb/text_caches/cache_base.rb +0 -53
  128. data/lib/wovnrb/text_caches/memory_cache.rb +0 -51
  129. data/test/lib/text_caches/cache_base_test.rb +0 -31
  130. data/test/lib/text_caches/memory_cache_test.rb +0 -91
@@ -0,0 +1,335 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2
+ "http://www.w3.org/TR/html4/loose.dtd">
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
7
+ <title>
8
+ Test display of HTML elements
9
+ </title>
10
+ <style>
11
+ .limited { width: 15.5em; }
12
+ .hyphens {
13
+ -moz-hyphens: auto;
14
+ -webkit-hyphens: auto;
15
+ -ms-hyphens: auto;
16
+ hyphens: auto;
17
+ }
18
+ </style>
19
+ <link rel="alternate stylesheet" type="text/css" title=
20
+ "A cool style sheet" href="../styles/cool.css">
21
+ <link rel="alternate stylesheet" type="text/css" title=
22
+ "Yucca's basic style sheet" href="../basic.css">
23
+ <link rel="alternate stylesheet" type="text/css" title=
24
+ "Style sheet for fixing some IE oddities" href="test-ie.css">
25
+ <script src="../js/hyphenator.js"></script>
26
+ <script>
27
+ Hyphenator.run();
28
+ </script>
29
+
30
+ </head>
31
+
32
+ <body>
33
+
34
+ <h1>Testing display of HTML elements</h1>
35
+
36
+ <h2>This is 2nd level heading</h2>
37
+ <p>This is a test paragraph.</p>
38
+ <h3>This is 3rd level heading</h3>
39
+ <p>This is a test paragraph.</p>
40
+ <h4>This is 4th level heading</h4>
41
+ <p>This is a test paragraph.</p>
42
+ <h5>This is 5th level heading</h5>
43
+ <p>This is a test paragraph.</p>
44
+ <h6>This is 6th level heading</h6>
45
+ <p>This is a test paragraph.</p>
46
+
47
+ <h2>Basic block level elements</h2>
48
+
49
+ <p>This is a normal paragraph (<code>p</code> element).
50
+ To add some length to it, let us mention that this page was
51
+ primarily written for testing the effect of <strong>user style sheets</strong>.
52
+ You can use it for various other purposes as well, like just checking how
53
+ your browser displays various HTML elements by default.
54
+ It can also be useful when testing conversions from HTML
55
+ format to other formats, since some elements can go wrong then.</p>
56
+ <p>This is another paragraph. I think it needs to be added that
57
+ the set of elements tested is not exhaustive in any sense. I have selected
58
+ those elements for which it can make sense to write user style sheet rules,
59
+ in my opionion.</p>
60
+ <div>This is a <code>div</code> element. Authors may use such elements instead
61
+ of paragraph markup for various reasons. (End of <code>div</code>.)</div>
62
+ <blockquote><p>This is a block quotation containing a single
63
+ paragraph. Well, not quite, since this is not <em>really</em>
64
+ quoted text, but I hope you understand the point. After all, this
65
+ page does not use HTML markup very normally anyway.</p></blockquote>
66
+ <p>The following contains address information about the author, in an <code>address</code>
67
+ element.</p>
68
+ <address>
69
+ <a href="../personal.html" lang="fi" hreflang="en">Jukka Korpela</a>,
70
+ <a href="mailto:jukkakk@gmail.com">jukkakk@gmail.com</A><br>
71
+ Päivänsäteenkuja 4 A, Espoo, Finland
72
+ </address>
73
+
74
+ <h2>Lists</h2>
75
+
76
+ <p>This is a paragraph before an <strong>unnumbered</strong> list (<code>ul</code>). Note that
77
+ the spacing between a paragraph and a list before or after that is hard
78
+ to tune in a user style sheet. You can't guess which paragraphs are
79
+ logically related to a list, e.g. as a "list header".</p>
80
+ <ul>
81
+ <li> One.
82
+ <li> Two.
83
+ <li> Three. Well, probably this list item should be longer. Note that
84
+ for short items lists look better if they are compactly presented,
85
+ whereas for long items, it would be better to have more vertical spacing between items.
86
+ <li> Four. This is the last item in this list.
87
+ Let us terminate the list now without making any more fuss about it.
88
+ </ul>
89
+ <p>The following is a <code>menu</code> list:</p>
90
+ <menu>
91
+ <li> One.
92
+ <li> Two.
93
+ <li> Three. Well, probably this list item should be longer so that it will
94
+ probably wrap to the next line in rendering.
95
+ </menu>
96
+ <p>The following is a <code>dir</code> list:</p>
97
+ <dir>
98
+ <li> One.
99
+ <li> Two.
100
+ <li> Three. Well, probably this list item should be longer so that it will
101
+ probably wrap to the next line in rendering.
102
+ </dir>
103
+
104
+ <p>This is a paragraph before a <strong>numbered</strong> list (<code>ol</code>). Note that
105
+ the spacing between a paragraph and a list before or after that is hard
106
+ to tune in a user style sheet. You can't guess which paragraphs are
107
+ logically related to a list, e.g. as a "list header".</p>
108
+ <ol>
109
+ <li> One.
110
+ <li> Two.
111
+ <li> Three. Well, probably this list item should be longer. Note that if
112
+ items are short, lists look better if they are compactly presented,
113
+ whereas for long items, it would be better to have more vertical spacing between items.
114
+ <li> Four. This is the last item in this list.
115
+ Let us terminate the list now without making any more fuss about it.
116
+ </ol>
117
+
118
+ <p>This is a paragraph before a <strong>definition</strong> list (<code>dl</code>).
119
+ In principle, such a list should consist of <em>terms</em> and associated
120
+ definitions.
121
+ But many authors use <code>dl</code> elements for fancy "layout" things. Usually the
122
+ effect is not <em>too</em> bad, if you design user style sheet rules for <code>dl</code>
123
+ which are suitable
124
+ for real definition lists.
125
+ <dl>
126
+ <dt> recursion
127
+ <dd> see recursion
128
+ <dt> recursion, indirect
129
+ <dd> see indirect recursion
130
+ <dt> indirect recursion
131
+ <dd> see recursion, indirect
132
+ <dt> term
133
+ <dd> a word or other expression taken into specific use in
134
+ a well-defined meaning, which is often defined rather rigorously, even
135
+ formally, and may differ quite a lot from an everyday meaning
136
+ </dl>
137
+
138
+ <h2>Text-level markup</h2>
139
+
140
+ <ul>
141
+ <li> <abbr title="Cascading Style Sheets">CSS</abbr> (an abbreviation;
142
+ <code>abbr</code> markup used)
143
+ <li> <acronym title="radio detecting and ranging">radar</acronym> (an acronym; <code>acronym</code> markup used)
144
+ <li> <b>bolded</b> (<code>b</code> markup used - just bolding with unspecified
145
+ semantics)
146
+ <li> <big>big thing</big> (<code>big</code> markup used)
147
+ <li> <font size=6>large size</font> (<code>font size=6</code> markup used)
148
+ <li> <font face=Courier>Courier font</font> (<code>font face=Courier</code> markup used)
149
+ <li> <font color=red>red text</font> (<code>font color=red</code> markup used)
150
+ <li> <cite>Origin of Species</cite> (a book title;
151
+ <code>cite</code> markup used)
152
+ <li> <code>a[i] = b[i] + c[i);</code> (computer code; <code>code</code> markup used)
153
+ <li> here we have some <del>deleted</del> text (<code>del</code> markup used)
154
+ <li> an <dfn>octet</dfn> is an entity consisting of eight bits
155
+ (<code>dfn</code> markup used for the term being defined)
156
+ <li> this is <em>very</em> simple (<code>em</code> markup used for emphasizing
157
+ a word)
158
+ <li> <i lang="la">Homo sapiens</i> (should appear in italics; <code>i</code> markup used)
159
+ <li> here we have some <ins>inserted</ins> text (<code>ins</code> markup used)
160
+ <li> type <kbd>yes</kbd> when prompted for an answer (<code>kbd</code> markup
161
+ used for text indicating keyboard input)
162
+ <li> <q>Hello!</q> (<code>q</code> markup used for quotation)
163
+ <li> He said: <q>She said <q>Hello!</q></q> (a quotation inside a quotation)
164
+ <li> you may get the message <samp>Core dumped</samp> at times
165
+ (<code>samp</code> markup used for sample output)
166
+ <li> <small>this is not that important</small> (<code>small</code> markup used)
167
+ <li> <strike>overstruck</strike> (<code>strike</code> markup used; note:
168
+ <code>s</code> is a nonstandard synonym for <code>strike</code>)
169
+ <li> <strong>this is highlighted text</strong> (<code>strong</code>
170
+ markup used)
171
+ <li> In order to test how subscripts and superscripts (<code>sub</code> and
172
+ <code>sup</code> markup) work inside running text, we need some
173
+ dummy text around constructs like x<sub>1</sub> and H<sub>2</sub>O
174
+ (where subscripts occur). So here is some fill so that
175
+ you will (hopefully) see whether and how badly the subscripts
176
+ and superscripts mess up vertical spacing between lines.
177
+ Now superscripts: M<sup>lle</sup>, 1<sup>st</sup>, and then some
178
+ mathematical notations: e<sup>x</sup>, sin<sup>2</sup> <i>x</i>,
179
+ and some nested superscripts (exponents) too:
180
+ e<sup>x<sup>2</sup></sup> and f(x)<sup>g(x)<sup>a+b+c</sup></sup>
181
+ (where 2 and a+b+c should appear as exponents of exponents).
182
+ <li> <tt>text in monospace font</tt> (<code>tt</code> markup used)
183
+ <li> <u>underlined</u> text (<code>u</code> markup used)
184
+ <li> the command <code>cat</code> <var>filename</var> displays the
185
+ file specified by the <var>filename</var> (<code>var</code> markup
186
+ used to indicate a word as a variable).
187
+ </ul>
188
+
189
+ <p>Some of the elements tested above are typically displayed in a monospace
190
+ font, often using the <em>same</em> presentation for all of them. This
191
+ tests whether that is the case on your browser:</p>
192
+
193
+ <ul>
194
+ <li> <code>This is sample text inside code markup</code>
195
+ <li> <kbd>This is sample text inside kbd markup</kbd>
196
+ <li> <samp>This is sample text inside samp markup</samp>
197
+ <li> <tt>This is sample text inside tt markup</tt>
198
+ </ul>
199
+ <h2>Links</h2>
200
+ <ul>
201
+ <li> <a href="../wovn_index.html">main page</a>
202
+ <li> <a href=
203
+ "http://www.unicode.org/versions/Unicode4.0.0/ch06.pdf"
204
+ title="Writing Systems and Punctuation"
205
+ type="application/pdf"
206
+ >Unicode Standard, chapter&nbsp;6</a>
207
+ </ul>
208
+
209
+ <p>This is a text paragraph that contains some
210
+ inline links. Generally, inline links (as opposite to e.g. links
211
+ lists) are problematic
212
+ from the
213
+ <a href="http://www.useit.com">usability</a> perspective,
214
+ but they may have use as
215
+ &#8220;incidental&#8221;, less relevant links. See the document
216
+ <cite><a href="links.html">Links Want To Be Links</a></cite>.</p>
217
+
218
+ <h2>Forms</h2>
219
+
220
+ <form action="http://jkorpela.fi/cgi-bin/echo.cgi">
221
+ <div>
222
+ <input type="hidden" name="hidden field" value="42">
223
+ This is a form containing various fields (with some initial
224
+ values (defaults) set, so that you can see how input text looks
225
+ like without actually typing it):</div>
226
+ <div><label for="but">Button:
227
+ <button id="but" type="submit" name="foo" value="bar">A cool<br>button</button></label></div>
228
+ <div><label for="f0">Reset button:
229
+ <input id="f0" type="reset" name="reset" value="Reset"></label></div>
230
+ <div><label for="f1">Single-line text input field: <input id="f1" name="text" size="20" value="Default text."></label></div>
231
+ <div><label for="f2">Multi-line text input field (textarea):</label><br>
232
+ <textarea id="f2" name="textarea" rows="2" cols="20">
233
+ Default text.
234
+ </textarea></div>
235
+ <div>The following two radio buttons are inside
236
+ a <code>fieldset</code> element with a <code>legend</code>:</div>
237
+ <fieldset>
238
+ <legend>Legend</legend>
239
+ <div><label for="f3"><input id="f3" type="radio" name="radio" value="1"> Radio button 1</label></div>
240
+ <div><label for="f4"><input id="f4" type="radio" name="radio" value="2" checked> Radio button 2 (initially checked)</label></div>
241
+ </fieldset>
242
+ <fieldset>
243
+ <legend>Check those that apply</legend>
244
+ <div><label for="f5"><input id="f5" type="checkbox" name="checkbox"> Checkbox 1</label></div>
245
+ <div><label for="f6"><input id="f6" type="checkbox" name="checkbox2" checked> Checkbox 2 (initially checked)</label></div>
246
+ </fieldset>
247
+ <div><label for="f10">A <code>select</code> element with <code>size="1"</code>
248
+ (dropdown box):
249
+ <select id="f10" name="select1" size="1">
250
+ <option>one
251
+ <option selected>two (default)
252
+ <option>three
253
+ </select></label></div>
254
+ <div><label for="f11">A <code>select</code> element with <code>size="3"</code>
255
+ (listbox):</label><br>
256
+ <select id="f11" name="select2" size="3">
257
+ <option>one
258
+ <option selected>two (default)
259
+ <option>three
260
+ </select></div>
261
+ <div><label for="f99">Submit button:
262
+ <input id="f99" type="submit" name="submit" value="Just a test"></label></div>
263
+ </form>
264
+
265
+ <h2>Tables</h2>
266
+
267
+ <p>The following table has a caption. The first row and the first column
268
+ contain table header cells (<code>th</code> elements) only; other cells
269
+ are data cells (<code>td</code> elements), with <code>align="right"</code>
270
+ attributes:</p>
271
+
272
+ <TABLE summary=
273
+ "Each row names a Nordic country and specifies its total area and land area, in square kilometers">
274
+ <CAPTION>Sample table: Areas of the Nordic countries, in sq km</CAPTION>
275
+ <TR><th scope="col">Country</th> <th scope="col">Total area</TH> <th scope="col">Land area</TH>
276
+ <TR><th scope="row">Denmark</TH> <TD ALIGN=RIGHT> 43,070 </TD><TD ALIGN=RIGHT> 42,370</TR>
277
+ <TR><th scope="row">Finland</TH> <TD ALIGN=RIGHT>337,030 </TD><TD ALIGN=RIGHT>305,470</TR>
278
+ <TR><th scope="row">Iceland</TH> <TD ALIGN=RIGHT>103,000 </TD><TD ALIGN=RIGHT>100,250</TR>
279
+ <TR><th scope="row">Norway</TH> <TD ALIGN=RIGHT>324,220 </TD><TD ALIGN=RIGHT>307,860</TR>
280
+ <TR><th scope="row">Sweden</TH> <TD ALIGN=RIGHT>449,964 </TD><TD ALIGN=RIGHT>410,928</TR>
281
+ </TABLE>
282
+
283
+ <h2>Character test</h2>
284
+ <p>The following table has some sample characters with
285
+ annotations. If the browser&#8217;s default font does not
286
+ contain all of them, they may get displayed using backup fonts.
287
+ This may cause stylistic differences, but it should not
288
+ prevent the characters from being displayed at all.</p>
289
+
290
+ <table>
291
+ <tr><th>Char. <th>Explanation <th>Notes
292
+ <tr><td>ê <td>e with circumflex <td>Latin 1 character, should be ok
293
+ <tr><td>&#8212; <td>em dash <td>Windows Latin 1 character, should be ok, too
294
+ <tr><td>&#x100; <td>A with macron (line above) <td>Latin Extended-A character, not present in all fonts
295
+ <tr><td>&Omega; <td>capital omega <td>A Greek letter
296
+ <tr><td>&#x2212; <td>minus sign <td>Unicode minus
297
+ <tr><td>&#x2300; <td>diameter sign <td>relatively rare in fonts
298
+ </table>
299
+
300
+ <h2>Hyphenation</h2>
301
+ <p>In the following, a width setting should cause some hyphenation,
302
+ depending on support to various methods of hyphenation.</p>
303
+
304
+ <h3>CSS-based hyphenation</h3>
305
+ <p class="limited hyphens">Until recently the great majority of naturalists believed that species were immutable productions, and had been separately created. This view has been ably maintained by many authors.
306
+
307
+ <h3>JavaScript-driven hyphenation</h3>
308
+ <p class="limited hyphenate">Until recently the great majority of naturalists believed that species were immutable productions, and had been separately created. This view has been ably maintained by many authors.
309
+
310
+ <h3>Explicit hyphenation hints (soft hyphens)</h3>
311
+ <p class="limited">Un­til re­cent­ly the great
312
+ ma­jor­i­ty of nat­u­ral­ists
313
+ be­lieved that spe­cies were
314
+ im­mu­ta­ble
315
+ pro­duc­tions,
316
+ and had been sep­a­rate­ly cre­at­ed.
317
+ This view has been ably main­tain­ed by many au­thors.
318
+
319
+
320
+ <HR TITLE="Information about this document">
321
+
322
+ <address>
323
+ <a href="../personal.html" hreflang="en" lang="fi">Jukka Korpela</a>
324
+ </address>
325
+ <div>
326
+ <A TITLE=
327
+ "ISO 8601, the date and time representation standard"
328
+ HREF="../iso8601.html">
329
+ Date</A> of creation: 2000-09-15.
330
+ Last update: 2013-03-21.
331
+ </div>
332
+
333
+ </BODY>
334
+
335
+ </HTML>