A Portable Assembly Language That Supports Garbage

Total Page:16

File Type:pdf, Size:1020Kb

A Portable Assembly Language That Supports Garbage C a p ortable assembly language that supp orts garbage collection 1 2 3 Simon Peyton Jones Norman Ramsey and Fermin Reig 1 simonpjmicrosoftcom Microsoft Research Ltd 2 nrcsvirginiaedu University of Virginia 3 reigdcsglaacuk University of Glasgow Abstract For a compiler writer generating go o d machine co de for a variety of platforms is hard work One might try to reuse a retargetable co de generator but co de generators are complex and dicult to use and they limit ones choice of implementation language One might try to use C as a p ortable assembly language but C limits the compiler writers exibility and the p erformance of the resulting co de The wide use of C despite these drawbacks argues for a p ortable assembly lan guage C is a new language designed expressly for this purp ose The use of a p ortable assembly language introduces new problems in the sup p ort of such highlevel runtime services as garbage collection exception handling concurrency proling and debugging We address these prob lems by combining the C language with a C runtime interface The combination is designed to allow the compiler writer a choice of source language semantics and implementation techniques while still providing go o d p erformance Introduction Supp ose you are writing a compiler for a highlevel language How are you to generate highquality machine co de You could do it yourself or you could try to take advantage of the work of others by using an otheshelf co de gener ator Curiously despite the huge amount of research in this area only three retargetable optimizing co de generators app ear to b e freely available VPO Benitez and Davidson MLRISC George and the gcc back end Stallman Each of these impressive systems has a rich complex and ill do cumented interface Of course these interfaces are quite dierent from one another so once you start to use one you will b e unable to switch easily to an other Furthermore they are languagesp ecic To use MLRISC you must write your front end in ML to use the gcc back end you must write it in C and so on All of this is most unsatisfactory It would b e much b etter to have one p ortable assembly language that could b e generated by a front end and implemented by any of the available co de generators So pressing is this need that it has b e come common to use C as a p ortable assembly language Atkinson et al Bartlett b Peyton Jones Tarditi Acharya and Lee Henderson Conway and Somogyi Pettersson Serrano and Weis Unfortu nately C was never intended for this purp ose it is a programming language not an assembly language C lo cks the implementation into a particular calling convention makes it imp ossible to compute targets of jumps provides no sup p ort for garbage collection and provides very little supp ort for exceptions or debugging Section The obvious way forward is to design a language sp ecically as a compiler tar get language Such a language should serve as the interface b etween a compiler for a highlevel language the front end and a retargetable co de generator the back end The language would not only make the compiler writers life much easier but would also give the author of a new co de generator a readymade cus tomer base In an earlier pap er we prop ose a design for just such a language C Peyton Jones Oliva and Nordin but the story do es not end there Sepa rating the front and back ends greatly complicates runtime supp ort In general the front end back end and runtime system for a programming language are designed together They co op erate intimately to supp ort such highlevel features as garbage collection exception handling debugging proling and concurrency highlevel runtime services If the back end is a p ortable assembler like C we want the co op eration without the intimacy an implementation of C should b e indep endent of the front ends with which it will b e used One alternative is to make all these highlevel services part of the abstraction of fered by the p ortable assembler For example the Java Virtual Machine which provides garbage collection and exception handling has b een used as a tar get for languages other than Java including Ada Taft ML Benton Kennedy and Russell Scheme Clausen and Danvy and Haskell Wakeling But a sophisticated platform like a virtual machine embo dies to o many design decisions For a start the semantics of the virtual machine may not match the semantics of the language b eing compiled eg the exception se mantics Even if the semantics happ en to match the engineering tradeos may dier dramatically For example functional languages like Haskell or Scheme allo cate like crazy Diwan Tarditi and Moss and JVM implementations are typically not optimised for this case Finally a virtual machine typically comes complete with a very large infrastructure class loaders veriers and the like that may well b e inappropriate Our intended level of abstraction is much much lower Our problem is to enable a client to implement highlevel services while still using C as a co de generator As we discuss in Section supp orting high level services requires knowledge from both the front and back ends The insight b ehind our solution is that C should include not only a lowlevel assembly language for use by the compiler but also a lowlevel runtime system for use by the front ends runtime system The only intimate co op eration required is b etween the C back end and its runtime system the front end works with C at arms length through a welldened language and a welldened run time interface Section This interface adds something fundamentally new the ability to insp ect and mo dify the state of a susp ended computation It is not obvious that this approach is workable Can just a few assemblylanguage capabilities supp ort many highlevel runtime services Can the frontend run time system easily implement highlevel services using these capabilities How much is overall eciency compromised by the armslength relationship b etween the frontend runtime and the C runtime We cannot yet answer these ques tions denitively Instead the primary contributions of this pap er are to identify needs that are common to various highlevel services and to prop ose sp ecic mechanisms to meet these needs We demonstrate only how to use C to im plement the easiest of our intended services namely garbage collection Rening our design to accommo date exceptions concurrency proling and debugging has emerged as an interesting research challenge Its imp ossible or its C The dream of a p ortable assembler has b een around at least since UNCOL Conway Is it an imp ossible dream then Clearly not Cs p opularity as an assembler is clear evidence that a need exists and that something useful can b e done If C is so p opular then p erhaps C is p erfectly adequate Not so There are many diculties of which the most fundamental are these The C route rewards those who can map their highlevel language rather directly onto C A highlevel language pro cedure b ecomes a C pro cedure and so on But this mapping is often awkward and sometimes imp ossible For example some source languages fundamentally require tailcall optimi sation a pro cedure call whose result is returned to the caller of the current pro cedure must b e executed in the stack frame of the current pro cedure This optimisation allows iteration to b e implemented eciently using recursion More generally it allows one to think of a pro cedure as a lab elled extended basic blo ck that can b e jumped to rather than as subprogram that can only b e called Such pro cedures give a front end the freedom to design its own control ow It is very dicult to implement the tailcall optimisation in C and no C com piler known to us do es so across separately compiled mo dules Those using C have b een very ingenious in nding ways around this deciency Steele Tarditi Acharya and Lee Peyton Jones Henderson Conway and Somogyi but the results are complex fragile and heavily tuned for one particular implementation of C usually gcc A C compiler may lay out its stack frames as it pleases This makes it dicult for a garbage collector to nd the live p ointers Implementors either arrange not to keep p ointers on the C stack or they use a conservative garbage collector These restrictions are Draconian The unknown stackframe layout also complicates supp ort for exception handling debugging proling and concurrency For example an exception handling mechanism needs to walk the stack p erhaps removing stack frames as it go es Again C makes it essentially imp ossible to implement such mecha nisms unless they can b e closely mapp ed onto what C provides ie setjmp and longjmp A C compiler has to b e very conservative ab out the p ossibility of memory aliasing This seriously limits the ability of the instruction scheduler to p er mute memory op erations or hoist them out of a lo op The frontend compiler often knows that aliasing cannot o ccur but there is no way to convey this information to the C compiler So much for fundamental issues C also lacks the ability to control a number of imp ortant lowlevel features including returning multiple values in registers from a pro cedure misaligned memory accesses arithmetic data layout and omitting range checks on multiway jumps In short C is awkward to use as a p ortable assembler and many of these di culties translate into p erformance hits A p ortable assembly language should b e able to oer b etter p erformance as well as greater ease of use An overview of C In this section we give an overview of the design of C Fuller descriptions can
Recommended publications
  • Cap Height Body X-Height Crossbar Terminal Counter Bowl Stroke Loop
    Cap Height Body X-height -height is the distance between the -Cap height refers to the height of a -In typography, the body height baseline of a line of type and tops capital letter above the baseline for refers to the distance between the of the main body of lower case a particular typeface top of the tallest letterform to the letters (i.e. excluding ascenders or bottom of the lowest one. descenders). Crossbar Terminal Counter -In typography, the terminal is a In typography, the enclosed or par- The (usually) horizontal stroke type of curve. Many sources con- tially enclosed circular or curved across the middle of uppercase A sider a terminal to be just the end negative space (white space) of and H. It CONNECTS the ends and (straight or curved) of any stroke some letters such as d, o, and s is not cross over them. that doesn’t include a serif the counter. Bowl Stroke Loop -In typography, it is the curved part -Stroke of a letter are the lines that of a letter that encloses the circular make up the character. Strokes may A curving or doubling of a line so or curved parts (counter) of some be straight, as k,l,v,w,x,z or curved. as to form a closed or partly open letters such as d, b, o, D, and B is Other letter parts such as bars, curve within itself through which the bowl. arms, stems, and bowls are collec- another line can be passed or into tively referred to as the strokes that which a hook may be hooked make up a letterform Ascender Baseline Descnder In typography, the upward vertical Lowercases that extends or stem on some lowercase letters, such In typography, the baseline descends below the baselines as h and b, that extends above the is the imaginary line upon is the descender x-height is the ascender.
    [Show full text]
  • OCR a Level Computer Science H446 Specification
    Qualification Accredited Oxford Cambridge and RSA A LEVEL Specification COMPUTER SCIENCE H446 ForH418 first assessment in 2017 For first assessment 2022 Version 2.5 (January 2021) ocr.org.uk/alevelcomputerscience Disclaimer Specifications are updated over time. Whilst every effort is made to check all documents, there may be contradictions between published resources and the specification, therefore please use the information on the latest specification at all times. Where changes are made to specifications these will be indicated within the document, there will be a new version number indicated, and a summary of the changes. If you do notice a discrepancy between the specification and a resource please contact us at: [email protected] We will inform centres about changes to specifications. We will also publish changes on our website. The latest version of our specifications will always be those on our website (ocr.org.uk) and these may differ from printed versions. Registered office: The Triangle Building © 2021 OCR. All rights reserved. Shaftesbury Road Cambridge Copyright CB2 8EA OCR retains the copyright on all its publications, including the specifications. However, registered centres for OCR are permitted to copy material from this OCR is an exempt charity. specification booklet for their own internal use. Oxford Cambridge and RSA is a Company Limited by Guarantee. Registered in England. Registered company number 3484466. Contents Introducing… A Level Computer Science (from September 2015) ii Teaching and learning resources iii Professional development iv 1 Why choose an OCR A Level in Computer Science? 1 1a. Why choose an OCR qualification? 1 1b. Why choose an OCR A Level in Computer Science? 2 1c.
    [Show full text]
  • Font Management Basic Terminology ∞ I
    CS 175.21 Windsor Green Spring 2010 Font Management Basic Terminology ∞ I. Font Definition∞ A. Strictly speaking the contents of the two cases - upper and lower - in metal type (for one size) B. Nowadays, the word font means all the glyphs (symbols) for a font in all sizes. Examples; Century, Fritz Quadrata, Myriad, , Giddyup, Gill Sans Ultra Bold Bickham Script C. The term typeface is interchangeable with font in today’s modern computer world A. Myriad Italic D. All the variations for a font is called a font family — B. Myria Regular this includes different weights (thicknesses like bold and light) and glyph widths (condensed and extended). C. Myriad Light II. Acquiring Fonts D. Myriad Bold A. Computer fonts: postscript, True type and Open Type E. Myriad SemiboldCondesed B. Font foundries: companies that create fonts F. Myriad Semibold Italic C. Special system fonts: Microsoft has special TT fonts used in the Windows OS Apple has special TT fonts used in their OS and dfonts. D. Application fonts: Microsoft auto installs numerous True type fonts during Office installation Adobe auto installs numerous OpenType fonts during Adobe CS installation E. Purchased fonts 1. Adobe (no longer creates new PostScript fonts but supports them — the focus is now on Open Type fonts) 2. High end fonts for home use and professional printing: OpenType and PostScript 3. Be careful buying fonts! The same typeface is sometimes available from different foundries. 4. Some websites where you can purchase fonts and where foundries are listed. fonts.com myfonts.com philsfonts.com Page 1 5. Some Foundries linotype.com itcfonts.com bertholdtype.com adobe.com/type Licensing agreements for purchased fonts — how can you legally use a font? 6.
    [Show full text]
  • A Letter Is Defined As a Character Or Symbol That Represents Sound Used in Speech
    Typography 1: Letter A letter is defined as a character or symbol that represents sound used in speech. The English alphabet has 26 of these characters, from which all of the English language is derived. Each character is unique, it has it’s own sound, it’s own shape, its own characteristics and its own rules of use. A designer can not properly create good typographic design without a proper understanding of the characters that make up a word, sentence, or paragraph. Images from this slide show come from: http://www.graphictivitis.com/index.php/the-anatomy-of-type/ Typography 1: Letter The English alphabet is made up of uppercase letters, lowercase letters and a full complement of symbols, including periods, commas, exclamation points, question marks, numbers, hyphens, brackets, etc. The overall look and design of these letters is called a typeface. The complete set of letters, numbers, and symbols together is called a font. Samples of Baskerville (left) and Helvetica (right) Typography 1:Letter The two main categories of typefaces are serif or sans serif. Fonts are often divided into serif and sans serif. Serif fonts are distinguishable by the extra stroke at the ends of the character, known as a serif (aka as a tail). Sans serif is a letterform without structural extensions or tails. Sans is french meaning without. Typography 1:Letter Examples of serif and sans serif typefaces Serif: Sans serif is a letterform without structural extensions or tails. Sans is french meaning without. Cave Paintings in Zimbabwe Typography 1: Letter Heavy rectangular shaped serifs are called slab serif typefaces What are some examples of slab serif typefaces in your collection of fonts? Typography 1: Letter ANATOMY OF A LETTER Cap height: The height of the uppercase letters.
    [Show full text]
  • The Characterization of Cursive Handwriting
    22 THE CHARACTERIZATION OF CURSIVE WRITINGt MURRAY EDEN! and MORRIS HALLE§ ResearchLaboratory of Electronics MassachusettsInstitute of Technology I Cambridge39, Massachusetts, U.S.A. THE aim of this study is to give a scientific account of cursive writing as practised in the United States and, with relatively minor modifications, in all parts of the world where a Latin script is used. We have chosen to study writing not only because it is an intrinsically interesting form of human communicative behaviour, but also because it is our hope that what is learned about writing and about reading of handwritten texts will throw new light on other forms of communicative behaviour as well, in particular, on the acoustical analogon of script, speech. We regard our task as that of discovering a simple and complete set of statements that characterizes any specimen written in the script under study, or alternatively as that of describing an algorithm that generates any such specimen. The algorithm must, therefore, contain the essence of what a child learns in the first years of his schooling. It can, however, not be identical with the instructions given to children in elementary grades, for being primarily interested in a scientific account of writing rather than in effective ways of teaching it, we cannot, unlike the teacher, take advantage of the pupils' considerable intelligence that allows them to learn many things which are not expressly taught or which are incompletely or inconsistently presented. A scientific account must contain both the overt instruction as well as the covert, intuitively learned, contribution of the pupil.
    [Show full text]
  • Arabic Type Classification System
    ARABIC TYPE CLASSIFICATION SYSTEM QUALITATIVE CLASSIFICATION OF HISTORIC ARABIC WRITING SCRIPTS IN THE CONTEMPORARY TYPOGRAPHIC CONTEXT BY DARIN ABU-SHAQRA | INCLUSIVE DESIGN | 2020 SUBMITTED TO OCAD UNIVERSITY IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF DESIGN IN INCLUSIVE DESIGN TORONTO, ONTARIO, CANADA, 2020 i ACKNOWLEDGEMENTS I wish to express my sincere appreciation to both my primary advisor Richard Hunt, and secondary advisor Peter Coppin, your unlimited positivity, guidance and support was crucial to the comple- tion of this work. It was an absolute honour to have two geniuses in their fields as my advisors. Enriching my knowledge of typography and graphic design and looking through the lens of inclusive design and cognitive science of representation shaped a new respect for the cultural and experiential power of typography in me. My sincere gratitude goes to the talented calligraphers and graphic designers whom I have interviewed back in Jordan. Thank you, for your valuable time, and for allowing me to watch the world from different angles, and experiences. This project owes a lot to your motivation. My heartfelt thanks goes to my family - my late father Khalid, who, although is no longer with me, continues to inspire every step I have to take, my mother Nadia for being the symbol of strength and persistence, my siblings Yasmin, Omar, Ali and Abdullah for always believing in my dreams and doing whatever it takes to make them come true. A special thanks goes to the one who made those two years possible, Ra’ad thank you for being the definition of a life companion and a husband.
    [Show full text]
  • Typetool 3 for Windows User Manual
    TypeTool 3 basic font editor for fast and easy font creation, conversion and modification User’s manual for windows Copyright © 1992–2013 by Fontlab Ltd. All rights reserved. Editors: Sasha Petrov, Adam Twardoch, Ted Harrison, Yuri Yarmola Cover illustration: Paweł Jońca, pejot.com No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written consent of the publisher. Any software referred to herein is furnished under license and may only be used or copied in accordance with the terms of such license. Fontographer, FontLab, FontLab logo, ScanFont, TypeTool, SigMaker, AsiaFont Studio, FontAudit and VectorPaint are either registered trademarks or trademarks of Fontlab, Ltd. in the United States and/or other countries. Apple, the Apple Logo, Mac, Mac OS, Macintosh and TrueType are trademarks of Apple Computer, Inc., registered in the United States and other countries. Adobe, PostScript, PostScript 3, Type Manager, FreeHand, Illustrator and OpenType logo are trademarks of Adobe Systems Incorporated that may be registered in certain jurisdictions. Windows, Windows 95, Windows 98, Windows XP, Windows NT, Windows Vista and OpenType are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. IBM is a registered trademark of International Business Machines Corporation. Other brand or product names are the trademarks or registered trademarks of their respective holders. THIS PUBLICATION AND THE INFORMATION HEREIN IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY FONTLAB LTD.
    [Show full text]
  • Deploying Analytics with the Portable Format for Analytics (PFA)
    Deploying Analytics with the Portable Format for Analytics (PFA) ∗ Jim Pivarski Collin Bennett Robert L. Grossman Open Data Group Inc. Open Data Group Inc. Open Data Group Inc. 400 Lathrop Ave Suite 90 400 Lathrop Ave Suite 90 400 Lathrop Ave Suite 90 River Forest IL USA River Forest IL USA River Forest IL USA ABSTRACT 1. INTRODUCTION We introduce a new language for deploying analytic models The KDD research community has traditionally been fo- into products, services and operational systems called the cused on developing new algorithms and developing systems Portable Format for Analytics (PFA). PFA is an example for managing and analyzing data. This is the one of the of what is sometimes called a model interchange format, a cores of data science. Technology is also required for deploy- language for describing analytic models that is independent ing algorithms and statistical models in analytic products, of specific tools, applications or systems. Model interchange analytic services, and operational systems. Sometimes the formats allow one application (the model producer) to ex- term analytic operations is used for this component of the port models and another application (the model consumer KDD process. or scoring engine) to import models. The core idea behind A problem that has haunted the KDD community for the PFA is to support the safe execution of statistical func- last twenty years is how to efficiently deploy the analytic tions, mathematical functions, and machine learning algo- models developed by data scientists into products and ser- rithms and their compositions within a safe execution envi- vices that must live in operational environments, which usu- ronment.
    [Show full text]
  • Typography Evolved from Handwriting, Which Is Created By
    PARTS OF THE LETTER Typography evolved from handwriting, which is created by making a series of marks by hand; therefore, the fundamen- tal element constructing a letterform is the linear stroke (stem). Each letter of our alphabet developed as a simple mark whose visual characteristics clearly sepa- rated it from all others. PARTS OF THE LETTER By learning the vocabulary designers and typographers can develop a greater understanding and sensitivity to the visual harmony and complexity of the alphabet. PARTS OF THE LETTER As with any craft that has evolved over 500 years, typography employs a number of technical terms. We will be learning these terms throughout the semester. The following describes specific parts of letterforms. Knowing the letterform component parts will make it much easier to identify specific typeface in the future. serif: the short strokes that finish off the major strokes of the letterform. bracket: a curving joint between the serif and the stroke bracket A baskerville bodoni rockwell Atransitional Amodern slab serif extreme thick and thins nearly mono-weight stroke width A baskerville bodoni rockwell Atransitional Amodern slab serif extreme thick and thins nearly mono-weight baseline: the imaginary line defining the visual base of the letterform. all letterforms sit on the baseline. baseline xAapdeCGgQk cap height: the height of the upper case in a font, taken from the base- line to the top of the character. cap height baseline xAapdeCGgQk x-height: the height lowercase x. if you compare typefaces of the same point size they may not have the same x-height. all of the lowercase x’s are the same point size.
    [Show full text]
  • Fundamental Truths About Handwriting
    Appendix A Fundamental Truths About Handwriting 1. The act of writing is a skill learned through repetition until it becomes a habit. 2. Handwriting requires the concerted effort of the brain, muscles, and nerves. 3. No two people write exactly alike. 4. Individual characteristics that are unique to a particular writer exist in every person’s handwriting, distinguishing it from every other handwriting. 5. There is natural variation in everyone’s handwriting. 6. No one can exactly duplicate anything he or she has written. 7. No one can write better than his or her skill level. 8. People adopt writing styles. 9. People stylize their writing, deviating from the method they were taught. 10. Many writing habits are subconscious and therefore cannot be changed by the writer. 11. A writer can be identified by his or her subconscious habits. 12. A person’s normal form of writing is based on mental images of learned letter designs. 13. A person’s handwriting changes over the course of his or her lifetime. 14. Substance abuse affects handwriting. 15. Some illnesses, trauma, and emotions may result in changes in handwriting. 16. It is not possible to determine what caused a change in the handwriting from studying the handwriting characteristics. 17. If the writer places the pen on the paper before starting to write, the lines will have blunt initial strokes. 18. If the writer stops the pen before lifting it from the paper, the writer will leave a blunt ending on the words. 19. If the writer has the pen in motion when beginning and ending writing, the initial and terminal strokes will be tapered or faded.
    [Show full text]
  • Intermediate
    University of Houston Graphic Design Program Intermediate Fall 2014 Art 3330 Instructor: M/W Sibylle Hagmann www.design.uh.edu/hagmann/intermediate/ Instructor: T/Th Fiona McGettigan www.design.uh.edu/mcgettigan/intermediate/ Project 1 : Type Classification (Alphabetic Coasters) “Exploding,liquidizing,floating,mutating—theuse Project Introduction oftypetodayhasnobounds.Wheretypographywas We are bombarded by a richness and complexity of typographic forms that confidently communicate once merely a transparent medium for presenting the style or image of a proposed message. These forms are primarily symbol-signs that have meaning, and visually represent our spoken language. When making typographic selections, the designer must be letters and words, today the design of characters aware of the history and stereotypes associated with typographic form. In this assignment, we will use hasbecomeanartform,inwhichlegibilityisnolon- our critical and creative eye to collect and evaluate typographic form from a variety of sources. We will gerthesoleaim.Wordshavebecomepicturesrather study the abstract formal qualities of letterforms and note the differences from one letter to another, thansupportingthem…”from Type in Motion and one type family to another. In doing so, we are better aware of the cultural, historical or stereotypical associations connected to the forms. Letters are beautiful in themselves. Just like the faces Day 3 [M 9.1 no school/T 2 Sept/W 3] of human beings, some letters are intricately complex Project Methodology/Schedule Day 1 [M 25/T 26 August] ++ Present 13 unique letterforms. Notate Typeface/ while others are blank and simple. Kiyoshi Awazu ++ Introduce Syllabus font name, type classification, designer, date, etc. Letterforms that honor and elucidate what humans see ++ Assign : Project 1 Consider placement or cropping within the 3 1/2 x 3 Critically study, compare and contrast the differences 1/2" frame.
    [Show full text]
  • Helvetica.Pdf
    Helvetica Complements & Alternatives - – — ÷ •••• •••• ···· ···· r Part 1: Complements Combining Type With Helvetica H E L V E T I C A combining type with helvetica Introduction We asked experts we admire to round up typefaces that share a common use, style, or concept. Indra Kupferschmid is a German typographer and writer who lives in Bonn and teaches in Saarbrücken at the French border. As co-author of “Helvetica forever”, Indra is often asked what typeface to combine with the world’s most famous font. As Indra puts it, “Helvetica is often described as the tasteless white rice among typefaces: satisfies easily, cheap and fast. But the good thing is, you can take the design into different directions with the sauce and side dishes (the typefaces you pair with Helvetica).” Indra shares her favorite Helvetica companions with the following guidelines in mind: “Focusing on contrast makes combining fonts easier. Better not pair Helvetica (or other Neo-Grotesques) with another sans serif (like a Humanist Sans). Instead, choose a serif or a slab. Transitional and Modern (bracketed) serifs work quite well with Helvetica. So do most Garaldes like Garamond — it all depends on what kind of atmosphere you’re aiming for. Browse the list of ideas below, or look for faces with broad proportions, a large x-height, or similar characteristics, like an uppercase ‘R’ with a vertical tail.” www.fontshop.com toll free at 888 ff fonts 415.252.1003 Neutral Fonts If you’re looking for a text face and want to stay consistent by emphasizing the neutral, flawless feel of the Grotesk, try a Transitional serif.
    [Show full text]