IRC Logs

Log of #ghostscript at irc.freenode.net.

Search:
 <<<Back 1 day (to 2014/11/10)20141111 
henrys yikes arctic cold front ...15:04.33 
pedro_mac time to get the snow tires on ;)15:05.59 
henrys interesting summary of some font law cases: http://books.google.com/books?id=c6IS3RnN6qAC&pg=PA42#v=onepage&q&f=false15:18.25 
kens I'm reasonably sure that Europe allows copyright in font designs, that does seem to be a summary of US case law15:20.00 
henrys I didn't know there was a monotype vs urw case.15:20.15 
kens Its a new one on me, but there have been quite a few cases wordlwide. I thought it had all settled down, b ut maybe not15:20.49 
henrys kens: the term of protection is 25 years - so for the important fonts the european law does not apply, there are other restrictions as well which make europe law less relevant - like demanding the same ordering.15:23.26 
kens Hmm, sounds like you've been readin gup on it, I'm not up to date with the law in this area, haven't been following it since I left Monotype15:24.12 
henrys kens: yes this is all fresh reading for me. URW has suggested that it would be legal for us to call their fonts by their canonical names but I don't agree from what I've read.15:27.05 
  3 minutes to the meeting...15:27.39 
kens The names at least are trademarks, and companies have been fiercely protective of those. Not least because those are definitely protected pretty much everywhere15:27.43 
henrys kens: I was amazed monotype own "times new roman" how can somebody own that?15:28.33 
kens Because they created the font specifically for the Times newapaper15:28.55 
henrys owns the trademark that is.15:29.02 
kens Why not ? Its a fairly unique conbination for the name15:29.24 
marcosw Apple owns "apple", that's even less unique :-)15:29.38 
henrys so michael won't be here.15:31.53 
Robin_Watts henrys: He's asleep now, flying back later today.15:32.33 
henrys marcosw: about xpswrite - what michael and I would like is to be able to do a clusterpush (local) and have xpswrite tested against only the pdf fts.15:32.50 
  Robin_Watts: right.15:33.06 
rayjj morning, all15:34.46 
henrys kens, marcosw : I am surprised it did not end up like courier, without a legal name owner.15:34.50 
kens Morning15:34.51 
rayjj sorry I'm late15:34.54 
kens Henrys I htink Monotype were careful to get the rights back then15:35.12 
  And to protect them afterwards15:35.21 
rayjj Apple doesn't entirely own "apple"15:35.33 
  just as a trademark in certain business areas15:36.01 
marcosw henrys: wikipedia says about courier: "Although the design of the original Courier typeface was commissioned by IBM, the company deliberately chose not to secure legal exclusivity to the typeface and it soon became a standard font used throughout the typewriter industry."15:36.16 
rayjj One could probably create a font and call it Apple15:36.20 
marcosw rayjj: yes, but I'm pretty sure if you built a car and called it times new roman you'd be okay too.15:36.38 
  rayjj: like Apple Garamond? 15:36.59 
rayjj Courier would be a better name for a car ;-)15:37.01 
henrys marcosw: right and I'm surprised times new roman came to be a standard font without that.15:37.31 
kens It was a popular font, back then you had to buy your fonts from somone, so.....15:38.16 
  (Its hard to pirate lead type)15:38.41 
marcosw henrys: I think I can add xpswrite to clusterpush without too much difficultly.15:38.44 
henrys marcosw, kens : shall I add XFA to the agenda for discussion?15:38.46 
kens henrys, can do, certainly. Its lack is not a bug in the PDF interpreter, its a commercial decision whether we add support for it (needs an XML parser and layout engine probably)15:39.26 
henrys kens, marcosw : I notice it is unimplemented in pdfium so I guess FoxIt didn't give google everything ;-)15:39.32 
kens We,, its not really a part of PDF.15:39.52 
  Its an extension in much the same way as 3D stuff, or movies15:40.06 
