I have just submitted a PR for a new method to be added to Leo's Stylesheet Manager (g.app.gui.styleSheetManagerClass). The new method is named *rescale_fonts() *and it lets you easily rescale all the sizes in a CSS stylesheet or a Leo theme outline. It rescales logical sizes (like @string font-family-base = 10.6pt) and physical sizes (like font-size: 10.6pt;)
The background is that I have been struggling with coming up with a theme that works on a small tablet I have. I couldn't get it to be usable, and I got tired of trying to hand-edit all those logical font-sizes, like @font-family-basic = 10.6pt. Also, there are many other sizes that are not usually given logical names, like the various paddings and margins that also need to be changed. At the same time, I was becoming aware that my two plugins, VR3 and Freewin, as well as a new thing I'm working on, don't adjust to changes in theme font size, and I was wondering how to make them adapt more automatically. And I found that some of the standard plugins that I depend on all the time, like the Find and Nav tabs, also don't scale with the theme sizes. How to fix all that? So I wrote a script that uses a regular expression to find all the size instances in pt or px and resize them by a specified factor. Non-integer sizes are allowed (since I use them in places). Qt and browsers honor point sizes to at least .5pt granularity, and possibly finer. I'm not sure what will happen for a size in fractional px, like 1.5px. Presumably the nearest integer will be used, but it remains to be seen. If necessary, I could adapt the method to avoid fractional px values - that would be easy. Once I had this script, I thought that it could be useful to others, especially plugin developers, and that the obvious home for it would be as a new method on the style sheet manager. After all, the SSM already has a node for "Computations on stylesheets themselves". Using the method to rescale a theme or stylesheet is this easy: # Input "theme" is a theme or css string SCALE = 1.25 ssm = g.app.gui.styleSheetManagerClass(c) rescaled = ssm.rescale_sizes(theme, SCALE) # Save to a new theme file if desired, or load the # changed stylesheet back into the master widget, etc. Assuming that @Edward agrees, the new method should show up on the devel branch soon. The PR is at Add new utility method to Qt styleSheetManager class: rescale <https://github.com/leo-editor/leo-editor/pull/2477> -- You received this message because you are subscribed to the Google Groups "leo-editor" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/leo-editor/003a9df2-80d3-461d-a39d-3535c562f6ffn%40googlegroups.com.
