WWDC2001 Session 108

Transcript

Kind: captions Language: en thank you and welcome to the second day of WWDC estar as mentioned my name is Derek Clegg I work in the quartz imaging technologies I'm the principal engineer responsible for our PDF support and Mac os10 so today what we're going to talk about is what's PDF that's the principal focus I think a lot of people don't actually understand what PDF is what it does so we're gonna focus a lot on PDF per se and then also we want to talk about how Mac os10 in particular quartz uses PDF so what's PDF well all it really is at the bottom is just a file format it's a way of specifying how data goes into a file but what it's trying to do is provide a persistent representation of document layout and what's really important for us in particular and what's very nice about PDF is that it's independent of your software your hardware your operating system a PDF file sort of works on Mac os10 it works Mac OS 9 it works on Windows so that's a very valuable thing for us so the thing PDF is actually a specification it's published by Adobe you can you can go download it from the web you can go buy it as a book the current version is the 1.3 second edition it's a very nice specification unlike some specifications in the world and adobe has just recently published the 1.4 differences this is the document that describes how PDF 1.4 differs from PDF 1.3 so they actually haven't published the 1.4 spec yet but they do have information about what's coming down the road so let's talk a little bit about what PDF the problem P is trying to solve okay so we have a document we have information we want to convey if you think about that the basic bottom level is just content it's like the words you're using and it's the images using and it's the you know the line art you're trying to display and sometimes it's sufficient just to have content alone a good example of that is HTML HTML as a format which has you're content it really doesn't have a strong layout sense if your browser decides to use a different font or position things the page in its own way it's free to do that that's good but that's often not sufficient and in particular you often want to add layout information into your content stream so you want to be able to say okay this image appears here and there's this title here and this text blows this way around here and this you know this page number appears right at this point on the bottom of the page a traditional example of this is PostScript PostScript represents document content and layout information in a very nice way PDF is exactly analogous in that sense it's it contains both content and layout information and it sort of whoops sort of lives one step above the actual device I mean you can sort of say well you go from content which is an abstract representation sort of like the words you're using to layout which is positioning information as well to actual to the device where you actually say okay now I'm gonna print this thing on a piece of paper PDF lives in this middle area where you have all of the information you need in terms of content but you don't you're not tied to a particular device you're not tied to a resolution to a particular color space to you know a piece of paper so PDF and PostScript live in the same place in terms of the document representation so as I mentioned there's PDF contained sort of describes the document and there's really two parts that we're interested in in courts we're interested in one part and PDF contains an additional part the page content is the part of PDF that actually says here's what a page looks like this is the titles here and there's these 14 lines of text and then there's an image the document itself though is bigger than that in PDF there there's sort of additional metadata that can go into it into a document that describes information about the document that's not actually displayed as part of the page so as an example the document can contain things like annotations additional information that's relative to the page which isn't actually part of the page itself hypertext links interactive forms of you might have used Acrobat and you can brought up a PDF file able to fill in the form in PDF 1.4 they've added what's known as logical structure tagging this is a mechanism where you can say Oh on this page this parent this is a paragraph and this word in this paragraph is in Spanish and this word over here is in I know Chinese and so it from its pure meta information that's not really part of the page proper it's sort of information about the page it doesn't affect how the page is displayed the page content itself is made up of three pieces there's text pretty cool obviously you need text to convey information vector art and sampled images now courts 2d what we care about in Mac os10 and on the courts 2d part we only are interested in page content the document content while it's very important is not something that we can take advantage of on the level of courts 2d we want to have a persistent graphics representation so we're concerned primarily with page content and that's why I'm going to be talking about today some people sort of have referred to this as dumb PDF which is sort of true it's the PDF without all the without as much metadata as you might get if you generate it from Acrobat but that's perfectly appropriate for the applications we use it for in courts 2d so so let's dive down a little bit into what is in a page what's the page content a page description is a way of representing the page in a device and resolution-independent manner what that means is that the page isn't tied to a particular say screen that's going to display on our printer you're going to it's independent of that it's a it's an abstract specification of how the document gets gets laid out and it's resolution independent you're not tied to a particular bit depth or color space you know you can go to CMYK or RGB printers the document is the same independent of the destination the contents are independent the crater which means in particular that all the PDF that's generated is going to end up being the same format it's not like a special Windows PDF or special Adobe PDF or special Apple PDF PDF is the same in a particular we take that very seriously at Apple we're not going to generate special Apple PDF it only works on Mac OS 10 machines or anything like that what we generate will work on Acrobat on Windows on Mac on UNIX platforms so we want to make sure that we are generating PDF it is independent of substance independent of us that works everywhere and the page itself is based on the PDF page description is based on the PostScript imaging model those of you familiar with PostScript might recognize this and I'll talk about this a little bit more so the question is what's an imaging model I mean when you we sort of talked about the PostScript energy model or the quartz 2d imaging model an imaging model is just an abstract way of saying how you're gonna put things on a page so as you get the result you want to get obviously an imagery model needs to be capable of describing simple things complex things you're going to do anything complicated like a magazine illustration or an ad for a magazine or something like that like that you're going to need to have relatively sophisticated imaging model and unsurprisingly you're gonna have to have fonts you're gonna have to have images like you might get from a digital camera you're gonna need vector art so PDF has a particular imaging model a particular way of specifying how things get put on the page it's imaging model is called it's based on the painters rhythm which is essentially how a painter paints when you put down paint on a page you put down more paint on top what you put down on top obscures what's underneath you sort of build up your image your page by putting more important paint up and you sort of build from the bottom up now one thing that's slightly different in PDF 1.4 they've added the notion of transparency so it's not it's the the paint you put on top doesn't necessarily completely obscure what's underneath you can think of it as the paint sort of like watercolors when you put a watercolour down you don't obscure what's underneath you sort of shade what's on what's underneath so that's the same sort of idea in PDF the imaging model you can paint things you can paint glyphs you can Bank vectors you can paint images that's sort of their basic set of three things there's nothing else that's available for you turns out that's actually rich enough for pretty much everything you want to do and the paint in this metaphor is a color for example RGB values or CMYK values it could be a grayscale value a paint can also be a pattern so you might have a replicated sequence of stars or ducks or something and it could be a gradient which is you know a smooth transition from one color to another over a range of space another very important part of the imaging model is the is that paint only is drawn within a current clip region this is again if you'll you know let me extend the metaphor it's exactly what a painter does you put down some tape and when you paint you're only going to show the paint in that region which you've taped off this is very valuable when you're trying to draw complicated images I build up a complicated piece of artwork to be able to clip to a certain region and the key thing and I think that the thing that's very important for PDF is that the PDF and PostScript imaging models are identical anything you can represent in post group you can represent in PDF so that's very very powerful but that doesn't mean that they're the same thing PDF ism is a more restricted format than PostScript there's a lot more stuff you can do it there's there's different types of things you can do in post group that you can't do in PDF but in the end result is that everything that you can image in PostScript you can image in PDF so so now we're gonna talk a little bit about a PDF document and what's actually inside there so the PDF document is the thing that's you know like food PDF if you look at it in your in your Mac os10 machine it can to contain you know more than one page obviously you might have say a book for example that you're publishing as a mission before pages can contain text vector art and graph and sampled images and then as image before documents may contain this metadata that tells you information about the pages so let's go into that a little bit more into the contents of a particular page so the vector art is actually relatively simple and yet it's very rich and very powerful all vector art is constructed from curves in this case Bezier curves that's the only curve you can use and lines so you can build up any shape you want to from curves and lines it turns out that's actually pretty a pretty rich set of even though it's simple it actually lets you do almost all vector art that you would like to do when you build up a path you can stroke it or you can fill it or you can use the path to specify a clip region so you might for example have four curves that you collect together and create a circle and you could fill the circle and then clip to that and draw some stuff inside of that and so on and then another important part and this sort of follows through for each of the pieces of PDF that you can draw on a page this is something known as the current transformation matrix this is a transformation that lets you map to sort of essentially modify the coordinates at the drawing from what you specify to what gets drawn on the page so you can change the transformation matrix you can rotate it or you can scale it and what you draw what you specify will be drawn through that transformation matrix on the page so for example if you want to draw a rotated rectangle you could just draw your rectangle the regular way change the transformation matrix to rotate and then when the rectangle is put gets put on the page it's drawn rotated this is actually very powerful it's part of the PostScript image it PostScript uses the same thing and it makes it easy to do complicated drawing simply the second part of PDF in terms of building up the page content that's important is sampled images at sampled images just like what you get from your digital camera it's just an array of samples you know this many samples across you know thousand 70a this made samples down and each sample represents a color it's just a value that represents a color at that point in the rectangle so PDF is has a nice rich set of bit depths that it supports it sports one two four and eight this is pretty much industry standard there's also 12 bit images but those aren't so common currently a PDF may and I don't know whether it will support that in the future and again just like with vector art everything that's drawn all the images that are drawn a map through the current transformation matrix that means that you can take your image you know your 10 by 7 image and rotate the transformation matrix and draw the image and the image will show up rotate it you don't actually have to calculate what the pixel values are as you rotate the image yourself PDF knows how to do that for you and you end up with a very very nice rotated image without actually having to rotate it yourself and then finally fonts so pretty much for page content you know the meat of things is the text the information the words you're trying to convey fonts are used to convey that obviously and each font consists of a set of glyphs or glyphs a glyph is just a representation of a character and the font it's treated from the point of view of PDF typically as an outline just like a piece of vector art essentially as a consequence glyphs can be stroked or filled just like with vector art and you can also clip through them so you can have a big capital letter a and you can say clip to that and everything you draw from that point on would be clipped through that letter a so you can get nice complicated graphic results using it very simply and as with vector art and with images glyphs are map through the current transformation matrix so if you want to draw our rotated text you can do that simply the same font can be used to draw a skewed text or scale text so everything sort of goes to the current transformation matrix which again lets you do complicated drawing very easily with with not much work now fonts are actually a big thing in the industry there's lots of different types of fonts that have that have come through over the years the big ones are the ones from Adobe and true type Adobe type 1 is an 8 obviously the dhobi ones are part of PDF Adobe type 1 is fully supported in PDF the Adobe type 1 multiple master as well Adobe the cff compact font format is also supported that's a essentially sort of a variation of type 1 but it's a smaller format it's used as the basis for OTF fonts a Tobi type 0 is sort of a container for CID font CID fonts are used for Chinese Japanese Korean Vietnamese languages essentially any language where you have a large number of glyphs typically in the order of many thousands to represent the language so this is a very important thing for say the Japanese market where you want to be able to support various forms of Japanese fonts that have many many glyphs in them and then of course true type and probably an old standard for most of you so what's what's important is that PDF is trying with fonts in particular to produce a high fidelity representation of the document content that means that if you want to display your page correctly you want to be able to have a font that you are interested in Optima or you know min show or something like that displayed correctly for the viewer even if they don't have the phone on their system I mean ideally you'd like to have your document be exactly reproducible on every system you have so what PDF allows you which is very powerful is it allows you to embed a font within it within the document itself you can take say Optima embed it in there and that means that when you go to display your a PDF document on a system that doesn't have Optima the document will display correctly because the fonts part of the document that's a really great thing and that's one of the you know principle reasons we like one of the reasons we like PDF is it make sure that you get the right result you what you see here is what you get over there now that's all good but if you're talking about a CJK be font or even Optima you might not want to just download all of that information into your PDF document that could be you know three or four megabytes in some cases so adobe lets you subset fonts which means that if you're just displaying the letters you know baw for example who knows why maybe that's your the acronym or something you could you can just take the letters baw from the font create a subset font and then embed that so that's actually really good we use that very much very heavily in in Mac OS 10 when we're generating PDF documents to only include the parts of the font that are relevant not the entire font this keeps your documents small but also but continues to ensure high fidelity representation now there are cases there are cases when for copyright reasons are a variety of maybe user choice it's impossible are not reasonable to embed the font so PDF unlike PostScript PDF actually also lets you specify metadata about a font so you may put put a reference into your document that you're using Optima but you might not for some reason embed Optima but you can include enough information in the PDF document that allows some other system to Pho the font to create an approximate font that looks very close to the original font and this is really valuable when you are in a situation where for some reason you can't embed the font or you have files that don't have it you get a pretty close look some 100% but it's a lot better than for example in PostScript where if you didn't have the font you get courier which looked awful some of you may actually remember that okay so what we talked about are the major parts of the content stream the vector art the sampled images and the fonts now that's sort of the sort of the the abstract data you now need to sort of paint it with something well you paint it with a color so how do you specify a color in PDF well color Speight you specify color with color spaces and those are those tell the PDF document how to fill or stroke a shape it also tells the PDF document how to interpret the samples in a sampled image whether these samples are and say RGB color space or CMYK or some sort of calibrated gray space for example and what's also nice is that one of the principal parts of PDF that's built in is full support for ICC profiles this allows you to have high fidelity color calibration in a PDF document it's one of the main reasons we like PDF because it's the ICC profiles are fully compatible color sync that means that what we generate our technology that supports color sync is completely compatible with what comes out of PDF and so we don't lose fidelity and when we're doing color management so there's two major types of color spaces that are interesting in PDF there's device dependent color it's it's used in the situations where you're not as concerned with the fidelity the color representation in general you know we because we're very interested in high fidelity color reproduction aren't you no too keen on encouraging it but it is available there's device gray device RGB device CMYK the device independent colors basically the calibrated colors are also supported and in that case there's calibrator diet gray and calibrated RGB L star a star B star which is a color science color space that you could probably forget about and never be affected by and then finally the important one which is ICC profiles same sort of thing we used in color sync they're much more common nowadays than the other two color spaces and they're there do provide for high calibrated color in addition PDF lets you do two other special color spaces there's the index color space where what you're specifying at that point is each value is an index into a table of other colors so a good example of this is jiff images some of you may be familiar with that where you really your image is only 256 values but each value from 0 to 255 is an index into some other color table so PDF has that support in there it's it's perhaps not as used as some as much in nowadays but it is available and then separation and advice in these are essentially the same thing separation is like device 1 what it allows you to do this is used when you're printing typically you often will want to do a CMYK printing pass and you might have another separation or two or three maybe an orange CMYK is cyan magenta yellow black so you because it's difficult to get a pure orange or a pure purple or some other color you might have an additional separation so PDF allows you to do this this is really for high-end printing applications it's not typical for most use but it is available okay so we talked at this point about the PDF content what goes into it the painting the color and so on so you have now sort of you can imagine maybe to build up a magazine page you have all these images and all this vector art and all this text and these fonts and all this other stuff in there and that could be huge so one thing that you run into immediately is well how do I keep the file size to be a reasonable size fortunately PDF has built into it a way to compress the data in the PDF file and some of you may or may not have opened up a PDF file and notice it's lots of binary data and you think oh my goodness is a binary format it's actually I mean it's it is a binary format in some sense but really what you're seeing is the compressed data typically not necessarily some sort of weird structure that you can't understand it's just the compressed data for the PDF file so those two mechanisms for compressing data and PDF there's the lossless one the case which you typically want for page content where you don't want to lose information and then for images there's both lossless mechanisms and lossy lossy is really very valuable for say images with color it's basically the basis of JPEG and so on so for page content there's two typical ways there's lzw which is many of you familiar with that from the patent issues and so on compression and then there's flight compression some it's also called it's available like Zee Lib and stuff like that this is another this is really much more common method because it's patent free that's being used more and more now but both of these are very can be very powerful in their own ways and are it's supported natively in PDF for images it's a little bit complicated for lossless compression of images it's which is typically good for grayscale there's a PNG equivalent PNG specifies a way to use flate compression for encoding image data so there's a quibble --nt way and PDF to specify that although PDF doesn't allow you to embed a PNG image directly it lets you embed the PNG data directly for greyscale proper typically one bit a fax for example there's the CCIT group three in Group four in code compression mechanisms and also run link not so interesting but it's available and then in 1.4 there's this new cool thing which is actually going to replace the CITT group new in route 4 in the industry called j big - which is a way of compressing specifically sort of tailored to fax data in a in a very nice way that's a lot great gives you a lot better better compression than ccitt fax compression but that's a one point for the two lossy ways of compressing there's JP JPEG for color is the most interesting case grayscale doesn't compress very well it's JPEG and of course grayscale you can press it with JPEG or with J big - there's a mechanism for JPEG - which lets you do lossy compression of greyscale now we have a PDF document you have everything's compressed it's all ready so let's talk a little bit about what it's like to actually create a PDF document or display it so I wrote a lot of the code that creates both PostScript and PDF files and this first one is a big big advantage you can do single pass file generation we're generating PDF that means that because well basically PDF has a way of referencing objects before they're actually specified in the file so you can if you want to write an image you can say oh here's an image that I want you to display now and then sometime down the road you can actually write out the image data the problem the reason that's good is because you can actually sort of create the file as you're going along and when you're ready you can dump the image data you don't have to sort of store the image data someplace else and then copy it back into the file when you need to display it I mean PostScript has not one pass file generation and it's terrible you do end up with lots of temporary files you're copying stuff all the time it's a big mess PDF is really great because you do one pass done you have the output this is really good when you're spooling and you're spooling large files because you're spooling time to the printer is going to be a lot faster it's the sort of the the corollary to that is that what you end up with when you're trying to display the document is random access it's not like PostScript where you have to sort of start at the beginning and seek to the information you need PDF has a cross-reference table at the end that tells you where every object in the document lives so you can quickly go to page number so-and-so image number so-and-so and pretty much constant time an independent of the number of pages the file size and so on so that's a really big one when you're displaying it's actually a big advantage that they have a way to look up information in the file and what's also nice about PDF is that it's in each page is independent of other pages those of you who might have worked with PostScript before know that to display page number 355 you pretty much need to display all the pages up till then unless you know you sort of hope that the document structure and kind of comments are correct and the pages really are independent and so on but if a bad PostScript file you got to display everything until that page in order to make sure you know it's correct PDF encapsulate each capsule eights each page as an independent entity they're not well they don't refer to pages prior or after them so this is really good for a display you can quickly display the thirtieth page with 300 page and in constant time I've talked a little bit about PostScript and PDF and I want to talk a little bit more about the differences there those of you this might be more interesting to those of you who are more familiar with PostScript or not so much with PDF PDF is really an absolute description of where things go it's not a calculated description of where things go so PostScript allows you to calculate the positions of things it allows you to measure strings and do divide by two to Center and stuff like that PostScript is a calculated way displaying content PDF is an absolute way and so that's actually a big difference for those of you who are familiar with PostScript you need to sort of know where everything's going to end up in order to generate your PDF file I'm like with PostScript where you sort of figure it out on the printer but on the other hand it's good to not have to do that because it's it's less work if you know where everything's supposed to be and of course PDF can contain hyperlinks metadata annotations things that are that are going to be used when you're displaying it in Acrobat or some other interactive mechanism PostScript doesn't have that PostScript is pretty much pure content pure layout it doesn't have this sort of additional information and also PDF unlike PostScript is really strictly defined file structure you it's it's it's hard to write a PDF file by hand it's really easy to write PostScript files by hand but that's good because that means that a computer can read and process a PDF file very rapidly PostScript you have to do a lot of processing and parsing and interpretation so what that means is of course you get as I mentioned before random access of your data and page independence that's a really key feature and then as I mentioned before with the font foing for example PDF files will contain additional information that might be used in the case that you have to substitute in some sense you can't fully get what you need from them because the PDF file doesn't say embed the font so it has extra stuff that lets you replace the PD sort of makes you less it allows you to synthesize more correctly what you get not just to replace them with courier but a replacement with a sans-serif you know multiple master fonts that squeak just the right way so it looks pretty good so that's sort of a big you know wide overview of what pf' what contains what's interesting about PDF from the point of view of courts 2d so the real question at that point is like why did we choose to use PDF of all things I mean we could have gone out and said well we want a persistent graphics for font file format let's write our own or let's use PNG or something weird like that so what we wanted is something clearly that was robust we needed something that was that people in the industry used not just us but everybody in the industry from our legacy from our Mac os10 legacy the PostScript imaging model was very important that's what the Windows Server and quartz and so on is based on we wanted to keep be compatible with that if at all possible that was very important to us we clearly needed something it was cross-platform it's really bad to be to generate a persistence graphics file format that you can only use on a Mac because we live in the world of the web and we need to have this stuff go everywhere resolution and device independence has always been important to us we want to have something which can print correctly on a 600 dpi printer of 14,000 dpi printer and your 72 dpi screen and we wants into that because we live in a multicultural world where we have lots and lots of languages that are being used a particular Japanese Chinese and so on where you you have really complicated fonts glyph handling lots of complex complexity there was something it was sophisticated so the only thing that we know of at this point that satisfies all those needs is PDF and it has been working great for us in Mac OS 10 I think it will work great for you guys as well so how do we use it well at the bottom the most important part is in courts 2d we sort of looked at the PDF imaging model we said okay that's what we want as our imaging model we want to use the same ideas that PDF has to build up the courts 2d imaging model so we took that we sort of took the ideas wholesale and we said this is how we're going to draw on the screen on the piece of paper and so on as a consequence we also said we want obviously we want this to be our persistent graphics format we want to be able to say if we're drawing on the screen and using this imaging model we want to write it out to PDF so we can actually get good results when we go to the printer and so on and what we also are not interested in doing we don't want to say oh okay well this is good and we're just gonna stay here we're gonna you know we're gonna diverge we're gonna make our own PDF we don't want to do that that's bad we want to track the Adobe standard we want to be in sync with them keep as close as possible with them so that we don't diverge from from the model because we're using their model and we're sort of want to pay deference to that and make sure that we track their standard as closely as possible so what we have right now in PDF sorry in quartz 2d its support for the 1.2 specification and much of the 1.3 specification the 1.4 spec is going to be coming out soon and we want to be able to track that as well so we're you know we're really committed to trying to make sure that we keep on top of the 1.3 spec the 1.4 spec and make sure that we have support and our that our model matches what PDF provides and what I want to emphasize in particular as you can see here we're interested in not all of the spec as I mentioned before the spec is actually very complicated in the large there's lots of pieces to it a lot of it is document the document model specific it's sort of the part that says you know here's how annotations work here's how hypertext links work and so on so we're not on the courts 2d level interested in that part of it that's something that's a higher level thing for example for Acrobat or other programs that might be doing interactive PDF display we're since we're focused on the persistent graphics format we're tailoring our support specifically to the part of the document model that's relevant and as you can see on the other axis the imaging model sort of all of the imaging model however we want to keep that going up all the way now in addition to courts 2d which is a big part of our PDF usage mackelson uses PDF in other ways mostly by leveraging what we providing in courts 2d pretty much in Mac os10 PDF is is our high fidelity digital master recording of application drawing so the idea is that have an application draws on the screen a certain way using the course 2d api's what they get out if they choose to as a PDF file that represents that drawing precisely so that if we took that PDF file PDF file and brought it up in Acrobat they would see the same thing in Acrobat that they're seen on the screen that's a really important feature for us to make sure that the drawing that you do to the screen ends up in the PDF file precisely including things like all the fonts being correct all the colors being calibrated everything that you've actually asked for we also use PDF as our spooling format we normally in the past the spooling format us would have been PostScript and typically we sort of switch that to PDF because we think PDF has so much power in terms of representing things in a high fidelity way in a simple way so we spool directly to PDF and then that gets converted as need be to either PostScript or some other format or to a bitmap or whatever Cocco uses our the courts 2d PDF support in their NS PDF image rep class if you're a Cocoa application you can draw PDF files using NS PDF image rep that's really useful you don't have to sort of go down to the to the courts duty level to draw a PDF on the other hand you get free display of all PDF in your application like that if you're not a Cocoa application of your Carbon application and you support the QuickTime graphics importers you will be able to get PDF as well by as part of the built in support you can see this in use in finder if you go to finder select a PDF file and the little thumbnail view of it you'll see the contents of the PDF file you can page through it back and forth that's using the QuickTime graphics importer that's leveraged right on top of the courts td2 courts 2d PDF support and then in general we want to enable sort of an approved document workflow overall we want to be able to have your application go directly to PDF and not to some intermediate format that did that then gets converted to PDF we really like the idea of you know your application direct to PDF and then from there wherever you need to go whatever format you need so just to summarize i'm talked about a bunch of different parts of PDF and what it's like and then how we use it it really is it's really powerful it's a super format I like it a lot it turns out and it provides a really good high fidelity representation of information it's really good for color calibration font preservation all this stuff you need to make sure that what you're drawing to the screen matches which are printing to the page and it's our native format for persistent graphics representation we want to make sure that we keep it as our way of representing what's drawn persistently into a file and you know all of the courts 2d imagery model is built on top of the PDF imagery model there's a little another talk later I think it's right after this one which goes more in-depth into the courts 2d api's and how some of that relates directly to what I've been talking here about we're pretty consistent in terms of what you can do the courts 2d API is with what you can do what what the imaging model is in PDF so there's a almost a one-to-one mapping in some cases because we really think it's a very valuable imaging model very important format to support so if you want more information about PDF in particular go to the Adobe website not the Apple website they have the the PDF spec they have the 1.4 differences you can download a bunch of other information about PDF it's got a lot of detail there that you might want to know about I think you can buy the PDF 1.3 specification from Amazon I certainly think you can download it from here as a PDF file and I think at this point I want to bring Brett Travis who will talk a little bit about the roadmap and then we'll open up for question answers thank you yeah before we go to question the answer I just want to be able to point you to some of the other graphic related sessions at WWDC obviously we're in 108 PDF courts in Mac os10 asterick mentioned a follow-on session which is in room a 1 at 10:30 is the 2d graphics using courts if you want to empower your application with the ability to create PDFs and leverage our services that's the session you need to attend we'll be talking about the the courts to the API and tell you how to use it then also a common really quick request we get relate a courts related requests we get from developers is anti-alias text and we have several sessions that are going to tell you how to use the existing text api's in Mac OS 10 and have them leverage courts for the final drawing or rendering where you get the nice sub pixel anti-aliasing that Mac os10 is capable of providing you know that's session 110 then we have session 117 which is gonna be all about image capture framework which is a new framework that allows your application to interact with digital cameras it's very very interesting you've seen a demoed in several of the introductory sessions yesterday next we have color sync color sync is very very important one of the sort of key hidden features and in Mac OS 10 is imaging model in particular quartz is the fact that it's fully color managed so if you're using the quartz to the api's to draw your graphics or you're doing something like drawing a PDF on one screen Mac OS 10 knows how to interact with color sync and provide a high level color management to that content and it is something that's fairly simple to do and we want to spend time in the color sync session educating developers on how they need to do things like tag profiles and understand how the color workflow works internally so that you can make any application on Mac OS 10 be fully kind of color manage regardless of its displaying content 1 screen are sending the content out to an output device we have another session on text so that if you still want to learn how to do nice anti-aliased text using quartz there's some content in the text on Mac os10 session which other that talks about some of the other text API such as ml te you know those are fully interoperable in terms of having the graphics displayed by courts and they have a very interesting session is 404 which is OpenGL high performance 2d if you're doing anything with large bitmaps and you want very high performance getting those bitmaps on-screen that you need to see this session some very very interesting demonstrations some very interesting concepts will be expressed at the session and then we also have a printing session where we'll talk about Mac OS 10 sprinting architecture and we'll cover printing from the perspective of Carbon developers I will even get in a little bit for our four developers are familiar with BSD and we'll also talk a little bit about cocoa printing and then finally we have a very interesting session which is the graphics and imaging tips and tricks and if you're a carbon developer and you want to learn how to fully leverage courts in your application this will be an important session for you to attend we have a lot of content relating to quick draw and courts integration and also cover certain cases like how do you print content also talk about the printing context so Mac os10 which are a little bit different from what you might be used to in Mac OS 9 so it's also a very very good session then we'll finish the graphic sessions at this worldwide developer conference with the feedback forum at Friday at 2 p.m. you