rayjj and with a layout engine comes the 'is it done correctly' issue (i.e., will we have to match Adobe layout ?)15:40.26 
henrys kens: right I thought we would kick around the importance of the customer and the competitors having it at the meeting.15:40.33 
kens I imagine we will have to, yes15:40.46 
  Sure15:40.53 
kens thinks I'd better read up on it some more before then15:41.09 
rayjj kens: that would sway me to "run away screaming"15:41.14 
kens In any event, we do not have resource to do it at present15:41.31 
rayjj (having a goal of matching Adobe's layout)15:41.33 
kens I'm not sure how hard that is likely to be, I don;t know enough about the XFA standard yet15:41.53 
rayjj we don't even match their graphics exactly enough for some PDF's15:41.57 
Robin_Watts I might be tempted to think about supporting XFA by doing a PDF(XFA)->PDF conversion tool.15:41.58 
henrys kens, tor8 : I wonder if it something to be done in mupdf instead...15:42.03 
Robin_Watts Possibly based on MuPDF.15:42.09 
kens Well all the XFA stuff seems to be Adobe specs15:42.43 
Robin_Watts henrys: yes, that was what I was thinking. We could leverage the layout engine that tor is currently doing, maybe.15:42.44 
kens http://partners.adobe.com/public/developer/xml/index_arch.html15:42.52 
henrys tor8: we need to find some work for fred, whadya got?15:42.58 
tor8 henrys: I'd have to stop and think for a while15:44.10 
jogux henrys: he doesn't do mobile, right?15:44.32 
henrys jogux: I believe he does, I asked about sot and Robin_Watts and paulgardiner didn't think there was anything and suggested mupdf. I'd much rather have him work on sot if you have something.15:45.40 
Robin_Watts henrys: You said he was a "UI guy"15:46.30 
henrys Robin_Watts: yes he is.15:46.48 
Robin_Watts As such, I don't think there is much SOT "UI" stuff that can be done at the moment (unless he's secretly a graphic designer too?)15:47.00 
  Or rather, there probably *is* UI stuff that can done at the moment, but it would involve him learning a whole new UI system (UE2).15:47.36 
  and that work would cease to be useful when/if we get native UI off the ground.15:47.54 
jogux we have some android/iOS specific stuff, but thinking further it probably strictly doesn't fit into the 'UI' bucket.15:48.17 
henrys jogux: I think it would be fine to give him stuff like that. I didn't mean to say that's all I can do, that is just where he's worked most.15:49.58 
  hi chrisl 15:50.40 
chrisl hi henrys 15:51.13 
jogux henrys: maybe come back to this in the next meeting?15:51.35 
henrys tor8: I do also see mupdf bugs are piling up, Robin_Watts or paulgardiner can be assigned to mupdf for a while if they are at a point where a break would be okay.15:51.59 
  jogux: fair enough15:52.24 
