How do I use fonts in Jetpack Compose for Desktop? - kotlin

I'm trying to use some font ttf files placed in src/main/resources/fonts/ in JetBrains Compose for Desktop. How do I use the font files in the function androidx.compose.ui.text.font.Font()? I tried using the R.fonts.font_file mentioned in many online articles, but it seems like it only works on Android.
I know that there's this. He's facing the exact same problem I'm having here. I've tried this. Unfortunately, it didn't work. The only answer in the question I linked above says that the solution was to put the font files in src/main/resources and use:
Font(
resource = "font.ttf",
weight = FontWeight.W400,
style = FontStyle.Normal,
)
But it doesn't work. The androidx.compose.ui.text.font.Font() function on my machine requires 3 params, resId, weight, and style.
public fun Font(
resId: Int,
weight: FontWeight,
style: FontStyle,
)
(copied from the Idea tooltip)
As you can see, it requires a resId: Int. How am I supposed to specify it in an Int?
Since JetBrains Compose for Desktop is still in its early beta stage, resources I could find on the web is really scarce. I tried searching for "kotlin resource id" to find the way to refer to the font file as an ID, but all I could find are really Android-targeted things. I also tried searching for "jetpack compose desktop font" and "jetbrains compose font", and the results I get are also flooded with Android things. Yes, I tried using "-android" in the search query, but all that's left in the results are irrelevant. The question I linked is the only thing I could find about Jetpack Compose for Desktop font.
Here's most of my project structure.
Here is the tooltip that IntelliJ Idea shows when I hover over Font(). It isn't that useful, is it?
Kotlin version: 1.5.10
Jetpack compose version: 0.5.0-build225 (latest pre-release)
By the way, I'm using Manjaro Linux on a MacBook if it matters.

You can't use androidx.compose.ui.text.font.Font for this. Import androidx.compose.ui.text.platform.Font instead.
Perhaps counter-intuitively, androidx.compose.ui.text.platform.Font is a valid parameter type in a androidx.compose.ui.text.font.FontFamily, and supports resource, weight and style.

Related

Plugin.ImageResourceName doesn't seem to have any effect

It would be great if the Petrel Plugin Manager could display our custom bitmap for each of our plugins - however, the Plugin.ImageResourceName property doesn't seem to have any effect.
public override string ImageResourceName { get { return "Blueback.Toolbox.Plugin.Toolbox.png"; } }
The image is embedded correctly (according to the documentation and ILDisAsm) - but Plugin Manager insists on using the generic image instead. Are there undocumented requirements on dimensions or format? The code snippets in the documentation mention both bmp and png, without demonstrating that the property actually works.
I haven't been able to locate an actual running sample in the SDK (only Module samples) nor in the code sample downloads (several Plugins here, but they return null for the resource name).
Can anyone provide a working sample or the missing key?
The image provided via Plugin.ImageResourceName is displayed in the Petrel License Dialog, and you are right, it is not displayed in Plugin Manager as it always uses the generic image to represent plugins. We will consider changing it in Petrel 2013.1.

Creating Dijit > Editor > Plugins

I have been googling this subject for hours. Does anyone have an examples of a custom plugin being deployed in Dijit's Editor. I'd be really interested to look at it because I have been following this without much success and of the few examples that exist out there none of them come with working examples :(
(I'm looking to create a pulldown menu like the one for font selection)
There's no difference between a custom plugin and a "builtin" plugin, so I suggest just looking at a small builtin example like TabIndent, and then move on to the font selection itself.

Intellisense for Objective-J?

My editor of choice for Objective-J Cappuccino development right now is Sublime Text 2. Unfortunately I haven't had any luck finding an Objective-J intellisense autocomplete plugin. It seems it should be doable, since Objective-J does have (optional/pluggable) types. So I think a plugin could definitely parse the code to find the expected type of the object you're trying to autocomplete on, and then look up its method list. Does anyone know of any other editors that support intellisense for Objective-J?
They is only one intellisense plugin for vim available.
You can find a little example video on youtube :
http://www.youtube.com/watch?v=lJrOcHxq6vc
Plugin:
https://github.com/nanki/vim-objj
For Sublime Text 2 you can try https://github.com/aparajita/Cappuccino-Sublime, although it is not that "intelli" as vim plugin.
After installing you should be able to get autocompletion using Ctrl+Space.

Using btn_circle_normal - android

I tried to use the standard icons provided by android as the background for my ImageButton using:
android:background="#android:drawable/btn_circle_normal"
btn_circle_normal seems to be present in the sdk directory. However, I get the error:
error: Error: Resource is not public. (at 'background' with value '#android:drawable/btn_circle_normal').
What could be the possible cause for the same and also the solution.
Thanks in advance
these Ressources are private and you may not use them in your styles. You could however create your own style, that mimics the same thing. Just download the extracted rounded PNGs and create a file like rounded_buttons in your src/drawable Folder. You can find a good tutorial (Google-Translate it first).

Adobe Flex 3: can I get TTF/OTF system fonts and embed at runtime?

Adobe Flex 3: can I get TTF/OTF system fonts and embed at runtime?
Hi,
I'm a Stack Overflow noob so please go easy on me.
I've searched all day and found dozens of tutorial/examples on how to use [Embed] metadata or
Flash SWF files but they all tell me to either use a path in the source attrib or a text string in the systemFont attrib. What I want to do is; at runtime get all installed fonts on a given machine, determine which are TTF/OTF, embed them all and offer them in a comboBox. Something along these lines;
public function embedFonts():void{
try{
//get all device and embedded fonts
availableFonts = Font.enumerateFonts(true);
availableFonts.sortOn("fontName", Array.CASEINSENSITIVE);
for each(var thisFont:Font in availableFonts)
{
[Embed(systemFont=thisFont.fontName,
fontName=thisFont.fontName,
mimeType='application/x-font')]
//this bit need to create a unique variable name on each loop
var thisfont:Class;
}
}
catch(error:Error){
//if cant embed it's likely not to be TTF or OTF
//so move on to the next font.
}
}
Does anyone know a way?
Many, many thanks
You can't embed fonts at runtime.
And what would be the point?
Your swf runs on my machine, enumerates fonts on my machine, then embeds them
and offer them back to me? They are installed, use them directly, no need to embed.
So not only that is it not possible, but probably nobody will ever implement such a feature.