diff --git a/inkcpp/output.cpp b/inkcpp/output.cpp index ac51713c..559de9ff 100644 --- a/inkcpp/output.cpp +++ b/inkcpp/output.cpp @@ -427,7 +427,8 @@ namespace ink for(const char* i=_data[iter].get(); *i; ++i) { - if (!isspace(*i)) { + // isspace only supports characters in [0, UCHAR_MAX] + if (!isspace(static_cast(*i))) { hasGlue = false; break; } diff --git a/inkcpp_test/UTF8.cpp b/inkcpp_test/UTF8.cpp new file mode 100644 index 00000000..be95ecc8 --- /dev/null +++ b/inkcpp_test/UTF8.cpp @@ -0,0 +1,58 @@ +#include "catch.hpp" +#include "../inkcpp_cl/test.h" + +#include +#include +#include + +#include +#include + +using namespace ink::runtime; + +SCENARIO("a story supports UTF-8", "[utf-8]") +{ + GIVEN("a story with UTF8 characters") + { + inklecate("ink/UTF8Story.ink", "UTF8Story.tmp"); + ink::compiler::run("UTF8Story.tmp", "UTF8Story.bin"); + auto ink = story::from_file("UTF8Story.bin"); + runner thread = ink->new_runner(); + + std::ifstream demoFile("ink/UTF-8-demo.txt"); + if (!demoFile.is_open()) { + throw std::runtime_error("cannot open UTF-8 demo file"); + } + + char byte; + std::stringstream demo; + std::stringstream current; + while (demoFile.get(byte)) { + if (byte == '\r') continue; // skip windows carriage-return newlines + else if (byte == '\n' || byte == 0) { // newline or null byte + std::string s = current.str(); + if (s.empty()) continue; + demo << s << '\n'; + current.str(""); + } + else { // normal char + current << byte; + } + } + std::string s = current.str(); + if (!s.empty()) demo << s << '\n'; + + + WHEN("consume lines") { + std::stringstream content; + while (thread->can_continue()) { + content << thread->getline(); + } + THEN("lines match test file") { + std::string c = content.str(); + std::string d = demo.str(); + REQUIRE(c == d); + } + } + } +} diff --git a/inkcpp_test/ink/UTF-8-demo.txt b/inkcpp_test/ink/UTF-8-demo.txt new file mode 100644 index 00000000..ff83255d --- /dev/null +++ b/inkcpp_test/ink/UTF-8-demo.txt @@ -0,0 +1,212 @@ +Here's a cat: 🐈 + +UTF-8 encoded sample plain-text file +‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +Markus Kuhn ˈmaʳkʊs kuːn — 2002-07-25 CC BY + + +The ASCII compatible UTF-8 encoding used in this plain-text file +is defined in Unicode, ISO 10646-1, and RFC 2279. + + +Using Unicode/UTF-8, you can write in emails and source code things such as + +Mathematics and sciences: + +∮ E⋅da = Q,n → ∞, ∑ f(i) = ∏ g(i),⎧⎡⎛┌─────┐⎞⎤⎫ +⎪⎢⎜│a²+b³ ⎟⎥⎪ +∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β),⎪⎢⎜│───── ⎟⎥⎪ +⎪⎢⎜⎷ c₈ ⎟⎥⎪ +ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ +⎪⎢⎜ ∞ ⎟⎥⎪ +⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫),⎪⎢⎜ ⎲ ⎟⎥⎪ +⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ +2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1⎠⎦⎭ + +Linguistics and dictionaries: + +ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn +Y ˈʏpsilɔn, Yen jɛn, Yoga ˈjoːgɑ + +APL: + +((V⍳V)=⍳⍴V)/V←,V⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ + +Nicer typography in plain text files: + +╔══════════════════════════════════════════╗ +║║ +║ • ‘single’ and “double” quotes ║ +║║ +║ • Curly apostrophes: “We’ve been here” ║ +║║ +║ • Latin-1 apostrophe and accents: '´`║ +║║ +║ • ‚deutsche‘ „Anführungszeichen“ ║ +║║ +║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, …║ +║║ +║ • ASCII safety test: 1lI, 0OD, 8B ║ +║╭─────────╮ ║ +║ • the euro symbol: │ 14.95 € │ ║ +║╰─────────╯ ║ +╚══════════════════════════════════════════╝ + +Combining characters: + +STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ + +Greek (in Polytonic): + +The Greek anthem: + +Σὲ γνωρίζω ἀπὸ τὴν κόψη +τοῦ σπαθιοῦ τὴν τρομερή, +σὲ γνωρίζω ἀπὸ τὴν ὄψη +ποὺ μὲ βία μετράει τὴ γῆ. + +᾿Απ᾿ τὰ κόκκαλα βγαλμένη +τῶν ῾Ελλήνων τὰ ἱερά +καὶ σὰν πρῶτα ἀνδρειωμένη +χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! + +From a speech of Demosthenes in the 4th century BC: + +Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, +ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς +λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ +τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ +εἰς τοῦτο προήκοντα,ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ +πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν +οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, +οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν +ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον +τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι +γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν +προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους +σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ +τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ +τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς +τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. + +Δημοσθένους, Γ´ ᾿Ολυνθιακὸς + +Georgian: + +From a Unicode conference invitation: + +გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო +კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, +ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს +ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, +ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება +ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, +ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. + +Russian: + +From a Unicode conference invitation: + +Зарегистрируйтесь сейчас на Десятую Международную Конференцию по +Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. +Конференция соберет широкий круг экспертов повопросам глобального +Интернета и Unicode, локализации и интернационализации, воплощению и +применению Unicode в различных операционных системах и программных +приложениях, шрифтах, верстке и многоязычных компьютерных системах. + +Thai (UCS Level 2): + +Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese +classic 'San Gua'): + +๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวชพระปกเกศกองบู๊กู้ขึ้นใหม่ +สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา +ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา +โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ +เหมือนขับไสไล่เสือจากเคหารับหมาป่าเข้ามาเลยอาสัญ +ฝ่ายอ้องอุ้นยุแยกให้แตกกันใช้สาวนั้นเป็นชนวนชื่นชวนใจ +พลันลิฉุยกุยกีกลับก่อเหตุช่างอาเพศจริงหนาฟ้าร้องไห้ +ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ + +(The above is a two-column text. If combining characters are handled +correctly, the lines of the second column should be aligned with the +character above.) + +Ethiopian: + +Proverbs in the Amharic language: + +ሰማይ አይታረስ ንጉሥ አይከሰስ። +ብላ ካለኝ እንደአባቴ በቆመጠኝ። +ጌጥ ያለቤቱ ቁምጥና ነው። +ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። +የአፍ ወለምታ በቅቤ አይታሽም። +አይጥ በበላ ዳዋ ተመታ። +ሲተረጉሙ ይደረግሙ። +ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። +ድር ቢያብር አንበሳ ያስር። +ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። +እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። +የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። +ሥራ ከመፍታት ልጄን ላፋታት። +ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። +የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። +ተንጋሎ ቢተፉ ተመልሶ ባፉ። +ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። +እግርህን በፍራሽህ ልክ ዘርጋ። + +Runes: + +ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ + +(Old English, which transcribed into Latin reads 'He cwaeth that he +bude thaem lande northweardum with tha Westsae.' and means 'He said +that he lived in the northern land near the Western Sea.') + +Braille: + +⡌⠁⠧⠑ ⠼⠁⠒⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ + +⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ +⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ +⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ +⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ +⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ +⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ + +⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ + +⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ +⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ +⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ +⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ +⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ +⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ +⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ +⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ +⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ + +(The first couple of paragraphs of "A Christmas Carol" by Dickens) + +Compact font selection example text: + +ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 +abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ +–—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд +∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა + +Greetings in various languages: + +Hello world, Καλημέρα κόσμε, コンニチハ + +Box drawing alignment tests:█ +▉ +╔══╦══╗┌──┬──┐╭──┬──╮╭──┬──╮┏━━┳━━┓┎┒┏┑ ╷╻ ┏┯┓ ┌┰┐▊ ╱╲╱╲╳╳╳ +║┌─╨─┐║│╔═╧═╗││╒═╪═╕││╓─╁─╖│┃┌─╂─┐┃┗╃╄┙╶┼╴╺╋╸┠┼┨ ┝╋┥▋ ╲╱╲╱╳╳╳ +║│╲ ╱│║│║ ║│││ │ │││║ ┃ ║│┃│ ╿ │┃┍╅╆┓ ╵╹ ┗┷┛ └┸┘▌ ╱╲╱╲╳╳╳ +╠╡ ╳ ╞╣├╢ ╟┤├┼─┼─┼┤├╫─╂─╫┤┣┿╾┼╼┿┫┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ +║│╱ ╲│║│║ ║│││ │ │││║ ┃ ║│┃│ ╽ │┃░░▒▒▓▓██ ┊┆ ╎ ╏┇ ┋ ▎ +║└─╥─┘║│╚═╤═╝││╘═╪═╛││╙─╀─╜│┃└─╂─┘┃░░▒▒▓▓██ ┊┆ ╎ ╏┇ ┋ ▏ +╚══╩══╝└──┴──┘╰──┴──╯╰──┴──╯┗━━┻━━┛▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋▁▂▃▄▅▆▇█ +▀▘▙▄▟ \ No newline at end of file diff --git a/inkcpp_test/ink/UTF8Story.ink b/inkcpp_test/ink/UTF8Story.ink new file mode 100644 index 00000000..234e9bdd --- /dev/null +++ b/inkcpp_test/ink/UTF8Story.ink @@ -0,0 +1,218 @@ +// Test UTF8 from: +// https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt +// Double-spaces and some special characters removed for ink-friendliness. Emoji test also added. + +Here's a cat: 🐈 + +UTF-8 encoded sample plain-text file +‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +Markus Kuhn ˈmaʳkʊs kuːn — 2002-07-25 CC BY + + +The ASCII compatible UTF-8 encoding used in this plain-text file +is defined in Unicode, ISO 10646-1, and RFC 2279. + + +Using Unicode/UTF-8, you can write in emails and source code things such as + +Mathematics and sciences: + +∮ E⋅da = Q,n → ∞, ∑ f(i) = ∏ g(i),⎧⎡⎛┌─────┐⎞⎤⎫ +⎪⎢⎜│a²+b³ ⎟⎥⎪ +∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β),⎪⎢⎜│───── ⎟⎥⎪ +⎪⎢⎜⎷ c₈ ⎟⎥⎪ +ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ +⎪⎢⎜ ∞ ⎟⎥⎪ +⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫),⎪⎢⎜ ⎲ ⎟⎥⎪ +⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ +2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1⎠⎦⎭ + +Linguistics and dictionaries: + +ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn +Y ˈʏpsilɔn, Yen jɛn, Yoga ˈjoːgɑ + +APL: + +((V⍳V)=⍳⍴V)/V←,V⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ + +Nicer typography in plain text files: + +╔══════════════════════════════════════════╗ +║║ +║ • ‘single’ and “double” quotes ║ +║║ +║ • Curly apostrophes: “We’ve been here” ║ +║║ +║ • Latin-1 apostrophe and accents: '´`║ +║║ +║ • ‚deutsche‘ „Anführungszeichen“ ║ +║║ +║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, …║ +║║ +║ • ASCII safety test: 1lI, 0OD, 8B ║ +║╭─────────╮ ║ +║ • the euro symbol: │ 14.95 € │ ║ +║╰─────────╯ ║ +╚══════════════════════════════════════════╝ + +Combining characters: + +STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ + +Greek (in Polytonic): + +The Greek anthem: + +Σὲ γνωρίζω ἀπὸ τὴν κόψη +τοῦ σπαθιοῦ τὴν τρομερή, +σὲ γνωρίζω ἀπὸ τὴν ὄψη +ποὺ μὲ βία μετράει τὴ γῆ. + +᾿Απ᾿ τὰ κόκκαλα βγαλμένη +τῶν ῾Ελλήνων τὰ ἱερά +καὶ σὰν πρῶτα ἀνδρειωμένη +χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! + +From a speech of Demosthenes in the 4th century BC: + +Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, +ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς +λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ +τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ +εἰς τοῦτο προήκοντα,ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ +πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν +οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, +οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν +ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον +τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι +γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν +προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους +σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ +τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ +τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς +τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. + +Δημοσθένους, Γ´ ᾿Ολυνθιακὸς + +Georgian: + +From a Unicode conference invitation: + +გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო +კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, +ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს +ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, +ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება +ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, +ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. + +Russian: + +From a Unicode conference invitation: + +Зарегистрируйтесь сейчас на Десятую Международную Конференцию по +Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. +Конференция соберет широкий круг экспертов повопросам глобального +Интернета и Unicode, локализации и интернационализации, воплощению и +применению Unicode в различных операционных системах и программных +приложениях, шрифтах, верстке и многоязычных компьютерных системах. + +Thai (UCS Level 2): + +Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese +classic 'San Gua'): + +๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวชพระปกเกศกองบู๊กู้ขึ้นใหม่ +สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา +ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา +โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ +เหมือนขับไสไล่เสือจากเคหารับหมาป่าเข้ามาเลยอาสัญ +ฝ่ายอ้องอุ้นยุแยกให้แตกกันใช้สาวนั้นเป็นชนวนชื่นชวนใจ +พลันลิฉุยกุยกีกลับก่อเหตุช่างอาเพศจริงหนาฟ้าร้องไห้ +ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ + +(The above is a two-column text. If combining characters are handled +correctly, the lines of the second column should be aligned with the +character above.) + +Ethiopian: + +Proverbs in the Amharic language: + +ሰማይ አይታረስ ንጉሥ አይከሰስ። +ብላ ካለኝ እንደአባቴ በቆመጠኝ። +ጌጥ ያለቤቱ ቁምጥና ነው። +ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። +የአፍ ወለምታ በቅቤ አይታሽም። +አይጥ በበላ ዳዋ ተመታ። +ሲተረጉሙ ይደረግሙ። +ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። +ድር ቢያብር አንበሳ ያስር። +ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። +እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። +የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። +ሥራ ከመፍታት ልጄን ላፋታት። +ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። +የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። +ተንጋሎ ቢተፉ ተመልሶ ባፉ። +ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። +እግርህን በፍራሽህ ልክ ዘርጋ። + +Runes: + +ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ + +(Old English, which transcribed into Latin reads 'He cwaeth that he +bude thaem lande northweardum with tha Westsae.' and means 'He said +that he lived in the northern land near the Western Sea.') + +Braille: + +⡌⠁⠧⠑ ⠼⠁⠒⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ + +⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ +⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ +⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ +⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ +⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ +⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ + +⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ + +⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ +⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ +⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ +⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ +⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ +⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ +⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ +⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ +⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ + +(The first couple of paragraphs of "A Christmas Carol" by Dickens) + +Compact font selection example text: + +ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 +abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ +–—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд +∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა + +Greetings in various languages: + +Hello world, Καλημέρα κόσμε, コンニチハ + +Box drawing alignment tests:█ +▉ +╔══╦══╗┌──┬──┐╭──┬──╮╭──┬──╮┏━━┳━━┓┎┒┏┑ ╷╻ ┏┯┓ ┌┰┐▊ ╱╲╱╲╳╳╳ +║┌─╨─┐║│╔═╧═╗││╒═╪═╕││╓─╁─╖│┃┌─╂─┐┃┗╃╄┙╶┼╴╺╋╸┠┼┨ ┝╋┥▋ ╲╱╲╱╳╳╳ +║│╲ ╱│║│║ ║│││ │ │││║ ┃ ║│┃│ ╿ │┃┍╅╆┓ ╵╹ ┗┷┛ └┸┘▌ ╱╲╱╲╳╳╳ +╠╡ ╳ ╞╣├╢ ╟┤├┼─┼─┼┤├╫─╂─╫┤┣┿╾┼╼┿┫┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ +║│╱ ╲│║│║ ║│││ │ │││║ ┃ ║│┃│ ╽ │┃░░▒▒▓▓██ ┊┆ ╎ ╏┇ ┋ ▎ +║└─╥─┘║│╚═╤═╝││╘═╪═╛││╙─╀─╜│┃└─╂─┘┃░░▒▒▓▓██ ┊┆ ╎ ╏┇ ┋ ▏ +╚══╩══╝└──┴──┘╰──┴──╯╰──┴──╯┗━━┻━━┛▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋▁▂▃▄▅▆▇█ +▀▘▙▄▟ + +-> DONE \ No newline at end of file