rbpdf 1.18.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 (120) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +35 -0
  3. data/Gemfile +4 -0
  4. data/README.md +68 -0
  5. data/Rakefile +2 -0
  6. data/lib/core/rmagick.rb +85 -0
  7. data/lib/fonts/README.z +2 -0
  8. data/lib/fonts/arialunicid0_cw.rb +1738 -0
  9. data/lib/fonts/cid0cs.rb +21 -0
  10. data/lib/fonts/cid0ct.rb +21 -0
  11. data/lib/fonts/cid0jp.rb +21 -0
  12. data/lib/fonts/cid0kr.rb +21 -0
  13. data/lib/fonts/courier.rb +37 -0
  14. data/lib/fonts/dejavu-fonts-ttf-2.33/AUTHORS +53 -0
  15. data/lib/fonts/dejavu-fonts-ttf-2.33/BUGS +3 -0
  16. data/lib/fonts/dejavu-fonts-ttf-2.33/LICENSE +99 -0
  17. data/lib/fonts/dejavu-fonts-ttf-2.33/NEWS +1315 -0
  18. data/lib/fonts/dejavu-fonts-ttf-2.33/README +59 -0
  19. data/lib/fonts/dejavusans.ctg.z +0 -0
  20. data/lib/fonts/dejavusans.rb +338 -0
  21. data/lib/fonts/dejavusans.z +0 -0
  22. data/lib/fonts/dejavusansb.ctg.z +0 -0
  23. data/lib/fonts/dejavusansb.rb +330 -0
  24. data/lib/fonts/dejavusansb.z +0 -0
  25. data/lib/fonts/dejavusansbi.ctg.z +0 -0
  26. data/lib/fonts/dejavusansbi.rb +297 -0
  27. data/lib/fonts/dejavusansbi.z +0 -0
  28. data/lib/fonts/dejavusansi.ctg.z +0 -0
  29. data/lib/fonts/dejavusansi.rb +305 -0
  30. data/lib/fonts/dejavusansi.z +0 -0
  31. data/lib/fonts/freefont-20080912/AUTHORS +191 -0
  32. data/lib/fonts/freefont-20080912/COPYING +341 -0
  33. data/lib/fonts/freefont-20080912/CREDITS +506 -0
  34. data/lib/fonts/freefont-20080912/ChangeLog +3320 -0
  35. data/lib/fonts/freefont-20080912/INSTALL +81 -0
  36. data/lib/fonts/freefont-20080912/README +108 -0
  37. data/lib/fonts/freemono.ctg.z +0 -0
  38. data/lib/fonts/freemono.rb +203 -0
  39. data/lib/fonts/freemono.z +0 -0
  40. data/lib/fonts/freemonob.ctg.z +0 -0
  41. data/lib/fonts/freemonob.rb +120 -0
  42. data/lib/fonts/freemonob.z +0 -0
  43. data/lib/fonts/freemonobi.ctg.z +0 -0
  44. data/lib/fonts/freemonobi.rb +84 -0
  45. data/lib/fonts/freemonobi.z +0 -0
  46. data/lib/fonts/freemonoi.ctg.z +0 -0
  47. data/lib/fonts/freemonoi.rb +136 -0
  48. data/lib/fonts/freemonoi.z +0 -0
  49. data/lib/fonts/freesans.ctg.z +0 -0
  50. data/lib/fonts/freesans.rb +196 -0
  51. data/lib/fonts/freesans.z +0 -0
  52. data/lib/fonts/freesansb.ctg.z +0 -0
  53. data/lib/fonts/freesansb.rb +136 -0
  54. data/lib/fonts/freesansb.z +0 -0
  55. data/lib/fonts/freesansbi.ctg.z +0 -0
  56. data/lib/fonts/freesansbi.rb +108 -0
  57. data/lib/fonts/freesansbi.z +0 -0
  58. data/lib/fonts/freesansi.ctg.z +0 -0
  59. data/lib/fonts/freesansi.rb +136 -0
  60. data/lib/fonts/freesansi.z +0 -0
  61. data/lib/fonts/freeserif.ctg.z +0 -0
  62. data/lib/fonts/freeserif.rb +285 -0
  63. data/lib/fonts/freeserif.z +0 -0
  64. data/lib/fonts/freeserifb.ctg.z +0 -0
  65. data/lib/fonts/freeserifb.rb +164 -0
  66. data/lib/fonts/freeserifb.z +0 -0
  67. data/lib/fonts/freeserifbi.ctg.z +0 -0
  68. data/lib/fonts/freeserifbi.rb +130 -0
  69. data/lib/fonts/freeserifbi.z +0 -0
  70. data/lib/fonts/freeserifi.ctg.z +0 -0
  71. data/lib/fonts/freeserifi.rb +151 -0
  72. data/lib/fonts/freeserifi.z +0 -0
  73. data/lib/fonts/helvetica.rb +34 -0
  74. data/lib/fonts/helveticab.rb +34 -0
  75. data/lib/fonts/helveticabi.rb +34 -0
  76. data/lib/fonts/helveticai.rb +34 -0
  77. data/lib/fonts/hysmyeongjostdmedium.rb +31 -0
  78. data/lib/fonts/kozgopromedium.rb +47 -0
  79. data/lib/fonts/kozminproregular.rb +46 -0
  80. data/lib/fonts/msungstdlight.rb +23 -0
  81. data/lib/fonts/sjis.rb +834 -0
  82. data/lib/fonts/stsongstdlight.rb +23 -0
  83. data/lib/fonts/symbol.rb +33 -0
  84. data/lib/fonts/times.rb +34 -0
  85. data/lib/fonts/timesb.rb +34 -0
  86. data/lib/fonts/timesbi.rb +34 -0
  87. data/lib/fonts/timesi.rb +34 -0
  88. data/lib/fonts/uni2cid_ac15.rb +23613 -0
  89. data/lib/fonts/uni2cid_ag15.rb +30222 -0
  90. data/lib/fonts/uni2cid_aj16.rb +15705 -0
  91. data/lib/fonts/uni2cid_ak12.rb +17530 -0
  92. data/lib/fonts/zapfdingbats.rb +33 -0
  93. data/lib/htmlcolors.rb +207 -0
  94. data/lib/rbpdf.rb +14472 -0
  95. data/lib/rbpdf/version.rb +3 -0
  96. data/lib/unicode_data.rb +18315 -0
  97. data/logo_example.png +0 -0
  98. data/rbpdf.gemspec +35 -0
  99. data/test/rbpdf_bidi_test.rb +65 -0
  100. data/test/rbpdf_bookmark_test.rb +57 -0
  101. data/test/rbpdf_cell_test.rb +232 -0
  102. data/test/rbpdf_content_test.rb +117 -0
  103. data/test/rbpdf_css_test.rb +318 -0
  104. data/test/rbpdf_dom_test.rb +113 -0
  105. data/test/rbpdf_font_func_test.rb +27 -0
  106. data/test/rbpdf_font_style_test.rb +34 -0
  107. data/test/rbpdf_font_test.rb +181 -0
  108. data/test/rbpdf_format_test.rb +27 -0
  109. data/test/rbpdf_func_test.rb +126 -0
  110. data/test/rbpdf_html_test.rb +164 -0
  111. data/test/rbpdf_htmlcell_test.rb +64 -0
  112. data/test/rbpdf_image_test.rb +108 -0
  113. data/test/rbpdf_test.rb +245 -0
  114. data/test/rbpdf_transaction_test.rb +199 -0
  115. data/test/rbpdf_viewerpreferences_test.rb +37 -0
  116. data/test/rbpdf_write_test.rb +173 -0
  117. data/test/test_helper.rb +1 -0
  118. data/test_unicode.rbpdf +115 -0
  119. data/utf8test.txt +120 -0
  120. metadata +216 -0
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfPageTest < ActiveSupport::TestCase
4
+ class MYPDF < RBPDF
5
+ def putviewerpreferences
6
+ super
7
+ end
8
+ end
9
+
10
+ test "viewerpreferences test" do
11
+ # set array for viewer preferences
12
+ preferences = {
13
+ 'HideToolbar' => true,
14
+ 'HideMenubar' => true,
15
+ 'HideWindowUI' => true,
16
+ 'FitWindow' => true,
17
+ 'CenterWindow' => true,
18
+ 'DisplayDocTitle' => true,
19
+ 'NonFullScreenPageMode' => 'UseNone', # UseNone, UseOutlines, UseThumbs, UseOC
20
+ 'ViewArea' => 'CropBox', # CropBox, BleedBox, TrimBox, ArtBox
21
+ 'ViewClip' => 'CropBox', # CropBox, BleedBox, TrimBox, ArtBox
22
+ 'PrintArea' => 'CropBox', # CropBox, BleedBox, TrimBox, ArtBox
23
+ 'PrintClip' => 'CropBox', # CropBox, BleedBox, TrimBox, ArtBox
24
+ 'PrintScaling' => 'AppDefault', # None, AppDefault
25
+ 'Duplex' => 'DuplexFlipLongEdge', # Simplex, DuplexFlipShortEdge, DuplexFlipLongEdge
26
+ 'PickTrayByPDFSize' => true,
27
+ 'PrintPageRange' => [1,1,2,3],
28
+ 'NumCopies' => 2
29
+ }
30
+
31
+ pdf = MYPDF.new
32
+ pdf.set_viewer_preferences(preferences)
33
+ out = pdf.putviewerpreferences()
34
+
35
+ assert_equal out, '/ViewerPreferences << /Direction /L2R /HideToolbar true /HideMenubar true /HideWindowUI true /FitWindow true /CenterWindow true /DisplayDocTitle true /NonFullScreenPageMode /UseNone /ViewArea /CropBox /ViewClip /CropBox /PrintArea /CropBox /PrintClip /CropBox /PrintScaling /AppDefault /Duplex /DuplexFlipLongEdge /PickTrayByPDFSize true /PrintPageRange [0 0 1 2] /NumCopies 2 >>'
36
+ end
37
+ end
@@ -0,0 +1,173 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfTest < ActiveSupport::TestCase
4
+
5
+ test "write Basic test" do
6
+ pdf = RBPDF.new
7
+
8
+ line = pdf.write(0, "LINE 1")
9
+ assert_equal line, 1
10
+
11
+ line = pdf.write(0, "LINE 1\n")
12
+ assert_equal line, 1
13
+
14
+ line = pdf.write(0, "LINE 1\n2\n")
15
+ assert_equal line, 2
16
+
17
+ line = pdf.write(0, "")
18
+ assert_equal line, 1
19
+
20
+ line = pdf.write(0, "\n")
21
+ assert_equal line, 1
22
+
23
+ line = pdf.write(0, "abcdefghijklmnopgrstuvwxyz01234567890")
24
+ assert_equal line, 1
25
+ line = pdf.write(0, "abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890")
26
+ assert_equal line, 2
27
+ line = pdf.write(0, "abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890")
28
+ assert_equal line, 3
29
+ end
30
+
31
+ test "write Break test single line 1" do
32
+ pdf = RBPDF.new
33
+ pdf.add_page()
34
+
35
+ cell_hight = pdf.get_cell_height_ratio()
36
+ fontsize = pdf.get_font_size()
37
+ break_hight = pdf.set_auto_page_break(true)
38
+
39
+ pno = pdf.get_page
40
+ assert_equal pno, 1
41
+
42
+ 0.upto(60) do |i|
43
+ y = pdf.get_y()
44
+ old_pno = pno
45
+
46
+ line = pdf.write(0, "LINE 1\n")
47
+ assert_equal line, 1
48
+
49
+ pno = pdf.get_page
50
+
51
+ if y + fontsize * cell_hight < break_hight
52
+ assert_equal pno, old_pno
53
+ else
54
+ assert_equal pno, old_pno + 1
55
+ end
56
+ end
57
+ end
58
+
59
+ test "write Break test single line 2" do
60
+ pdf = RBPDF.new
61
+ pdf.add_page()
62
+
63
+ 0.upto(49) do |i|
64
+ line = pdf.write(0, "LINE 1\n")
65
+ assert_equal line, 1
66
+
67
+ pno = pdf.get_page
68
+ assert_equal pno, 1
69
+ end
70
+
71
+ line = pdf.write(0, "abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890")
72
+ assert_equal line, 2
73
+ pno = pdf.get_page
74
+ assert_equal pno, 2
75
+ end
76
+
77
+ test "write Break test multi line 1" do
78
+ pdf = RBPDF.new
79
+ pdf.add_page()
80
+ pno = pdf.get_page
81
+ assert_equal pno, 1
82
+
83
+ line = pdf.write(0, "1\n\n\n\n\n\n\n\n\n\n 2\n\n\n\n\n\n\n\n\n\n 3\n\n\n\n\n\n\n\n\n\n 4\n\n\n\n\n\n\n\n\n\n")
84
+ assert_equal line, 40
85
+ pno = pdf.get_page
86
+ assert_equal pno, 1
87
+
88
+ line = pdf.write(0, "1\n\n\n\n\n\n\n\n\n\n 2\n\n\n\n\n\n\n\n\n\n 3\n\n\n\n\n\n\n\n\n\n 4\n\n\n\n\n\n\n\n\n\n")
89
+ assert_equal line, 40
90
+ pno = pdf.get_page
91
+ assert_equal pno, 2
92
+ end
93
+
94
+ test "write Break test multi line 2" do
95
+ pdf = RBPDF.new
96
+ pdf.add_page()
97
+ pno = pdf.get_page
98
+ assert_equal pno, 1
99
+
100
+ line = pdf.write(0, "1\n\n\n\n\n\n\n\n\n\n 2\n\n\n\n\n\n\n\n\n\n 3\n\n\n\n\n\n\n\n\n\n 4\n\n\n\n\n\n\n\n\n\n 5\n\n\n\n\n\n\n\n\n\n 6\n\n\n\n\n\n\n\n\n\n 7\n\n\n\n\n\n\n\n\n\n 8\n\n\n\n\n\n\n\n\n\n 9\n\n\n\n\n\n\n\n\n\n 10\n\n\n\n\n\n\n\n\n\n 11\n\n\n\n\n\n\n\n\n\n")
101
+ assert_equal line, 110
102
+ pno = pdf.get_page
103
+ assert_equal pno, 3
104
+ end
105
+
106
+ test "write firstline test" do
107
+ pdf = RBPDF.new
108
+ pdf.add_page()
109
+ pno = pdf.get_page
110
+ assert_equal pno, 1
111
+
112
+ line = pdf.write(0, "\n", nil, 0, '', false, 0, true)
113
+ assert_equal line, "\n"
114
+
115
+ line = pdf.write(0, "\n", nil, 0, '', false, 0, true)
116
+ assert_equal line, "\n"
117
+
118
+ line = pdf.write(0, "12345\n", nil, 0, '', false, 0, true)
119
+ assert_equal line, "\n"
120
+
121
+ line = pdf.write(0, "12345\nabcde", nil, 0, '', false, 0, true)
122
+ assert_equal line, "\nabcde"
123
+
124
+ line = pdf.write(0, "12345\nabcde\n", nil, 0, '', false, 0, true)
125
+ assert_equal line, "\nabcde\n"
126
+
127
+ line = pdf.write(0, "12345\nabcde\nefgh", nil, 0, '', false, 0, true)
128
+ assert_equal line, "\nabcde\nefgh"
129
+ end
130
+
131
+ class MYPDF < RBPDF
132
+ def endlinex
133
+ @endlinex
134
+ end
135
+ def r_margin
136
+ @r_margin
137
+ end
138
+ end
139
+
140
+ test "write endline x test 1" do
141
+ pdf = MYPDF.new
142
+ pdf.add_page()
143
+ line = pdf.write(0, " cccccccccc cccccccccc ", nil, 0, '', false, 0, true)
144
+ endlinex = pdf.endlinex()
145
+ assert_not_equal endlinex, 0
146
+ end
147
+
148
+ test "write endline x test 2" do
149
+ pdf = MYPDF.new
150
+ pdf.add_page()
151
+
152
+ r_margin = pdf.r_margin()
153
+ width = pdf.getPageWidth()
154
+ x = width - r_margin - 10
155
+ pdf.SetX(x)
156
+ line = pdf.write(0, " cccccccccc cccccccccc ", nil, 0, '', false, 0, true)
157
+ endlinex = pdf.endlinex()
158
+ assert_equal endlinex, x
159
+ end
160
+
161
+ test "write endline x test 3" do
162
+ pdf = MYPDF.new
163
+ pdf.add_page()
164
+
165
+ r_margin = pdf.r_margin()
166
+ width = pdf.getPageWidth()
167
+ x = width - r_margin - 10
168
+ pdf.SetX(x)
169
+ line = pdf.write(0, "cccccccccc cccccccccc ", nil, 0, '', false, 0, true)
170
+ endlinex = pdf.endlinex()
171
+ assert_not_equal endlinex, x
172
+ end
173
+ end
@@ -0,0 +1 @@
1
+ #!/usr/bin/env ruby
@@ -0,0 +1,115 @@
1
+ <%
2
+ doc_title = "test title"
3
+ doc_subject = "test description"
4
+ doc_keywords = "test keywords"
5
+ htmlcontent = "&lt; € &euro; &#8364; &amp; è &egrave; &copy; &gt;<br /><h1>heading 1</h1><h2>heading 2</h2><h3>heading 3</h3><h4>heading 4</h4><h5>heading 5</h5><h6>heading 6</h6>ordered list:<br /><ol><li><b>bold text</b></li><li><i>italic text</i></li><li><u>underlined text</u></li><li><a href=\"http:#www.tecnick.com\">link to http://www.tecnick.com</a></li><li>test break<br />second line<br />third line</li><li><font size=\"+3\">font + 3</font></li><li><small>small text</small></li><li>normal <sub>subscript</sub> <sup>superscript</sup></li></ul><hr />table:<br /><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\"><tr><th>#</th><th>A</th><th>B</th></tr><tr><th>1</th><td bgcolor=\"#cccccc\">A1</td><td>B1</td></tr><tr><th>2</th><td>A2 € &euro; &#8364; &amp; è &egrave; </td><td>B2</td></tr><tr><th>3</th><td>A3</td><td><font color=\"#FF0000\">B3</font></td></tr></table><hr />image:<br /><img src=\"#{File.join(Rails.root.to_s, 'public')}/logo_example.png\" alt=\"test alt attribute\" width=\"100\" height=\"100\" border=\"0\" />"
6
+
7
+
8
+ # ENGLISH
9
+
10
+ @l = {}
11
+
12
+ # PAGE META DESCRIPTORS --------------------------------------
13
+
14
+ @l['a_meta_charset'] = "UTF-8"
15
+ @l['a_meta_dir'] = "ltr"
16
+ @l['a_meta_language'] = "en"
17
+
18
+ # TRANSLATIONS --------------------------------------
19
+ @l['w_page'] = "page"
20
+
21
+
22
+ # create new PDF document (document units are set by default to millimeters)
23
+ pdf = RBPDF.new
24
+
25
+ # set document information
26
+ pdf.set_creator("RBPDF")
27
+ pdf.set_author("RBPDF")
28
+ pdf.set_title(doc_title)
29
+ pdf.set_subject(doc_subject)
30
+ pdf.set_keywords(doc_keywords)
31
+
32
+ pdf.set_header_data("#{File.join(Rails.root.to_s, 'public')}/logo_example.png", 20, "header title", "first row\nsecond row\nthird row")
33
+
34
+ #set margins
35
+ pdf.set_margins(15, 27, 15)
36
+ #set auto page breaks
37
+ pdf.set_auto_page_break(true, 25)
38
+ pdf.set_print_header
39
+ pdf.set_print_footer
40
+ pdf.set_header_margin(5)
41
+ pdf.set_footer_margin(10)
42
+ pdf.set_image_scale(4); #set image scale factor
43
+
44
+ pdf.set_header_font(["FreeSans", '', 10])
45
+ pdf.set_footer_font(["FreeSans", '', 8])
46
+
47
+ pdf.set_language_array(@l) # set language items
48
+
49
+
50
+ #initialize document
51
+ pdf.alias_nb_pages()
52
+
53
+ pdf.add_page()
54
+
55
+ # set barcode
56
+ # pdf.set_barcode(Time.now.strftime("Y-m-d H:i:s"))
57
+
58
+ # output some HTML code
59
+ pdf.set_font("times", "", 10)
60
+
61
+ pdf.write_html(htmlcontent, true, 0)
62
+
63
+ # output two html columns
64
+ first_column_width = 80
65
+ current_y_position = pdf.get_y()
66
+ pdf.write_html_cell(first_column_width, 0, '', current_y_position, "<b>hello</b>", 0, 0, 0)
67
+ pdf.write_html_cell(0, 0, first_column_width, current_y_position, "<i>world</i>", 0, 1, 0)
68
+
69
+ # output some content
70
+ pdf.set_font("times", "BI", 20)
71
+ pdf.cell(0,10,"TEST Bold-Italic Cell",1,1,'C')
72
+
73
+ # output some UTF-8 test content
74
+ pdf.add_page()
75
+ pdf.set_font("FreeSerif", "", 12)
76
+ utf8text = open(File.join(Rails.root.to_s, 'public',"utf8test.txt"), "rb").read # get utf-8 text form file
77
+ pdf.set_fill_color(230, 240, 255, true)
78
+ pdf.write(5, utf8text, '', 1)
79
+
80
+ # remove page header/footer
81
+ pdf.set_print_header(false)
82
+ pdf.set_print_footer(false)
83
+
84
+ # Two HTML columns test
85
+ pdf.add_page()
86
+ right_column = "<b>right column</b> right column right column right column right column
87
+ right column right column right column right column right column right column
88
+ right column right column right column right column right column right column"
89
+ left_column = "<b>left column</b> left column left column left column left column left
90
+ column left column left column left column left column left column left column
91
+ left column left column left column left column left column left column left
92
+ column"
93
+ first_column_width = 80
94
+ second_column_width = 80
95
+ column_space = 20
96
+ current_y_position = pdf.get_y()
97
+ pdf.write_html_cell(first_column_width, 0, '', '', left_column, 1, 0, 0)
98
+ pdf.cell(0)
99
+ pdf.write_html_cell(second_column_width, 0, first_column_width+column_space, current_y_position, right_column, 0, 0, 0)
100
+
101
+ # add page header/footer
102
+ pdf.set_print_header(true)
103
+ pdf.set_print_footer(true)
104
+
105
+ pdf.add_page()
106
+
107
+ # multi_cell test
108
+ pdf.multi_cell(40, 5, "A test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0, 0)
109
+ pdf.multi_cell(40, 5, "B test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0)
110
+ pdf.multi_cell(40, 5, "C test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0, 0)
111
+ pdf.multi_cell(40, 5, "D test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0, 2)
112
+ pdf.multi_cell(40, 5, "F test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0)
113
+
114
+ #Close and output PDF document
115
+ %><%==pdf.output()%>
data/utf8test.txt ADDED
@@ -0,0 +1,120 @@
1
+ Sentences that contain all letters commonly used in a language
2
+ --------------------------------------------------------------
3
+
4
+ Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> -- 2001-09-02
5
+
6
+ This file is UTF-8 encoded.
7
+
8
+
9
+ Danish (da)
10
+ ---------
11
+
12
+ Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen
13
+ Wolther spillede på xylofon.
14
+ (= Quiz contestants were eating strawbery with cream while Wolther
15
+ the circus clown played on xylophone.)
16
+
17
+ German (de)
18
+ -----------
19
+
20
+ Falsches Üben von Xylophonmusik quält jeden größeren Zwerg
21
+ (= Wrongful practicing of xylophone music tortures every larger dwarf)
22
+
23
+ Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich
24
+ (= Twelve boxing fighters hunted Eva across the dike of Sylt)
25
+
26
+ Heizölrückstoßabdämpfung
27
+ (= fuel oil recoil absorber)
28
+ (jqvwxy missing, but all non-ASCII letters in one word)
29
+
30
+ English (en)
31
+ ------------
32
+
33
+ The quick brown fox jumps over the lazy dog
34
+
35
+ Spanish (es)
36
+ ------------
37
+
38
+ El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y
39
+ frío, añoraba a su querido cachorro.
40
+ (Contains every letter and every accent, but not every combination
41
+ of vowel + acute.)
42
+
43
+ French (fr)
44
+ -----------
45
+
46
+ Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à
47
+ côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce
48
+ qui lui permet de penser à la cænogenèse de l'être dont il est question
49
+ dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui,
50
+ pense-t-il, diminue çà et là la qualité de son œuvre.
51
+
52
+ l'île exiguë
53
+ Où l'obèse jury mûr
54
+ Fête l'haï volapük,
55
+ Âne ex aéquo au whist,
56
+ Ôtez ce vœu déçu.
57
+
58
+ Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en
59
+ canoë au delà des îles, près du mälström où brûlent les novæ.
60
+
61
+ Irish Gaelic (ga)
62
+ -----------------
63
+
64
+ D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh
65
+
66
+ Hungarian (hu)
67
+ --------------
68
+
69
+ Árvíztűrő tükörfúrógép
70
+ (= flood-proof mirror-drilling machine, only all non-ASCII letters)
71
+
72
+ Icelandic (is)
73
+ --------------
74
+
75
+ Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa
76
+
77
+ Sævör grét áðan því úlpan var ónýt
78
+ (some ASCII letters missing)
79
+
80
+ Greek (el)
81
+ -------------
82
+
83
+ Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο
84
+ (= No more shall I see acacias or myrtles in the golden clearing)
85
+
86
+ Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία
87
+ (= I uncover the soul-destroying abhorrence)
88
+
89
+ Hebrew (iw)
90
+ -----------
91
+
92
+ ? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה
93
+
94
+ Polish (pl)
95
+ -----------
96
+
97
+ Pchnąć w tę łódź jeża lub ośm skrzyń fig
98
+ (= To push a hedgehog or eight bins of figs in this boat)
99
+
100
+ Russian (ru)
101
+ ------------
102
+
103
+ В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!
104
+ (= Would a citrus live in the bushes of south? Yes, but only a fake one!)
105
+
106
+ Thai (th)
107
+ ---------
108
+
109
+ [--------------------------|------------------------]
110
+ ๏ เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน
111
+ จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร
112
+ ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย
113
+ ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋าๆ น่าฟังเอย ฯ
114
+
115
+ [The copyright for the Thai example is owned by The Computer
116
+ Association of Thailand under the Royal Patronage of His Majesty the
117
+ King.]
118
+
119
+ Please let me know if you find others! Special thanks to the people
120
+ from all over the world who contributed these sentences.