 Rhywodraeth. Rhawer, dan Cailon McNamara ar Rheddaeth, ac mae hynny'n gweithio i gweithio'r llwyddoedd y llydydd yng nghyrch chi'n gweithio'r cyfrifwyr o'r teist. Rhawer, dyna'n gweithio yma, rhawer, rhawer, iddo chi'n gwneud rwy'n gweithio'r problem. Rhyw fod y problem yna, rhawer, mae yna'r cyfrifau sy'n gweithio'r ceirwyr. Mae rhawer, mae'n gweithio'r llwyddoedd gweithio'r llwyddoedd. Mae'r ystyried yma sy'n aelod y wir, yn gyr JOHN Yngrif pawr, i'w hwnnw'i cyfnod o'r maiad ychydigol, o'r oed yn gymuned ein peth yn yn oed i fod. Mae'r ydych chi'n rhoi gwneud dda ni'n credu Llywodraeth. A hynny'n unrhyw rydyn ni'n credu Llywodraeth a'r ddweud yn credu a'ch eto'r ateb hefyd. Mae ymddangos i rydych yn cael ei dd Glifyndd yn dod roedd yn dod o'i llwydd yn ei lwybr. y cwestiynau y bydd y gallwn yn fathbwyllt gynhyrch gyrddai. Mae'r risiwll yn ymddangos yn y blynedd yn y cyfnodol. A fyddai'n gwybodol yma yma y 70-20, y cyfnodol yn 72, yn y cyfnodol yn cyfnodol yma yn cyfnodol, mae'r risiwll yn 10 ychydig yn rhan iawn. Mae'r risiwll yn cyfnodol yn y cyfnodol. Ychwanegwch. Mae'r rhan o'r cyfrifau rhan o'r ysgrifennu o'r oed, ynglyn â'r Seraphon oedd nifer o 7 oed yn ysgrifennu. Mae'n hyn o'r hyn o 10 oed, ond mae'n sgwrt yn ddod, a'r cyfrifennu'n hyn o'r hyn o'r cyfrifennu. Ond ychwanegwch ymweliad â'r Llyfrgell. Ychwanegwch ymweliad am y cwylwyr ar gyfer arweithio wedi'i bwysig, y gallwn y digwyddiadau i'r bwysig o'r bwysig ar y cyfnod ar-gwyrdd. O'r bwysig yr hyn yn ymgyrch yn ei wneud o'r newid yn y pryd, yr ydych chi'n ei ffordd o'r pryd o'r bwysig. Yr hyn yn y bwysig, ydw'r ysgolwyddiadau i'r bwysig yn yr hyn, oedd y pryd o'r bwysig. So mae'r bwysig o'r bwysig, ond mae'r bwysig yn gallu'r bwysig. Mae'r bwysig o'r bwysig o'r bwysig. mae'r cyffredinau hyd yn ôl yn ffynol, a dyna gynner y lle i ddim yn teimlo i ddim yn ei gysylltu'r Llyfr-Legible yn gwahanol mewn cyfrifoedd yma. Felly mae'r cyffredin wedi'i ddim yn hollfi. Felly, os yw ydi wneud eich cysylltu, mae'r cyffrediniau hwnnw, mae'r cyfbryd i'r leidwch yn dod i'r hyn yn twd, roedd flai gynnar ein bod nhw'n teimlo'n bwysig o'r baith gael ei wneud le roeddwn yn gwahanol mewn cyfrifoedd Y Llystr-Legible yn gwahanol mewn cyfrifoedd. Nid yw hwn i'r gwleidio yn iawn, maen nhw'n cyd-niwch eu cychydig, fel rhai rydyn ni'n wneud, ond stefnoddi wedi dweud y gwybwysig yn cael ei wneud. Felly, mae'n gweithio'n gweithio'n gweithio'n gweithio'n gweithio'n gweithio. Felly, mae'n cael ei fod yn ddod ar y dyn ni, sydd yn rhan o'r cynnig, ond yn gwneud, roedd yn cael ei wneud yn ddod o'u cychydig. rydych chi ddweud o'r cyflau ar y cwrthydd cwrs sy'n mynd i'w'n rhoi'r cyflau. Yn ysgrifennu Andrews Martin, gyda'r diagram o'r cyfrifennu boundig o'r ddaf y diogel, o ardych chi'n gweithio cyfrifennu, i gyfrifennu a'r cyfrifennu sy'n gweithio. Ac, fel y gallwni, ac yn cynnigon o'r rhan o'r ysgwyl, y ddweud o'r cyfrifennu o'r cyfrifennu o'r ddweud o'r cyfrifennu, ymarfer yng Nghariniad newydd. Pe allod yn sgwr, mae'n digwydd yn disioedd y cyfnod a gweithio'r cyfrwyr a mae'n sgwrn gweithio'n sgwrn gymoedd ar y cyfrwyr o ran y cwsbrir. Roedd yn fawr i'n siŵr, mae'n tynnu cwm angen i siŵr o'r cyfrwyr. Mae'n fawr i ddweud. Yn y cyfrwyr y combinell, mae'n gwneud bod â challwch gweithio'r cyfrwyr yn rydyn o'r cyfrwyr yma yw os yw, is that they would appear a little bit squished and mushted overlapt. There are a couple of compromises there that are documented on the last slide. Basically, you have to do something to make it look a little bit less terrible, but keep it in the overall bounds. The last line there is Andreas' compromise. Those are all the various things he tried, and the last one then he says it is a compromise of I said one way or the other. Which is more described in this one. That a compromise solution. Kind of complicated, but basically he takes two positions and he tries to find some arrangement of them that looked kind of right. I think I was sitting in a different room from Andreas when he was coming up with this, but I could hear him on the other side of the partition, basically begging his head off the table and his head in his hands. It took a long period of time. o'r cynfodd, mae'n brifau sy'n gwrt honno, ond byddai ychydigiaeth, ond mae'r cymdeithasol yn gweithio'r gwaith, ddiweddol'r gwaith ymlaen i'r cyfeirio'r ysgrif yn y cwestiwn. Felly mae'n byddai'n gweithio'r cyfeirio'r gweithio'r gwaith a'r cymdeithasol yn y cwestiwn, a'r cyflawn o'r cymdeithasol yn y gweithio'r gwaith. mae'n dda i hyn o ddim yn i tro, mae'n ddim yn i tro, mae'n ichi ddar edrych i os, gyda'r gwasanaeth o'r ddoffin bobl yn ymddangos, te wnaeth eich dweud ar gyfer ystod y phan, i ddweudio y byddwch yn dweud a'u ffanciaid ac ac yn dweud. Ac mae'r hanes o'n dweud a'u fawr yn edrych yn gweithio'r lle ac mae'n dweud o gael y ffanciaid ac e'u rhoi gweld mae'r tyfleth yw eu hynny yn dweud di-gril o reselu os syrfa wrth gweithio'r byw, ac mae'r cwrs-ry-rhyw i'r sgwr. Felly mae'r fawr yn dweud ydych chi'n gydig ar gyfer gael gweithio i'w rhai, ac mae'r blygurau oes yn gyllidio'r talun gyrsiau i'n gwybodgarau sy'n gydig ar gweithio. Y lluniau allan o'r opŷies i'w gwneud ei hunain gweld fasigonol, gwneud ei have control i'r hintiau, felly ei wneud paddwl o'r ffeithio cwylfa ar y cantau. Oherwydd mae'n ymlaen i ddarparau. yw'r idea y gallwn dw y dweud y gwirionedd yma, i'w ddyfynu'r daith, mae'n cymryd fawr ac yn gynllwch-dwyllwynydd. ..i fod yn dych chi'n gwneud y decyddoch yn gallu dyma'r bwysig. Fe'n amlwyddoedd o'r plattfarniau sy'n wrth ichi'n deall… ..y ddweud rhywbeth wneud i'r ffordd y pethau a'r hyffordd i adeg... ..y agos hynny i ddim yn cael gwleidio'r meddwl… ..bydd sy'n ôl i'r bwysig gyda cefnoddau yng Nghyлch. Mae'r bwysig ar y dy rejo, eich ffordd iawn, fe'n gwneud… gynau byddai'r regwyl fadwy deilig y brwylliannol, y gallwn gwych yn mawr nag o dweud haned ein ffryd o'r regwyl cael y cyfnodau ffryd yn colli allu, yn ffordd y llunfa, yn eiddem ni'r regwyl, yn i ddefnyddio'r regwyl. Felly mae'n rhaid i'r ddechrau, mae'n trwm bwysig y ddechrau, am wahanol'r legwyl, gyda'r regwyl yn y dweud o'r regwyl i'r llunfa, rwy'n cael ei dwrdd hyn yn rhaid, ond yw'r gwawdd o'r ymwneud. Felly, ond y hynny, ond nid o'n mynd i'w ddweud o'r byddai'r cyffredinol. Felly, rwy'n rwy'n rwy'n ddweud o'r ymwneud o'r ddechrau o'r ddegwyd. Felly, rwy'n rwy'n ddegwyd o'r ddegwyd o'r ddegwyd o'r ddegwyd o'r ddegwyd. Felly, yna chi'n ddegwyd o'r ddegwyd? Felly, ond yn y rwyf yn rhaid o'r ddegwyd o'r ddegwyd? Awn yr ymchwn arbennig, rwy'n rhaid. Ond, y gallwn i'n cyffredinol yn y ddegwyd ddechrau o'r ddegwyd o'r ddegwyd yn y wneud, ac yn y cyffredinol sy'n gyffredinol o'r gyffredinol. A gwybod amddai hyd yn ddegwyd y cwrs cyffredinol. Mae'r ymwneud, ac y ffordd. Cwrs cyffredinol yw'r cyffredinol, ac y cyffredinol yw'r cyffredinol ac y cyffredinol ac y cyffredinol eistedd. The terminology then of what they use for all this description is a bit different on the different platforms. Microsoft, as far as I can see, uses resolution independent layout as one terminology here. Also uses natural layout. I've used those two terms for this talk then. You've talked about linear metrics no matter what size you're using. If you're double in width then the metrics are double in that direction. So they're scaling linearly unlike the previous one. Or we can call unhinted glyff advances. Again, hinting has turned off. So glyff advances are unhinted in that direction. Then the actual hinting that's used are different types of different types. The ones that are working here are changing the positioning in the text direction axis. But there are other hintings that are often called light hinting or slight hinting. Now what's implied by all of them when you look into it is what's explicitly said in the Qt versions that prefer vertical hinting. So that while the characters are the same distance apart this direction, you've still got some flexibility in the other axis to say you can allow to distort the glyffs in that direction to give some room for manoeuvre to bring back some degree of legibility that you might have lost by not allowing into the mirror direction. So that's the first but the end of your platform. Independent bits, as I said before, this DX array just used to be injures, so that you could only position things at various pixel points. But we changed that inside the ACL. Back at the doubles is a long chain of things from where they come in. They have to be brought down in those doubles all the way down to the various platform bits. There's a lot of work done there already, which is behind the configure option for using floats all the time, but it wasn't entirely complete and it was more of a kind of a, let's change all of them to doubles and maybe that will make a difference. But even if you had enabled that it wasn't going to make any difference in writer because writer was still using this try everything in screen fixes. So it might even have been that there was a few attempts here that people were disappointed in because it hadn't actually had the effect they wanted. On the way of the fact that writer was working against them anyway, no matter what they did. So yeah, selectively bring that into play just on this one path where we start off as large integers at a high scale and bring it down as doubles to the final screen on that one path and leave the rest of the VCL float device peaks untouched for now. So on this path that stopped rounding, initially I did this as opt-in. So just for writer, writer alone would say I'm okay with you not rounding these values and work on writer alone afterwards when I was more confident on it. I brought it in for anything where the text position array was passed in the first place. If one was passed and you were scaling the text then this stuff kicks into play, which means that it doesn't kick in if you just draw text, which means that if you're using the user interface, not the GTK one now, but your usual VCL one, that all of the same hinting that was used in the past is still used. So user interface text is unchanged, at least it should be unchanged. So on the platform specific one then, what have we got available? On the derive one, you set your text rendering parameters and one of those options is this rendering mode natural and the rendering mode natural then is described as it allows glyphs to be positioned, it subtakes the position and therefore is suitable for natural resolution independent layout. So on Windows enable that. We have our values coming down as floats and the first problem is that we get this issue that we're missing the bottom row. But that's fair enough. What's happened there of course is that the bounding box is still in integers. We've passed in that our doubles are the positions and they've just gotten truncated, so we have to round up the bigsons. To full bigsons we come to getting an integer bounding box to say what range should be printed here. The derived white one is fairly straight forward, a couple of small issues like that. A Cairo one then, if you just give Cairo, or at least a modern version of Cairo, floating point positions for text position, it just does some pixel positioning on its own, so no extra features there initially required. But again with the hinting we don't want any of that hinting that mongers things in the wrong axis. So we just set the slide. I don't think the slide option is fully specified by Cairo in this documentation as being vertical only, but we know we look at a code that maps to the free type, low target light, and then that is documented as vertical grid only, snapping if it's supported, and vertical grid only, auto-hint otherwise. In other words, it's not going to do any thing in the axis that we have at part difficulty with, and we allow it to do whatever wants in the other axis. Then there's another option, which is this hint matrix, which I initially turned off because the documentation for it sounds like it matches quite well with what I want to do. However, it means if we turn it on, text would be laid out differently, different zoom value factors. To me I want my text laid out the same regardless of the zoom factor, so I turn it off initially. What it does entirely is a little bit vague to me. The skeo one then, at the font level, it has the ability to set the subpics in true, requests that the glyphs respect subpics of position. Sounds good. Again, we have the same thing, the light hinting, called slight hinting in this case, also maps to free type, low target light, same thing again. Then I notice that there happens to be a subpixel anti alias. It says, position in the pixel using transparency. Sounds kind of about the right thing. That turned on as well. We're going to the practical difficulties with these things, and the first practical difficulty is that when I try and render anything under windows, it's not using any of our fonts at all. It's not using the skeo path. It falls back to a different path. It seems to be the case there, is that initially when I was doing it, any of these private fonts, the fonts that are in your shared directory, your local installation shared directory, weren't picked up at all. This probably isn't an issue for the real installed, whether installed onto your system directory when you bring it in through the installer, or when you do it from a local install. Nothing is well or properly at all. The way we get skeo to find fonts means you have to have one of these de-write font collections and it defaults to using the system one. I adapted this to build a font collection of our privately installed fonts as well so that skeo can be used in a developer build, just as it would be in the final build when you get the same results. That worked for a little bit difficult. One of the sides there was, I noticed in our own unonaming, I thought it was pretty grim that we had five pick or two and three and we didn't get it right the first time and we had to just add a number to it. They literally have one, two, three to eight on interface for the de-write factory. We're in good company on a numbering scheme. MacOs similarly as well, except that they like much, much, much longer names for their functions. Again, it's just going through all of the potentially relevant options, finding the ones that look like they're the ones that allow you to enable subpixels positioning, turn them on, look at the ones that might be rated to rendering that and tweak them a bit. Things are looking reasonably good at this point and then first catastrophe strikes. First catastrophe, I'm not sure if... It's possibly visible there is that you can see that the top row of pixels is just missing. That's reported by Nicola Shearer. So looking around the chirals, but I think I find another report with exactly the same front saying that these subpixels to text stringers have a row of pixels cropped out sometimes and that's exactly the same problem I have. I notice that if I turn off hinting entirely then my top row comes back and maybe it's a hinting relating issue. So we're looking a little bit closer to that. Matias's initial commit for enabling subpixels positioning and rendering is there and there's a cluster of other issues around that link to it. We dig through one of those or a couple of those and we see that there's a comment that a proposed patch that turns off an internal feature on the font config options for Cairo to turn off this round glyff position. I apply that to load a copy of Cairo and everything is perfect. But that patches and merges so I can't actually rely upon that behaviour. So what I like to try and do is I like to explicitly set off glyff round position on my font options and that way then I get my row to reappear like it does in my patched version of Cairo. This is an internal flag so I have no actual access to it but it does turn out that if you were to create a different Cairo surface if you clicked create a vector one an SVG or a PDF one then it sets on by default so you can get one of those surfaces get its font options, turn off all the public options and you know you've left behind that private option that controls this round glyff then you've merged out with your own font options then you end up control over this one flag that I want to experiment with. And that works. So my row reappears and I can get hinting at the same time vertical hinting. But then real catastrophe strikes that's when things get a little bit boring because people start talking about that it's smeared and it's fuzzy in the 7.4 versus 7.3 and smeared versus fuzzy is really hard to deal with. What's smeared and what's fuzzy and what's crisp and what's sharp and I can't see these things I mean I can put the two lines of text up beside each other and I can see that there's differences but I don't perceive that one is better than the other or anything like that and it's real obvious to a lot of people when they see it they say oh my god that's awful and then other people see that I don't see anything at all so it reminds me of this XKC you know colours things I mean I can see that they're different colours but I can't see that they're different enough to justify having different names I mean it doesn't matter that they're different to me but it matters to other people so as you can see for yourself one of those lines of text is awful and possible to read and voted and the other one is perfect and I think the top one is perfect and the bottom one is heedless but it turns out anyway lookly enough that the Ski one the one that's gone through this process is considered acceptable so that I know the top line is good and I know that the bottom line is terrible and I know both things are actually eventually both using free time so both going to the same place so it should be possible to get the other one to behave correctly so now you can debug into Ski up and see the hidden way in Ski up as one little feature called baseline snap which is on by default and what it's doing of course is snapping the other axis that then the one I'm interested in obviously I'm interested in the text direction axis but it's snapping the y axis positions the nearest pixels and it has vertical hinting enabled so that kind of fits together maybe that you snap vertically and you give it full of pixels within which to operate a glow directly on our side because we have full control over the y positions especially now that we've we've snapped off the internal feature so we can ourselves snap the y and leave the x unsnapped and we end up with exactly the same pixels as the acceptable Cairo case so if they're exactly the same then it has to be acceptable and for reference top two are exactly the same and the next one then is the original feature I showed you with Ski on top and Cairo on the bottom somewhere along those lines I dropped the set hint metrics feature so I don't know if it's worth revisiting that or whether it has any effect on the actual final render so that's the final completion of the esoptics positioning which is enabled now for anything for any scaling that's done with the x away and that solves the wiggling characters issue for one sense there are related issues and there's a lot of related issues in these bugs they're all 40 40 comment bugs and there's a lot of commentary about if I met this scale and the bug goes away if I met that scale and it's very hard to break them down but they break into different categories the big one is the category here where things go backwards because of this attempt to reconcile two different glyff positioning systems entirely and then there's a whole sub-clust to issues as well to have another little description of here so the first one is well we'll ignore the animation for a second but the first issue is that we export some formats and re-import again then the text kerning is all wrong and that turns out to be just filed down to a small little issue where we hadn't exported out the use-printer-metrics feature so with that enabled the dock x versus ODT problem goes away and then we're down to another issue and when you have your text drawn your secret text that's all processed in one go everything is perfectly fine so when you split it then the layout is done with just the new text run with no relationship to the previous text run so let's take the top animation see that the ligatures there are done ligatures just to make it more obvious but it happens without ligatures as well is that when you split it then the second sub-runs are done separately and independently and the first one I'm undoing at the end of it which means it goes back to the original run so if you split the text for some reason it's formatting and then you undo you go back to your original run and the bottom one then if I toggle bold or I toggle the font the run is split kind of irretrievably split so even if you go back to the original formatting it's the ligature it doesn't reappear because you have a separate run so you have two problems there the first problem is that your undoing versus toggling there are two different things your run isn't restored and then even if it is restored the format the way we lay out that the runs has no bearing on the previous one you're not going to be able to underline half of the ligature or anything like that so just for the interoperability purposes alone we have a problem there so if you look at the Microsoft one and you see say like the bottom line the wonderful there where they have underlined O onwards and you look versus the writer one you can see that the positioning in word is the same as if there was no underline in the first place where for ourselves we've split it into multiple runs so that's one problem and then we see over here with the colored area where we have the FF NFI ligature that we selected in writer and we do that again the runs are split over in word the runs are not split now word isn't able to color half of the glyph so at least it's not perfect but we're nowhere close when it comes to that and I think it was just mentioned and you see about this being an issue being posed for high severity or whatnot but yeah I thought I'd at least cover it in this top relevant to regilling and writer glitches and the end okay any questions?