Replies: 26 comments 9 replies
-
I'm not opposed, Mikhail Filonenko is the author of clx-truetype, and also did some foundational work getting xkb off the ground in a pure common lisp fashion. He was happy to have me take of the xkb portion of his work, so I'm guessing he would be amenable to our adopting clx-truetype. My major issues with clx-truetype were its performance (Mikhail was clear that performance wasn't a top priority) as well as the fact that it only works with TrueType (TTF) fonts. I wrote a similar renderer (in fact I borrowed a significant amount of the API Mikhail developed in mine) using FreeType2 through CFFI in order to add support for OpenType fonts (OTF). Font rendering is apparently expensive, and my solution seemed to be inherit the same performance problems as clx-truetype with some additional instabilities thrown in. I would like to solve the performance problem once and for all, and I would really like to have the ability to use OpenType format fonts. I could move both to the stumpwm organization and let them both live in contrib modules. A better, and more ideal solution would be to have one de-facto standard with enough performance to make it the default renderer and ship it with stumpwm proper. It would go far toward making stumpwm look a little bit more modern, and not like something out of the early 90s. |
Beta Was this translation helpful? Give feedback.
-
Unless I'm misunderstanding you we are talking about two separate issues, although they are related. The more pressing issue is that Mikhail Filonenko has deleted their GitHub repository of clx-truetype. Currently there is no official upstream source and clx-truetype is a dependency for the ttf-fonts contrib module (which I use). I'm proposing that we use the stumpwm organization to host clx-truetype for our users to solve this impasse. If https://github.com/dmb2/clx-ft2-renderer is API compatible with clx-truetype then we could change the ttf-fonts to use that instead. Is that the case? If so would you prefer that? I would. The other issue is how to improve the font support in StumpWM. In that area I'm not sure what would be the best way forward. On that I don't know what would be the best way forward. afaiu xrender should use the GPU to render the fonts, other than that I'm unsure how we could improve the font rendering performance. @lokedhs has done some work improving Font rendering in McCLIM, maybe they can weight in on the matter? |
Beta Was this translation helpful? Give feedback.
-
Since the original repository is entirely gone, getting a copy of it put up is a good idea. Has anyone contacted @filonenko-mikhail about any of this? |
Beta Was this translation helpful? Give feedback.
-
I have not, I assumed they had their reasons for deleting the repo as it was the only Lisp one they deleted. |
Beta Was this translation helpful? Give feedback.
-
On Sun, 22 Dec 2019, 02:11 Javier Olaechea, ***@***.***> wrote:
Has anyone contacted @filonenko-mikhail
<https://github.com/filonenko-mikhail> about any of this?
I have not, I assumed they had their reasons for deleting the repo as it
was the only Lisp one they deleted.
I have worked on McCLIM which uses cl-ttf (if I remember the name
correctly). It's a pure Lisp implementation of a TTF raseriser.
Actual drawing is done using Xrender, which is quite efficient and easy to
understand. The amount of code needed to get it to work in Stumpwm should
be pretty small.
I don't have time to work on it myself right now, but I'll be happy to
advice anyone who wants to do it.
… |
Beta Was this translation helpful? Give feedback.
-
It looks like the McCLIM font rendering code is here: https://github.com/McCLIM/McCLIM/tree/016a339946d2b9ba42028ffc5db3e5f1db7b74e2/Extensions/fonts. It uses |
Beta Was this translation helpful? Give feedback.
-
On Sun, 22 Dec 2019, 21:37 Joram Schrijver, ***@***.***> wrote:
It looks like the McCLIM font rendering code is here:
https://github.com/McCLIM/McCLIM/tree/016a339946d2b9ba42028ffc5db3e5f1db7b74e2/Extensions/fonts
.
It uses zpb-ttf and cl-vectors, also used by clx-truetype.
Yes. Specifically you want to look at xrender-fonts.lisp.
The same directory contains the Freetype backend which is written by me. It
has better quality, but is more complex and also relies on CFFI (and
cffi-grovel), which is not really appropriate for Stumpwm.
… |
Beta Was this translation helpful? Give feedback.
-
@lokedhs Thanks for this contribution! It looks like you've got the same dependencies as clx-truetype. It shouldn't be too much work to mash the two interfaces together. Again, I hate the fact that the solution depends on TTF fonts and doesn't support FreeType/OpenType fonts, but if someone can deliver an api compatible solution, I'm all game for hosting and maintaining it in the StumpWM organization. |
Beta Was this translation helpful? Give feedback.
-
On Mon, 23 Dec 2019, 04:38 David, ***@***.***> wrote:
@lokedhs <https://github.com/lokedhs> Thanks for this contribution! It
looks like you've got the same dependencies as clx-truetype. It shouldn't
be too much work to mash the two interfaces together. Again, I hate the
fact that the solution depends on TTF fonts and doesn't support
FreeType/OpenType fonts, but if someone can deliver an api compatible
solution, I'm all game for hosting and maintaining it in the StumpWM
organization.
You can get Freetype working. McCLIM had two font rending backends that you
can choose from. The first one is the TTF renderer that we've just tallest
about.
The second is the Freetype renderer which I implemented because of the
limitations that you were implying. As part of that work I implemented CFFI
wrappers around Fontconfig and Harfbuzz. The code for the Freetype backend
is in the same directory under the name freetype.lisp if I remember
correctly. The CFFI wrappers can be found in the Extensions directory.
Using these would be a perfectly reasonable alternative, but the CFFI
wrappers need work. Specifically, they need to changed so that they don't
depend on cffi-grovel anymore. This is because cffi-grovel requires the
user to have a C compiler installed as well as all the development headers
for Freetype, Fontconfig and Harfbuzz. That's a bit of a tall order for a
regular user of Stumpwm.
… |
Beta Was this translation helpful? Give feedback.
-
If you guys decide to go stick with clx-truetype, there's a bug in text-line-bounding-box where xmin is hardcoded to 0. I found it when packing up the ripped out guts which you might be interested in as well. n.b. clx is hardcoded for alpha mask glyphsets right now, no other format besides a8 allowed. If anybody is going to work on a xrender glyph set renderer please tell me so I can skip that and hopefully just plug in what you guys write. |
Beta Was this translation helpful? Give feedback.
-
Lets adopt clx-truetype for now so that the module keeps working, its the more popular one anyway. Long-term, I would like to explore using McCLIM for gui elements and piggy back of their text rendering. This would help centralize internationalized input development efforts as well. |
Beta Was this translation helpful? Give feedback.
-
It's seems that I removed clx-truetype in some "gabrage collection" process.
I think using https://github.com/JMC-design/truetype-clx is appropriate.
…On Wed, Jan 15, 2020 at 4:51 AM David ***@***.***> wrote:
Lets adopt clx-truetype for now so that the module keeps working, its the
more popular one anyway. Long-term, I would like to explore using McCLIM
for gui elements and piggy back of their text rendering. This would help
centralize internationalized input development efforts as well.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#659?email_source=notifications&email_token=AAC2O556SDTVP4LPWP723Q3Q5ZT3ZA5CNFSM4JOIHAWKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI6YTPA#issuecomment-574458300>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAC2O55DBS62PAFXVFBQTFLQ5ZT3ZANCNFSM4JOIHAWA>
.
--
With best regards, Michael Filonenko
|
Beta Was this translation helpful? Give feedback.
-
Perhaps my clever naming wasn't. TRUETYPE-CLX is CLX-TRUETYPE without the CLX. So a glyphset creator is needed and then a simple function to render the glyphs. |
Beta Was this translation helpful? Give feedback.
-
I think quicklisp just removed clx-truetype, so this has become more urgent. In case this bites anyone else, here are instructions for rolling back quicklisp (the last dist from 2019 is fine): http://blog.quicklisp.org/2011/08/going-back-in-dist-time.html (Note that I had to reload/compile things like stumpwm, swank, etc. as things didn't want to work at first. All seems good now, but probably easier to just grab the package and put it in local-projects.) |
Beta Was this translation helpful? Give feedback.
-
👍, I can't create a repository under the StumpWM organization. @dmb2 Can you create one or fork https://github.com/l04m33/clx-truetype. After that I'll submit the issue to quicklisp |
Beta Was this translation helpful? Give feedback.
-
UPDATE: I've just made this a separate issue as I should have right away: #779
|
Beta Was this translation helpful? Give feedback.
-
@PuercoPop @dmb2 Thanks for your work here so far! Any progress on uploading the forked clx-truetype to Quicklisp? I hadn't updated my Quicklisp distribution in far too long and was unpleasantly surprised when the ttf-fonts contrib module broke... |
Beta Was this translation helpful? Give feedback.
-
I can help submit |
Beta Was this translation helpful? Give feedback.
-
I'd be willing to submit my patched version from #861 to quicklisp; I don't know that there's any surefire way to know it's legal, seeing as the library doesn't include a license, but... given that it's been forked before it's probably fine |
Beta Was this translation helpful? Give feedback.
-
Can someone please ELI5 what to do with the code from https://github.com/l04m33/clx-truetype to make a broken stumpwm work? (Manjaro, SBCL 2.1.7, QuickLisp StumpWM 20210807) Edit: I've git clone'd it. 'make' fails at |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
@jorams Thank you! |
Beta Was this translation helpful? Give feedback.
-
I'd suggest using my fork at https://github.com/goose121/clx-truetype,
otherwise you'll run into a memory leak that will eventually crash stumpwm
…On Mon, Sep 6, 2021 at 8:07 AM Phil Hudson ***@***.***> wrote:
Can someone please ELI5 what to do with the code from
https://github.com/l04m33/clx-truetype to make a broken stumpwm work?
(Manjaro, SBCL 2.1.7, QuickLisp StumpWM 20210807)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#659 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB27JVLTDPOHG6W7WVWQ62DUATDJRANCNFSM4JOIHAWA>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
|
Beta Was this translation helpful? Give feedback.
-
@goose121 Thank you too. |
Beta Was this translation helpful? Give feedback.
-
I just forked @goos121's version. If we want to submit this to quicklisp for the community I'm fine with it! |
Beta Was this translation helpful? Give feedback.
-
Good day. Maybe we can settle for 1 fork and begin versioning that. I want to package StumpWM's contrib module for Void Linux but it's not possible without clarity what fork is considered the good one and what version it currently has. Maybe we can settle for @goose121 and make that 1.0. |
Beta Was this translation helpful? Give feedback.
-
The upstream repo of clx-truetype was deleted by its author a couple of months ago for unknown reasons. I've found a fork that preserves the git history at https://github.com/l04m33/clx-truetype
@dmb2 Would you be on board with adopting the repo under the StumpWM organization? afaict we are its main users so it would be convenient to be able to patch any bugs we may find.
Beta Was this translation helpful? Give feedback.
All reactions