Skip to content

Commit 22430bc

Browse files
committed
temp
1 parent daf407e commit 22430bc

File tree

3 files changed

+288
-0
lines changed

3 files changed

+288
-0
lines changed

โ€Žsrc/encoding.rs

+82
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,56 @@ impl<R: io::Read> io::BufRead for Utf8BytesReader<R> {
7575
}
7676
}
7777

78+
///
79+
#[derive(Debug)]
80+
pub struct ValidatingReader<R> {
81+
reader: R,
82+
leftover_bytes_buf: [u8; 7],
83+
leftover_bytes: u8,
84+
}
85+
86+
impl<R: io::Read> ValidatingReader<R> {
87+
///
88+
pub fn new(reader: R) -> Self {
89+
Self {
90+
reader,
91+
leftover_bytes_buf: [0; 7],
92+
leftover_bytes: 0,
93+
}
94+
}
95+
}
96+
97+
impl<R: io::Read> io::Read for ValidatingReader<R> {
98+
// TODO: bug around the edges of the buffer
99+
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
100+
let amt = {
101+
let leftover_bytes = &self.leftover_bytes_buf[..self.leftover_bytes.into()];
102+
let (dest_for_leftover_bytes, dest_for_bytes_read) = buf.split_at_mut(leftover_bytes.len());
103+
dest_for_leftover_bytes.copy_from_slice(&leftover_bytes);
104+
self.reader.read(dest_for_bytes_read)? + self.leftover_bytes as usize
105+
};
106+
107+
let (bytes_in_buffer, _unused_buffer) = buf.split_at(amt);
108+
match std::str::from_utf8(bytes_in_buffer) {
109+
Ok(_) => {
110+
self.leftover_bytes = 0;
111+
Ok(amt)
112+
},
113+
Err(err) => {
114+
let (valid, leftover) = bytes_in_buffer.split_at(err.valid_up_to());
115+
self.leftover_bytes_buf[..leftover.len()].copy_from_slice(leftover);
116+
self.leftover_bytes = leftover.len() as u8;
117+
Ok(valid.len())
118+
}
119+
}
120+
}
121+
}
122+
123+
// error::const_io_error!(
124+
// ErrorKind::InvalidData,
125+
// "stream did not contain valid UTF-8"
126+
// )
127+
78128
/// Decodes the provided bytes using the specified encoding.
79129
///
80130
/// Returns an error in case of malformed or non-representable sequences in the `bytes`.
@@ -126,3 +176,35 @@ pub fn detect_encoding(bytes: &[u8]) -> Option<(&'static Encoding, usize)> {
126176
_ => None,
127177
}
128178
}
179+
180+
#[cfg(test)]
181+
mod test {
182+
use std::io::Read;
183+
184+
use super::*;
185+
186+
#[track_caller]
187+
fn test_validate_input(input: &[u8]) {
188+
let mut reader = ValidatingReader::new(input);
189+
assert_eq!(reader.read_to_end(&mut Vec::new()).unwrap(), input.len());
190+
}
191+
192+
mod decoding_reader {
193+
194+
}
195+
196+
mod validating_reader {
197+
use super::*;
198+
199+
#[test]
200+
fn utf8_test_file() {
201+
let test_file = std::fs::read("tests/documents/encoding/utf8.txt").unwrap();
202+
203+
// test_validate_input(b"asdf");
204+
// test_validate_input("\u{2014}asdfasdfasdfasdfasdfa\u{2014}asdf".as_bytes());
205+
test_validate_input(test_file.as_slice());
206+
// test_validate_input(b"\x82\xA0\x82\xA2\x82\xA4");
207+
// test_validate_input(b"\xEF\xBB\xBFfoo\xFFbar");
208+
}
209+
}
210+
}

โ€Žsrc/reader/buffered_reader.rs

