19:59:03 RRSAgent has joined #webfonts 19:59:03 logging to http://www.w3.org/2014/04/23-webfonts-irc 19:59:05 RRSAgent, make logs world 19:59:05 Zakim has joined #webfonts 19:59:07 Zakim, this will be 3668 19:59:07 ok, trackbot; I see IA_Fonts()4:00PM scheduled to start in 1 minute 19:59:08 Meeting: WebFonts Working Group Teleconference 19:59:08 Date: 23 April 2014 19:59:45 IA_Fonts()4:00PM has now started 19:59:52 +Vlad 19:59:53 kuettel has joined #webfonts 20:00:13 +[Google] 20:02:42 raph has joined #webfonts 20:02:56 +[Google.a] 20:04:15 ChrisL has joined #webfonts 20:04:33 rrsagent, here 20:04:33 See http://www.w3.org/2014/04/23-webfonts-irc#T20-04-33 20:05:35 +ChrisL 20:05:42 zakim, who is here? 20:05:42 On the phone I see Vlad, [Google], [Google.a], ChrisL 20:05:44 On IRC I see ChrisL, raph, kuettel, Zakim, RRSAgent, Vlad, trackbot 20:06:25 regrets: jonathan 20:06:33 scribenick: ChrisL 20:06:38 chair: vlad 20:08:34 Chris: special value of "table follows". 20:08:41 We have 7 bits to potentially use. 20:09:23 Reasonable for special value to 127, but it seems to be 63. 20:09:39 Vlad: most recent version of spec, the value is 127. 20:10:05 ok 20:10:06 Chris: ok, sounds like it's fixed. 20:10:46 Vlad: at the moment, we have exactly 63 tags, so it fits perfectly 20:10:58 Vlad: we could keep the one extra bit as reseerved for expansion 20:11:10 raph: yes 20:11:42 Vlad: so do we want 7 bits for tables, or 6 bits of flags and then if needed use the reserved bit for something else 20:12:36 ChrisL: seems better to have 50% of expansion space available 20:13:02 raph: agree, one extra flag is less useful than 64 more spaces for tables 20:13:14 ... so it seems we have all the basis for expansion 20:13:27 Vlad: ok so that is what we have now 20:14:07 kuettel: on the flip side though, on the proposal we had 63 as arbitrary tag follows 20:14:24 ... so we interpreted it to mean as run with that set of table tags 20:14:43 ... need to lock this down for stable implementation 20:15:13 ChrisL: thought last telcon we agreed at last code point in the space 20:15:29 Vlad: keeping rest of table empty and very last value as a flag 20:16:02 kuettel: we need to decide so the code doesn't change 20:17:05 raph: whole discussion on future expansion is speculative. want to decide on an allocation now 20:17:16 ... might expand but should not revise 20:18:39 ChrisL: 127 seems clearer once expansion has happened 20:19:08 kuettel: when could we start using woff2 if everything is fluid? what is the target date 20:20:03 raph: what should code do with unknown, registered values? 20:20:43 ... could break existing implementations 20:21:01 ChrisL: hadn't realised david was against expandability at all 20:21:36 kuettel: want to know when we can start really serving woff2, not clear if we are not firming up the spec 20:21:44 raph: we are firming up the spec 20:22:02 ... not quite at the point of freezing it but its very good 20:22:38 ... is known table space user expandable? no, it isn't, not for that one. expansion is to use the escape 20:23:11 ... so four bytes cost gives stability and expandability 20:23:18 kuettel: agree 20:23:47 Vlad: also agree but there are two sides. if known tag table is fixed then its six bits and no expansion 20:25:25 ChrisL: was not clear before, the table list can only be edited by bumping the spec version and the running code 20:25:42 Vlad: yes, usr expansion is by using 4 bytes for new tables 20:26:18 Vlad: so one extra but can be reserved and we can use it as we decide 20:26:25 kuettel: sounds great 20:26:39 ... users can't expand the code across all browsers 20:26:45 Vlad: agreed 20:27:46 RESOLUTION: flag value goes back to 63, seventh bit is reserved for standardization 20:28:26 Vlad: flag bits, before we had bit 7 as flag for opional transform. now its mandatory so we don't need that bit 20:28:51 ChrisL: we should reserve for expansion 20:29:13 Vlad: raph you mentioned possible future transforms? 20:29:27 raph: yes in a future spec version, not for this version 20:29:51 ... we could think of transforms from MTX that might be used. and cmap transforms. 20:30:22 ... decided not to do them as very minimal gains compared to loca etc. and very complex. but later we might decide to add such a thin 20:30:29 s/thin/thing/ 20:30:56 ... could build a backwards compat woff2.1 with extra transforms 20:31:21 ... premature to do now but we want to allow future standardization 20:31:43 ... so having a transform bit is attractive 20:32:29 Vlad: you only need the transform bit if you need a defined transform that can be optionally applied 20:32:48 ... currently two transforms defined and not optional, which is good 20:33:13 ... if we add some optional transform later we would need a flag. if its not optional we don't 20:33:32 ... more flexible to eliminate the duplication 20:34:19 ChrisL: much better to undefine, have it reserved for future standarization 20:34:44 raph: think the bit makes atable easier to parse, have to know based on the length field 20:35:01 ... simpler than resolving. not complex in either case 20:35:25 ... test is very simple, glyph and loca, not much more complex than bit7=1 20:36:05 ... in a future if we have morte transforms, easier to look for one flag 20:36:33 ... that said its all weak preferences because these are easy code changes based on woff version 20:36:52 Vlad: no strong preference 20:37:05 ... reserved and unassigned is more flexible in the future 20:37:28 kuettel: google compression team noticed this also, cleaner to just reserve the bit 20:37:50 kuettel: so its 2 bits now reserved? 20:37:56 Vlad: yes, 6 & 7 20:38:05 (general agreement) 20:38:23 RESOLVED: bits 6 and 7 are reserved for future standardization 20:38:35 kuettel: we can look at code changes 20:38:43 raph: its a couple of lines change 20:39:45 Vlad: "spec is not yet frozen" claim needs to wait until ther are two independent implementations 20:40:00 raph: absolutely true. Hope it won't change in a substantial way 20:41:02 kuettel: kenji met with other browser vendors, they were all eager to see someone else plow ahead and show a beneficial impact 20:41:34 ChrisL: did they see the results from the evaluation report? 20:41:37 kuettel: assume so 20:42:07 topic: type names 20:42:17 Chris: about type names 20:42:45 Chris: in hobby work on microcontrollers, code is moving from 8 to 16 bits 20:43:10 lots of problems with types without explicit bit length (what is the length of "short") 20:43:32 Chris: prefers type names of the form "uint16" 20:43:45 prefer to see uint16 and so on ie explicit on bit length and sign for types 20:43:59 Vlad: "long" is a similar problem, as it has historically been 32 bit but is in transition to 64 bits 20:44:30 Vlad: definitely see the point, we use short and ushort for example 20:44:58 raph: agree with ChrisL, add that uint16 closely matches actual types in c and suchlike languages 20:45:12 ... do not want to use short and long in many languages 20:45:27 originally chosen based on 1970s assumptions 20:46:05 RESOLVED: use uint16 instead of ushort, and so on 20:46:14 ChrisL: what to do with 255short? 20:46:39 raph: that is from MTX but that is not a normative reference, so calling it 16 is nice. 20:47:02 ... explains why there are two integer encodings and it helps explain what they are and why they are used 20:47:12 ... ok with it having two numbers 20:47:25 kuettel: impact on reference implementation 20:47:50 raph: better to update the names from a source code viewpoint but the wire format does not change 20:48:28 ChrisL: no impact on data on the wire, just makes it more portable in the future 20:48:45 raph: types ued to represent the data already the uint16_t stuff 20:48:49 kuettel: ok great 20:49:05 Vlad: will go ahrad and modify those 20:49:33 topic: trasform glyph header 20:50:05 Vlad: stream of uint16 to encode it as with OT. Zeroor positive, only negative 1 if a composite 20:50:38 why not use an unsigned type wit an explicit flag value 20:50:57 ... composite done like bounding box bitmap field 20:51:13 ... separate bitfield to say which glyphs are composite 20:51:21 .. sosaves one byte per glyph 20:51:59 raph: has come up before, proposal was to encode n contours+1 and we measured it, there was no gain 20:52:13 .. so separate bitmap might be a loss due to lack of locality 20:52:31 ... so suspect it will be a tiny net loss 20:53:08 ... has very low entropy, often very few number of outlines, blocks of the same value so these compress well 20:53:27 ... extracting this redundancy compresses well 20:53:58 ... also looked at deltas rather than explicit values, its an empirical question 20:54:17 ... but this one was examined and was rejected. what we have is simple and very performant 20:54:26 Vlad: ok, good that it was examined 20:54:58 raph: ok this was actually done in the lzma days, to be fair, but brotli is actually better 20:55:06 (general agreement) 20:55:33 topic: editing and ssh 20:55:41 ChrisL: is ssh working now? 20:55:44 Vlad: yes 20:56:20 ... need to set up tortoise 20:56:55 ChrisL: so what do we think of for a publication date 20:57:06 Vlad: if cvs working, edits done tomorrow 20:57:48 ChrisL: ok so likely good to go on Thursday 20:58:00 Vlad: two other questions can decide offlist 20:58:15 raph: can do today or tomorrow 20:58:22 zakim, list attendees 20:58:22 As of this point the attendees have been Vlad, [Google], ChrisL 20:58:45 present: Vlad, Raph, David, Chris 20:58:52 topic: glyph table 20:59:20 Vlad: after transforma nd compressed, table has to be recreated so size may be less than original, in some cases a bit more 20:59:32 ... functionality identical but size not 20:59:43 ... due to encoding of deltas and so on 21:00:07 ... so confusion as to the original size. what does it mean? 21:00:28 Vlad: raph introduced concept of "nominal size" seemed confusing 21:00:58 Vlad: so perhaps say the actual original size is in the header, and reconstructed size will vary 21:01:20 ... depending on how it was reconstructed. so make sure it fits 21:01:31 ... needs a spec clarification 21:01:41 raph: simpler from a spec point of view 21:02:05 .. responsibility of the recreation process. manageable complexity. 21:02:23 ... gives them exactly how much memory to allocate 21:03:18 ChrisL: can it ever be bigger? if so its not how much to allocate 21:03:37 raph: if you follow the reconstruction exactly it is the exact number 21:03:56 Vlad: not sure we achieved that? what if we use absolute values always 21:04:35 raph: hence the IF. if you follow the rules it gives the exact size. if you don't then results vary. its fairly simple 21:05:03 ... encoder can't just use the value in the source font because it might have used some hyper encoding 21:05:22 ... so burden is on the woff compressor to write the exact value 21:05:39 ... must be prepared to cope with a dynamic size that is slightly different 21:05:46 .. would make the spec simpler 21:06:19 ... and the imple,mentation more complex, requires dynamic allocation 21:06:38 Vlad: would not sign off tat it gives a guarantee. 21:06:47 raph: want to see what the gap is 21:07:28 Vlad: input font has a glyph table of size n. nominal size is not the same as n, its a guess by the woff2 encoding tool from decompose and recompose 21:07:47 ... even if done, still no guarantee that the implementation gets tht number 21:08:01 ... may not match either nominal or original size 21:08:21 ... or we could replace it by saying what the original size was 21:08:29 raph: of little value 21:09:00 Vlad: its a real reference point, pont to OT spec, explicitly say implementors have choices here which impact final reconstructed size 21:09:34 ChrisL: important to be clear as very different from woff1 21:10:10 raph: good to discuss on mailing list. hear the arguments, think i can make the case that the nominal size can be specified very cleanly 21:10:20 ... can get to an actual guarantee 21:10:42 ... reconstruction is very simple, its not complex or tricky. 21:11:06 ... if you do that, you get the excact value. so it can be validated 21:11:19 Vlad: needs an exact reconstruction algorithm 21:11:23 raph: yes 21:11:49 (take to email) 21:12:14 raph: need info from zoltan 21:12:39 Vlad: changes do not affect existing implementations 21:13:13 raph: possible failure mode: hyper optimised original font, loose reconstruction gets a bit bigger one 21:13:33 Vlad: reconstructed font is for internal use, not shipped 21:13:49 raph: eliminating it from the spec make that failure go away 21:15:10 ChrisL: want the spec to be clear and testable 21:15:23 raph: reconstruction needs to be specced exactly 21:16:18 ChrisL: prefer to see details in spec not in reference software 21:16:45 raph: spec gives the algorithm focussing on some crucial choices on deltas, flag values, flag repeats. 21:17:06 ... current spec says how to make those choices, and the padding. everything else is from OT spec 21:17:30 ChrisL: so we can make a crisp spec that specifies everything 21:18:31 ChrisL: lets do that after FPWD though, spec really needs to be published asap 21:18:51 raph: yes, should not block on this 21:19:06 ... but its fairly simple to tighten up the spec 21:20:13 kuettel: wire format changes were covered, 63 is type flag. then we can update the reference implementation 21:20:57 ChrisL: editors draft will be updated by tomorrow, these are small changes 21:21:19 (adjourned) 21:21:28 rrsagent, make minutes 21:21:28 I have made the request to generate http://www.w3.org/2014/04/23-webfonts-minutes.html ChrisL 21:22:01 -ChrisL 21:22:06 -[Google.a] 21:22:08 -Vlad 21:22:09 -[Google] 21:22:10 IA_Fonts()4:00PM has ended 21:22:10 Attendees were Vlad, [Google], ChrisL 23:30:29 jdaggett has joined #webfonts 23:59:32 Zakim has left #webfonts