| <<<Back 1 day (to 2011/11/17) | 2011/11/18 |
mvrhel | henrys: so wts has been removed. now on to fix my screw up with the jpeg images, then tackle this simple CMM | 00:57.59 |
Robin_Watts | It's not really a simple CMM, right? | 00:58.23 |
mvrhel | no | 00:58.31 |
| it is more of a short circuit when we have "standard" rgb, gray and cmyk color spaces | 00:58.49 |
Robin_Watts | It will sit alongside whatever CMM is used, and be used to short circuit the simple ones in some cases. | 00:58.54 |
| Right. Just checking I was keeping up :) | 00:58.58 |
mvrhel | to replace the MLUT and link with a dumb conversion | 00:59.02 |
| yes | 00:59.07 |
Robin_Watts | Is this something that might be usefully done as PART of lcms ? | 00:59.24 |
mvrhel | in a way it would be nice to have that *in* the CMM | 00:59.43 |
Robin_Watts | indeed. | 01:00.08 |
mvrhel | but we do have an interface to the CMM where we should be able to intercept this. essentially when the link request comes in for one of these will will not really request one from the CMM but likely return an address to a conversion function | 01:01.15 |
| or something | 01:01.28 |
| and then use that | 01:01.33 |
Robin_Watts | fair enough. | 01:01.54 |
mvrhel | the thing is how best to tell if it was a real link address when the conversion is requested using that link | 01:02.02 |
| or if it was the sleazy conversion function | 01:02.14 |
| it would be nice to be able to avoid doing a check | 01:02.22 |
Robin_Watts | I don't know the interface enough to comment really. | 01:02.31 |
mvrhel | I guess if I abstracted the actual call one more level that would work | 01:02.49 |
| I need to think about it a bit | 01:02.58 |
Robin_Watts | The gs side of the interface must see us asking for "give me a handle for a link from this profile". | 01:03.16 |
mvrhel | off to fix my jpeg screw up now | 01:03.16 |
| yes | 01:03.23 |
Robin_Watts | and currently that dives straight into whatever cms we have picked. | 01:03.44 |
mvrhel | we will in this case, add in the check to see if it is a default RGB, CMYK ,Gray | 01:04.12 |
Robin_Watts | If we had a way of passing a profile that was a dumb one, could we get the handle from somewhere else? | 01:04.13 |
mvrhel | and if the use_dumb flag option is enabled | 01:04.26 |
| so the profile is not dumb. But the handle to the link of the profiles will be dumb or not dumb | 01:04.51 |
Robin_Watts | i.e. have the gs <-> cms layer arbitrate between several cms, one of which is the dumb one. | 01:04.54 |
| Right. | 01:05.04 |
mvrhel | to gs, life will appear as it always has | 01:05.16 |
Robin_Watts | But then might we have problems with wanting to convert from dumb to not dumb ? | 01:05.21 |
mvrhel | if someone enables, dumb then that is what they will get. It is all source driven | 01:05.42 |
| if the source is ICC based, we will return a real link | 01:05.54 |
| from lcm | 01:05.58 |
| lcms | 01:06.00 |
Robin_Watts | ok. I'll shut up; it's too late for me to be following this properly :/ | 01:06.18 |
mvrhel | if the source was DeviceRGB, they will get a fake link | 01:06.20 |
| I guess I should write this up too | 01:06.31 |
Robin_Watts | night. | 01:06.54 |
henrys | sorry I should have done that as a branch so it would have been tested as one commit | 01:06.56 |
mvrhel | basically if the source is DeviceRGB, DeviceGray, or DeviceCMYK we will return a fake link | 01:06.59 |
| tested what? | 01:07.10 |
| oh | 01:07.23 |
| 4 commits at once | 01:07.30 |
| no worries. I am done for the night | 01:07.47 |
| or at least for a bit | 01:07.52 |
| off to the kids school for a pot luck | 01:07.59 |
henrys | have fun | 01:08.05 |
mvrhel | thanks | 01:08.20 |
| good night Robin_Watts | 01:08.27 |
| henrys: I need to see what bugs are WTS and close those | 01:09.01 |
henrys | great to have that done. | 01:11.56 |
| gotta get my battlestar galactica fix! | 01:12.43 |
mvrhel | henrys: I just finished the series last week | 01:15.19 |
| I had been watching it on netflix for the past 6 months or so | 01:15.38 |
| pretty cool | 01:15.42 |
kens | ping chrisl | 08:54.35 |
chrisl | kens: pong | 08:57.28 |
kens | chrisl I'm staring at a TT font and I can't see a problem, could you spare some time to altk through it ? | 08:57.51 |
chrisl | Sure | 08:58.04 |
kens | I'll mail you some files, just a moment. | 08:58.15 |
| Drat should have zipped it, I forgot the TT font decoded would be buig | 08:59.57 |
chrisl | OTOH, it might stop gmail sodding about with it! | 09:00.28 |
kens | Yeah, that's true as well | 09:00.45 |
| lwet me know when you get the files | 09:01.13 |
kens | thinks his typing is especially bad this morning | 09:01.28 |
chrisl | They're here, I'm fighting with text editor...... | 09:01.53 |
kens | Let me explain a little | 09:02.03 |
| the file started life as a PDF file, then was converted (by some other app) to PS, then we converted it to PDF. | 09:02.26 |
| That's what reduced2.pdf is. Except I cut most of it out | 09:02.40 |
| THat then gets converted to out.ps | 09:02.53 |
| If you open reduced2.pdf in Acrobat or GS you'll se it is OK | 09:03.06 |
| If you open out.ps you'll see the single glyph is replaced by a custom notdef | 09:03.26 |
| I extracted and dumped the font, but I can't see where the problem is. | 09:03.56 |
| THe glyph in the PS file is 0x02, the CMAP subtable maps 02 -> 258 | 09:04.14 |
| 258 is a glyph with contours (the only one other than .notdef which exists) | 09:04.32 |
| So I'm puzzled as to why we are seeing a .notdef in the output | 09:04.51 |
chrisl | I take it all the "No contours" glyphs are expected? | 09:05.15 |
kens | Yes, its our usual crap TT output | 09:05.26 |
| I believe this is valid. | 09:05.47 |
| Its also why some of the tables are huge. | 09:06.09 |
| What's really weird is that it *does* pick up the custom .notdef glyph, so it can obviously parse the font. | 09:06.53 |
chrisl | I'm (accidentally) looking at the font in fontforge, and it doesn't show any glyph at index 258 (or any glyphs at all, for that matter) | 09:08.09 |
kens | Though I just discovered that renaming the font file to .tttf won't make Windows open it, it says its not a valid font file | 09:08.27 |
| Well, with FontForge as well, that suggets a real problem. | 09:08.40 |
| I'll try FontValidator, but I *know* it'll complain a lot | 09:09.04 |
chrisl | I'm wary about fontforge, but yes, it does suggest an issue combined with Windows. I'll try the freetype tools on it | 09:09.32 |
kens | Good idea | 09:09.41 |
| Lots of checksum errors and recommended table missing warnings | 09:11.06 |
chrisl | So, ftview shows "a" at index 258, which is what we expect - but I *know* freetype is more liberal than most consumers | 09:11.12 |
kens | complains about the OS/2 version number | 09:11.19 |
| ANd a bynch of other metrics in there | 09:11.34 |
| Complains that teh CMAP table doesn't contain any Apple subtables | 09:11.55 |
| Degenerate contours warning | 09:12.14 |
chrisl | Yeh, it only contains a 3.0 cmap, no others | 09:12.21 |
kens | But that's not an error | 09:12.30 |
chrisl | Not for a Truetype font, but it depends on what the ps2write ttf reader expects | 09:13.08 |
kens | loca errors 'entry poitns outside the glyf range' | 09:13.10 |
| I think the ps2write reader will pass it on to GS | 09:13.30 |
| name table complaints and maxp complaints | 09:13.57 |
| I'm sure these are due to copying the original font tables | 09:14.15 |
chrisl | Surely it needs to do more that just pass it on, it presumably needs to emulate the PDF cmap table selection? | 09:14.36 |
kens | I don't think so. We use the CMAP subtable to do character code to GID. | 09:15.09 |
| In this case the character code is 0x2, and the CMAP says 0x2->258 | 09:15.36 |
chrisl | So, does the text get re-encoded to match? | 09:15.50 |
kens | Yes, it should, but in this case it doesn't have to, it was already done for hte PDF step | 09:16.18 |
| Well there's nothing obviously wrong from the Font Validator. | 09:16.44 |
| Well, there's plenty that's wrong, but nothing obviously causing a problem. | 09:17.02 |
chrisl | In the PDF, the fonts are all labeled as symbolic | 09:18.02 |
kens | Yes, because we use a custom encoding | 09:18.17 |
| I suppose the next thing is to break in FreeType and see which GID its trying too use. | 09:19.09 |
chrisl | In the Postscript? | 09:19.33 |
kens | When running the PostScript, yes. | 09:19.43 |
| If its trying to use the wrong GID tehn I'll know that I need to looko at the mapping | 09:20.04 |
| Any ideas on a good place to break ? | 09:20.12 |
chrisl | Just checking now - I can never remember the names of the functions! | 09:21.01 |
kens | get_fapi_glyph_data ? | 09:21.10 |
chrisl | yes | 09:21.26 |
kens | Huh ? | 09:22.11 |
| Didn't break..... | 09:22.15 |
| But rendered the glyph.... | 09:22.25 |
chrisl | It did for me | 09:22.29 |
kens | Must need a rebuild | 09:22.32 |
| Yes, building now | 09:22.52 |
chrisl | Hmm, seems to be getting in there with index 0 | 09:23.39 |
kens | Well, that would explain why its showing a .notdef! | 09:23.54 |
| Looks like VS has decided it needs a complete rebuild :-( | 09:24.18 |
chrisl | I don't know *why* though | 09:24.31 |
kens | I guess it may be time to start trying to understand the ps2write prolog. :-( | 09:24.57 |
| Yes, I see a_index is 0 | 09:25.20 |
chrisl | But the charcode passed into load_glyph is 0, so it is coming from us..... | 09:26.10 |
kens | Yes, I'm sure that is the case. I'm just trying to track down which show variant its using. | 09:26.43 |
| awidthshow it seems | 09:28.25 |
| Hmm.... | 09:29.01 |
| The character code seems to be 0x20 which is not right | 09:29.10 |
chrisl | Yep, FAPI gets a charcode of 2 | 09:30.06 |
kens | well that is the code I woudl expect | 09:30.23 |
chrisl | Oops, phone - back in a sec....... | 09:30.47 |
kens | No problem | 09:30.53 |
| Duh! The code I'm looking at is the 'space' code for the awidthshopw, idiot! | 09:31.32 |
| Yes, character code is 0x02 | 09:33.25 |
chrisl | FAPI doesn't seem to find the glyph name in the CharStrings dict...... | 09:33.59 |
kens | I guess that's down to the type42'ness | 09:34.20 |
| It should build a CharStrings dict with teh character code mapping. | 09:34.34 |
chrisl | Yes, the comment in zfapi.c says specifically for type42 we shouldn't use the cmap table | 09:35.04 |
kens | OK, well maybe that makes sense. | 09:35.18 |
| The CharString dict is supposed to hold a bunch of numbers | 09:35.30 |
| Looks like MakeType42 is where I need to be looking. | 09:35.59 |
chrisl | Yep, I would think so - unless FAPI is wrong.... :-) | 09:36.22 |
kens | No, I'm sure FAPI is correct. My memory of type42 is hazy but that sounds right | 09:36.43 |
| Just trying to find out how we get to MakeType42 | 09:36.56 |
chrisl | My memory of type42 is always hazy - another unholy mess from Adobe :-( | 09:37.19 |
kens | Oh yes ;-) | 09:37.26 |
| There's some debug code to dump stuff but it doesn't dump the CharString dict. | 09:39.04 |
chrisl | Oh, weird, the CharStrings dictionary contains only one entry: /.notdef 258 | 09:39.21 |
kens | OK thanks for the help chrisl, I'll go and poke the PostScript a bit. | 09:39.25 |
| Well that's plain wrong :-) | 09:39.38 |
chrisl | Just thinkin that myself...... | 09:40.01 |
kens | I wonder if that even gets used, I thought .notdef was GID 0 by definition | 09:40.51 |
chrisl | Yes, but remember, there's all kinds of fallback "logic" in there for crazy crap like this | 09:41.38 |
kens | Yes. | 09:41.44 |
| The prolog parses the TT tables and builds the CharStrigns | 09:41.58 |
| Its got to be that which is failing | 09:42.04 |
| I wonder if its trying to parse the POST table. It exists but has no entries.... | 09:42.44 |
| Well its using the 3,0 CMAP and writing what appears to be a silly CharStrings from it | 09:45.21 |
chrisl | Indeed, yes. Weird..... | 09:46.10 |
kens | Going to have to go read the type42 spec to see what this ought to contain | 09:46.45 |
| The lack of a POST table might be the problem | 09:46.56 |
| Well it looks like /.notdef must be present, other glyphs can be identified by names or integers | 09:48.34 |
| If they are integers they map directly to loca entries | 09:48.56 |
| Oops, no they *must* be names. | 09:49.17 |
| If the value is an integer then its a loca table index | 09:49.35 |
chrisl | Yes, but IIRC they can be names like /2 | 09:49.43 |
kens | Yes, any legal name is OK | 09:49.53 |
| Oh god, I'm going to have to read this prolog :-( | 09:50.42 |
chrisl | It's horrid, isn't it :-( | 09:50.59 |
kens | I'm going to use the original which has a few comments in it I think. | 09:51.17 |
chrisl | BTW, adding a check for post having actual entries (as well as just existing) doesn't seem to help | 09:51.59 |
kens | Yeah, I'm actually going to have to try and understand what its doing. | 09:52.20 |
chrisl | Okay, give me a shout if you need a sanity check.............. | 09:55.42 |
kens | Thanks, I suspect sanity will be gone by the time I finish this | 09:55.59 |
| It kind of looks like its trying to pcik names out of the POST table still | 09:56.16 |
chrisl | My sanity is perfectly safe and sound - I keep it in a cupboard in the kitchen because I rarely use it..... | 09:56.59 |
| Yeh, that's why I thought it might just be a case of checking the POST table actually contained something, as well as being there - but my quick hack made no difference | 09:57.50 |
kens | It gets looked at in more than one place :_( | 09:58.03 |
| But its not that simple apparently, sadly | 09:58.20 |
chrisl | I was looking at ComposeCharStrings | 09:58.58 |
kens | That's oone of the places... | 09:59.13 |
| At least the Encoding looks right. | 10:00.46 |
Robin_Watts | ok. I'm about to break the cluster again... | 10:15.49 |
| ooh. cluster run got to the end... | 10:48.37 |
kens | progress | 10:48.56 |
Robin_Watts | Now to see how many diffs... | 10:49.10 |
| 2113 regression files have started producing errors. | 10:50.33 |
chrisl | Robin_Watts: the cluster uses a pipe to dump output through md5sum, does that work (correctly) on Windows? | 11:03.15 |
Robin_Watts | chrisl: cygwin, yeah. | 11:07.48 |
chrisl | But you're not using a cygwin GS build | 11:08.07 |
Robin_Watts | indeed. | 11:08.15 |
chrisl | I don't mean it does "gs ... | md5sum", I mean it uses the code in gdevpipe.c | 11:08.46 |
Robin_Watts | Everything runs under cygwin - it's just that instead of a make invocation, I have an nmake one. | 11:08.48 |
| oh, right. | 11:09.17 |
| I'll find out in a mo when I go diggign. | 11:09.25 |
chrisl | I *think* it is still in there, but there may be functional differences in the underlying capabilities | 11:09.58 |
Robin_Watts | chrisl: Yeah, it looks like it's the -sOutputFile='| md5sum >>.\temp\tests__eps__big-multi-source.eps.plank.300.1.md5' that's causing the problem. good catch! | 11:47.48 |
chrisl | That could be a bit of a pain :-( | 11:48.18 |
Robin_Watts | In theory I can rewrite the command... instead of going to that, I can go to tempout and then do md5sum tempout >> ... | 11:49.16 |
| Morning tor8 | 11:50.24 |
| I redid the patches yesterday | 11:50.31 |
chrisl | Robin_Watts: the reason it uses the pipe, I think, if for easy handling of multi-file output | 11:51.47 |
Robin_Watts | oh, gawd, yes. | 11:52.00 |
tor8 | Robin_Watts: great! | 11:53.41 |
| Robin_Watts: pushed | 11:56.21 |
Robin_Watts | tor8: cool. I'll try to run through some more of his bugs next week. | 11:56.44 |
| chrisl: Ha. It doesn't like "| md5sum...", but seems happier with "|md5sum..." :) | 12:01.14 |
kens | werid | 12:01.28 |
| weird | 12:01.31 |
chrisl | Robin_Watts: well, that is good, but strange..... | 12:02.14 |
Robin_Watts | and it doesn't like the redirection | 12:03.44 |
kens | chrisl I think my problem is that the array we get out of CMAP is wrong. | 12:08.19 |
| It comes out as [258] whciih puts 258 at index 0. | 12:08.37 |
| index 0 should be the .notdef of course | 12:08.47 |
| and 258 shoudl be at location '2' of the array | 12:08.59 |
| I wonder if the CMAP thing can't cope with missing values. | 12:09.14 |
chrisl | Yes, that's what I thought, but I couldn't immediately see why | 12:09.28 |
kens | I'd expect something lik e[0 0 258] for the CMAP | 12:09.41 |
| Or maybe [0 -1 258] which would allow us to spot -1 as a missing entry and skip it | 12:10.08 |
| Ah, it looks like hte CMAP parsing code only considers the total number of glyphs in the CMAP, not their character codes. That seems wrong to me, it'll only work for CMAPs with no missing entries. | 12:16.53 |
| And I think the point of a format 4 CMAP is so that it *can* have missing entries.... | 12:17.09 |
kens | goes to read TT spec | 12:17.20 |
chrisl | Yes, format 4 is one of the segmented ones | 12:17.29 |
kens | THat's what I thought, so the CMAP decoding in the prolog for type 4 is just wrong. | 12:17.47 |
| It reads the total number of codes, makes an array that big, then reads each code in turn into that array. | 12:18.07 |
| WHich means that unless the CMAP starts at 0 and is contiguous (in which case, why a format 4 ?) the character code to GID mapping will be incorrect. | 12:18.39 |
| I'm guessing we don't often see format 4 CMAP subtables. | 12:18.50 |
| But pdfwrite emits them a lot. | 12:18.57 |
| Now I have to figure out how to fix it. | 12:19.10 |
chrisl | Format 4 is pretty common, these days. The code to handle them for "normal" use is in gs_ttf.ps - look for "cmapformats" | 12:21.01 |
kens | Its the prolog one I have to fix.... | 12:21.30 |
chrisl | Yes, but I thought having a postscript implementation might give you some hints about fixing another PS implemenation | 12:21.59 |
kens | Well... THe problem is that the array I generate has to conform to the consumer, later in teh prolog ;-) | 12:22.21 |
| I may have to fix both.... | 12:22.30 |
chrisl | An array is probably not going to work, given the length limitation | 12:22.45 |
| Oh, this can't be for CIDFonts, so you might be okay | 12:23.51 |
kens | I hope so :-) | 12:24.04 |
| But since its our own output, I *know* it can't be a CIDFOnt :-) | 12:24.20 |
Robin_Watts | nmake can't do parallel builds like make can. | 12:24.23 |
chrisl | I know, nmake is pretty crap on that front :-( | 12:24.45 |
Robin_Watts | Which means any windows cluster node is going to be at a disadvantage to linux ones in terms of how long til it gets to start doing jobs. | 12:25.01 |
| We could build change run.pl to build products in parallel though (gs in parallel with pcl etc) | 12:26.08 |
chrisl | I thought Marcos tried that and found some issues with it | 12:27.50 |
Robin_Watts | marcos uses make -j12, but it doesn't always complete. | 12:28.23 |
| So he does: make -j12 ; make; | 12:28.31 |
| where the second make 'mops up' after any problem the first parallel one had. | 12:28.52 |
chrisl | No, I thought he said he'd experimented with building the products in parallel, but had found problems | 12:29.04 |
Robin_Watts | we don't write back into the source dirs do we ? | 12:29.43 |
chrisl | When we run some of the configure scripts we do, yes | 12:30.17 |
Robin_Watts | still 2000 odd errors. bah. | 12:45.24 |
| oh, I hate perl. | 12:47.26 |
| 3400 errors :( | 13:36.09 |
kens | That's worse.... | 13:36.22 |
| Wrong direction! | 13:36.29 |
Robin_Watts | indeed. | 13:38.10 |
kens | Oh dear, this parsing code is really crap it only seems to parse the first segment of a format 4 CMAP | 13:55.29 |
| There's also a problem that the character code in teh CMAP is 0xf002, not 0x02/ I'm sure I've seen that before somewhere, but I don;t remember what its supposed to mean | 13:58.06 |
chrisl | It's in the PDF spec - using 3.0 cmap, you may have to offset the character by 255. | 14:01.35 |
kens | Oh, crap. | 14:01.47 |
chrisl | Yes, very :-( | 14:02.19 |
kens | THere's code in teh table readin: | 14:02.24 |
| % Hack for fonts that have only 0x0000 and 0xf000 ranges | 14:02.24 |
| %dup 16#e000 ge { 255 and } if | 14:02.24 |
| % the previous line is obstructive to CJK fonts, so it was removedg to mask off the top bits, but its been removed ' | 14:02.24 |
| Oops, merged a couple of lines there, hope you cna make sense of it. | 14:02.57 |
chrisl | I *think* the code in gs_ttf.ps still does that...... | 14:03.43 |
kens | Do you know where the stuff in the PDF reference is ? | 14:03.43 |
chrisl | Page 432 | 14:03.55 |
kens | Thanks | 14:03.59 |
chrisl | I happen to have had my head in there, too, this week :-( | 14:04.24 |
kens | Umm, that's transparency in my copy | 14:04.24 |
chrisl | Er, okay, Chapter 5 | 14:04.54 |
kens | Well I was in 5.5.2 but couldn't see it there | 14:05.23 |
chrisl | Section 5.5.5 | 14:05.23 |
kens | Of course, encoding not 'TrueType fonts' | 14:05.44 |
chrisl | Exactly, why make it not confusing....... | 14:06.05 |
kens | Weird, still can't find it. Talks about 3,1 and 1,0 tables, cna't find the 3,0 | 14:07.45 |
chrisl | The very last paragraph, just before composite fonts | 14:08.17 |
kens | "If a character cannot be mapped in any of the ways described above, the resultsare implementation-dependent. " | 14:08.36 |
| Which version of the spec are you looking at ? | 14:08.47 |
chrisl | 1,7 | 14:08.52 |
kens | AH, I seem to have an old one here. | 14:09.00 |
chrisl | ahem 1.7 | 14:09.04 |
kens | No wonder the pages don't match | 14:09.09 |
| Fnally. | 14:10.03 |
| Thanks for the reference. | 14:10.09 |
chrisl | I hope it helps you more than it did me - it doesn't cover the case I was working on :-( | 14:10.31 |
kens | Its a bit worrying I have to say. | 14:10.44 |
| I'm wondering why we even write it that way. | 14:10.56 |
| In fact it looks liek we are doing ti wrong when emitting the font for ps2write, and maybe pdfwrite too. | 14:11.34 |
| But I'm nervous to go chaning it, this stuff is incredibly fragile | 14:11.46 |
chrisl | pdfwrite just dumps the font, doesn't it? | 14:12.26 |
kens | No, it makes a subset | 14:12.37 |
chrisl | OKay, but it emits an entire (slightly duff) TTF | 14:13.12 |
Robin_Watts | OK, so testing a device that's not included by default in the windows build is probably not smart :) | 14:13.17 |
kens | chrisl, so does ps2write :-) | 14:13.25 |
| Robin_Watts : not going to work well ;-) | 14:13.36 |
chrisl | kens: yes, but does the pdfwrite output work? | 14:14.07 |
kens | yes | 14:14.19 |
| At least, I think so, I'd better check | 14:14.42 |
chrisl | So, whilst there may be issues there, it's probably not the cause of *this* problem. | 14:14.55 |
kens | Correct, but I need to solve it to get the CharStrings array ordering correct. | 14:15.19 |
| Just checked, the pdfwrite otuput is OK. | 14:16.02 |
| I suspect that it adds the 0xf000 to make it compatible with teh PDF spec. | 14:16.23 |
| In which case, since I know its for ps2write, I can stop it doign that. | 14:16.36 |
| Need to look into it. | 14:16.43 |
chrisl | Possibly. Wouldn't it be better for ps2write to to subtract the offset, though? | 14:17.22 |
kens | I'm concerned by the comment about it not working properly with CJKV fotns. | 14:17.43 |
| " % the previous line is obstructive to CJK fonts, so it was removed" | 14:17.57 |
| Which is where it *used* to subtract the offset..... | 14:18.16 |
chrisl | I wouldn't expect CJK fonts to use a 3.0 cmap | 14:18.51 |
kens | We don't know its a 3,0 map here, just that its a format $ CMAP | 14:19.12 |
| format 4 | 14:19.16 |
| We use the smae routines no matter what the platform and language | 14:19.31 |
chrisl | Well, I think it needs to know - does adding that line back in make it work? | 14:20.09 |
kens | No, because it still generates an array with only one entry at position 0, instead of a 3 entry array with positions 0 & 1 being '0' and position 2 being 258 | 14:20.49 |
| Which would then properly build a CharStrings dicitonary | 14:21.11 |
chrisl | Okay, so more to it, then....... | 14:21.32 |
kens | Yeah, the whole thing is a mess, I doubt this ever really worked. | 14:21.48 |
chrisl | I have a queasy feeling it would have been easier to dump a proper type 42 font from ps2write, rejig a TTF in the Postscript <sigh> | 14:23.05 |
kens | Yes, and that's something I need to do anyway one day. | 14:23.24 |
| Well, rewrite the TTF output at least | 14:23.40 |
chrisl | Well, the thing is, once the TTF is broken into all the tables and stuff, emitting a type 42 wouldn't be very hard. | 14:24.28 |
chrisl | needs caffeine....... | 14:26.27 |
Robin_Watts | I cannot see how the pam device is included in ANY build, and yet it's there in the cluster binaries. | 14:27.33 |
| oh, I see. | 14:29.21 |
| chrisl: Your last mail to Kanazawa-san... | 14:42.59 |
| Adding () to an expression solves a problem. | 14:43.11 |
| oh, I see, it's the a & b ==c that was the problem. | 14:43.58 |
chrisl | Robin_Watts: that was part of it, yes, but there was something else with the second half of the expression , too, which adding the parentheses fixed, too | 14:45.52 |
| It was difficult to fathom, because VC++ was having problems showing the values of the variables, and doesn't expand the macros..... | 14:46.43 |
Robin_Watts | It's always best to add parens in my view. | 14:48.04 |
| (if you have to think about it when reading it back, then you've failed the 'readable code' test) | 14:48.22 |
chrisl | Well, to me, that was pretty clear - it wasn't a complicated statement, and the order precedence should be quite clear | 14:48.59 |
Robin_Watts | Well, a & b == c is NOT the same as (a & b) == c (as == binds tighter than &) | 14:50.00 |
| but I don't see how any other of the parens can have made a difference/ | 14:50.47 |
| (unless the constants there are particularly poor macros) | 14:51.13 |
chrisl | No, they are just static values | 14:51.29 |
| Robin_Watts: so, gcc gets the precedence wrong, then | 14:53.12 |
Robin_Watts | FC_FONTTYPE_MASK == FC_FCO_TYPE | 14:53.42 |
chrisl | Oh, I yes, I see - so why on earth did VC get it wrong? :-( | 14:54.35 |
Robin_Watts | sorry, I got distracted and hit return too early. | 14:55.08 |
chrisl | No, I get it - I forgot that, in this case d->font_type == FC_FCO_TYPE (none of the other flags are set) | 14:56.16 |
Robin_Watts | Right, but a & b == c calculates a & (b ==c) | 14:57.12 |
| so (b==c) will either be 0 or 1 depending on the values of those constants. | 14:57.28 |
| hence the test will be doing a & 1 or a & 0. | 14:57.41 |
| "a & 0 && anything" is always false. | 14:58.00 |
chrisl | Yeh, actually, gcc is getting it right, because at some point, I changed our canonical code to: d->font_type == FC_FCO_TYPE && r->fc.ExtndFlags & EF_SUBSTHOLLOWBOX_TYPE | 14:59.06 |
| Robin_Watts: I was a bit confused, looking at that, because VC debugger should d->font_type and r->fc.ExndFlags as completely spurious values (I think it gets confused by the symbol clash workaround) | 15:03.00 |
| s/should/showed | 15:03.15 |
shnur | hi! could you give me some pointers now how to modify mupdf/pdfdraw so that pdfdraw outs everything it knows about characters, their positions, fonts etc ? What files and variables to look at? | 15:05.37 |
kens | use -ttt ? | 15:06.06 |
| Or is that pdfextrcat | 15:06.14 |
shnur | in a form that can be processed with regexps. -ttt does not output everything, i think; e.g. mupdf knows font families and pdfdraw -ttt does not output them | 15:07.16 |
kens | I believe it should outptu the font names | 15:07.34 |
| I thought that -tt (xml version) outptus everything there is to know about text. But I could be wrong | 15:07.56 |
| In any event, pdfdraw -tt wuld seem like a good place to start | 15:08.09 |
Robin_Watts | shnur: There is a 'text' branch for mupdf. | 15:11.11 |
shnur | i do not think it is not everytihg (and I got this impression when asked about this a few weeks ago). For example, a question: it gives font as CLHFMI+TimesNewRomanPSMT ; can I recover a verbal discription of the font from this? | 15:11.25 |
Robin_Watts | That has the text extraction reworked to be better. | 15:11.29 |
| shnur: Yes, we discussed this a few weeks ago. | 15:11.45 |
shnur | Robit_Watts: thanks for advice the last time. Yes, I am looking at that branch | 15:11.47 |
kens | shnur you can't 'recover' a verbal description of the font, because there is no such information. | 15:11.58 |
Robin_Watts | What we told you then was "That's all the information that is included in the file". | 15:12.11 |
| There is no "verbal description of the font" to be had. | 15:12.20 |
kens | You cna get some aspects of the font from the font descriptor | 15:12.24 |
| If the font is typ[e 1 then you *might* get some additionjal information by parsing the font dicitonary | 15:13.01 |
shnur | how do i access font descriptor from the name CLHFMI+TimesNewRomanPSMT ? | 15:15.12 |
kens | You don't access it from the name, you access it from the object ID. Once again I suggest you look at how pdfdraw extracts the information | 15:15.44 |
shnur | ok, thanks! I'll look then at the sources of pdfdraw, particularly fitz/dev_text.c fz_debug_text_span.* , and see whether i can get it to output weight, italic, familiy name etc. | 15:22.58 |
Robin_Watts | mvrhel: ping | 16:23.05 |
| mvrhel: Just having a look at 692512 - could you attach the file to the bug please? | 16:23.29 |
| S'OK. I've regenerated it here. | 16:31.38 |
mvrhel | good morning | 16:44.57 |
| Robin_Watts: so you have it doing the problem? | 16:45.14 |
Robin_Watts | I can see the problem in the output. | 16:45.31 |
| It goes away if I remove the skew. | 16:45.39 |
mvrhel | oh is there a skew in that one? | 16:45.52 |
| hold on let me get you this other file | 16:46.01 |
| we are talking about the blue stripes right? | 16:46.17 |
Robin_Watts | red stripes :) | 16:46.36 |
mvrhel | ok. wrong picture | 16:46.45 |
| hold on | 16:46.48 |
Robin_Watts | Well, the red stripes are wrong too :) | 16:46.56 |
mvrhel | ok well the blue stripes that I just sent you are not skewed and maybe solving that issue will fix the other | 16:49.07 |
Robin_Watts | ok, ta. | 16:49.19 |
| It's amazing how fast all this stuff can fall out of my head... need to look back the git history. | 16:49.39 |
mvrhel | that happens to me too | 16:49.50 |
Robin_Watts | OK, so this case doesn't call the code I changed before :) | 16:51.41 |
mvrhel | oh | 16:51.49 |
| how is that | 16:51.54 |
Robin_Watts | oh, yes it does, sorry. finger trouble | 16:52.30 |
| OK, my adjustment only kicks in if it's an axis aligned thing. hence the skew stops it working. | 16:55.55 |
| I can fix that. | 16:55.58 |
| Let's look at your file... | 16:56.03 |
mvrhel | good deal | 16:57.03 |
Robin_Watts | ok, yours is a different problem. | 17:13.34 |
| Let me fix the skew one first, cos I understand that :) | 17:13.42 |
mvrhel | sigh. what secret set of options do I need to include in a command line to get gs to render the whole PS file in some of the CET files. I have all the options that exist on the command line from the cluster I think | 17:21.16 |
| e.g. -dJOBSERVER etc | 17:21.22 |
| but gs just stops | 17:21.48 |
Robin_Watts | If the file ends in .PS (caps) then the cluster includes %rom%gscet.ps too (or something like that). | 17:22.32 |
| but all that does is set filladjust to 0.5 | 17:22.40 |
mvrhel | oh | 17:23.24 |
| well that would not make it hang | 17:23.45 |
| I have run into this before and I forget what I need to do | 17:23.58 |
| I thought chrisl gave me the secret option last time | 17:25.49 |
| and I wrote it down someplace.... | 17:26.00 |
Robin_Watts | mvrhel: In the regression dashboard, next to mvrhel bmpcmp, click on the + | 17:26.45 |
mvrhel | yes. I looked at the command in there | 17:26.54 |
Robin_Watts | right. | 17:27.04 |
| Woo Hoo! | 17:31.58 |
| http://ghostscript.com/cgi-bin/clustermonitor.cgi?report=robin | 17:32.04 |
| Successful cluster run with a windows cluster node. | 17:32.25 |
mvrhel | cool | 17:32.58 |
| alexcher: do you have any idea what option I might need to run the file 119-28.ps all the way through? | 17:36.01 |
Robin_Watts | In what way isn't it running all the way through? | 17:39.45 |
| Does it not output a page? Or is it just that it stops at the command prompt ? | 17:40.14 |
mvrhel | it just sits there at StartOneTest | 17:45.15 |
| just talked to ray_laptop | 17:45.23 |
| apparently some of these files want to read from stdin | 17:45.36 |
| so you have to read gs_cet.ps and then pipe in the file | 17:45.58 |
chrisl | mvrhel: cluster jobs use an option which always worries me: -dClusterJob | 17:52.50 |
mvrhel | I removed that onr | 17:53.00 |
| one | 17:53.02 |
chrisl | Most of the rest seem to have been removed, it used to do: -dNOOUTERSAVE -dJOBSERVER -c false 0 startjob pop -f" | 17:53.56 |
mvrhel | just the single quote? | 17:54.43 |
chrisl | Er, no sorry, no quotes | 17:55.09 |
| -dNOOUTERSAVE -dJOBSERVER -c false 0 startjob pop -f | 17:55.13 |
mvrhel | hmm it still hangs | 17:56.15 |
| are you able to run the file 119-28.ps? | 17:56.27 |
| though completion chrisl? | 17:56.37 |
| it is in the private/compare | 17:57.06 |
| folder | 17:57.08 |
chrisl | Oh, I remember now: you need to do: ./gs ... - < 119-28.ps | 17:57.09 |
| So that GS reads from stdin | 17:57.21 |
mvrhel | hmm I wonder if that will work on the command argument line in visual studio | 17:57.47 |
| iirc that is a problem | 17:57.54 |
chrisl | So, on my system: ./gs -sDEVICE=pnmraw -r100 -o stuff%03d.pnm - < 119-28.ps runs to completion | 17:58.05 |
| Hmm, I don't know about VS - I can try it, if you like? | 17:58.55 |
mvrhel | I think VS2008 is broken with respect to having stdin and stout direction in the Command Arguments. | 18:00.17 |
| with is ridiculous | 18:00.38 |
chrisl | Could you run it from a batch file, and redirect the command that the debugger should run? | 18:01.06 |
Robin_Watts | VS2005 works fine like that. | 18:01.06 |
mvrhel | so does VS2010 | 18:01.17 |
Robin_Watts | gs/debugbin/gswin32c.exe - < ../ghostpcl/tests_private/ps/ps3fts/119-28.ps-XFAIL runs to completion for me. | 18:01.29 |
| ah, so it's a 2008 specific gotcha? | 18:01.43 |
mvrhel | We need to get the team edition of 2010 at some point | 18:02.57 |
Robin_Watts | http://connect.microsoft.com/VisualStudio/feedback/details/333493/cant-redirect-stdin-stdout-for-debugging | 18:03.40 |
| See the workarounds section. | 18:03.46 |
mvrhel | oh cool | 18:04.21 |
| let me do that | 18:04.24 |
chrisl | is glad I stuck with 2005 ...... | 18:04.57 |
alexcher | mvrhel: what's the bug number for the file 119-28.ps | 18:05.03 |
Robin_Watts | I have 2005/2008 and 2010 express installed on here. | 18:05.17 |
| but I tend to stick with 2005. | 18:05.26 |
mvrhel | it is not a bug number. it is me fixing an issue that I have in embedding icc profiles in the JPEG output | 18:05.38 |
Robin_Watts | stackoverflow: " this is a bug with VS 2008 and it was fixed in VS 2008 SP1." | 18:07.25 |
alexcher | mvrhel: OK, I'm looking. | 18:07.27 |
mvrhel | alexcher: no. don't worry about anything now | 18:08.52 |
| I wonder why the might windows bi weekly updater never gave me the update of VS 2008 SP1 | 18:10.29 |
| s/might/mighty/ | 18:10.56 |
| it would have been nice to get an actual useful update | 18:11.16 |
chrisl | mvrhel: There you go, expecting software to make sense - has working on Ghostscript taught you *nothing*? ;-) | 18:13.01 |
mvrhel | ") | 18:13.07 |
| :) | 18:13.09 |
chrisl | I have to say, 119-28.ps is a very poor test job - another QL test that makes *totally* invalid assumptions...... | 18:14.22 |
alexcher | mvrhel: the test is using %stdin device instead of currentfile. So it has to be run fron standard input. | 18:16.03 |
mvrhel | alexcher: yes. | 18:16.14 |
| we got that all figured out thanks. just updating my visual studio now | 18:16.35 |
chrisl | oh, that's my guest arriving - I better sign off. Have a good weekend! | 18:19.18 |
Robin_Watts | TTOTD: When hunting for a bug that occurs at 600dpi, don't use -r72 | 18:21.03 |
mvrhel | Robin_Watts: good idea. I am probably going to be out for a bit today. Its my birthday and I need to go get some stuff at the ski shop. Slopes open today and tomorrow around here | 18:21.45 |
Robin_Watts | yes, I meant to say Happy Birthday, but I was on the phone when I remembered :) | 18:22.08 |
mvrhel | thanks | 18:22.12 |
Robin_Watts | So, Happy Birthday! | 18:22.14 |
mvrhel | Robin_Watts: hey that fixed the issue | 18:26.55 |
| now < works | 18:27.00 |
Robin_Watts | excellent. | 18:27.05 |
mvrhel | and I see where the issue is | 18:27.15 |
| ok. on that note I am heading off for a bit | 18:27.27 |
| ttyl | 18:27.29 |
Robin_Watts | have a good one | 18:27.44 |
| Well, this is odd. | 18:31.31 |
| If I remove all but 3 of the parallel lines, I can see a gap between 2 of them. | 18:32.10 |
| but I can't get it to happen with 2 of them. | 18:32.48 |
| It's the use of stroke_adjustment that cocks it up. | 18:46.40 |
| mvrhel: I understand what's going wrong. Yell when you come back. | 18:49.42 |
henrys | spends the last hour debugging the problem his tree is not up to date ;-( | 19:06.36 |
mvrhel | Robin_Watts: I am back, but you are probably gone by now | 23:45.03 |
Robin_Watts | I am here. | 23:49.20 |
| The problem is that stroke adjust is enabled. | 23:49.42 |
mvrhel | I thought you had disabled it? | 23:49.56 |
| which fixed the problem previously | 23:50.11 |
Robin_Watts | That rings a bell. | 23:50.54 |
| It's definitely enabled. | 23:51.02 |
| and consequently the lines are being shifted slightly leaving gaps. | 23:51.18 |
mvrhel | right. but that is what we fixed long ago I though | 23:51.31 |
| t | 23:51.33 |
| long ago being about 3 weeks ago | 23:51.38 |
| we being you | 23:51.44 |
| :) | 23:51.46 |
| maybe you thought I was going to commit something for it? | 23:52.37 |
Robin_Watts | Yeah, maybe that's it. | 23:52.58 |
| I can't see anything in xps that sets stroke adjust. | 23:53.09 |
| I remember hunting through the code to find where the graphics state was setup. | 23:54.13 |
mvrhel | ok. I will take care of it | 23:56.29 |
Robin_Watts | Just looking now. | 23:56.36 |
mvrhel | thanks Robin_Watts. | 23:56.39 |
Robin_Watts | if I can retrace my steps it may be easy. | 23:56.43 |
| Right. That does indeed solve it. | 23:58.42 |
| I'll have to do a cluster run to test it out though. | 23:58.50 |
| Forward 1 day (to 2011/11/19)>>> | |