Robin_Watts henrys: Paul and I discussed that briefly the other day. We are aware of it.15:52.59 
henrys Robin_Watts and paulgardiner: so I don't really need to get into it, you two will figure when it is prudent to do some mupdf stuff and we'll leave it with that?15:54.13 
chrisl rayjj: are you okay dealing with the current stuff from Len? Is it okay if I put it aside - at least for now?15:54.23 
Robin_Watts henrys: Yeah. We'll break off at an appropriate moment.15:54.36 
rayjj chrisl: I don't think there is much point for both of us messing with the confusion of data15:54.48 
Robin_Watts If we forget (or you feel that it's more urgent), do prod us again, obviously.15:54.59 
chrisl rayjj: no, I was getting very confused.... but don't hesitate to ping me if you want me to look again15:55.30 
henrys my last item was for chrisl and I didn't have anything else for the meeting. Does anyone have news or issues to discuss?15:55.40 
rayjj chrisl: the frustrations are (1) the data from different sources is inconsistent and (2) we are looking for < 5% improvement that seems to be spread across all of the pages15:56.27 
henrys chrisl: if directory reorganization is not going well we can abandon. I have another idea about language switching that I think will suffice and will be much easier. I know that isn't the only long term goal of the project but ...15:56.59 
  s/directory//15:57.14 
chrisl henrys: I just need the time to dedicate to it....15:57.27 
rayjj henrys: I have a cache scheme that recovers the performance hit due to the clist tempfile changes. I'm retrofitting the scheme to be shared with the memfile (design accomodates both)15:57.34 
chrisl rayjj: yeh, and although I got the VS profiler to "work", the results were complete nonsense (from the instrumented version) and completely useless (from the sampled one)15:58.24 
rayjj I want to make sure that it's in place way sooner than the next release15:58.27 
henrys rayjj: okay great, there is a p1 crash for the tempfile stuff, is that the same thing?15:58.46 
rayjj chrisl: all I can get the VS profiler to do is reboot my machine :-(15:59.03 
chrisl henrys: I was just getting back into the build reorg when the latest thing from Len came in....15:59.04 
  rayjj: I had to use the command line tools to get the profiler to work15:59.22 
rayjj henrys: I'll look at the crash as well15:59.38 
henrys chrisl: right, my idea was to leave gs as is and make pcl and xps clients of the library than have a simple little app to switch between the regular gs iapi and the pcl frontend... the latter I'd simplify.16:00.57 
chrisl henrys: that's essentially the approach I'd envisaged even with the build changes.16:02.11 
henrys chrisl: but if you think the reorg is coming along then we'll stick with that. I really don't want to be caught without a robust language switching solution when a large printer customer rolls in.16:02.45 
chrisl henrys: I'm hoping to keep my head out of the bugs arena for a couple of weeks, hopefully make some good progress - as long as Len doesn't pipe up again!16:03.51 
rayjj I'm a bit surprised that I haven't yet gotten a "we got your email" from Saito-san (company S) re: the dither pattern issue. Should I ping them this week again ?16:05.11 
chrisl rayjj: maybe check with Miles about it?16:06.16 
rayjj figured I'd ask here first16:06.49 
chrisl I only say that given Miles's taking a special interest in it16:07.25 
kens Hmmm, tghisOh good grief. I've just spent 30 minutes chasing a seg fault, to discover its because I mes-spelled OutputFile16:07.35 
chrisl We should fix that.....16:07.56 
henrys sorry rayjj I'd jumped into the skype meeting16:12.41 
  rayjj: I'd follow up16:12.56 
kens chrisl yes, I htink we should. It happens with:16:13.20 
  -sOutputFile=\temp\out.pam -dMaxBitmap=400000000 -sDEVICE=pam -r72 -Z: -sDEFAULTPAPERSIZE=letter -dNOPAUSE -dBATCH -K1000000 -dClusterJob -dJOBSERVER /tests/268-03.ps16:13.20 
  Only I had -sOutputFile mis-spelled, so the filename was NULL and WIndows threw a massive fit about it16:13.46 
chrisl Yeh, I think the issue is only with Windows16:14.04 
kens I'll try and remember to look into it when I finish working out the bug I actually intended to investigate16:14.24 
chrisl kens: do we also crash if we can't open a temp file?16:15.46 
kens It is actually trying to open a temp file at the time16:16.00 
  _open_osfhandle crashes when fd == 016:16.20 
  Sorry, not quite16:16.31 
  I mean _open_osfhandle returns an fd of 0, and fdopen then crashes16:16.50 
chrisl Hmm, odd - I didn't think OutputFile would influence the temp file16:17.03 
kens My network is very unhappy today :-(16:17.57 
  chrisl I think its only opening it as a temp file *because* OutputFIle is not present, therefore the device 'fname' is empty16:29.18 
  I'm less clear on why that should fail though16:29.32 
chrisl Well, even so, we shouldn't crash.....16:30.31 
kens Yes, I agree completely16:30.47 
  I think I've just figured out my other problem (allocating device memory from the wrong pool, should be from stable_memory)16:31.12 
henrys kens: hey I meant to ask about the dreaded First/Last Page... but I guess if they were good news you would have brought it up ;-)17:01.59 
kens I'll tell everyone when I'm done :-(17:02.47 
  I think I have the seg faults down to just from the PCL interpreter now17:03.01 
  Well, seg faults and double frees17:03.19 
rayjj henrys: paulgardiner: The problem with the BGPrint=true crash is pretty easy. In gdev_prn_tear_down I was cleaning up the fname values (and setting them to NULL) *before* closing the file, but a "wrapped" file needs the fname to find the real file to close17:03.31 
kens And a bunch of diffs in the pdfwrite/ps2write output17:03.45 
  OK so I'll look into the PCL crashes tomorrow, there are only a few, hopefully all the same cause17:04.23 
paulgardiner rayjj: ah yes. That makes sense17:04.34 
kens Goodnight all17:04.35 
paulgardiner Not related to that, there is one more little tweak I must make to the "wrapped" file methods.17:05.57 
rayjj paulgardiner: yes ?17:06.10 
  paulgardiner: you saw my comment that I have cache working to restore performance, I assume17:06.45 
paulgardiner rayjj: oh no I missed that. Brilliant17:07.07 
rayjj paulgardiner: I didn't really need *brilliant* to get most of the way there -- a single cache block gets most of the way.17:07.47 
  paulgardiner: but I wanted something that would work with compressed memfiles as well (so I can share the cache logic) and that is more demanding17:08.19 
paulgardiner Yeah I think that's what I'd imagined doing come to think of it17:08.20 
rayjj paulgardiner: I need to do some experiments on the corpus, but what I have is several blocks and discard the LRU, but I want to see if I need to delay adding to the cache until the block has been read a second time17:10.26 
  paulgardiner: or if that helps measurably.17:10.41 
  paulgardiner: the thinking is that large "objects" in the clist (image data) only get used once, but can "blow out" the cache contents17:11.26 
  but there are some objects used in "all bands" that we will need for each band17:12.16 
paulgardiner I've remembered: clist_fclose isn't quite correct17:12.25 
  Closing cf only if it isn't == ocf is correct, but it should close ocf if "delete" is set independently of whether ocf == cf17:16.59 
  Well logically only if ocf is not NULL, but closing NULL is harmless17:17.50 
nsz tor8: i have some fp patches: http://port70.net/~nsz/mujs/17:18.24 
  the first one is the big dtoa replacement17:18.54 
  the rand one is what avih reported earlier but you were not here17:19.25 
paulgardiner Fixing that would be an improvement but might need other fixes if anyway we are attempting to delete the same file more than once.17:19.46 
rayjj paulgardiner: it looks like the current code *is* broken. It calls 'gxclfile::close_file with the 'cf' and dereferences ifile->f even if 'cf' isn't a wrapped file (the fake_path_to_file returned NULL)17:24.00 
  stephan appears to be having net problems17:24.33 
  paulgardiner: that's what it does _correctly_ in clist_unlink17:25.34 
paulgardiner rayJJ: I think ifile->f is okay because we are always wrapping, but not always using the new behaviour, so sometimes just using the f in the old way17:27.21 
rayjj paulgardiner: you are saying that fake_path_file will never return NULL, but it _can_ and clist_unlink handles that (properly, IMHO)17:30.14 
  stephan: please disconnect manually since you are having net problems17:32.43 
paulgardiner fake_path_file will return NULL if we are on a platform that is using the old method17:32.45 
  But still we wrap the FILE pointers, just using them in the old way17:33.10 
rayjj paulgardiner: OK, but I like the "if (ocf)" used in clist_unlink better17:36.48 
  paulgardiner: or is there a case where ocf != cf but ocf is still the wrapped file ?17:37.41 
paulgardiner Yeah, also in close_file, using if(ocf) to determine old and new methods would be better. Then in the new case close cf if it is != ocf and close ocf if "delete" is set17:40.46 
rayjj paulgardiner: and in clist_fopen, when opening with *fname != 0 we depend on ocf NULL or not to use the old behavior17:40.49 
  paulgardiner: under what case will ocf be non-NULL but ocf != cf ???17:42.08 
  in the clist_close17:42.16 
paulgardiner in clist_fopen we have to ask the platform which method to use with gp_can_share_fdesc()17:42.42 
rayjj s/clist_close/clist_fclose/17:42.42 
paulgardiner rayjj: in clist_fclose ocf may be non NULL and != cf if a reader thread is calling it.17:43.56 
rayjj but in the old case, the fname won't be the special encoded one, so fake_path_to_file will return NULL, right ?17:43.58 
paulgardiner Sorry I have food ready. bbiab17:44.48 
rayjj paulgardiner: it doesn't seem to be valid (reader thread or not) for the ocf non-NULL but not matching the cf passed in17:45.37 
  paulgardiner: that would imply that the cf and the fname are "out of sync", AIUI17:46.51 
paulgardiner rayjj: cf is either ocf or the fdup of ocf17:53.25 
  so cf and ocf are always the same underneath the hood but they may be different FILE pointers17:54.01 
  By that means we avoid doing explicit reference counting17:54.18 
  So cf == ocf means cf is the originally opened version, presumably for writing. cf != ocf means cf is a duplicate FILE pointer used for reading17:55.22 
rayjj paulgardiner: but won't the IFILE->f be == cf ?17:56.13 
paulgardiner Both cf and ocf are IFILEs so have an f inside them17:56.38 
  The IFILE wrapper is just somewhere to store the read or write position17:57.14 
rayjj paulgardiner: yes, but the one we opened for reading using fdup will be one we want to close when ocf != cf, right? (it should match the 'cf') ???17:57.57 
paulgardiner So when I say duplicate the FILE, I really mean allocate a new IFILE and store in it a duplicate of the FILE pointed to by ->f17:58.02 
  Yeah when cf != ocf, we should close cf because it is the reader's reference to the file. When cf == ocf, we don't want to close ocf (unless delete is set) because that would have the side effect of deleting the file (in the windows case - or losing our reference to it in the unix case)18:00.06 
  When the new behaviour is in operation, ocf is really treated like the file name, and closing ocf deletes the file18:01.36 
  cf is the actual file handle18:01.52 
  treated as18:02.03 
  It just so happens they have the same type and cf == ocf is a test for whether cf is the original writer's handle ( != means the reader's handle)18:03.03 
  There's a lot of trickery going on, but I think it works, other than gxcfile:close_file not being quite right18:05.29 
rayjj paulgardiner: I guess I'm not liking 'close_file' -- we have to call it to 'unwrap' (free the IFILE) but it also does the fclose, that we don't always want18:06.35 
paulgardiner Hang on, do we really mean clist_fclose?18:08.27 
  We do always want to both free the wrapper and close the contained file18:09.14 
  Well always both or neither18:09.33 
  That's because duplicates are used for the readers18:09.46 
  So when a reader asks to close an IFILE we do want to both free the wrapper and close the FILE (its the reader's own duplicate of the FILE18:10.28 
rayjj paulgardiner: if we call clist_fclose, shouldn't we free the wrapper ? (even if we leave that underlying FILE * unclosed so it doesn't go away) 18:10.38 
paulgardiner No. In the case we don't free it, cf == ocf and ocf will be freed when the file is deleted18:12.19 
rayjj paulgardiner: in the previous version where it called fclose directly from clist_fclose, use of the 'cf' would have been invalid18:12.30 
  (the OS would have freed it's FILE* struct), so how come we want the wrapper left around ?18:13.15 
paulgardiner Sorry not following which case we are on now18:13.39 
rayjj paulgardiner: every clist_fopen call returns a new wrapper, right.18:13.52 
paulgardiner Yes and inside a new FILE, although that FILE may be a dup18:14.17 
  Sorry bad sentence18:14.50 
  Yes clist_fopen does return a new wrapper. Each time it does, it also creats a new FILE to wrap.18:15.25 
rayjj paulgardiner: so A = clist_fopen(name1, "w") B = clist_fopen(name1, "r") clist_fclose(B, name1, false) -- at this point the wrapper for B should have been freed, even though the file name1 is still allocated18:15.52 
paulgardiner The new FILE may be a dup of the original FILE18:16.04 
  Yes that's right.18:17.09 
rayjj so, that's what I am saying -- clist_fclose *always* frees the wrapper18:17.48 
paulgardiner clist_fclose will free the B wrapper and close the FILE handle inside it, but that FILE is only a fdup of the original so closing it wont allow the file to delete18:17.52 
  for a reader call yes18:19.06 
  If the original writer calls clist_close without delete then neither the wrapper is freed or the FILE inside it closed18:19.57 
  The whole wrapping thing is just for the sake of storing the read/write position.18:21.09 
  It's not to do with controlling the life of a FILE pointer differently to the wrapper18:21.36 
  So IFILE and FILE are always destroyed together18:21.53 
  That means we need reference counting somewhere else, but we get that just from the fact that we dup the FILEs18:22.22 
rayjj paulgardiner: I understand that we can't close the file inside the writer's wrapper (A in my example) and if I understand you, we can't free the writer's wrapper either since that's the only place the FILE * that was wrapped is contained. Is that correct ?18:22.27 
paulgardiner Yep that's right18:22.45 
rayjj so how does the wrapper for A get freed ? 18:23.41 
paulgardiner Yes exactly right. The writer's FILE is contained only in the writer's wrapper. The readers have dups in their own wrappers18:24.05 
rayjj once the writer calls clist_fclose it can't use that clist_file_ptr any more -- only the fname18:25.05 
paulgardiner Yeah and that's part of why the fname is an encoding of clist_file_ptr and why we don't actually (in that case) call close unless delete is set18:27.12 
rayjj oh, when it calls clist_unlink with the fname (containing the encoded_ptr, that will be 'A') so then we will actually do the deed (close the FILE*, which deletes it and freeing A) ?18:27.38 
paulgardiner Yes exactly or we might do it in clist_close if delete is set18:28.13 
  The thing I get wrong at the moment is when a reader calls clist_close with delete set. Then ocf != cf, but still we should close ocf (what you called A above)18:30.01 
  That's the one case I'm aware of that is wrong, although of course there may be others.18:31.02 
rayjj paulgardiner: OK, so close_file(ocf) when 'delete is set whether or not ocf == cf, right ?18:35.57 
paulgardiner Yeah. That's the thing that wants fixing, but it might cause problems doing so, if ever somthing outside this code tries deleting the same file twice18:41.59 
  It would be good if we maybe zeroed out the file name when we delete to protect it18:42.21 
  In the old way of working attempting to delete more than once was unproblematic, but now it would cause a double free18:43.07 
rayjj paulgardiner: that's OK if we assume that fname is writable 18:44.03 
  paulgardiner: or worse, since we could dereference garbage when calling fclose18:44.51 
paulgardiner Yeah, it may be passed as a const in one of close or unlink at the moment18:44.54 
  Yes dreference garbage too18:45.15 
rayjj paulgardiner: I'm not really worried about being passed as 'const' C run-time doesn't do anything with that -- just the compiler. But clist_fopen("test", ...) could lead to a problem since "test" may not be writable18:46.38 
  but for clist purposes, that's not really done, so we can safely ignore it. I guess just zapping the fname on delete (just fname[0] is enough) will work18:47.50 
  I have to run. bbiaw. Thanks for the discussion, paulgardiner. Now go back to your fun with SOT ;-)18:49.00 
paulgardiner No no please not SOT!! :-)18:50.04 
 Forward 1 day (to 2014/11/12)>>> 
ghostscript.com
Search: