back
user profile
raphlinus
13,685karma·1,846submissions·March 7, 2014
about
I do research on fundamental UI technology and 2D graphics, with a focus on Rust and fonts.
@raph@mastodon.online
recent activity (1,846 total)
comment
Probably could have worded it better. I didn't mean, "only use a little bit of async," I agree that doesn't make sense. I meant, "use async if your problem really needs it, ot…
comment
Depends on the use case. I'm thinking about GUI, where on Linux you can write code that links against (say) Gtk, and thus can pull in lots of libraries while the executable itself is tiny. With t…
comment
Right, I see your point here. There are non-trivial issues that need to be worked out, which I'm sure is one reason it's not in the library yet. Another (mentioned elsewhere) is that it take…
comment
I admit, design of a proper random number library API is tricky, and experience from deploying rand will no doubt be invaluable. The point I was trying to make is that some use cases require sophistic…
comment
Since stdlib and compiler releases are tightly coordinated, that shouldn't be a problem, no?
comment
To a very large extent, we already have this with `fn foo(foo: &dyn T)` (or `foo: Box<dyn T>` for the owned version). What I would find even more interesting is the compiler much more aggres…
comment
In my post, I specifically call on proc-macro support (syn and quote) plus rand (not all of rand though, just the "give me a random number" functionality that comprises 99% of the use cases …
comment
I talk about this a bit, I'm in favor of at least medium granularity crates, but if they break down into smaller features, where different use cases will meaningfully choose different sets of fea…
comment
Performance culture has you measure the actual performance implications, then make an informed decision. Is the code on a performance-critical path? Maybe some of your serialization code is, but it…
comment
This reminds me of a person who somehow managed an invitation to give a presentation at UC Berkeley on database compression in 1993, with similar levels of snake-oil. I remember one of the funnier mom…
comment
It's important to make the distinction between subpixel positioning and subpixel (RGB) rendering. I'd personally say yes to the former, even at high dpi, and no to the latter if you'…
comment
It's not mandatory. There should be good rope implementations already, though. If you're in Rust there's ropey and at least one other pretty good one. On modern computers, you can get a…
comment
Right, and if you're doing processing of ASCII code points (this is 95% of Markdown parsing, for example, the major exception being case folding and Unicode whitespace), then it's just as co…
comment
Sure. I guess what I'm trying to say is: when do you care about code point boundaries at all? In my experience, it's actually fairly rare. If you're drawing text, you care about the res…
comment
Yes, the variable length nature of UTF-8 generally means more hard-to-predict branches. But sufficiently clever programmers can find ways around that, see Lemire's work on using SIMD to validate …
comment
I would go further and say that UCS-4 is also a variable length encoding, mostly because of emoji and its endearing ZWJ sequences, not to mention the encoding of flags as two Regional Indicator Symbol…
comment
So based on this research, what reconstruction filter and gamma curve should I use to render text so it looks good over a range of fonts? :) Or, perhaps a better posed question. What research-informed…
comment
It's possible this research has been done, but if so I haven't seen it yet. Basically the reason I feel confident asserting it is that I'm talking very specifically about the stimulus p…
comment
Absolutely, and I think there's a very strong case to be made for that. One of the points I'm trying to make is that you have to solve it somewhere. People who focus narrowly on "corr…
comment
One caveat, if viewing this image on a high-dpi display there will be blurring from image upsampling by the browser. My eyes have the same result as yours: the white line appears thicker than the blac…
comment
You are correct. Change my third question to, "after applying a correct gamma curve to achieve perceptually uniform line widths in the unipolar case, what is the correspondence of line widths whe…
comment
I should have clarified that I meant lines with subpixel phase and possibly widths that are not integral numbers of pixels, ie the antialiased case. Also I totally agree that we need to take into acco…
comment
So obviously text is one of the things I care about a lot. I'm willing to accept your filter as being very good for a lot of stuff other than presenting a GUI. Does this mean that there is not on…
comment
Reeeaallly? I haven't made the images, but my intuition is telling me that text will be noticeably blurry compared with a box filter. I basically agree with your points regarding compositing in a…
comment
Be careful generalizing the audio results to pixels. The central lesson of xiph's work is that people simply cannot hear frequencies above, let's say 20kHz. Therefore, as long as your sampli…
comment
I imagine this came up partly as a result of the recent alpha compositing discussion. We desperately need some research, based in user studies and using modern display technology, to settle some basic…
comment
It definitely depends on druid-shell, but we're also thinking about being a good guest (ie for VST and the like). But honestly our focus is full desktop apps right now.
comment
The two funded full-timers focused on making a font editor using druid as the GUI toolkit. I personally think this is the best way to grow an ambitious new toolkit from scratch. Also, there's ove…
comment
One of those efforts is druid. I'm deliberately choosing not to make a lot of noise on social media yet, but I suggest people actively looking for native GUI in Rust take a closer look. Our team …
comment
There is a "color-interpolation: linearRGB" option in SVG, which seems to be implemented by browsers. See http://tavmjong.free.fr/SVG/COLOR_INTERPOLATION/ for a mo…