Programming PostScript Type 1 Fonts Using METATYPE1: Auditing, Enhancing, Creating
|
|
|
- Justin Skinner
- 9 years ago
- Views:
Transcription
1 Programming PostScript Type 1 Fonts Using METATYPE1: Auditing, Enhancing, Creating Bogusław Jackowski ul. Tatrzańska 6 m. 1, Gdańsk, Poland [email protected] Janusz M. Nowacki ul. Śniadeckich 82 m. 46, Grudzi adz, Poland [email protected] Piotr Strzelczyk ul. Subisława 14, Gdańsk, Poland [email protected] Abstract METATYPE1 is a METAPOST-based package for producing outline PostScript fonts in the Type1format. Sinceitsfirstunofficialreleaseafewyearsago,ithasbeenappliedtoseveraltasks. We would like to share our experience with other fans of computer typography. Résumé METATYPE1 est un ensemble d outils basé sur METAPOST pour produire des fontes PostScript detype1.depuissapremièresortie,ilyaquelquesannées,ilaeuungrandnombred applications. Nous souhaitons partager notre expérience avec d autres amateurs de typographie informatique. Introduction We started the work on METATYPE1 some five years ago. Outline fonts had already been in vogue then, especially in electronic publishing. Being adherents of both computer typography and programming, we urgently needed a programming tool for generating outline fonts. Fortunately, neither TEXtrace[7] nor FontForge[9] existed at that time. We highly esteem both of these tools andthereforewewouldperhapshavegivenup which would be a pity, because they do not comprise all possible application areas. Sometimes, full programmability is preferable. Anyway, we had no choice but to develop a home-grown engine. Inthispaper,wedescribeafewsampletasksthatwe had the opportunity to accomplish using METATYPE1, thus demonstrating the pros and cons of the programming approach to generating of outline fonts. A brief overview of METATYPE1 Asthename(andlogo)suggests, METAPOSTisthekernel of METATYPE1. In other words, METATYPE1 sources are written in the METAPOST language. META- TYPE1 provides a task-oriented library of METAPOST macros. It also makes use of popular open source tools: FIG. 1: A simplified scheme of the METATYPE1 engine (comments in the text). Gawk and T1Utils. The METAPOST output is processedbygawkandthenassembledbyt1utils(figure1, left). Thedetailsoftheprocessofgeneratingoffontsusing METATYPE1 can be found in[4]. TUGboat, Volume 24 (2003), No. 3 Proceedings of EuroTEX
2 Bogusław Jackowski, Janusz M. Nowacki and Piotr Strzelczyk Animportantpartofthe METATYPE1packageisa (freestanding) converter from the PostScript Type 1 format to METATYPE1 source, pf2mt1 (figure 1, right), whichalsomakes useofgawkandt1utils. Asweshall see, it proves useful for auditing of fonts. The installation of the METATYPE1 package is straightforward, once Gawk, T1Utils, and METAPOST have already been installed the files should be copied to a chosen directory and a system variable METATYPE1 should point to this directory. Originally, METATYPE1 was developed under DOS; its provisional Linux port is maintainedbywłodekbzyl(see[4]fortheurl). Asimplified version of the Linux scripts is available from the authors; the scripts will be included in the next release of METATYPE1. Many roads to the creation of fonts Since we are no font designers whatsoever, we will assume that the design of a typeface is given. Still, the source of a font may be given in various forms from lead prints to tentatively ready digital form. In the former case, one has to create a digitized version from scratch; in the latter, an audit of a font may prove sufficient. Below, we discuss a few different approaches to coping with fonts, starting from the simplest one, that is, from auditing. Audit A useful yet a very simple tool for auditing of a font is the already mentioned converter from PostScript Type 1 format to human readable (and thus machine readable) METATYPE1 sources. We assume, of course, that thedisassembling of a givenfont islegal. Faulty hinting is perhaps most typical in freely available fonts. Even such diligently prepared fonts as the Computer Modern family in the PostScript Type 1 format, released as a freely available product by the American Mathematical Society in 1997, contain questionable hints. Prior to the presentation of an example, let us briefly sketch the idea of the PostScript Type 1 hinting. Hints are special instructions, allowed only in a font program, providing additional information useful during the process of rendering of a glyph. There are two kinds of hints: vertical and horizontal; both convey information concerning the preferred width and position of a stem (which, in general, may have a varying width). Consider now, as an example, the font cmsy10 from the AMS Computer Modern family. The converter pf2mt1 produces METATYPE1 sources, and, which is importanthere,alogfile;hereisanexcerptfromthelog (thefirstnumberdenotesthepositionofastem,thesecond one width):... intersectionsq: semi-matching hstem; 558, 45 intersectionsq: non-matching vstem; 55, 40 intersectionsq: semi-matching vstem; 571, 34 The log indicates that there is something wrong with hints: why should such a regular character as intersectionsq have hints of different width(see figure 2)? FIG. 2: Character intersectionsq from cmsy10 from the collection provided by the AMS; gray rectangles mark the placement of hints it can be seen that they do not precisely coincide with the respective stems. The inspection of the code of the glyph intersectionsqreveals,asonewouldexpect,thateachstemhasthe same width(equal to 40; compare the following pairs of nodes: z 0 4 and z 0 6, z 0 9 and z 0 11, z 0 8 and z 0 1 ): beginglyph(_intersectionsq); save p; path p[]; z0 0=(605,565); z0 0a=(605,594); z0 1b=(601,598); z0 1=(572,598); z0 2=(94,598); z0 2a=(65,598); z0 3b=(61,594); z0 3=(61,565); z0 4=(61,34); z0 4a=(61,20); z0 5b=(61,0); z0 5=(81,0); z0 5a=(101,0); z0 6b=(101,19); z0 6=(101,33); z0 7=(101,558); z0 8=(565,558); z0 9=(565,34); z0 9a=(565,20); z0 10b=(565,0); z0 10=(585,0); z0 10a=(605,0); z0 11b=(605,19); z0 11=(605,33); p0=compose_path.z0(11); correct_path_directions(p0)(p); if turningnumber p0>0: Fill else: unfill fi \\ p0; set_hstem (558,603); % stem width = set_vstem (55,95); % stem width = set_vstem (571,605); % stem width = ghost_stem bot; standard_exact_hsbw("intersectionsq"); 576 TUGboat, Volume 24 (2003), No. 3 Proceedings of EuroTEX 2003
3 Programming PostScript Type 1 Fonts Using METATYPE1: Auditing, Enhancing, Creating Notethattheprogramisfairlylegibleandthateven a superficial knowledge of the METAPOST notation sufficesto guesswhatiswrong (here:withhints). Among others, we tested our pf2mt1 converter against a rich collection of fonts provided by Vladimir Volovich, namely, CM-Super [10]. The collection was prepared using TEXtrace [7] and tuned manually. The job Volovich did is really impressive. Still, a conversion to METATYPE1 sources revealed a couple of defects in nearly every font. It is not the proper place to analyse minutely the results of the conversion, we therefore confine ourselves to only one aspect: strange tiny paths ( scraps ) that we spotted in about 25% of the fonts, on average in two characters per font. Two examples of such pathsaredepictedinfigure3. Notethatthe scraps are moderately harmful and that their(rare) occurrences can be expected only in autotraced fonts. FIG. 3: Two examples of strange scraps (coloured gray in the magnified details) occurring in CM-Super fonts: character y from sfbx0900 (top) and character four from sfsi1095 (bottom). Finding these weird paths was straightforward: we simply wrote a short Awk script that looked for tiny 3- node paths in METATYPE1 sources. For example, the relevant path in the glyph y from sfbx0900 looked as follows: z1 0=(98,-149); z1 1=(98,-148); z1 2=(109,-153); p1=compose_path.z1(2); Again, a superficial knowledge of the METAPOST notation suffices even not knowing in detail how the operator compose_path works one can easily detect such questionable objects. Note that in the case of the glyph four from sfsi1095, it would be nearly impossible to notice the superfluous path in the screen or even in a printed proof, while in the METATYPE1 source it is easy. Letusemphasizethatwepointouttheflawsofthe CM-Super family not to deprecate it; we simply want to turn the reader s attention to the fact that METATYPE1, or its parts, can be used as an aid for different font creation software. One can conceive of more advanced techniques of auditing, for example, using task-oriented METAPOST macros written specially to deal with a given case. But even without employing advanced techniques, many clues can be surmised from the report written during the conversion and from the inspection of the resulting META- TYPE1 code. Elementary enhancement An interesting lesson can be derived from the previous section: some improvements of a font are straighforward. For example, the elimination of the tiny scraps is just trivial. The correction of hinting in the program for the glyph intersectionsq from the font cmsy10 is also not difficult. The proper code should read: set_hstem (558,698); set_vstem (61,101); set_vstem (565,605); or, equivalently(and more advisably): set_hstem (y0 8,y0 1); set_vstem (x0 4,x0 6); set_vstem (x0 9,x0 11); Thus, even a moderately experienced user should be reasonably able to modify METATYPE1 sources and to generate improved fonts in certain simple cases. Another method of enhancing a font, even simpler than that of requiring the conversion to METATYPE1 sources and the examination of the results, is to use a compressing module from the METATYPE1 package. This module (actually, a short Awk script) performs an analysis of a disassembled PostScript Type 1 font (a PFB file), defines subroutines for repeating fragments of the code, and replaces the occurrences of these fragments by the respective subroutine calls. The method employed is based on an algorithm for finding the longest repeating substring of a given string. The subroutinization is one TUGboat, Volume 24 (2003), No. 3 Proceedings of EuroTEX
4 Bogusław Jackowski, Janusz M. Nowacki and Piotr Strzelczyk ofafewstepsofthewholeprocessofthegenerationofa font, but it can be easily disentangled. Usually, the compression is not astoundingly efficient, for example, the fonts from the AMS Computer Modern family can be compressed only by 2 3%. The sizeofthecm-superfamilyoffonts,however,canbereduced by about 12% (7 MB) with this method. It is not much,but, on theother hand,itis not nothing. Advanced enhancement The potential improvements discussed so far require only basic knowledge of both typography and METAPOST programming. Therefore, it is not a surprise that the likely results are only moderately significant in order to achieve more, one has to know more. It is not extremely difficult, however, to obtain really useful results knowing just a little more than the rudiments. In typical cases, an augmentation of a character set withaccentedcharactersisneeded. Thisisataskthatcan be accomplished relatively easily using METATYPE1; namely, there is an operation use_accent, defined in the set of basic METATYPE1 macros, for precisely this purpose. We have used this technique while preparing the collection of Latin Modern fonts [2]. Our starting point was, obviously, the AMS Computer Modern family of fonts converted to METATYPE1 format. We programmed most of the accented characters by adding just three lines of code per glyph, for example: beginglyph(_aacute); use_accent(_a,_acute); central node of the top serif to the variable glyph_axis (see figure 4): beginglyph(_l); save p; path p[]; glyph_axis=x0 7; % manually added line z0 0=(643,274); z0 1=(596,274); z0 1a=(588,205); z0 2b=(571,47); z0 2=(392,47); z0 3=(289,47); z0 4=(289,639); z0 5=(424,639); z0 6=(424,686); z0 6a=(380,683); z0 7b=(271,683); z0 7=(222,683); z0 7a=(178,683); z0 8b=(77,683); z0 8=(39,686); z0 9=(39,639); z0 10=(147,639); z0 11=(147,47); z0 12=(39,47); z0 13=(39,0); z0 14=(612,0); p0=compose_path.z0(14); if turningnumber p0>0: Fill else: unfill fi \\ p0; set_hstem (0,47); set_hstem (639,686); set_vstem (596,643); set_vstem (147,289); standard_hsbw("l"); beginglyph(_abreve); use_accent(_a,_breve); beginglyph(_acircumflex); use_accent(_a,_circumflex); etc.; altogether, almost 200 characters of the Latin Modern family have been programmed using such threeliners. In some cases, however, additional settings were needed. By default, the use_accent operator works similarly to the TEX \accent primitive it just centres an accent over an accented character. This procedure is not adequate for such characters as Lacute. META- TYPE1, unlike TEX, provides an optional (numeric) parameter for each character, glyph_axis, describing the position of the glyph axis to be used with accents. The axisisalignedeitherwiththecentreofanaccentorwith itsaxis, ifit happensto beset. Forexample,theprogramfortheletterLfromthe font lmb10 assigns the value of the x-coordinate of the FIG. 4: An example of the setting of a glyph axis in a character L from a Latin Modern font (lmb10); such an axis facilitates the placement of accents in asymmetric characters such as Lacute. Having adequately defined the axis for a given character (and for relevant accents, if needed), the accented characters can be defined using our neat three-liners, for example: beginglyph(_lacute); use_accent(_l,_acute); 578 TUGboat, Volume 24 (2003), No. 3 Proceedings of EuroTEX 2003
5 Programming PostScript Type 1 Fonts Using METATYPE1: Auditing, Enhancing, Creating (Note that a variant acute accent is used here accents over capital letters and ascenders are flattened a little bit in LatinModern fonts. It is one of many details that can be conveniently controlled using the programming approach.) The programming of characters that contain diacritical elements such as ogonek or cedilla is more arcane, since it requires finding the common outline of the character and diacritic. For this purpose, META- TYPE1 provides the operation find_outlines. Although fairly handyin practice, it is not as robust as one would wish, because it behaves unstably if the curves to be processed are tangent or nearly tangent. In general, tangency presents an intrinsic problem, because it is impossible to distinguish numerically between tangent curves and intersecting ones. Metaphorically speaking, tangency is an infinitesimal property, while computers are discrete, and thus finite. With METAFONT, things become even worse. For example, the built-in METAFONT operator intersectiontimes, which we need, sometimes cheats when disjoint curves are touching each other. Another operator, turningnumber, important in dealing with paths, also is not sufficiently reliable(due to, for example, tiny loops see[5]). METAFONT has been designed to produce bitmaps, not outlines. In such applications, curves that nearly touch each other or tiny loops that change unpredictably the turning number of a curve do not cause too much harm. Its descendant METAPOST, although it is no longer bitmap-oriented, inherited METAFONT arithmetic with all its imprecision; the same problems can be thus likely encountered in METAPOST. One can live with that but the price is the necessity of carefully controlling the situations where nasty tangency-related issues emerge. It is worthy of emphasizing that although such control requires some proficiency in programming in METAPOST, it is usually effortless. The most complex aspect of a font enhancement is obviously constructing a glyph from scratch. This topic, in fact, has more to do with the creation than with the enhancementofafont. Thus,wepostponeitforawhile. From METAFONT to METATYPE1 Although the issue of an automatic conversion of METAFONT font programs into an outline form conforming to PostScript Type 1 standards was recognised relatively long ago, it has still not been fully solved. A partial solution was announced by Péter Szabó during the EuroTEX 2001 meeting (Kerkrade, The Netherlands[7]). Szabó s TEXtrace program produces outlines of acceptable quality, thanks to the efficacious Autotrace program [8] by Martin Weber, which is employed for the autotracing of high-resolution bitmaps. Nevertheless, we call Szabó s solution only partial since the process of autotracing cannot (yet?) be controlled in detail, while we firmly believe that every detail should be controllable and replicable in the realm of TEX and METAFONT/META- POST. Another solution which we prefer, but which might be called partial as well, is a manual alteration of METAFONT sources. We applied this approach to generate a METATYPE1 version of Donald E. Knuth s logo font. A sample page from the automatically generated documentation of thefont isshownin figure5. FIG. 5: A sample page from the automatically generated documentation of the METATYPE1 version of the logo font; light gray rectangles mark hints; a high-resolution bitmap generated from the original METAFONT sources (painted with a darker gray) is placed in the background for comparison. We would like to stress that it was a purely experimental effort, because Taco Hoekwater had already preparedapostscripttype1versionofthelogofontusing Richard J. Kinch s MetaFog. The differences of glyph shapes between Hoekwater s fonts and ours are negligible. More interesting is perhaps that we managed to obtain metric files(tfm) identical with the original. Those who are interested in technicalities may wish to download both the sources and the results from the same ftp address as the METATYPE1 package. A conversion of Hoekwater s PostScript Type 1 fonts into METATYPE1 sources using pf2mt1 can be also instructive. In the Latin Modern family, several glyphs were also prepared using this method. In particular, we adapted TUGboat, Volume 24 (2003), No. 3 Proceedings of EuroTEX
6 Bogusław Jackowski, Janusz M. Nowacki and Piotr Strzelczyk theprogramfor thelettercfromthecomputermodern METAFONT sources in order to construct the Euro currency symbol (with the addition of a bottom serif, since the Euro symbol is philosophically based on a script E; thanks to Werner Lemberg). The point of the story is that, in principle, such a conversion is possible. It remains an open question, however, whether it is worthwhile to attempt to convert all available METAFONT sources. On one hand, such outline-oriented programs would certainly be useful, especially for those who would like to generate new variants of old fonts by playing around with parameters; on the other hand, such a conversion is a laborious task, although inmostcasesitisroutine. Inouropinion,however,converting of existing METAFONT sources into an outline form is not as urgent as the problem of the scarcity of new fonts. But the creation of a new font is a challenge, indeed. Creation The issue of font creation, even limited to the computer-oriented aspects, is a topic rather for a book than for a section in a short article. Therefore, we will not dwell too much on this inexhaustible subject. Instead, we simply sum up the experience we gathered during the work on two replicas of Polish traditional typefaces (figure 6): Antykwa Półtawskiego[3] and Antykwa Toruńska, the latter being intensively developed by Janusz M. Nowacki. the Computer Modern fonts are governed by more than 60 parameters this would be certainly too much for us. After many experiments and discussions, we are still unsatisfied with the current parameterization of Antykwa Półtawskiego. This is the main reason why we have not publicly released its METATYPE1 sources so far. We have not given up yet we certainly hope that before long we will eventually release tolerably tidy METATYPE1 sources. On demand, however, they can beobtainedfrom the authors for privateuse. 1 We have not heard about other book typefaces created using METATYPE1. Our program has rather a small number of users and is mainly employed for auditing and enhancing fonts, although we know about a few fonts containing geometrically regular glyphs (for example, geographical symbols) created using METATYPE1; among them, perhaps the most interesting is a humorous font displayed in figure 7. FIG. 7: A dingbats font created with METATYPE1 by Jacek Kmiecik: the top three rows contain characters of the font, the bottom rows present an effect of superimposing of three characters (one from each row); the inspiration for this work was the font Head-DingMaker, signed by Nigma Fonts ([email protected]). FIG. 6: Two replicas of Polish traditional typefaces, prepared with METATYPE1. For both typefaces, only lead prints were available. In many cases, therefore, we had to conjecture as to the details. Surprisingly, this seemingly difficult task of reconstructing and programming of glyph shapes, turned out to be relatively simple. The adjusting of sidebearings and kerns was significantly more difficult. But it is the parameterization of a font that is really a tough problem. We do not want to juggle lots of incoherent parameters. Frankly speaking, we would not be able to. Recall that FromaTEXuser spointofview,itisimportantthat METATYPE1 is suitable for creating TEX-oriented math fonts(note that the popular afm2tfm program cannot be used for generating math tfm files). We know about a couple of such endeavours. In one of them we are involved: it is an ongoing project of the Polish TEX Users Group GUST of furnishing Antykwa Półtawskiego with a math extension. So far, however, nobody has announced areleaseofamathfontcreatedwith METATYPE1. The bright side of this otherwise disquieting situation is that interesting events are still ahead of us. 1. In the near future, most probably before EuroTEX 2005, the METATYPE1 sources of Latin Modern family of fonts will be released publicly. 580 TUGboat, Volume 24 (2003), No. 3 Proceedings of EuroTEX 2003
7 Programming PostScript Type 1 Fonts Using METATYPE1: Auditing, Enhancing, Creating All in all, METATYPE1 promises well as far as we can tell. But please feel forewarned that we are incorrigible optimists. Also feel forewarned, as we emphasize repeatedly, that although there are many roads to the creation of fonts, theroyal road doesnot exist. Concluding remarks WetookforgrantedthePostScriptType1formatisexactly what we need. We are aware that the future belongs to a successor of Type 1 and TrueType, namely, to OpenType, but we do not consider it a threat. Let usquoteamicrosoftfaq[6]: OpenType[...] isanextension of Microsoft s TrueType Open format, adding support fortype1data. Moreover,thereisanofficialFontDevelopment Kit for OpenType released by Adobe [1] which offers, among several less or more useful functions, a conversion of PostScript Type 1 fonts into their OpenType counterparts. We bumped into some obstacles trying to tame this tool, but finally managed to achieve the desired outcome. The results are not easily verifiable because OpenType, advertised since 1996, actually entered the scene only a few years ago. Nevertheless, it seems that such a conversion may be an appropriate solution for some time to come. We also have tried FontForge as a converter to OpenType fonts. Again, we were successful, although not without trouble. It is too early, however, to evaluate the existing tools definitively, the more so as other tools of this kind can be expected to become available in the nearest future. Is METATYPE1 a convenient tool for creating fonts at present and in the future? The answer is up to users. Certainly,itisatoolforcreatingopensourcefonts,thatis, truly open types. Acknowledgements Very many thanks to Jerzy Ludwichowski for his kind support during the preparation of this paper. References [1] Adobe Font Development Kit for OpenType, developer/type/otfdk/ [2] Bogusław Jackowski, Janusz M. Nowacki, Enhancing Computer Modern with accents, accents, accents, TUGboat 24(1), Proc. of the 24 th Annual Meeting and Conference of the TEX Users Group, p [3] Bogusław Jackowski, Janusz M. Nowacki, Antykwa Półtawskiego: a parameterized outline font, EuroTEX 1999, 20 th 24 th September, 1999, Heidelberg, Germany, pp ; the current version of Antykwa Półtawskiego is available from ftp://ftp.gust.org.pl/ pub/tex/gust/contrib/fonts/replicas [4] Bogusław Jackowski, Janusz M. Nowacki, Piotr Strzelczyk, METATYPE1: A METAPOST-based Engine for Generating Type 1 Fonts, Proc. of EuroTEX 2001, 27 th 27 th September, 2001, Kerkrade, the Netherlands, pp ; the current version of METATYPE1 is available from ftp://bop.eps.gda.pl/pub/metatype1; METATYPE1 for Linux can be downloaded from ftp://ftp.ctan.org/tex-archive/ systems/unix/mtype13/ [5] Donald E. Knuth, The METAFONTbook, Addison-Wesley, edition VII, 1992, pp. 152, [6] OpenType initiative FAQ, microsoft.com/truetype/faq/faq9.htm [7] Péter Szabó, TEXtrace, hu/~pts/textrace/ [8] Martin Weber, Autotrace, http: //autotrace.sourceforge.net/ [9] George Williams, FontForge a PostScript Font Editor, http: //fontforge.sourceforge.net/ [10] Vladimir Volovich, CM-Super Font Package, ftp://ftp.vsu.ru/pub/tex/font-packs/ cm-super/ TUGboat, Volume 24 (2003), No. 3 Proceedings of EuroTEX
Review of Fundamental Mathematics
Review of Fundamental Mathematics As explained in the Preface and in Chapter 1 of your textbook, managerial economics applies microeconomic theory to business decision making. The decision-making tools
Bogusław Jackowski and Janusz Marian Nowacki
Bogusław Jackowski and Janusz Marian Nowacki Bogusław Jackowski (left photo) and Janusz Marian Nowacki (right) have made and continue to make many important contributions in the world of TEX fonts. [Interview
How to make more than one math OpenType font
How to make more than one math OpenType font or the Beasts of Fonts Bachotek 29 IV 3V2011 Bogusław Jackowski and Piotr Strzelczyk It is widely known, that fonts are nasty beasts It is widely known, that
The ogonek package. Janusz Stanisław Bień 94/12/21
The ogonek package Janusz Stanisław Bień 94/12/21 Abstract This L A TEX 2ε package provides a command to typeset letters with the ogonek diacritic mark; they are used in Polish and Lithuanian. The command
Accents, accents, accents... enhancing CM fonts with funny characters
Bogusław Jackowski BOP s.c., Gdańsk, Poland [email protected] Janusz M. Nowacki Foto-Alfa, Grudziadz, Poland [email protected] Pracę zgłosił: Andrzej Borzyszkowski Abstract Accented characters
Johannes Sametinger. C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria
OBJECT-ORIENTED DOCUMENTATION C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria Abstract Object-oriented programming improves the reusability of software
When older typesetting methods gave
Typographic Terms When older typesetting methods gave way to electronic publishing, certain traditional terms got carried along. Today we use a mix of old and new terminology to describe typography. Alignment
Formal Languages and Automata Theory - Regular Expressions and Finite Automata -
Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Samarjit Chakraborty Computer Engineering and Networks Laboratory Swiss Federal Institute of Technology (ETH) Zürich March
OO Design Quality Metrics
OO Design Quality Metrics An Analysis of Dependencies By Robert Martin October 28,1994 2080 Cranbrook Road Green Oaks, IL 60048 Phone: 708.918.1004 Fax: 708.918.1023 Email: [email protected] Abstract This
Regular Expressions and Automata using Haskell
Regular Expressions and Automata using Haskell Simon Thompson Computing Laboratory University of Kent at Canterbury January 2000 Contents 1 Introduction 2 2 Regular Expressions 2 3 Matching regular expressions
WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT?
WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT? introduction Many students seem to have trouble with the notion of a mathematical proof. People that come to a course like Math 216, who certainly
Regular Languages and Finite Automata
Regular Languages and Finite Automata 1 Introduction Hing Leung Department of Computer Science New Mexico State University Sep 16, 2010 In 1943, McCulloch and Pitts [4] published a pioneering work on a
Radius Compensation G40, G41, & G42 (cutter radius compensation for machining centers, tool nose radius compensation for turning centers)
Radius Compensation G40, G41, & G42 (cutter radius compensation for machining centers, tool nose radius compensation for turning centers) These features are commonly well covered in most basic CNC courses.
Enumerating possible Sudoku grids
Enumerating possible Sudoku grids Bertram Felgenhauer Department of Computer Science TU Dresden 00 Dresden Germany [email protected] Frazer Jarvis Department of Pure Mathematics University of Sheffield,
Math 1B, lecture 5: area and volume
Math B, lecture 5: area and volume Nathan Pflueger 6 September 2 Introduction This lecture and the next will be concerned with the computation of areas of regions in the plane, and volumes of regions in
PYTHAGOREAN TRIPLES KEITH CONRAD
PYTHAGOREAN TRIPLES KEITH CONRAD 1. Introduction A Pythagorean triple is a triple of positive integers (a, b, c) where a + b = c. Examples include (3, 4, 5), (5, 1, 13), and (8, 15, 17). Below is an ancient
Regions in a circle. 7 points 57 regions
Regions in a circle 1 point 1 region points regions 3 points 4 regions 4 points 8 regions 5 points 16 regions The question is, what is the next picture? How many regions will 6 points give? There's an
SYSTEMS OF EQUATIONS AND MATRICES WITH THE TI-89. by Joseph Collison
SYSTEMS OF EQUATIONS AND MATRICES WITH THE TI-89 by Joseph Collison Copyright 2000 by Joseph Collison All rights reserved Reproduction or translation of any part of this work beyond that permitted by Sections
Mathematical Induction
Mathematical Induction (Handout March 8, 01) The Principle of Mathematical Induction provides a means to prove infinitely many statements all at once The principle is logical rather than strictly mathematical,
Session 7 Fractions and Decimals
Key Terms in This Session Session 7 Fractions and Decimals Previously Introduced prime number rational numbers New in This Session period repeating decimal terminating decimal Introduction In this session,
Excel Formatting: Best Practices in Financial Models
Excel Formatting: Best Practices in Financial Models Properly formatting your Excel models is important because it makes it easier for others to read and understand your analysis and for you to read and
Quotes from Object-Oriented Software Construction
Quotes from Object-Oriented Software Construction Bertrand Meyer Prentice-Hall, 1988 Preface, p. xiv We study the object-oriented approach as a set of principles, methods and tools which can be instrumental
Human-Readable BPMN Diagrams
Human-Readable BPMN Diagrams Refactoring OMG s E-Mail Voting Example Thomas Allweyer V 1.1 1 The E-Mail Voting Process Model The Object Management Group (OMG) has published a useful non-normative document
Q&As: Microsoft Excel 2013: Chapter 2
Q&As: Microsoft Excel 2013: Chapter 2 In Step 5, why did the date that was entered change from 4/5/10 to 4/5/2010? When Excel recognizes that you entered a date in mm/dd/yy format, it automatically formats
Information Architecture. Proposal Document. Charlotte Baxter
Proposal Document Contents 1. Abstract 3 2. Goals 4 3. User Experience 5 3.1 Audience 5 3.2 Competitive Analysis 5 4. Content 7 4.1 Page Content 7 4.2 Audio Content 8 4.3 Video Content 8 4.4 Functional
In mathematics, there are four attainment targets: using and applying mathematics; number and algebra; shape, space and measures, and handling data.
MATHEMATICS: THE LEVEL DESCRIPTIONS In mathematics, there are four attainment targets: using and applying mathematics; number and algebra; shape, space and measures, and handling data. Attainment target
Kapitel 1 Multiplication of Long Integers (Faster than Long Multiplication)
Kapitel 1 Multiplication of Long Integers (Faster than Long Multiplication) Arno Eigenwillig und Kurt Mehlhorn An algorithm for multiplication of integers is taught already in primary school: To multiply
PDF Primer PDF. White Paper
White Paper PDF Primer PDF What is PDF and what is it good for? How does PDF manage content? How is a PDF file structured? What are its capabilities? What are its limitations? Version: 1.0 Date: October
Common Tools for Displaying and Communicating Data for Process Improvement
Common Tools for Displaying and Communicating Data for Process Improvement Packet includes: Tool Use Page # Box and Whisker Plot Check Sheet Control Chart Histogram Pareto Diagram Run Chart Scatter Plot
The Circumference Function
2 Geometry You have permission to make copies of this document for your classroom use only. You may not distribute, copy or otherwise reproduce any part of this document or the lessons contained herein
DIFFERENTIABILITY OF COMPLEX FUNCTIONS. Contents
DIFFERENTIABILITY OF COMPLEX FUNCTIONS Contents 1. Limit definition of a derivative 1 2. Holomorphic functions, the Cauchy-Riemann equations 3 3. Differentiability of real functions 5 4. A sufficient condition
Sudoku puzzles and how to solve them
Sudoku puzzles and how to solve them Andries E. Brouwer 2006-05-31 1 Sudoku Figure 1: Two puzzles the second one is difficult A Sudoku puzzle (of classical type ) consists of a 9-by-9 matrix partitioned
User Guide. Introduction to 3M Digital Designs. User Guide Contents: Installing 3M Digital Designs Software. Setting up a Plotter
User Guide June 2008 Introduction to 3M Digital Designs 3M Digital Designs provides you with a convenient system for precision cutting of paint protection film kits. When these cut pieces are applied to
Composition and Layout Techniques
Composition and Layout Techniques Composition Techniques Composition Composition is the placement or arrangement of visual elements or ingredients in a work of art, as distinct from the subject of a work.
Math 4310 Handout - Quotient Vector Spaces
Math 4310 Handout - Quotient Vector Spaces Dan Collins The textbook defines a subspace of a vector space in Chapter 4, but it avoids ever discussing the notion of a quotient space. This is understandable
VFComb 1.3 the program which simplifies the virtual font management
A.S. Berdnikov Institute of Analytical Instrumentation Rizsky pr. 26, 198103 St.Petersburg, Russia [email protected] S.B. Turtia Institute of Analytical Instrumentation Rizsky pr. 26, 198103 St.Petersburg,
1.7 Graphs of Functions
64 Relations and Functions 1.7 Graphs of Functions In Section 1.4 we defined a function as a special type of relation; one in which each x-coordinate was matched with only one y-coordinate. We spent most
Make your own Temple Run game
Make your own Temple Run game These instructions will talk you through how to make your own Temple Run game with your pupils. The game is made in Scratch, which can be downloaded here: http://scratch.mit.edu
An example of a computable
An example of a computable absolutely normal number Verónica Becher Santiago Figueira Abstract The first example of an absolutely normal number was given by Sierpinski in 96, twenty years before the concept
The Unicode Standard Version 8.0 Core Specification
The Unicode Standard Version 8.0 Core Specification To learn about the latest version of the Unicode Standard, see http://www.unicode.org/versions/latest/. Many of the designations used by manufacturers
Mathematical Induction
Mathematical Induction In logic, we often want to prove that every member of an infinite set has some feature. E.g., we would like to show: N 1 : is a number 1 : has the feature Φ ( x)(n 1 x! 1 x) How
8 Primes and Modular Arithmetic
8 Primes and Modular Arithmetic 8.1 Primes and Factors Over two millennia ago already, people all over the world were considering the properties of numbers. One of the simplest concepts is prime numbers.
Using Use Cases for requirements capture. Pete McBreen. 1998 McBreen.Consulting
Using Use Cases for requirements capture Pete McBreen 1998 McBreen.Consulting [email protected] All rights reserved. You have permission to copy and distribute the document as long as you make no changes
Digital System Design Prof. D Roychoudhry Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur
Digital System Design Prof. D Roychoudhry Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 04 Digital Logic II May, I before starting the today s lecture
6 EXTENDING ALGEBRA. 6.0 Introduction. 6.1 The cubic equation. Objectives
6 EXTENDING ALGEBRA Chapter 6 Extending Algebra Objectives After studying this chapter you should understand techniques whereby equations of cubic degree and higher can be solved; be able to factorise
WHITE PAPER DECEMBER 2010 CREATING QUALITY BAR CODES FOR YOUR MOBILE APPLICATION
DECEMBER 2010 CREATING QUALITY BAR CODES FOR YOUR MOBILE APPLICATION TABLE OF CONTENTS 1 Introduction...3 2 Printed bar codes vs. mobile bar codes...3 3 What can go wrong?...5 3.1 Bar code Quiet Zones...5
Preservation Handbook
Preservation Handbook Plain text Author Version 2 Date 17.08.05 Change History Martin Wynne and Stuart Yeates Written by MW 2004. Revised by SY May 2005. Revised by MW August 2005. Page 1 of 7 File: presplaintext_d2.doc
Chapter 4: Tools of Modern Systems Analysis
Just Enough Structured Analysis Chapter 4: Tools of Modern Systems Analysis Nature has... some sort of arithmetical-geometrical coordinate system, because nature has all kinds of models. What we experience
Preservation Handbook
Preservation Handbook [Binary Text / Word Processor Documents] Author Rowan Wilson and Martin Wynne Version Draft V3 Date 22 / 08 / 05 Change History Revised by MW 22.8.05; 2.12.05; 7.3.06 Page 1 of 7
Grade 7/8 Math Circles November 3/4, 2015. M.C. Escher and Tessellations
Faculty of Mathematics Waterloo, Ontario N2L 3G1 Centre for Education in Mathematics and Computing Tiling the Plane Grade 7/8 Math Circles November 3/4, 2015 M.C. Escher and Tessellations Do the following
Updates to Graphing with Excel
Updates to Graphing with Excel NCC has recently upgraded to a new version of the Microsoft Office suite of programs. As such, many of the directions in the Biology Student Handbook for how to graph with
a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a 2n x n = b 2.
Chapter 1 LINEAR EQUATIONS 1.1 Introduction to linear equations A linear equation in n unknowns x 1, x,, x n is an equation of the form a 1 x 1 + a x + + a n x n = b, where a 1, a,..., a n, b are given
CATIA V5 Surface Design
CATIA V5 Training Foils CATIA V5 Surface Design Version 5 Release 19 August 2008 EDU_CAT_EN_V5S_FI_V5R19 1 Lesson 1: Introduction to Generative Shape Design About this Course Introduction CATIA is a robust
Kenken For Teachers. Tom Davis [email protected] http://www.geometer.org/mathcircles June 27, 2010. Abstract
Kenken For Teachers Tom Davis [email protected] http://www.geometer.org/mathcircles June 7, 00 Abstract Kenken is a puzzle whose solution requires a combination of logic and simple arithmetic skills.
The Adobe PostScript Printing Primer
The Adobe PostScript Printing Primer A do be Post Script Contents Since Adobe Systems introduced the PostScript standard in 1985, Adobe PostScript software has sparked a revolution in how we communicate
VIDEO SCRIPT: 8.2.1 Data Management
VIDEO SCRIPT: 8.2.1 Data Management OUTLINE/ INTENT: Create and control a simple numeric list. Use numeric relationships to describe simple geometry. Control lists using node lacing settings. This video
Chapter 4 Software Lifecycle and Performance Analysis
Chapter 4 Software Lifecycle and Performance Analysis This chapter is aimed at illustrating performance modeling and analysis issues within the software lifecycle. After having introduced software and
Fast Sequential Summation Algorithms Using Augmented Data Structures
Fast Sequential Summation Algorithms Using Augmented Data Structures Vadim Stadnik [email protected] Abstract This paper provides an introduction to the design of augmented data structures that offer
Setting the scene. by Stephen McCabe, Commonwealth Bank of Australia
Establishing risk and reward within FX hedging strategies by Stephen McCabe, Commonwealth Bank of Australia Almost all Australian corporate entities have exposure to Foreign Exchange (FX) markets. Typically
. 0 1 10 2 100 11 1000 3 20 1 2 3 4 5 6 7 8 9
Introduction The purpose of this note is to find and study a method for determining and counting all the positive integer divisors of a positive integer Let N be a given positive integer We say d is a
University of Hull Department of Computer Science. Wrestling with Python Week 01 Playing with Python
Introduction Welcome to our Python sessions. University of Hull Department of Computer Science Wrestling with Python Week 01 Playing with Python Vsn. 1.0 Rob Miles 2013 Please follow the instructions carefully.
1 Solving LPs: The Simplex Algorithm of George Dantzig
Solving LPs: The Simplex Algorithm of George Dantzig. Simplex Pivoting: Dictionary Format We illustrate a general solution procedure, called the simplex algorithm, by implementing it on a very simple example.
INCIDENCE-BETWEENNESS GEOMETRY
INCIDENCE-BETWEENNESS GEOMETRY MATH 410, CSUSM. SPRING 2008. PROFESSOR AITKEN This document covers the geometry that can be developed with just the axioms related to incidence and betweenness. The full
INTERSECTION MATH And more! James Tanton
INTERSECTION MATH And more! James Tanton www.jamestanton.com The following represents a sample activity based on the December 2006 newsletter of the St. Mark s Institute of Mathematics (www.stmarksschool.org/math).
136 CHAPTER 4. INDUCTION, GRAPHS AND TREES
136 TER 4. INDUCTION, GRHS ND TREES 4.3 Graphs In this chapter we introduce a fundamental structural idea of discrete mathematics, that of a graph. Many situations in the applications of discrete mathematics
Collecting Polish German Parallel Corpora in the Internet
Proceedings of the International Multiconference on ISSN 1896 7094 Computer Science and Information Technology, pp. 285 292 2007 PIPS Collecting Polish German Parallel Corpora in the Internet Monika Rosińska
Chapter 11 Number Theory
Chapter 11 Number Theory Number theory is one of the oldest branches of mathematics. For many years people who studied number theory delighted in its pure nature because there were few practical applications
3. Mathematical Induction
3. MATHEMATICAL INDUCTION 83 3. Mathematical Induction 3.1. First Principle of Mathematical Induction. Let P (n) be a predicate with domain of discourse (over) the natural numbers N = {0, 1,,...}. If (1)
B.A IN GRAPHIC DESIGN
COURSE GUIDE B.A IN GRAPHIC DESIGN GRD 126 COMPUTER GENERATED GRAPHIC DESIGN I UNIVERSITY OF EDUCATION, WINNEBA DEPARTMENT OF GRAPHIC DESIGN Copyright Acknowledgements The facilitating agent of the course
Second Order Linear Nonhomogeneous Differential Equations; Method of Undetermined Coefficients. y + p(t) y + q(t) y = g(t), g(t) 0.
Second Order Linear Nonhomogeneous Differential Equations; Method of Undetermined Coefficients We will now turn our attention to nonhomogeneous second order linear equations, equations with the standard
ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER
ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER Pierre A. von Kaenel Mathematics and Computer Science Department Skidmore College Saratoga Springs, NY 12866 (518) 580-5292 [email protected] ABSTRACT This paper
Basic circuit troubleshooting
Basic circuit troubleshooting This worksheet and all related files are licensed under the Creative Commons Attribution License, version 1.0. To view a copy of this license, visit http://creativecommons.org/licenses/by/1.0/,
Five High Order Thinking Skills
Five High Order Introduction The high technology like computers and calculators has profoundly changed the world of mathematics education. It is not only what aspects of mathematics are essential for learning,
Notes on Complexity Theory Last updated: August, 2011. Lecture 1
Notes on Complexity Theory Last updated: August, 2011 Jonathan Katz Lecture 1 1 Turing Machines I assume that most students have encountered Turing machines before. (Students who have not may want to look
Spiel. Connect to people by sharing stories through your favorite discoveries
Spiel Connect to people by sharing stories through your favorite discoveries Addison Leong Joanne Jang Katherine Liu SunMi Lee Development & user Development & user Design & product Development & testing
PARAMETRIC MODELING. David Rosen. December 1997. By carefully laying-out datums and geometry, then constraining them with dimensions and constraints,
1 of 5 11/18/2004 6:24 PM PARAMETRIC MODELING David Rosen December 1997 The term parametric modeling denotes the use of parameters to control the dimensions and shape of CAD models. Think of a rubber CAD
Tibetan For Windows - Software Development and Future Speculations. Marvin Moser, Tibetan for Windows & Lucent Technologies, USA
Tibetan For Windows - Software Development and Future Speculations Marvin Moser, Tibetan for Windows & Lucent Technologies, USA Introduction This paper presents the basic functions of the Tibetan for Windows
Testing LTL Formula Translation into Büchi Automata
Testing LTL Formula Translation into Büchi Automata Heikki Tauriainen and Keijo Heljanko Helsinki University of Technology, Laboratory for Theoretical Computer Science, P. O. Box 5400, FIN-02015 HUT, Finland
Bitrix Site Manager 4.1. User Guide
Bitrix Site Manager 4.1 User Guide 2 Contents REGISTRATION AND AUTHORISATION...3 SITE SECTIONS...5 Creating a section...6 Changing the section properties...8 SITE PAGES...9 Creating a page...10 Editing
MATH10212 Linear Algebra. Systems of Linear Equations. Definition. An n-dimensional vector is a row or a column of n numbers (or letters): a 1.
MATH10212 Linear Algebra Textbook: D. Poole, Linear Algebra: A Modern Introduction. Thompson, 2006. ISBN 0-534-40596-7. Systems of Linear Equations Definition. An n-dimensional vector is a row or a column
This puzzle is based on the following anecdote concerning a Hungarian sociologist and his observations of circles of friends among children.
0.1 Friend Trends This puzzle is based on the following anecdote concerning a Hungarian sociologist and his observations of circles of friends among children. In the 1950s, a Hungarian sociologist S. Szalai
x 2 + y 2 = 1 y 1 = x 2 + 2x y = x 2 + 2x + 1
Implicit Functions Defining Implicit Functions Up until now in this course, we have only talked about functions, which assign to every real number x in their domain exactly one real number f(x). The graphs
Information Theory and Coding Prof. S. N. Merchant Department of Electrical Engineering Indian Institute of Technology, Bombay
Information Theory and Coding Prof. S. N. Merchant Department of Electrical Engineering Indian Institute of Technology, Bombay Lecture - 17 Shannon-Fano-Elias Coding and Introduction to Arithmetic Coding
chapter >> Making Decisions Section 2: Making How Much Decisions: The Role of Marginal Analysis
chapter 7 >> Making Decisions Section : Making How Much Decisions: The Role of Marginal Analysis As the story of the two wars at the beginning of this chapter demonstrated, there are two types of decisions:
Math Workshop October 2010 Fractions and Repeating Decimals
Math Workshop October 2010 Fractions and Repeating Decimals This evening we will investigate the patterns that arise when converting fractions to decimals. As an example of what we will be looking at,
6.4 Normal Distribution
Contents 6.4 Normal Distribution....................... 381 6.4.1 Characteristics of the Normal Distribution....... 381 6.4.2 The Standardized Normal Distribution......... 385 6.4.3 Meaning of Areas under
PitStop Pro and PitStop Server 13 update 1 include a host of new and improved functionality to serve a wide variety of environments:
Page 1/21 PitStop 13 update 1 PitStop Pro and PitStop Server 13 update 1 include a host of new and improved functionality to serve a wide variety of environments: Large Format Packaging and Label Sign
SECTION 10-2 Mathematical Induction
73 0 Sequences and Series 6. Approximate e 0. using the first five terms of the series. Compare this approximation with your calculator evaluation of e 0.. 6. Approximate e 0.5 using the first five terms
The Graphical Method: An Example
The Graphical Method: An Example Consider the following linear program: Maximize 4x 1 +3x 2 Subject to: 2x 1 +3x 2 6 (1) 3x 1 +2x 2 3 (2) 2x 2 5 (3) 2x 1 +x 2 4 (4) x 1, x 2 0, where, for ease of reference,
Guide to Writing a Project Report
Guide to Writing a Project Report The following notes provide a guideline to report writing, and more generally to writing a scientific article. Please take the time to read them carefully. Even if your
ACCELERATION DUE TO GRAVITY
EXPERIMENT 1 PHYSICS 107 ACCELERATION DUE TO GRAVITY Skills you will learn or practice: Calculate velocity and acceleration from experimental measurements of x vs t (spark positions) Find average velocities
Just the Factors, Ma am
1 Introduction Just the Factors, Ma am The purpose of this note is to find and study a method for determining and counting all the positive integer divisors of a positive integer Let N be a given positive
ebooks: From Adobe InDesign to the Kindle Store
Technical Paper ebooks: From Adobe InDesign to the Kindle Store Table of Contents 1 A multiplicity of formats 2 Step 1: Export InDesign document to EPUB 5 Step 2: Convert EPUB to MOBI 9 Step 3: Preview
Unit 1 Number Sense. In this unit, students will study repeating decimals, percents, fractions, decimals, and proportions.
Unit 1 Number Sense In this unit, students will study repeating decimals, percents, fractions, decimals, and proportions. BLM Three Types of Percent Problems (p L-34) is a summary BLM for the material
Preparing graphics for IOP journals
Please note that these guidelines do not apply to journals of the American Astronomical Society. Guidelines for these journals are available online. Preparing graphics for IOP journals IOP Publishing,
CHAPTER 5 Round-off errors
CHAPTER 5 Round-off errors In the two previous chapters we have seen how numbers can be represented in the binary numeral system and how this is the basis for representing numbers in computers. Since any
Basics of Polynomial Theory
3 Basics of Polynomial Theory 3.1 Polynomial Equations In geodesy and geoinformatics, most observations are related to unknowns parameters through equations of algebraic (polynomial) type. In cases where
5.5. Solving linear systems by the elimination method
55 Solving linear systems by the elimination method Equivalent systems The major technique of solving systems of equations is changing the original problem into another one which is of an easier to solve