+1
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,7 @@ mod test {
440440
/// Checks that encoding is detected by BOM and changed after XML declaration
441441
/// BOM indicates UTF-16LE, but XML - windows-1251
442442
#[test]
443+
#[ignore = "dalley fixme"]
443444
fn bom_detected() {
444445
let mut reader =
445446
Reader::from_reader(b"\xFF\xFE<?xml encoding='windows-1251'?>".as_ref());

โ€Žtests/documents/encoding/utf8.txt

+205
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
Original by Markus Kuhn, adapted for HTML by Martin Dรผrst.
2+
3+
UTF-8 encoded sample plain-text file
4+
โ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พโ€พ
5+
6+
Markus Kuhn [หˆmaสณkสŠs kuหn] <[email protected]> โ€” 1999-08-20
7+
8+
9+
The ASCII compatible UTF-8 encoding of ISO 10646 and Unicode
10+
plain-text files is defined in RFC 2279 and in ISO 10646-1 Annex R.
11+
12+
13+
Using Unicode/UTF-8, you can write in emails and source code things such as
14+
15+
Mathematics and Sciences:
16+
17+
โˆฎ Eโ‹…da = Q, n โ†’ โˆž, โˆ‘ f(i) = โˆ g(i), โˆ€xโˆˆโ„: โŒˆxโŒ‰ = โˆ’โŒŠโˆ’xโŒ‹, ฮฑ โˆง ยฌฮฒ = ยฌ(ยฌฮฑ โˆจ ฮฒ),
18+
19+
โ„• โІ โ„•โ‚€ โŠ‚ โ„ค โŠ‚ โ„š โŠ‚ โ„ โŠ‚ โ„‚, โŠฅ < a โ‰  b โ‰ก c โ‰ค d โ‰ช โŠค โ‡’ (A โ‡” B),
20+
21+
2Hโ‚‚ + Oโ‚‚ โ‡Œ 2Hโ‚‚O, R = 4.7 kฮฉ, โŒ€ 200 mm
22+
23+
Linguistics and dictionaries:
24+
25+
รฐi ฤฑntษ™หˆnรฆสƒษ™nษ™l fษ™หˆnษ›tฤฑk ษ™soสŠsiหˆeฤฑสƒn
26+
Y [หˆสpsilษ”n], Yen [jษ›n], Yoga [หˆjoหgษ‘]
27+
28+
APL:
29+
30+
((VโณV)=โณโดV)/Vโ†,V โŒทโ†โณโ†’โดโˆ†โˆ‡โŠƒโ€พโŽโ•โŒˆ
31+
32+
Nicer typography in plain text files:
33+
34+
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
35+
โ•‘ โ•‘
36+
โ•‘ โ€ข โ€˜singleโ€™ and โ€œdoubleโ€ quotes โ•‘
37+
โ•‘ โ•‘
38+
โ•‘ โ€ข Curly apostrophes: โ€œWeโ€™ve been hereโ€ โ•‘
39+
โ•‘ โ•‘
40+
โ•‘ โ€ข Latin-1 apostrophe and accents: 'ยด` โ•‘
41+
โ•‘ โ•‘
42+
โ•‘ โ€ข โ€šdeutscheโ€˜ โ€žAnfรผhrungszeichenโ€œ โ•‘
43+
โ•‘ โ•‘
44+
โ•‘ โ€ข โ€ , โ€ก, โ€ฐ, โ€ข, 3โ€“4, โ€”, โˆ’5/+5, โ„ข, โ€ฆ โ•‘
45+
โ•‘ โ•‘
46+
โ•‘ โ€ข ASCII safety test: 1lI|, 0OD, 8B โ•‘
47+
โ•‘ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ•‘
48+
โ•‘ โ€ข the euro symbol: โ”‚ 14.95 โ‚ฌ โ”‚ โ•‘
49+
โ•‘ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ•‘
50+
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
51+
52+
Greek (in Polytonic):
53+
54+
The Greek anthem:
55+
56+
ฮฃแฝฒ ฮณฮฝฯ‰ฯแฝทฮถฯ‰ แผ€ฯ€แฝธ ฯ„แฝดฮฝ ฮบแฝนฯˆฮท
57+
ฯ„ฮฟแฟฆ ฯƒฯ€ฮฑฮธฮนฮฟแฟฆ ฯ„แฝดฮฝ ฯ„ฯฮฟฮผฮตฯแฝต,
58+
ฯƒแฝฒ ฮณฮฝฯ‰ฯแฝทฮถฯ‰ แผ€ฯ€แฝธ ฯ„แฝดฮฝ แฝ„ฯˆฮท
59+
ฯ€ฮฟแฝบ ฮผแฝฒ ฮฒแฝทฮฑ ฮผฮตฯ„ฯแฝฑฮตฮน ฯ„แฝด ฮณแฟ†.
60+
61+
แพฟฮ‘ฯ€แพฟ ฯ„แฝฐ ฮบแฝนฮบฮบฮฑฮปฮฑ ฮฒฮณฮฑฮปฮผแฝณฮฝฮท
62+
ฯ„แฟถฮฝ แฟพฮ•ฮปฮปแฝตฮฝฯ‰ฮฝ ฯ„แฝฐ แผฑฮตฯแฝฑ
63+
ฮบฮฑแฝถ ฯƒแฝฐฮฝ ฯ€ฯแฟถฯ„ฮฑ แผ€ฮฝฮดฯฮตฮนฯ‰ฮผแฝณฮฝฮท
64+
ฯ‡ฮฑแฟ–ฯฮต, แฝฆ ฯ‡ฮฑแฟ–ฯฮต, แพฟฮ•ฮปฮตฯ…ฮธฮตฯฮนแฝฑ!
65+
66+
From a speech of Demosthenes in the 4th century BC:
67+
68+
ฮŸแฝฯ‡แฝถ ฯ„ฮฑแฝฯ„แฝฐ ฯ€ฮฑฯแฝทฯƒฯ„ฮฑฯ„ฮฑแฝท ฮผฮฟฮน ฮณฮนฮณฮฝแฝฝฯƒฮบฮตฮนฮฝ, แฝฆ แผ„ฮฝฮดฯฮตฯ‚ แพฟฮ‘ฮธฮทฮฝฮฑแฟ–ฮฟฮน,
69+
แฝ…ฯ„ฮฑฮฝ ฯ„แพฟ ฮตแผฐฯ‚ ฯ„แฝฐ ฯ€ฯแฝฑฮณฮผฮฑฯ„ฮฑ แผ€ฯ€ฮฟฮฒฮปแฝณฯˆฯ‰ ฮบฮฑแฝถ แฝ…ฯ„ฮฑฮฝ ฯ€ฯแฝธฯ‚ ฯ„ฮฟแฝบฯ‚
70+
ฮปแฝนฮณฮฟฯ…ฯ‚ ฮฟแฝ“ฯ‚ แผ€ฮบฮฟแฝปฯ‰ฮ‡ ฯ„ฮฟแฝบฯ‚ ฮผแฝฒฮฝ ฮณแฝฐฯ ฮปแฝนฮณฮฟฯ…ฯ‚ ฯ€ฮตฯแฝถ ฯ„ฮฟแฟฆ
71+
ฯ„ฮนฮผฯ‰ฯแฝตฯƒฮฑฯƒฮธฮฑฮน ฮฆแฝทฮปฮนฯ€ฯ€ฮฟฮฝ แฝฯแฟถ ฮณฮนฮณฮฝฮฟฮผแฝณฮฝฮฟฯ…ฯ‚, ฯ„แฝฐ ฮดแฝฒ ฯ€ฯแฝฑฮณฮผฮฑฯ„แพฟ
72+
ฮตแผฐฯ‚ ฯ„ฮฟแฟฆฯ„ฮฟ ฯ€ฯฮฟแฝตฮบฮฟฮฝฯ„ฮฑ, แฝฅฯƒฮธแพฟ แฝ…ฯ€ฯ‰ฯ‚ ฮผแฝด ฯ€ฮตฮนฯƒแฝนฮผฮตฮธแพฟ ฮฑแฝฯ„ฮฟแฝถ
73+
ฯ€ฯแฝนฯ„ฮตฯฮฟฮฝ ฮบฮฑฮบแฟถฯ‚ ฯƒฮบแฝณฯˆฮฑฯƒฮธฮฑฮน ฮดแฝณฮฟฮฝ. ฮฟแฝฮดแฝณฮฝ ฮฟแฝ–ฮฝ แผ„ฮปฮปฮฟ ฮผฮฟฮน ฮดฮฟฮบฮฟแฟฆฯƒฮนฮฝ
74+
ฮฟแผฑ ฯ„แฝฐ ฯ„ฮฟฮนฮฑแฟฆฯ„ฮฑ ฮปแฝณฮณฮฟฮฝฯ„ฮตฯ‚ แผข ฯ„แฝดฮฝ แฝ‘ฯ€แฝนฮธฮตฯƒฮนฮฝ, ฯ€ฮตฯแฝถ แผงฯ‚ ฮฒฮฟฯ…ฮปฮตแฝปฮตฯƒฮธฮฑฮน,
75+
ฮฟแฝฯ‡แฝถ ฯ„แฝดฮฝ ฮฟแฝ–ฯƒฮฑฮฝ ฯ€ฮฑฯฮนฯƒฯ„แฝฑฮฝฯ„ฮตฯ‚ แฝ‘ฮผแฟ–ฮฝ แผฮผฮฑฯฯ„แฝฑฮฝฮตฮนฮฝ. แผฮณแฝผ ฮดแฝณ, แฝ…ฯ„ฮน ฮผแฝณฮฝ
76+
ฯ€ฮฟฯ„แพฟ แผฮพแฟ†ฮฝ ฯ„แฟ‡ ฯ€แฝนฮปฮตฮน ฮบฮฑแฝถ ฯ„แฝฐ ฮฑแฝ‘ฯ„แฟ†ฯ‚ แผ”ฯ‡ฮตฮนฮฝ แผ€ฯƒฯ†ฮฑฮปแฟถฯ‚ ฮบฮฑแฝถ ฮฆแฝทฮปฮนฯ€ฯ€ฮฟฮฝ
77+
ฯ„ฮนฮผฯ‰ฯแฝตฯƒฮฑฯƒฮธฮฑฮน, ฮบฮฑแฝถ ฮผแฝฑฮปแพฟ แผ€ฮบฯฮนฮฒแฟถฯ‚ ฮฟแผถฮดฮฑฮ‡ แผฯ€แพฟ แผฮผฮฟแฟฆ ฮณแฝฑฯ, ฮฟแฝ ฯ€แฝฑฮปฮฑฮน
78+
ฮณแฝณฮณฮฟฮฝฮตฮฝ ฯ„ฮฑแฟฆฯ„แพฟ แผ€ฮผฯ†แฝนฯ„ฮตฯฮฑฮ‡ ฮฝแฟฆฮฝ ฮผแฝณฮฝฯ„ฮฟฮน ฯ€แฝณฯ€ฮตฮนฯƒฮผฮฑฮน ฯ„ฮฟแฟฆฮธแพฟ แผฑฮบฮฑฮฝแฝธฮฝ
79+
ฯ€ฯฮฟฮปฮฑฮฒฮตแฟ–ฮฝ แผกฮผแฟ–ฮฝ ฮตแผถฮฝฮฑฮน ฯ„แฝดฮฝ ฯ€ฯแฝฝฯ„ฮทฮฝ, แฝ…ฯ€ฯ‰ฯ‚ ฯ„ฮฟแฝบฯ‚ ฯƒฯ…ฮผฮผแฝฑฯ‡ฮฟฯ…ฯ‚
80+
ฯƒแฝฝฯƒฮฟฮผฮตฮฝ. แผแฝฐฮฝ ฮณแฝฐฯ ฯ„ฮฟแฟฆฯ„ฮฟ ฮฒฮตฮฒฮฑแฝทฯ‰ฯ‚ แฝ‘ฯ€แฝฑฯฮพแฟƒ, ฯ„แฝนฯ„ฮต ฮบฮฑแฝถ ฯ€ฮตฯแฝถ ฯ„ฮฟแฟฆ
81+
ฯ„แฝทฮฝฮฑ ฯ„ฮนฮผฯ‰ฯแฝตฯƒฮตฯ„ฮฑแฝท ฯ„ฮนฯ‚ ฮบฮฑแฝถ แฝƒฮฝ ฯ„ฯแฝนฯ€ฮฟฮฝ แผฮพแฝณฯƒฯ„ฮฑฮน ฯƒฮบฮฟฯ€ฮตแฟ–ฮฝฮ‡ ฯ€ฯแฝถฮฝ ฮดแฝฒ
82+
ฯ„แฝดฮฝ แผ€ฯฯ‡แฝดฮฝ แฝ€ฯฮธแฟถฯ‚ แฝ‘ฯ€ฮฟฮธแฝณฯƒฮธฮฑฮน, ฮผแฝฑฯ„ฮฑฮนฮฟฮฝ แผกฮณฮฟแฟฆฮผฮฑฮน ฯ€ฮตฯแฝถ ฯ„แฟ†ฯ‚
83+
ฯ„ฮตฮปฮตฯ…ฯ„แฟ†ฯ‚ แฝฮฝฯ„ฮนฮฝฮฟแฟฆฮฝ ฯ€ฮฟฮนฮตแฟ–ฯƒฮธฮฑฮน ฮปแฝนฮณฮฟฮฝ.
84+
85+
ฮ”ฮทฮผฮฟฯƒฮธแฝณฮฝฮฟฯ…ฯ‚, ฮ“แฟฝ แพฟฮŸฮปฯ…ฮฝฮธฮนฮฑฮบแฝธฯ‚
86+
87+
Georgian:
88+
89+
From a Unicode conference invitation:
90+
91+
แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒแƒฎแƒšแƒแƒ•แƒ” แƒ’แƒแƒ˜แƒแƒ แƒแƒ— แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ Unicode-แƒ˜แƒก แƒ›แƒ”แƒแƒ—แƒ” แƒกแƒแƒ”แƒ แƒ—แƒแƒจแƒแƒ แƒ˜แƒกแƒ
92+
แƒ™แƒแƒœแƒคแƒ”แƒ แƒ”แƒœแƒชแƒ˜แƒแƒ–แƒ” แƒ“แƒแƒกแƒแƒกแƒฌแƒ แƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ˜แƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ 10-12 แƒ›แƒแƒ แƒขแƒก,
93+
แƒฅ. แƒ›แƒแƒ˜แƒœแƒชแƒจแƒ˜, แƒ’แƒ”แƒ แƒ›แƒแƒœแƒ˜แƒแƒจแƒ˜. แƒ™แƒแƒœแƒคแƒ”แƒ แƒ”แƒœแƒชแƒ˜แƒ แƒจแƒ”แƒฐแƒ™แƒ แƒ”แƒ‘แƒก แƒ”แƒ แƒ—แƒแƒ“ แƒ›แƒกแƒแƒคแƒšแƒ˜แƒแƒก
94+
แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒขแƒ”แƒ‘แƒก แƒ˜แƒกแƒ”แƒ— แƒ“แƒแƒ แƒ’แƒ”แƒ‘แƒจแƒ˜ แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒ˜ แƒ“แƒ Unicode-แƒ˜,
95+
แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒแƒชแƒ˜แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ“แƒ แƒšแƒแƒ™แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ, Unicode-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ
96+
แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒš แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒกแƒ, แƒ“แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒจแƒ˜, แƒจแƒ แƒ˜แƒคแƒขแƒ”แƒ‘แƒจแƒ˜,
97+
แƒขแƒ”แƒฅแƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒกแƒ แƒ“แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ”แƒœแƒแƒ•แƒแƒœ แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒฃแƒš แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒจแƒ˜.
98+
99+
Russian:
100+
101+
From a Unicode conference invitation:
102+
103+
ะ—ะฐั€ะตะณะธัั‚ั€ะธั€ัƒะนั‚ะตััŒ ัะตะนั‡ะฐั ะฝะฐ ะ”ะตััั‚ัƒัŽ ะœะตะถะดัƒะฝะฐั€ะพะดะฝัƒัŽ ะšะพะฝั„ะตั€ะตะฝั†ะธัŽ ะฟะพ
104+
Unicode, ะบะพั‚ะพั€ะฐั ัะพัั‚ะพะธั‚ัั 10-12 ะผะฐั€ั‚ะฐ 1997 ะณะพะดะฐ ะฒ ะœะฐะนะฝั†ะต ะฒ ะ“ะตั€ะผะฐะฝะธะธ.
105+
ะšะพะฝั„ะตั€ะตะฝั†ะธั ัะพะฑะตั€ะตั‚ ัˆะธั€ะพะบะธะน ะบั€ัƒะณ ัะบัะฟะตั€ั‚ะพะฒ ะฟะพ ะฒะพะฟั€ะพัะฐะผ ะณะปะพะฑะฐะปัŒะฝะพะณะพ
106+
ะ˜ะฝั‚ะตั€ะฝะตั‚ะฐ ะธ Unicode, ะปะพะบะฐะปะธะทะฐั†ะธะธ ะธ ะธะฝั‚ะตั€ะฝะฐั†ะธะพะฝะฐะปะธะทะฐั†ะธะธ, ะฒะพะฟะปะพั‰ะตะฝะธัŽ ะธ
107+
ะฟั€ะธะผะตะฝะตะฝะธัŽ Unicode ะฒ ั€ะฐะทะปะธั‡ะฝั‹ั… ะพะฟะตั€ะฐั†ะธะพะฝะฝั‹ั… ัะธัั‚ะตะผะฐั… ะธ ะฟั€ะพะณั€ะฐะผะผะฝั‹ั…
108+
ะฟั€ะธะปะพะถะตะฝะธัั…, ัˆั€ะธั„ั‚ะฐั…, ะฒะตั€ัั‚ะบะต ะธ ะผะฝะพะณะพัะทั‹ั‡ะฝั‹ั… ะบะพะผะฟัŒัŽั‚ะตั€ะฝั‹ั… ัะธัั‚ะตะผะฐั….
109+
110+
Thai (UCS Level 2):
111+
112+
Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese
113+
classic 'San Gua'):
114+
115+
[----------------------------|------------------------]
116+
เน เนเธœเนˆเธ™เธ”เธดเธ™เธฎเธฑเนˆเธ™เน€เธชเธทเนˆเธญเธกเน‚เธ—เธฃเธกเนเธชเธ™เธชเธฑเธ‡เน€เธงเธŠ เธžเธฃเธฐเธ›เธเน€เธเธจเธเธญเธ‡เธšเธนเนŠเธเธนเน‰เธ‚เธถเน‰เธ™เนƒเธซเธกเนˆ
117+
เธชเธดเธšเธชเธญเธ‡เธเธฉเธฑเธ•เธฃเธดเธขเนŒเธเนˆเธญเธ™เธซเธ™เน‰เธฒเนเธฅเธ–เธฑเธ”เน„เธ› เธชเธญเธ‡เธญเธ‡เธ„เนŒเน„เธ‹เธฃเน‰เน‚เธ‡เนˆเน€เธ‚เธฅเธฒเน€เธšเธฒเธ›เธฑเธเธเธฒ
118+
เธ—เธฃเธ‡เธ™เธฑเธšเธ–เธทเธญเธ‚เธฑเธ™เธ—เธตเน€เธ›เน‡เธ™เธ—เธตเนˆเธžเธถเนˆเธ‡ เธšเน‰เธฒเธ™เน€เธกเธทเธญเธ‡เธˆเธถเธ‡เธงเธดเธ›เธฃเธดเธ•เน€เธ›เน‡เธ™เธ™เธฑเธเธซเธ™เธฒ
119+
เน‚เธฎเธˆเธดเน‹เธ™เน€เธฃเธตเธขเธเธ—เธฑเธžเธ—เธฑเนˆเธงเธซเธฑเธงเน€เธกเธทเธญเธ‡เธกเธฒ เธซเธกเธฒเธขเธˆเธฐเธ†เนˆเธฒเธกเธ”เธŠเธฑเนˆเธงเธ•เธฑเธงเธชเธณเธ„เธฑเธ
120+
เน€เธซเธกเธทเธญเธ™เธ‚เธฑเธšเน„เธชเน„เธฅเนˆเน€เธชเธทเธญเธˆเธฒเธเน€เธ„เธซเธฒ เธฃเธฑเธšเธซเธกเธฒเธ›เนˆเธฒเน€เธ‚เน‰เธฒเธกเธฒเน€เธฅเธขเธญเธฒเธชเธฑเธ
121+
เธเนˆเธฒเธขเธญเน‰เธญเธ‡เธญเธธเน‰เธ™เธขเธธเนเธขเธเนƒเธซเน‰เนเธ•เธเธเธฑเธ™ เนƒเธŠเน‰เธชเธฒเธงเธ™เธฑเน‰เธ™เน€เธ›เน‡เธ™เธŠเธ™เธงเธ™เธŠเธทเนˆเธ™เธŠเธงเธ™เนƒเธˆ
122+
เธžเธฅเธฑเธ™เธฅเธดเธ‰เธธเธขเธเธธเธขเธเธตเธเธฅเธฑเธšเธเนˆเธญเน€เธซเธ•เธธ เธŠเนˆเธฒเธ‡เธญเธฒเน€เธžเธจเธˆเธฃเธดเธ‡เธซเธ™เธฒเธŸเน‰เธฒเธฃเน‰เธญเธ‡เน„เธซเน‰
123+
เธ•เน‰เธญเธ‡เธฃเธšเธฃเธฒเธ†เนˆเธฒเธŸเธฑเธ™เธˆเธ™เธšเธฃเธฃเธฅเธฑเธข เธคเน…เธซเธฒเนƒเธ„เธฃเธ„เน‰เธณเธŠเธนเธเธนเน‰เธšเธฃเธฃเธฅเธฑเธ‡เธเนŒ เธฏ
124+
125+
(The above is a two-column text. If combining characters are handled
126+
correctly, the lines of the second column should be aligned with the
127+
| character above.)
128+
129+
Ethiopian:
130+
131+
Proverbs in the Amharic language:
132+
133+
แˆฐแˆ›แ‹ญ แŠ แ‹ญแ‰ณแˆจแˆต แŠ•แŒ‰แˆฅ แŠ แ‹ญแŠจแˆฐแˆตแข
134+
แ‰ฅแˆ‹ แŠซแˆˆแŠ แŠฅแŠ•แ‹ฐแŠ แ‰ฃแ‰ด แ‰ แ‰†แˆ˜แŒ แŠแข
135+
แŒŒแŒฅ แ‹ซแˆˆแ‰คแ‰ฑ แ‰แˆแŒฅแŠ“ แАแ‹แข
136+
แ‹ฐแˆ€ แ‰ แˆ•แˆแˆ™ แ‰…แ‰ค แ‰ฃแ‹ญแŒ แŒฃ แŠ•แŒฃแ‰ต แ‰ แŒˆแ‹ฐแˆˆแ‹แข
137+
แ‹จแŠ แ แ‹ˆแˆˆแˆแ‰ณ แ‰ แ‰…แ‰ค แŠ แ‹ญแ‰ณแˆฝแˆแข
138+
แŠ แ‹ญแŒฅ แ‰ แ‰ แˆ‹ แ‹ณแ‹‹ แ‰ฐแˆ˜แ‰ณแข
139+
แˆฒแ‰ฐแˆจแŒ‰แˆ™ แ‹ญแ‹ฐแˆจแŒแˆ™แข
140+
แ‰€แˆต แ‰ แ‰€แˆตแฅ แ‹•แŠ•แ‰แˆ‹แˆ แ‰ แŠฅแŒแˆฉ แ‹ญแˆ„แ‹ณแˆแข
141+
แ‹ตแˆญ แ‰ขแ‹ซแ‰ฅแˆญ แŠ แŠ•แ‰ แˆณ แ‹ซแˆตแˆญแข
142+
แˆฐแ‹ แŠฅแŠ•แ‹ฐแ‰คแ‰ฑ แŠฅแŠ•แŒ… แŠฅแŠ•แ‹ฐ แŒ‰แˆจแ‰คแ‰ฑ แŠ แ‹ญแ‰ฐแ‹ณแ‹ฐแˆญแˆแข
143+
แŠฅแŒแ‹œแˆญ แ‹จแŠจแˆแ‰ฐแ‹แŠ• แŒ‰แˆฎแˆฎ แˆณแ‹ญแ‹˜แŒ‹แ‹ แŠ แ‹ญแ‹ตแˆญแˆแข
144+
แ‹จแŒŽแˆจแ‰คแ‰ต แˆŒแ‰ฃแฅ แ‰ขแ‹ซแ‹ฉแ‰ต แ‹ญแˆตแ‰… แ‰ฃแ‹ซแ‹ฉแ‰ต แ‹ซแŒ แˆแ‰…แข
145+
แˆฅแˆซ แŠจแˆ˜แแ‰ณแ‰ต แˆแŒ„แŠ• แˆ‹แ‹แ‰ณแ‰ตแข
146+
แ‹“แ‰ฃแ‹ญ แˆ›แ‹ฐแˆชแ‹ซ แ‹จแˆˆแ‹แฅ แŒแŠ•แ‹ต แ‹ญแ‹ž แ‹ญแ‹žแˆซแˆแข
147+
แ‹จแŠฅแˆตแˆ‹แˆ แŠ แŒˆแˆฉ แˆ˜แŠซ แ‹จแŠ แˆžแˆซ แŠ แŒˆแˆฉ แ‹‹แˆญแŠซแข
148+
แ‰ฐแŠ•แŒ‹แˆŽ แ‰ขแ‰ฐแ‰ แ‰ฐแˆ˜แˆแˆถ แ‰ฃแ‰แข
149+
แ‹ˆแ‹ณแŒ…แˆ… แˆ›แˆญ แ‰ขแˆ†แŠ• แŒจแˆญแˆตแˆ… แŠ แ‰ตแˆ‹แˆฐแ‹แข
150+
แŠฅแŒแˆญแˆ…แŠ• แ‰ แแˆซแˆฝแˆ… แˆแŠญ แ‹˜แˆญแŒ‹แข
151+
152+
Runes:
153+
154+
แšปแ›– แšณแšนแšซแšฆ แšฆแšซแ› แšปแ›– แ›’แšขแ›žแ›– แšฉแšพ แšฆแšซแ›— แ›šแšชแšพแ›žแ›– แšพแšฉแšฑแšฆแšนแ›–แšชแšฑแ›žแšขแ›— แšนแ›แšฆ แšฆแšช แšนแ›–แ›ฅแšซ
155+
156+
(Old English, which transcribed into Latin reads 'He cwaeth that he
157+
bude thaem lande northweardum with tha Westsae.' and means 'He said
158+
that he lived in the northern land near the Western Sea.')
159+
160+
Braille:
161+
162+
โกŒโ โ งโ ‘ โ ผโ โ ’ โกโ œโ ‡โ ‘โ นโ ฐโ Ž โกฃโ •โ Œ
163+
164+
โกโ œโ ‡โ ‘โ น โ บโ โ Ž โ ™โ ‘โ โ ™โ ’ โ žโ • โ ƒโ ‘โ ›โ ” โ บโ Šโ นโ ฒ โกนโ ปโ ‘ โ Šโ Ž โ โ • โ ™โ ณโ ƒโ ž
165+
โ ฑโ โ žโ ‘โ งโ ป โ โ ƒโ ณโ ž โ นโ โ žโ ฒ โกนโ ‘ โ —โ ‘โ ›โ Šโ Œโ ป โ •โ ‹ โ ™โ Šโ Ž โ ƒโ ฅโ —โ Šโ โ ‡ โ บโ โ Ž
166+
โ Žโ Šโ ›โ โ ซ โ ƒโ น โ นโ ‘ โ Šโ ‡โ ปโ ›โ นโ โ โ โ ‚ โ นโ ‘ โ Šโ ‡โ ปโ …โ ‚ โ นโ ‘ โ ฅโ โ ™โ ปโ žโ โ …โ ปโ ‚
167+
โ โ โ ™ โ นโ ‘ โ กโ Šโ ‘โ ‹ โ โ ณโ —โ โ ปโ ฒ โกŽโ Šโ —โ •โ •โ ›โ ‘ โ Žโ Šโ ›โ โ ซ โ Šโ žโ ฒ โกโ โ ™
168+
โกŽโ Šโ —โ •โ •โ ›โ ‘โ ฐโ Ž โ โ โ โ ‘ โ บโ โ Ž โ ›โ •โ •โ ™ โ ฅโ โ •โ  โ ฐโกกโ โ โ ›โ ‘โ ‚ โ ‹โ •โ — โ โ โ นโ นโ ”โ › โ ™โ ‘
169+
โ กโ •โ Žโ ‘ โ žโ • โ โ ฅโ ž โ ™โ Šโ Ž โ ™โ โ โ ™ โ žโ •โ ฒ
170+
171+
โก•โ ‡โ ™ โกโ œโ ‡โ ‘โ น โ บโ โ Ž โ โ Ž โ ™โ ‘โ โ ™ โ โ Ž โ  โ ™โ •โ •โ —โ คโ โ โ Šโ ‡โ ฒ
172+
173+
โกโ ”โ ™โ – โกŠ โ ™โ •โ โ ฐโ ž โ โ ‘โ โ  โ žโ • โ Žโ โ น โ นโ โ ž โกŠ โ …โ โ ชโ ‚ โ •โ ‹ โ โ น
174+
โ ชโ  โ …โ โ ชโ ‡โ ซโ ›โ ‘โ ‚ โ ฑโ โ ž โ นโ ปโ ‘ โ Šโ Ž โ โ œโ žโ Šโ Šโ ฅโ ‡โ œโ ‡โ น โ ™โ ‘โ โ ™ โ โ ƒโ ณโ ž
175+
โ  โ ™โ •โ •โ —โ คโ โ โ Šโ ‡โ ฒ โกŠ โ โ Šโ ฃโ ž โ ™โ โ งโ ‘ โ ƒโ ‘โ ฒ โ ”โ Šโ ‡โ ”โ ซโ ‚ โ โ นโ Žโ ‘โ ‡โ ‹โ ‚ โ žโ •
176+
โ —โ ‘โ ›โ œโ ™ โ  โ Šโ •โ ‹โ ‹โ ”โ คโ โ โ Šโ ‡ โ โ Ž โ นโ ‘ โ ™โ ‘โ โ ™โ ‘โ Œ โ โ Šโ ‘โ Šโ ‘ โ •โ ‹ โ Šโ —โ •โ โ โ •โ โ ›โ ปโ น
177+
โ ” โ นโ ‘ โ žโ —โ โ ™โ ‘โ ฒ โกƒโ ฅโ ž โ นโ ‘ โ บโ Šโ Žโ ™โ •โ  โ •โ ‹ โ ณโ — โ โ โ Šโ ‘โ Œโ •โ —โ Ž
178+
โ Šโ Ž โ ” โ นโ ‘ โ Žโ Šโ โ Šโ ‡โ ‘โ † โ โ โ ™ โ โ น โ ฅโ โ ™โ โ ‡โ ‡โ ชโ ซ โ ™โ โ โ ™โ Ž
179+
โ ฉโ โ ‡โ ‡ โ โ •โ ž โ ™โ Šโ Œโ ฅโ —โ ƒ โ Šโ žโ ‚ โ •โ — โ นโ ‘ โกŠโ ณโ โ žโ —โ นโ ฐโ Ž โ ™โ •โ โ ‘ โ ‹โ •โ —โ ฒ โกนโ ณ
180+
โ บโ Šโ ‡โ ‡ โ นโ ปโ ‘โ ‹โ •โ —โ ‘ โ โ ปโ โ Šโ ž โ โ ‘ โ žโ • โ —โ ‘โ โ ‘โ โ žโ ‚ โ ‘โ โ โ ™โ โ žโ Šโ Šโ โ ‡โ ‡โ นโ ‚ โ นโ โ ž
181+
โกโ œโ ‡โ ‘โ น โ บโ โ Ž โ โ Ž โ ™โ ‘โ โ ™ โ โ Ž โ  โ ™โ •โ •โ —โ คโ โ โ Šโ ‡โ ฒ
182+
183+
(The first couple of paragraphs of "A Christmas Carol" by Dickens)
184+
185+
Compact font selection example text:
186+
187+
ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789
188+
abcdefghijklmnopqrstuvwxyz ยฃยฉยตร€ร†ร–รžรŸรฉรถรฟ
189+
โ€“โ€”โ€˜โ€œโ€โ€žโ€ โ€ขโ€ฆโ€ฐโ„ขล“ล ลธลพโ‚ฌ ฮ‘ฮ’ฮ“ฮ”ฮฉฮฑฮฒฮณฮดฯ‰ ะะ‘ะ’ะ“ะ”ะฐะฑะฒะณะด
190+
โˆ€โˆ‚โˆˆโ„โˆงโˆชโ‰กโˆž โ†‘โ†—โ†จโ†ปโ‡ฃ โ”โ”ผโ•”โ•˜โ–‘โ–บโ˜บโ™€ ๏ฌ๏ฟฝโ‘€โ‚‚แผ แธ‚ำฅแบ„ษหโŽืิฑแƒ
191+
192+
Greetings in various languages:
193+
194+
Hello world, ฮšฮฑฮปฮทฮผแฝณฯฮฑ ฮบแฝนฯƒฮผฮต, ใ‚ณใƒณใƒ‹ใƒใƒ
195+
196+
Box drawing alignment tests: โ–ˆ
197+
โ–‰
198+
โ•”โ•โ•โ•ฆโ•โ•โ•— โ”Œโ”€โ”€โ”ฌโ”€โ”€โ” โ•ญโ”€โ”€โ”ฌโ”€โ”€โ•ฎ โ•ญโ”€โ”€โ”ฌโ”€โ”€โ•ฎ โ”โ”โ”โ”ณโ”โ”โ”“ โ”Žโ”’โ”โ”‘ โ•ท โ•ป โ”โ”ฏโ”“ โ”Œโ”ฐโ” โ–Š โ•ฑโ•ฒโ•ฑโ•ฒโ•ณโ•ณโ•ณ
199+
โ•‘โ”Œโ”€โ•จโ”€โ”โ•‘ โ”‚โ•”โ•โ•งโ•โ•—โ”‚ โ”‚โ•’โ•โ•ชโ•โ••โ”‚ โ”‚โ•“โ”€โ•โ”€โ•–โ”‚ โ”ƒโ”Œโ”€โ•‚โ”€โ”โ”ƒ โ”—โ•ƒโ•„โ”™ โ•ถโ”ผโ•ดโ•บโ•‹โ•ธโ” โ”ผโ”จ โ”โ•‹โ”ฅ โ–‹ โ•ฒโ•ฑโ•ฒโ•ฑโ•ณโ•ณโ•ณ
200+
โ•‘โ”‚โ•ฒ โ•ฑโ”‚โ•‘ โ”‚โ•‘ โ•‘โ”‚ โ”‚โ”‚ โ”‚ โ”‚โ”‚ โ”‚โ•‘ โ”ƒ โ•‘โ”‚ โ”ƒโ”‚ โ•ฟ โ”‚โ”ƒ โ”โ•…โ•†โ”“ โ•ต โ•น โ”—โ”ทโ”› โ””โ”ธโ”˜ โ–Œ โ•ฑโ•ฒโ•ฑโ•ฒโ•ณโ•ณโ•ณ
201+
โ• โ•ก โ•ณ โ•žโ•ฃ โ”œโ•ข โ•Ÿโ”ค โ”œโ”ผโ”€โ”ผโ”€โ”ผโ”ค โ”œโ•ซโ”€โ•‚โ”€โ•ซโ”ค โ”ฃโ”ฟโ•พโ”ผโ•ผโ”ฟโ”ซ โ”•โ”›โ”–โ”š โ”Œโ”„โ”„โ” โ•Ž โ”โ”…โ”…โ”“ โ”‹ โ– โ•ฒโ•ฑโ•ฒโ•ฑโ•ณโ•ณโ•ณ
202+
โ•‘โ”‚โ•ฑ โ•ฒโ”‚โ•‘ โ”‚โ•‘ โ•‘โ”‚ โ”‚โ”‚ โ”‚ โ”‚โ”‚ โ”‚โ•‘ โ”ƒ โ•‘โ”‚ โ”ƒโ”‚ โ•ฝ โ”‚โ”ƒ โ–‘โ–‘โ–’โ–’โ–“โ–“โ–ˆโ–ˆ โ”Š โ”† โ•Ž โ• โ”‡ โ”‹ โ–Ž
203+
โ•‘โ””โ”€โ•ฅโ”€โ”˜โ•‘ โ”‚โ•šโ•โ•คโ•โ•โ”‚ โ”‚โ•˜โ•โ•ชโ•โ•›โ”‚ โ”‚โ•™โ”€โ•€โ”€โ•œโ”‚ โ”ƒโ””โ”€โ•‚โ”€โ”˜โ”ƒ โ–‘โ–‘โ–’โ–’โ–“โ–“โ–ˆโ–ˆ โ”Š โ”† โ•Ž โ• โ”‡ โ”‹ โ–
204+
โ•šโ•โ•โ•ฉโ•โ•โ• โ””โ”€โ”€โ”ดโ”€โ”€โ”˜ โ•ฐโ”€โ”€โ”ดโ”€โ”€โ•ฏ โ•ฐโ”€โ”€โ”ดโ”€โ”€โ•ฏ โ”—โ”โ”โ”ปโ”โ”โ”› โ””โ•Œโ•Œโ”˜ โ•Ž โ”—โ•โ•โ”› โ”‹ โ–โ–‚โ–ƒโ–„โ–…โ–†โ–‡โ–ˆ
205+

0 commit comments

Comments
ย (0)