GameMakerallows you to select a font size on a font asset, and this scales perfectly without looking pixelated (with anti-aliasing enabled). However, it doesn't seem to be possible to change the font size at runtime or draw text with a specified font size. You are apparently expected to make a seperate font asset for each font size you are going to use. But what if you have to determine font size dynamically at runtime? For example the font size you need could depend on user input or on some runtime calculation, and could change to any value at runtime, not just a limited set.
The draw_text_transformed function scales the text by xscale and yscale values, but it seems to essentially scale the image that is the result of the font being rendered, so if your font has a small font size and you upscale it, it will look very pixelated. This is different to when you change the font size in the font asset, which seems to correctly scale based on vector graphics and supports anti-aliasing. Even if you set the font to a very big font size and then downscale it rather than upscale, it will look worse than a font asset with that font size, since the scaling doesn't seem to use anti-aliasing. Compare:
I need some SERIOUS help so any advice would be greatly appreciated. I'm currently in the process of Producing a video game which is using Minion Pro (Bold and Medium). I've been trying to call anyone and everyone at Adobe to figure out what I need to do to license this particular font for my game but after three weeks I still don't have an answer.
That said, I've come to understand that if I've bought a copy of Adobe Suite (which includes the Minion Pro font) the license allows me to use the font commercially. Meaning, I can legally use the Minion Pro font in my game.
Using a font commercially doesn't give you the right to distribute the font for others to use. Hopefully, someone from Adobe will drop by to give you the skinny for what you need to do to use the font in your game. If you rasterize the fonts as part of a graphic image, you could probably distribute your game. The issues relates to distributing the fonts which include the mathematical descriptions of the letter forms.
Outlining the fonts, as you may in Illustrator (Type>Create Outlines), thereby changing the individual letters into vector objects (vector images instead of (parts of) raster images)), should be sufficient because it will prevent anyone from extracting and using the live fonts.
All this said, what do I do? I've tried contacting anyone and everyone at Adobe but no one seems to have an answer for me. The font is to appear in a game and I need to figure out ASAP what I need to do to make sure I'm in the clear legally.
As mentioned in my earlier post, I have a copy of Adobe Creative Suite (which includes Minion Pro). Does having the Suite license mean I can use this font in my video game commercially with the information provided above (in bold) in mind?
I used to do type at Adobe, but left in December. Really, when it comes to something like this you need feedback from either Adobe or from a lawyer who reviews Adobe's license terms for the app bundle that included the fonts.
With Adobe's fonts, you clearly cannot use strategy (1) simply based on the license you received with the Creative Suite. Strategy (2) would be roughly akin to embedding in a PDF file, but it is different enough that you really should check with Adobe. I suspect that if you wanted to persue strategy (1), you might find Adobe willing to work with you, but you would need to pay a royalty of some type for use of the font.
You didn't say who within Adobe you contacted. You may wish to call Adobe's main phone number in San Jose and try to speak with our legal department about font licenses. They should be able to definitively tell you what you can or cannot do and guide you to the specific persons who could work out a licensing agreement with you.
If you're concerned, try checking out some font websitse like
dafont.com and looking at some of the fonts that are under license. The author's website is provided, and you can probably contact them through there and ask them how they licensed their fonts. I wanted to secure a font for my best online flash games website and I went through my lawyer, and he took care of it.
I think this happens because of the game's custom font. I think so because the same issue happened to RPG Maker XP in a tutorial, which was a font problem fixed by sudo apt installing ttf-mscorefonts-installer, which I did do, yet the problem persisted. Even so, I'm not sure if it's a font problem.
Thank you for your interest in Silver, the premiere multi-language pixel font for games and game-likers. Silver has TRC and Lotcheck compliant gamepad buttons built right into the font, alongside a full keyboard and mouse prompts! No more overlaying images onto your text fields!
This is an on-going project and will be continuously updated with new Unicode Glyphs. The goal is to be the defacto font for pixel games and applications. Please consider a donation when using Silver in a final project.
Please report all issues with CJK Block Characters in this thread, including additions, updates, and spacing fixes. This is an ongoing part of the project. There are a great many CJK characters, so please be patient!
I love making pixel fonts for my games, but hate manually moving characters around in my image editor to form words and "test" the font. Font Friend makes previewing your in-progress font much quicker.
The command line text editor nano doesn't quite work how I want it to. So I spent two days hacking together my own text editor, based on nano, so that I can change it over time and it can grow with me.
It's written in Go and uses a 2D game engine called Ebitengine for rendering/input. I was initially going to write a terminal text editor but whenever I sat down and imported a terminal library I felt like I was getting too much for free (e.g. the rendering of lines of styled text, input handling, and layout tools) and also like I was giving up fine grained control.
A text document needs to be stored in a way that makes each edit operation efficient. But, given that the documents I'll be editing are quite small, and my computer is quite fast, the bar for "efficient operations" is pretty low.
I felt this was a good mix between something that's quick to code and something that's performant. Deleting a line takes constant time, it can be taken out of the list by rewiring its previous element and next element to point to each other and then be garbage collected. Inserting or appending to a line is an inefficient operation but, in practice, lines are a fixed size and the cost is negligible.
Go's rune type is an alias for the int32 data type which is used to represent a Unicode code point. It's a more accurate representation of individual characters in a string as opposed to using a byte or an int to represent a character which leads to issues when working with multibyte characters. Additionally, the rune type allows for easier manipulation of Unicode strings, such as iterating over the characters in a string or comparing characters for equality.
The text editor pops up its own dedicated window with what's essentially a raw canvas. An Ebitengine game implements the ebiten.Game interface, which has a draw function that's called as frequently as the device's refresh rate.
A long document can be thought of as separate viewable chunks. Each chunk is as long as the number of lines that fit between the top and bottom bar which depends on the font size and resolution (both customizable). When you use command+up/down, you can navigate between these chunks (like page up/down).
This means that, in the above screenshot, the cursor is sitting on top of a new line character (rendered as an empty space). An invariant that the text editor maintains throughout all loading/editing/saving operations is that each line has a \n at the very end. Empty lines are not empty (like how empty strings are "") they have this new line character, and when the cursor appears on an empty line, any input will be inserted to the left of the new line character.
A new line operation occurs when the user presses Enter. It inserts a new line character at the cursor's location and creates a new line with the values to the right of the cursor. Whenever lines are created or removed, the above and before lines need to have their prev and next references updated. The logic for this runs when HandleRune receives \n.
There are a few edge cases like when the cursor is on the first or final lines because prev and next can be nil. A quirk of the text editor is that the smallest possible document that can be loaded or saved is a single new line character.
Copying was easier to implement than pasting. The current line's values are turned from runes into bytes and then passed to this kinda funny looking function which spawns an entire process every time. I imagine the "proper" way to implement this is to use a per platform system call.
Pasting text was quick to implement but it's very inefficient because each rune from the paste buffer is treated as an insert operation. It's like someone is sitting there typing each new character by hand. The benefit of this method is that the existing input-handling code can be directly reused.
This is a keyboard-only text editor so navigation is a priority. However, the bar that nano sets for navigation is low. As of launch, there are two ways to navigate around; arrow keys and command+arrow keys. The latter works like page up/down.
I'd like to soon implement option+arrow keys to skip over words, and after that, perhaps full text search with the ability to tab between words. The bottom bar can be replaced by the current search term la vim and the other powerhouse text editors.
It wouldn't be too difficult to allow the mouse to be used. All the font images are all the same size, and we know the size of the top and bottom bar, and the little bit of padding, we can turn a mouse click into a new cursor location. We already know the current lines that are being rendered and Ebitengine, being that it's a game engine, has fantastic support for things like: clicking the screen in a specific place. The solution would turning an [x, y] click position into a position on a grid defined by existing variables.
3a8082e126