1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816
|
Build instructions for the Debian source package
------------------------------------------------
- Remove the following font files:
fonts/LeERC___.AFM
fonts/LeERC___.PFB
fonts/luxiserif.ttf
fonts/luxiserif_license.txt
fonts/rina.ttf
fonts/rina_license.txt
- Add the following font files:
fonts/Dustismo_Roman.ttf
fonts/PenguinAttack.ttf
fonts/Wargames.afm
fonts/Wargames.pfb
- Apply the following patch, then build the source package.
diff -ur reportlab/demos/odyssey/odyssey.txt ./demos/odyssey/odyssey.txt
--- reportlab/demos/odyssey/odyssey.txt 2003-11-20 09:30:30.000000000 +0100
+++ ./demos/odyssey/odyssey.txt 2004-02-06 11:10:42.000000000 +0100
@@ -1,91 +1,51 @@
-Provided by The Internet Classics Archive.
-See bottom for copyright. Available online at
+This is a placeholder for the English Odyssey translation
+provided by The Internet Classics Archive, which is
+available online at
http://classics.mit.edu//Homer/odyssey.html
-The Odyssey
-By Homer
+Not The Odyssey
+Not By Homer
-Translated by Samuel Butler
+Not Translated by Samuel Butler
----------------------------------------------------------------------
BOOK I
<bullet indent="-18"><font name="courier" size="13" color="blue">I</font></bullet><font color="green"><b><i>Tell</i></b></font> me, O muse, of that ingenious hero who travelled far and wide
a b c &| & | <b>A</b>' <b>A</b> ' after he had sacked the famous town of <font color="red" size="12"><b>Troy</b></font>. Many cities did he visit,
-and many were the nations with whose manners and customs he was acquainted;
-moreover he suffered much by sea while trying to save his own life
-and bring his men safely home; but do what he might he could not
-save<super><font color="red">1</font></super>
-his men, for they perished through their own sheer folly in eating
-the cattle of the Sun-god Hyperion; so the god prevented them from
-ever reaching home. Tell me, too, about all these things, O daughter
-of Jove, from whatsoever source you may know them.
-
-So now all who escaped death in battle or by shipwreck had got safely
-home except Ulysses, and he, though he was longing to return to his
-wife and country, was detained by the goddess Calypso, who had got
-him into a large cave and wanted to marry him. But as years went by,
-there came a time when the gods settled that he should go back to
-Ithaca; even then, however, when he was among his own people, his
-troubles were not yet over; nevertheless all the gods had now begun
-to pity him except Neptune, who still persecuted him without ceasing
-and would not let him get home.
-
-<font color="green">Now Neptune had gone off to the Ethiopians, who are at the world's
-end, and lie in two halves, the one looking West and the other East.
-He had gone there to accept a hecatomb of sheep and oxen, and was
-enjoying himself at his festival; but the other gods met in the house
-of Olympian Jove, and the sire of gods and men spoke first. At that
-moment he was thinking of Aegisthus, who had been killed by Agamemnon's
-son Orestes; so he said to the other gods:</font>
-
-"See now, how men lay blame upon us gods for what is after all nothing
-but their own folly. Look at Aegisthus; he must needs make love to
-Agamemnon's wife unrighteously and then kill Agamemnon, though he
-knew it would be the death of him; for I sent Mercury to warn him
-not to do either of these things, inasmuch as Orestes would be sure
-to take his revenge when he grew up and wanted to return home. Mercury
-told him this in all good will but he would not listen, and now he
-has paid for everything in full."
-
-Then Minerva said, "Father, son of Saturn, King of kings, it served
-Aegisthus right, and so it would any one else who does as he did;
-but Aegisthus is neither here nor there; it is for Ulysses that my
-heart bleeds, when I think of his sufferings in that lonely sea-girt
-island, far away, poor man, from all his friends. It is an island
-covered with forest, in the very middle of the sea, and a goddess
-lives there, daughter of the magician Atlas, who looks after the bottom
-of the ocean, and carries the great columns that keep heaven and earth
-asunder. This daughter of Atlas has got hold of poor unhappy Ulysses,
-and keeps trying by every kind of blandishment to make him forget
-his home, so that he is tired of life, and thinks of nothing but how
-he may once more see the smoke of his own chimneys. You, sir, take
-no heed of this, and yet when Ulysses was before Troy did he not propitiate
-you with many a burnt sacrifice? Why then should you keep on being
-so angry with him?"
-
-And Jove said, "My child, what are you talking about? How can I forget
-Ulysses than whom there is no more capable man on earth, nor more
-liberal in his offerings to the immortal gods that live in heaven?
-Bear in mind, however, that Neptune is still furious with Ulysses
-for having blinded an eye of Polyphemus king of the Cyclopes. Polyphemus
-is son to Neptune by the nymph Thoosa, daughter to the sea-king Phorcys;
-therefore though he will not kill Ulysses outright, he torments him
-by preventing him from getting home. Still, let us lay our heads together
-and see how we can help him to return; Neptune will then be pacified,
-for if we are all of a mind he can hardly stand out against us."
-
-And Minerva said, "Father, son of Saturn, King of kings, if, then,
-the gods now mean that Ulysses should get home, we should first send
-Mercury to the Ogygian island to tell Calypso that we have made up
-our minds and that he is to return. In the meantime I will go to Ithaca,
-to put heart into Ulysses' son Telemachus; I will embolden him to
-call the Achaeans in assembly, and speak out to the suitors of his
-mother Penelope, who persist in eating up any number of his sheep
-and oxen; I will also conduct him to Sparta and to Pylos, to see if
-he can hear anything about the return of his dear father- for this
-will make people speak well of him."
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+ save<super><font color=red>1</font></super>
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well.
+
+This paragraph he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well.
+
+<font color=green>This paragraph he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well.</font>
+
+"This paragraph he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well."
+
+And he replied,
+"This paragraph he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well."
Ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis.
Ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis.
@@ -97,106 +57,46 @@
Ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis.
Ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis ellipsis.
-"Men of Ithaca, it is all your own fault that things have turned out
-as they have; you would not listen to me, nor yet to Mentor, when
-we bade you check the folly of your sons who were doing much wrong
-in the wantonness of their hearts- wasting the substance and dishonouring
-the wife of a chieftain who they thought would not return. Now, however,
-let it be as I say, and do as I tell you. Do not go out against Ulysses,
-or you may find that you have been drawing down evil on your own heads."
-
-This was what he said, and more than half raised a loud shout, and
-at once left the assembly. But the rest stayed where they were, for
-the speech of Halitherses displeased them, and they sided with Eupeithes;
-they therefore hurried off for their armour, and when they had armed
-themselves, they met together in front of the city, and Eupeithes
-led them on in their folly. He thought he was going to avenge the
-murder of his son, whereas in truth he was never to return, but was
-himself to perish in his attempt.
-
-Then Minerva said to Jove, "Father, son of Saturn, king of kings,
-answer me this question- What do you propose to do? Will you set them
-fighting still further, or will you make peace between them?"
-
-And Jove answered, "My child, why should you ask me? Was it not by
-your own arrangement that Ulysses came home and took his revenge upon
-the suitors? Do whatever you like, but I will tell you what I think
-will be most reasonable arrangement. Now that Ulysses is revenged,
-let them swear to a solemn covenant, in virtue of which he shall continue
-to rule, while we cause the others to forgive and forget the massacre
-of their sons and brothers. Let them then all become friends as heretofore,
-and let peace and plenty reign."
-
-This was what Minerva was already eager to bring about, so down she
-darted from off the topmost summits of Olympus.
-
-Now when Laertes and the others had done dinner, Ulysses began by
-saying, "Some of you go out and see if they are not getting close
-up to us." So one of Dolius's sons went as he was bid. Standing on
-the threshold he could see them all quite near, and said to Ulysses,
-"Here they are, let us put on our armour at once."
-
-They put on their armour as fast as they could- that is to say Ulysses,
-his three men, and the six sons of Dolius. Laertes also and Dolius
-did the same- warriors by necessity in spite of their grey hair. When
-they had all put on their armour, they opened the gate and sallied
-forth, Ulysses leading the way.
-
-Then Jove's daughter Minerva came up to them, having assumed the form
-and voice of Mentor. Ulysses was glad when he saw her, and said to
-his son Telemachus, "Telemachus, now that are about to fight in an
-engagement, which will show every man's mettle, be sure not to disgrace
-your ancestors, who were eminent for their strength and courage all
-the world over."
-
-"You say truly, my dear father," answered Telemachus, "and you shall
-see, if you will, that I am in no mind to disgrace your family."
-
-Laertes was delighted when he heard this. "Good heavens, he exclaimed,
-"what a day I am enjoying: I do indeed rejoice at it. My son and grandson
-are vying with one another in the matter of valour."
-
-On this Minerva came close up to him and said, "Son of Arceisius-
-best friend I have in the world- pray to the blue-eyed damsel, and
-to Jove her father; then poise your spear and hurl it."
-
-As she spoke she infused fresh vigour into him, and when he had prayed
-to her he poised his spear and hurled it. He hit Eupeithes' helmet,
-and the spear went right through it, for the helmet stayed it not,
-and his armour rang rattling round him as he fell heavily to the ground.
-Meantime Ulysses and his son fell the front line of the foe and smote
-them with their swords and spears; indeed, they would have killed
-every one of them, and prevented them from ever getting home again,
-only Minerva raised her voice aloud, and made every one pause. "Men
-of Ithaca," she cried, cease this dreadful war, and settle the matter
-at once without further bloodshed."
-
-On this pale fear seized every one; they were so frightened that their
-arms dropped from their hands and fell upon the ground at the sound
-of the goddess's voice, and they fled back to the city for their lives.
-But Ulysses gave a great cry, and gathering himself together swooped
-down like a soaring eagle. Then the son of Saturn sent a thunderbolt
-of fire that fell just in front of Minerva, so she said to Ulysses,
-"Ulysses, noble son of Laertes, stop this warful strife, or Jove will
-be angry with you."
-
-Thus spoke Minerva, and Ulysses obeyed her gladly. Then Minerva assumed
-the form and voice of Mentor, and presently made a covenant of peace
-between the two contending parties.
+And he went on,
+"This paragraph he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well."
+
+This paragraph he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well.
+
+This paragraph he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well.
+
+This paragraph he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well.
+
+This paragraph he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless,
+and this sentence he intentionally left meaningless as well.
THE END
----------------------------------------------------------------------
Copyright statement:
-The Internet Classics Archive by Daniel C. Stevenson, Web Atomics.
-World Wide Web presentation is copyright (C) 1994-1998, Daniel
-C. Stevenson, Web Atomics.
-All rights reserved under international and pan-American copyright
-conventions, including the right of reproduction in whole or in part
-in any form. Direct permission requests to classics@classics.mit.edu.
-Translation of "The Deeds of the Divine Augustus" by Augustus is
-copyright (C) Thomas Bushnell, BSG.
+This text is nonsense, therefore I don't claim any copyright.
To really test that reportlab can produce pages quickly download the
diff -ur reportlab/docs/graphguide/ch3_shapes.py ./docs/graphguide/ch3_shapes.py
--- reportlab/docs/graphguide/ch3_shapes.py 2002-07-24 21:56:35.000000000 +0200
+++ ./docs/graphguide/ch3_shapes.py 2004-02-06 11:07:12.000000000 +0100
@@ -225,7 +225,7 @@
disc("""
Here is a more fancy example using the code snippet below.
Please consult the ReportLab User Guide to see how non-standard
-like 'LettErrorRobot-Chrome' fonts are being registered!
+like 'Wargames' fonts are being registered!
""")
eg("""
@@ -240,7 +240,7 @@
fontSize=36))
d.add(String(150, 160, 'Hello World',
- fontName='LettErrorRobot-Chrome',
+ fontName='Wargames',
fontSize=36))
""")
@@ -249,7 +249,7 @@
rl_config.warnOnMissingFontGlyphs = 0
afmFile, pfbFile = getJustFontPaths()
T1face = pdfmetrics.EmbeddedType1Face(afmFile, pfbFile)
-T1faceName = 'LettErrorRobot-Chrome'
+T1faceName = 'Wargames'
pdfmetrics.registerTypeFace(T1face)
T1font = pdfmetrics.Font(T1faceName, T1faceName, 'WinAnsiEncoding')
pdfmetrics.registerFont(T1font)
@@ -265,7 +265,7 @@
fontSize=36))
d.add(String(150, 160, 'Hello World',
- fontName='LettErrorRobot-Chrome',
+ fontName='Wargames',
fontSize=36))
draw(d, 'fancy font example')
diff -ur reportlab/docs/userguide/ch1_intro.py ./docs/userguide/ch1_intro.py
--- reportlab/docs/userguide/ch1_intro.py 2003-09-09 09:31:24.000000000 +0200
+++ ./docs/userguide/ch1_intro.py 2004-02-06 11:07:12.000000000 +0100
@@ -150,6 +150,10 @@
are glad to include these in the toolkit. Finally we thank Bigelow & Holmes Inc ($design@bigelowandholmes.com$)
for Luxi Serif Regular and Ray Larabie ($http://www.larabiefonts.com$) for the Rina TrueType font.""")
+disc("""Remark regarding the Debian package: Sadly, these three fonts have non-free
+licenses and therefore are not provided with the Debian package of ReportLab. The Debian package
+replaces this fonts with GPL fonts by Dustin Norlander.""")
+
heading2("Installation and Setup")
disc("""
diff -ur reportlab/docs/userguide/ch2a_fonts.py ./docs/userguide/ch2a_fonts.py
--- reportlab/docs/userguide/ch2a_fonts.py 2004-01-21 09:33:02.000000000 +0100
+++ ./docs/userguide/ch2a_fonts.py 2004-02-06 11:16:00.000000000 +0100
@@ -42,7 +42,10 @@
donated a font named <i>LettErrorRobot-Chrome</i> which we may
use for testing and/or documenting purposes (and which you may
use as well). It comes bundled with the ReportLab distribution in the
-directory $reportlab/fonts$.
+directory $reportlab/fonts$ This font can't be shipped with the
+Debian package of ReportLab, since it license is not free. Instead,
+we use an subset of Dustin Norlander's font <i>Wargames</i>, which
+can be distributed freely (under the terms of the GPL).
""")
disc("""
@@ -52,7 +55,7 @@
('glyphs') in the font such as height, width, bounding box info and
other 'metrics', while the latter is a binary file that describes the
shapes of the font. The $reportlab/fonts$ directory contains the files
-$'LeERC___.AFM'$ and $'LeERC___.PFB'$ that are used as an example
+$'Wargames.afm'$ and $'Wargames.pfb'$ that are used as an example
font.
""")
@@ -67,21 +70,21 @@
import os
import reportlab
folder = os.path.dirname(reportlab.__file__) + os.sep + 'fonts'
-afmFile = os.path.join(folder, 'LeERC___.AFM')
-pfbFile = os.path.join(folder, 'LeERC___.PFB')
+afmFile = os.path.join(folder, 'Wargames.afm')
+pfbFile = os.path.join(folder, 'Wargames.pfb')
from reportlab.pdfbase import pdfmetrics
justFace = pdfmetrics.EmbeddedType1Face(afmFile, pfbFile)
-faceName = 'LettErrorRobot-Chrome' # pulled from AFM file
+faceName = 'Wargames' # pulled from AFM file
pdfmetrics.registerTypeFace(justFace)
-justFont = pdfmetrics.Font('LettErrorRobot-Chrome',
+justFont = pdfmetrics.Font('Wargames',
faceName,
'WinAnsiEncoding')
pdfmetrics.registerFont(justFont)
-canvas.setFont('LettErrorRobot-Chrome', 32)
+canvas.setFont('Wargames', 32)
canvas.drawString(10, 150, 'This should be in')
-canvas.drawString(10, 100, 'LettErrorRobot-Chrome')
+canvas.drawString(10, 100, 'Wargames')
""")
illust(examples.customfont1, "Using a very non-standard font")
@@ -119,7 +122,7 @@
""")
disc("""
-In the <i>LettErrorRobot-Chrome</i> example we explicitely specified
+In the <i>Wargames</i> example we explicitely specified
the place of the font description files to be loaded.
In general, you'll prefer to store your fonts in some canonic
locations and make the embedding mechanism aware of them.
@@ -573,12 +576,12 @@
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
-pdfmetrics.registerFont(TTFont('Rina', 'rina.ttf'))
-canvas.setFont(Rina, 32)
+pdfmetrics.registerFont(TTFont('PenguinAttack', 'PenguinAttack.ttf'))
+canvas.setFont(PenguinAttack, 24)
canvas.drawString(10, 150, "Some text encoded in UTF-8")
-canvas.drawString(10, 100, "In the Rina TT Font!")
+canvas.drawString(10, 100, "In the PenguinAttack TT Font!")
""")
-illust(examples.ttffont1, "Using a the Rina TrueType Font")
+illust(examples.ttffont1, "Using a the PenguinAttack TrueType Font")
disc("""In the above example the true type font object is created using""")
eg("""
TTFont(name,filename)
@@ -592,26 +595,26 @@
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.fonts import addMapping
-addMapping('Rina', 0, 0, 'Rina')
-addMapping('Rina', 0, 1, 'Rina')
-addMapping('Rina', 1, 0, 'Rina')
-addMapping('Rina', 1, 1, 'Rina')
+addMapping('PenguinAttack', 0, 0, 'PenguinAttack')
+addMapping('PenguinAttack', 0, 1, 'PenguinAttack')
+addMapping('PenguinAttack', 1, 0, 'PenguinAttack')
+addMapping('PenguinAttack', 1, 1, 'PenguinAttack')
disc("""Before using the TT Fonts in Platypus we should add a mapping from the family name to the
individual font names that describe the behaviour under the $<b>$ and $<i>$ attributes.""")
eg("""
from reportlab.lib.fonts import addMapping
-addMapping('Rina', 0, 0, 'Rina') #normal
-addMapping('Rina', 0, 1, 'Rina') #italic
-addMapping('Rina', 1, 0, 'Rina') #bold
-addMapping('Rina', 1, 1, 'Rina') #italic and bold
+addMapping('PenguinAttack', 0, 0, 'PenguinAttack') #normal
+addMapping('PenguinAttack', 0, 1, 'PenguinAttack') #italic
+addMapping('PenguinAttack', 1, 0, 'PenguinAttack') #bold
+addMapping('PenguinAttack', 1, 1, 'PenguinAttack') #italic and bold
""")
-disc("""we only have Rina regular so we map all to the same internal fontname. After registering and mapping
-the Rina font as above we can use paragraph text like""")
+disc("""we only have PenguinAttack regular so we map all to the same internal fontname. After registering and mapping
+the PenguinAttack font as above we can use paragraph text like""")
parabox2("""<font name="Times-Roman" size="14">This is in Times-Roman</font>
-<font name="Rina" color="magenta" size="14">and this is in magenta Rina!</font>""","Using TTF fonts in paragraphs")
+<font name="PenguinAttack" color="magenta" size="14">and this is in magenta PenguinAttack!</font>""","Using TTF fonts in paragraphs")
CPage(5)
diff -ur reportlab/graphics/testshapes.py ./graphics/testshapes.py
--- reportlab/graphics/testshapes.py 2003-12-18 09:30:45.000000000 +0100
+++ ./graphics/testshapes.py 2004-02-06 11:07:12.000000000 +0100
@@ -382,7 +382,7 @@
on the font patch given in rl_config.py,
for example in reportlab/lib/fonts/.
"""
- faceName = "LettErrorRobot-Chrome"
+ faceName = "Wargames-Regular"
D = Drawing(400, 200)
for size in range(12, 36, 4):
D.add(String(10+size*2,
diff -ur reportlab/setup.py ./setup.py
--- reportlab/setup.py 2004-01-21 17:45:46.000000000 +0100
+++ ./setup.py 2004-02-06 11:12:08.000000000 +0100
@@ -17,7 +17,7 @@
return r
pjoin = os.path.join
-package_path = pjoin(package_home(distutils.__dict__), 'reportlab')
+package_path = pjoin(package_home(distutils.__dict__), 'site-packages', 'reportlab')
def get_version():
#determine Version
@@ -136,12 +136,10 @@
(pjoin(package_path, 'fonts'),
['fonts/00readme.txt',
- 'fonts/LeERC___.AFM',
- 'fonts/LeERC___.PFB',
- 'fonts/luxiserif.ttf',
- 'fonts/luxiserif_license.txt',
- 'fonts/rina.ttf',
- 'fonts/rina_license.txt']),
+ 'fonts/Wargames.afm',
+ 'fonts/Wargames.pfb',
+ 'fonts/Dustismo_Roman.ttf',
+ 'fonts/PenguinAttack.ttf']),
(pjoin(package_path, 'lib'),
['lib/hyphen.mashed',]),
@@ -167,8 +165,8 @@
(pjoin(package_path, 'tools', 'pythonpoint', 'demos'),
['tools/pythonpoint/demos/htu.xml',
- 'tools/pythonpoint/demos/LeERC___.AFM',
- 'tools/pythonpoint/demos/LeERC___.PFB',
+# 'tools/pythonpoint/demos/LeERC___.AFM',
+# 'tools/pythonpoint/demos/LeERC___.PFB',
'tools/pythonpoint/demos/leftlogo.a85',
'tools/pythonpoint/demos/leftlogo.gif',
'tools/pythonpoint/demos/lj8100.jpg',
diff -ur reportlab/test/test_pdfbase_fontembed.py ./test/test_pdfbase_fontembed.py
--- reportlab/test/test_pdfbase_fontembed.py 2002-07-24 21:56:38.000000000 +0200
+++ ./test/test_pdfbase_fontembed.py 2004-02-06 11:07:12.000000000 +0100
@@ -16,7 +16,11 @@
Just vam Rossum has kindly donated a font which we may use
for testing purposes. You need to contact him at just@letterror.com
- if you want to use it for real."""
+ if you want to use it for real.
+
+ Message from the Debian package maintainer: The Debian package
+ can't ship Just's font, therefore we have replaced it with a subset
+ of a free font by Dustin Norlander, Wargames."""
#LettError fonts should always be there. The others are voluntary.
@@ -67,14 +71,14 @@
## justFont = pdfmetrics.Font('LettErrorRobot-Chrome', faceName, 'WinAnsiEncoding')
## pdfmetrics.registerFont(justFont)
- c.setFont('LettErrorRobot-Chrome', 12)
- c.drawString(100, y, 'This should be in LettErrorRobot-Chrome')
+ c.setFont('Wargames', 12)
+ c.drawString(100, y, 'This should be in Wargames')
def testNamedFont(canv, fontName):
canv.showPage()
makeWidthTestForAllGlyphs(canv, fontName, outlining=0)
- testNamedFont(c, 'LettErrorRobot-Chrome')
+ testNamedFont(c, 'Wargames')
c.save()
diff -ur reportlab/test/test_pdfbase_ttfonts.py ./test/test_pdfbase_ttfonts.py
--- reportlab/test/test_pdfbase_ttfonts.py 2003-11-20 09:30:48.000000000 +0100
+++ ./test/test_pdfbase_ttfonts.py 2004-02-06 11:07:12.000000000 +0100
@@ -1,8 +1,8 @@
"""Test TrueType font subsetting & embedding code.
-This test uses a sample font (luxiserif.ttf) taken from XFree86 which is called Luxi
-Serif Regular and is covered under the license in ../fonts/luxiserif_licence.txt.
+This test uses a sample font by Dustin Norlander (Dustismo_Roman.ttf).
+The font is free and can be distributed under the terms of the GPL.
"""
import string
@@ -67,10 +67,10 @@
c = Canvas('test_pdfbase_ttfonts.pdf')
c.setFont('Helvetica', 30)
c.drawString(100,700, 'Unicode TrueType Font Test')
- pdfmetrics.registerFont(TTFont("TestFont", "luxiserif.ttf"))
- pdfmetrics.registerFont(TTFont("RinaFont", "rina.ttf"))
+ pdfmetrics.registerFont(TTFont("TestFont", "Dustismo_Roman.ttf"))
+ pdfmetrics.registerFont(TTFont("PenguinFont", "PenguinAttack.ttf"))
# Draw a table of Unicode characters
- for fontName in ('TestFont','RinaFont'):
+ for fontName in ('TestFont','PenguinFont'):
c.setFont(fontName, 10)
for i in range(0, 32):
for j in range(0, 32):
@@ -119,16 +119,16 @@
def testFontFile(self):
"Tests TTFontFile and TTF parsing code"
- ttf = TTFontFile("luxiserif.ttf")
- self.assertEquals(ttf.name, "LuxiSerif")
+ ttf = TTFontFile("Dustismo_Roman.ttf")
+ self.assertEquals(ttf.name, "DustismoRoman")
self.assertEquals(ttf.flags, FF_SYMBOLIC)
self.assertEquals(ttf.italicAngle, 0.0)
- self.assertEquals(ttf.ascent, 783) # FIXME: or 992?
- self.assertEquals(ttf.descent, -206) # FIXME: or -210?
- self.assertEquals(ttf.capHeight, 0)
- self.assertEquals(ttf.bbox, [-204, -211, 983, 992])
+ self.assertEquals(ttf.ascent, 712)
+ self.assertEquals(ttf.descent, -238)
+ self.assertEquals(ttf.capHeight, 712)
+ self.assertEquals(ttf.bbox, [-113, -256, 923, 1051])
self.assertEquals(ttf.stemV, 87)
- self.assertEquals(ttf.defaultWidth, 250)
+ self.assertEquals(ttf.defaultWidth, 500)
def testAdd32(self):
"Test add32"
@@ -154,7 +154,7 @@
def testFontFileChecksum(self):
"Tests TTFontFile and TTF parsing code"
- file = TTFOpenFile("luxiserif.ttf")[1].read()
+ file = TTFOpenFile("Dustismo_Roman.ttf")[1].read()
TTFontFile(StringIO(file), validate=1) # should not fail
file1 = file[:12345] + "\xFF" + file[12346:] # change one byte
self.assertRaises(TTFError, TTFontFile, StringIO(file1), validate=1)
@@ -163,7 +163,7 @@
def testSubsetting(self):
"Tests TTFontFile and TTF parsing code"
- ttf = TTFontFile("luxiserif.ttf")
+ ttf = TTFontFile("Dustismo_Roman.ttf")
subset = ttf.makeSubset([0x41, 0x42])
subset = TTFontFile(StringIO(subset), 0)
for tag in ('cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'OS/2',
@@ -175,13 +175,13 @@
pos = subset.read_ushort() # this is actually offset / 2
self.failIf(pos % 2 != 0, "glyph %d at +%d should be long aligned" % (n, pos * 2))
- self.assertEquals(subset.name, "LuxiSerif")
+ self.assertEquals(subset.name, "DustismoRoman")
self.assertEquals(subset.flags, FF_SYMBOLIC)
self.assertEquals(subset.italicAngle, 0.0)
- self.assertEquals(subset.ascent, 783) # FIXME: or 992?
- self.assertEquals(subset.descent, -206) # FIXME: or -210?
- self.assertEquals(subset.capHeight, 0)
- self.assertEquals(subset.bbox, [-204, -211, 983, 992])
+ self.assertEquals(subset.ascent, 712)
+ self.assertEquals(subset.descent, -238)
+ self.assertEquals(subset.capHeight, 712)
+ self.assertEquals(subset.bbox, [-113, -256, 923, 1051])
self.assertEquals(subset.stemV, 87)
def testFontMaker(self):
@@ -201,7 +201,7 @@
def testAddSubsetObjects(self):
"Tests TTFontFace.addSubsetObjects"
- face = TTFontFace("luxiserif.ttf")
+ face = TTFontFace("Dustismo_Roman.ttf")
doc = PDFDocument()
fontDescriptor = face.addSubsetObjects(doc, "TestFont", [ 0x78, 0x2017 ])
fontDescriptor = doc.idToObject[fontDescriptor.name].dict
@@ -239,7 +239,7 @@
def testStringWidth(self):
"Test TTFont.stringWidth"
- font = TTFont("TestFont", "luxiserif.ttf")
+ font = TTFont("TestFont", "Dustismo_Roman.ttf")
self.assert_(font.stringWidth("test", 10) > 0)
width = font.stringWidth(utf8(0x2260) * 2, 1000)
expected = font.face.getCharWidth(0x2260) * 2
@@ -248,7 +248,7 @@
def testSplitString(self):
"Tests TTFont.splitString"
doc = PDFDocument()
- font = TTFont("TestFont", "luxiserif.ttf")
+ font = TTFont("TestFont", "Dustismo_Roman.ttf")
text = string.join(map(utf8, range(0, 512)), "")
allchars = string.join(map(chr, range(0, 256)), "")
chunks = [(0, allchars), (1, allchars)]
@@ -264,7 +264,7 @@
def testSubsetInternalName(self):
"Tests TTFont.getSubsetInternalName"
doc = PDFDocument()
- font = TTFont("TestFont", "luxiserif.ttf")
+ font = TTFont("TestFont", "Dustismo_Roman.ttf")
# Actually generate some subsets
text = string.join(map(utf8, range(0, 513)), "")
font.splitString(text, doc)
@@ -277,7 +277,7 @@
def testAddObjectsEmpty(self):
"TTFont.addObjects should not fail when no characters were used"
- font = TTFont("TestFont", "luxiserif.ttf")
+ font = TTFont("TestFont", "Dustismo_Roman.ttf")
doc = PDFDocument()
font.addObjects(doc)
@@ -285,7 +285,7 @@
"Test that TTFont.addObjects resets the font"
# Actually generate some subsets
doc = PDFDocument()
- font = TTFont("TestFont", "luxiserif.ttf")
+ font = TTFont("TestFont", "Dustismo_Roman.ttf")
font.splitString('a', doc) # create some subset
doc = PDFDocument()
font.addObjects(doc)
@@ -299,7 +299,7 @@
"Test that TTFont can be used for different documents at the same time"
doc1 = PDFDocument()
doc2 = PDFDocument()
- font = TTFont("TestFont", "luxiserif.ttf")
+ font = TTFont("TestFont", "Dustismo_Roman.ttf")
self.assertEquals(font.splitString('ab', doc1), [(0, '\0\1')])
self.assertEquals(font.splitString('b', doc2), [(0, '\0')])
font.addObjects(doc1)
@@ -310,14 +310,14 @@
"Test TTFont.addObjects"
# Actually generate some subsets
doc = PDFDocument()
- font = TTFont("TestFont", "luxiserif.ttf")
+ font = TTFont("TestFont", "Dustismo_Roman.ttf")
font.splitString('a', doc) # create some subset
internalName = font.getSubsetInternalName(0, doc)[1:]
font.addObjects(doc)
pdfFont = doc.idToObject[internalName]
self.assertEquals(doc.idToObject['BasicFonts'].dict[internalName], pdfFont)
self.assertEquals(pdfFont.Name, internalName)
- self.assertEquals(pdfFont.BaseFont, "SUBSET+LuxiSerif+0")
+ self.assertEquals(pdfFont.BaseFont, "SUBSET+DustismoRoman+0")
self.assertEquals(pdfFont.FirstChar, 0)
self.assertEquals(pdfFont.LastChar, 0)
self.assertEquals(len(pdfFont.Widths.sequence), 1)
diff -ur reportlab/test/test_platypus_general.py ./test/test_platypus_general.py
--- reportlab/test/test_platypus_general.py 2003-09-09 09:31:31.000000000 +0200
+++ ./test/test_platypus_general.py 2004-02-06 11:07:12.000000000 +0100
@@ -415,14 +415,14 @@
#######################################################################
- # custom font with LettError-Robot font
+ # custom font with Wargames font
import reportlab.rl_config
reportlab.rl_config.warnOnMissingFontGlyphs = 0
from reportlab.pdfbase import pdfmetrics
fontDir = os.path.join(os.path.dirname(reportlab.__file__),'fonts')
- face = pdfmetrics.EmbeddedType1Face(os.path.join(fontDir,'LeERC___.AFM'),os.path.join(fontDir,'LeERC___.PFB'))
- faceName = face.name # should be 'LettErrorRobot-Chrome'
+ face = pdfmetrics.EmbeddedType1Face(os.path.join(fontDir,'Wargames.afm'),os.path.join(fontDir,'Wargames.pfb'))
+ faceName = face.name # should be 'Wargames'
pdfmetrics.registerTypeFace(face)
font = pdfmetrics.Font(faceName, faceName, 'WinAnsiEncoding')
pdfmetrics.registerFont(font)
@@ -432,18 +432,18 @@
story.append(Paragraph(
"""This is an ordinary paragraph, which happens to contain
text in an embedded font:
- <font name="LettErrorRobot-Chrome">LettErrorRobot-Chrome</font>.
+ <font name="Wargames">Wargames</font>.
Now for the real challenge...""", styleSheet['Normal']))
- styRobot = ParagraphStyle('Robot', styleSheet['Normal'])
- styRobot.fontSize = 16
- styRobot.leading = 20
- styRobot.fontName = 'LettErrorRobot-Chrome'
+ styWargames = ParagraphStyle('Wargames', styleSheet['Normal'])
+ styWargames.fontSize = 16
+ styWargames.leading = 20
+ styWargames.fontName = 'Wargames'
story.append(Paragraph(
- "This whole paragraph is 16-point Letterror-Robot-Chrome.",
- styRobot))
+ "This whole paragraph is 16-point Wargames.",
+ styWargames))
story.append(FrameBreak())
diff -ur reportlab/tools/docco/examples.py ./tools/docco/examples.py
--- reportlab/tools/docco/examples.py 2002-07-24 21:56:39.000000000 +0200
+++ ./tools/docco/examples.py 2004-02-06 11:07:12.000000000 +0100
@@ -462,16 +462,16 @@
from reportlab.pdfbase import pdfmetrics
afmFile, pfbFile = rl_doc_utils.getJustFontPaths()
justFace = pdfmetrics.EmbeddedType1Face(afmFile, pfbFile)
- faceName = 'LettErrorRobot-Chrome' # pulled from AFM file
+ faceName = 'Wargames' # pulled from AFM file
pdfmetrics.registerTypeFace(justFace)
- justFont = pdfmetrics.Font('LettErrorRobot-Chrome',
+ justFont = pdfmetrics.Font('Wargames',
faceName,
'WinAnsiEncoding')
pdfmetrics.registerFont(justFont)
- canvas.setFont('LettErrorRobot-Chrome', 32)
+ canvas.setFont('Wargames', 32)
canvas.drawString(10, 150, 'This should be in')
- canvas.drawString(10, 100, 'LettErrorRobot-Chrome')
+ canvas.drawString(10, 100, 'Wargames')
"""
testttffont1 = """
@@ -481,12 +481,12 @@
reportlab.rl_config.warnOnMissingFontGlyphs = 0
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
- pdfmetrics.registerFont(TTFont('Rina', 'rina.ttf'))
+ pdfmetrics.registerFont(TTFont('PenguinAttack', 'PenguinAttack.ttf'))
from reportlab.pdfgen.canvas import Canvas
- canvas.setFont('Rina', 32)
+ canvas.setFont('PenguinAttack', 24)
canvas.drawString(10, 150, "Some UTF-8 text encoded")
- canvas.drawString(10, 100, "in the Rina TT Font!")
+ canvas.drawString(10, 100, "in the PenguinAttack TT Font!")
"""
testcursormoves1 = """
diff -ur reportlab/tools/docco/rl_doc_utils.py ./tools/docco/rl_doc_utils.py
--- reportlab/tools/docco/rl_doc_utils.py 2003-04-18 00:42:03.000000000 +0200
+++ ./tools/docco/rl_doc_utils.py 2004-02-06 11:07:12.000000000 +0100
@@ -103,7 +103,7 @@
'''return afm and pfb for Just's files'''
import reportlab
folder = os.path.dirname(reportlab.__file__) + os.sep + 'fonts'
- return os.path.join(folder, 'LeERC___.AFM'), os.path.join(folder, 'LeERC___.PFB')
+ return os.path.join(folder, 'Wargames.afm'), os.path.join(folder, 'Wargames.pfb')
# for testing
def NOP(*x,**y):
|