Angband Forums

Angband Forums (http://angband.oook.cz/forum/index.php)
-   Development (http://angband.oook.cz/forum/forumdisplay.php?f=10)
-   -   why does angband still use .fon files ? (http://angband.oook.cz/forum/showthread.php?t=9080)

shirish September 25, 2018 13:13

why does angband still use .fon files ?
 
I was looking at -
Code:

~/games/angband-master/lib/fonts$ ls
10x14xb.fon  12x18x.fon  16x24x.fon  6x12x.fon  7x13xb.fon  8x12x.fon  8x8xb.fon  9x15x.fon
10x14x.fon  12x24x.fon  5x8x.fon    6x13xb.fon  7x13x.fon  8x13x.fon  8x8x.fon    Makefile
10x20x.fon  16x16x.fon  6x10x.fon  6x13x.fon  8x12xb.fon  8x16x.fon  9x15xb.fon

I remembered that font files used to be a thing during windows 3.11. Looking up on the web, for sure they are windows era fonts https://fileinfo.com/extension/fon

There are so many foss fonts nowadays . Just to ideate there are 514 packages (font number will be higher in Debian) .

See -

Code:

$ aptitude search fonts | wc -l
514

It would be nice if we can move from .fon to either .ttf or .otf or .off fonts depending upon people's tastes.

https://en.wikipedia.org/wiki/TrueType
https://en.wikipedia.org/wiki/OpenType#Open_Font_Format
https://en.wikipedia.org/wiki/OpenType

They also will work better on mobiles and SBC's if it were deployed as most platforms have support for all three font formats shared.

takkaria September 25, 2018 13:39

The answer to a lot of questions like "why does Angband still do X?" is because no-one made it not do that yet. Plus, I think most of the Angband maintainers have enjoyed hacking on the game and weren't/aren't particularly interested in learning how to write e.g. a new Windows frontend, or learning how to use SDL. The platform-specific bits of Angband are for sure the least modified and least loved bits of the game. Pending people who like frontend work showing up and doing some stuff, the frontends mostly stay unmodified for years at a time.

EDIT: Also, Angband is very different on different platforms. Windows and SDL use the .fon files, but Mac doesn't, and neither does the X11 port, or curses.

shirish September 25, 2018 17:50

Quote:

Originally Posted by takkaria (Post 133453)
The answer to a lot of questions like "why does Angband still do X?" is because no-one made it not do that yet. Plus, I think most of the Angband maintainers have enjoyed hacking on the game and weren't/aren't particularly interested in learning how to write e.g. a new Windows frontend, or learning how to use SDL. The platform-specific bits of Angband are for sure the least modified and least loved bits of the game. Pending people who like frontend work showing up and doing some stuff, the frontends mostly stay unmodified for years at a time.

EDIT: Also, Angband is very different on different platforms. Windows and SDL use the .fon files, but Mac doesn't, and neither does the X11 port, or curses.

hmm... @takkaria, while I can understand that, I do see the following in the debian angband package


Code:


angband-data: /usr/share/angband/xtra/font/10x14x.fon
angband-data: /usr/share/angband/xtra/font/10x14xb.fon
angband-data: /usr/share/angband/xtra/font/10x20x.fon
angband-data: /usr/share/angband/xtra/font/12x18x.fon
angband-data: /usr/share/angband/xtra/font/12x24x.fon
angband-data: /usr/share/angband/xtra/font/16x16x.fon
angband-data: /usr/share/angband/xtra/font/16x24x.fon
angband-data: /usr/share/angband/xtra/font/5x8x.fon
angband-data: /usr/share/angband/xtra/font/6x10x.fon
angband-data: /usr/share/angband/xtra/font/6x12x.fon
angband-data: /usr/share/angband/xtra/font/6x13x.fon
angband-data: /usr/share/angband/xtra/font/6x13xb.fon
angband-data: /usr/share/angband/xtra/font/7x13x.fon
angband-data: /usr/share/angband/xtra/font/7x13xb.fon
angband-data: /usr/share/angband/xtra/font/8x12x.fon
angband-data: /usr/share/angband/xtra/font/8x12xb.fon
angband-data: /usr/share/angband/xtra/font/8x13x.fon
angband-data: /usr/share/angband/xtra/font/8x16x.fon
angband-data: /usr/share/angband/xtra/font/8x8x.fon
angband-data: /usr/share/angband/xtra/font/8x8xb.fon
angband-data: /usr/share/angband/xtra/font/9x15x.fon
angband-data: /usr/share/angband/xtra/font/9x15xb.fon

Could anybody share what are the different fonts that are used or just one font with different sizes ?

If it's the latter, we could simply use one or more fonts to make the game look attractive without much cost.

I have 806 fonts when I have not installed all the font packages in Debian archive -

Code:

$ fc-list | wc -l
806

There is also fonts.debian.net (no longer available) but available through archive.org which could help us in getting a good replacement.

Unicode fonts could be another idea perhaps https://en.wikipedia.org/wiki/Unicode_font

One idea could perhaps be to use the popular noto font which is used quite a bit.

https://web.archive.org/web/20160303...ts.debian.net/

Derakon September 25, 2018 17:53

Quote:

Originally Posted by shirish (Post 133463)
hmm... @takkaria, while I can understand that, I do see the following in the debian angband package

The simplest explanation for this is that the Linux build still includes resources that it does not actually use.

takkaria September 26, 2018 00:31

Quote:

Originally Posted by shirish (Post 133463)
hmm... @takkaria, while I can understand that, I do see the following in the debian angband package

They're used by the SDL port, I think.

Quote:

Could anybody share what are the different fonts that are used or just one font with different sizes ?
They are all different fonts, and the user chooses which ones they want for which window in the SDL and Windows ports. Personally I find the bitmap fonts more legible for text mode than outline/vector fonts but YMMV.

Pete Mack September 26, 2018 00:53

Takkaria--i agree bitmaps were better choices with low resolution screens. But those are few and far between these days. Spline-fit fonts are a much better choice now.

t4nk September 26, 2018 03:49

.fon files are really just tilesets. IMO, it would be easier to use bmp or png file with glyphs + text file with coordinates (exactly like tiles in lib/tiles).
In fact, for my project, I've written a tool that makes such tilesets out of vector font files :) If someone wants it, I can send it to you (the tool is written in D, so you'll also need a D compiler from https://dlang.org/).

Pete Mack September 26, 2018 11:01

t4nk-
It turns out to be a performance penalty to use tiles instead of glyphs. You can see the difference when running and sometimes on redraws.

t4nk September 26, 2018 13:45

Quote:

Originally Posted by Pete Mack (Post 133474)
t4nk-
It turns out to be a performance penalty to use tiles instead of glyphs.

Do you have any proof of that? Glyphs, as displayed on monitors, are pictures. If they are pictures to begin with (like in .fon files), they're tilesets. If they're something else (say, Bezier curves, like in .ttf files), then transorming them into pictures (rasterizing) requires additional work*.

Quote:

You can see the difference when running and sometimes on redraws.
I can, except in the opposite direction: the difference is that pre-rasterizing glyphs of vector fonts and making an in-memory tileset improves performance noticeably (e.g., main-sdl2.c:make_font_cache()).

* which is, btw, not trivial and can involve such things are running bytecode on a virtual machine (part of so-called "hinting")...

Derakon September 26, 2018 15:10

It can be surprisingly difficult to render a large grid of anything without getting performance penalties. I discovered that when writing the Pyrel UI. The naive approach (just tell your GUI widget library to render a text symbol for every tile in view on every update) is horrifically slow. Getting clever about remembering which portions of the screen have changed and only rerendering those helps, but then scrolling the view is also horrifically slow (because every single tile "changes"). So then you start saying "well, the scrolled view re-uses a lot of tiles from the previous view, so I'll keep the previous view around, redraw it at an offset, and then draw the new/updated tiles on top of that" and you have fairly complex drawing logic that's still really not all that fast.

As for tilesets vs. software-rendered fonts, I can absolutely believe that it's faster to blit a texture to a tile than it is to draw an "@". After all, drawing the "@" involves first converting the vectors to a raster image and then...converting that raster to a texture and blitting it. :) A pre-rendered tileset of the kind t4nk describes is super common in gaming. You can load the entire tileset into your GPU's memory and then just send a payload to the GPU saying "render this tile here, render that tile there", and it can draw the entire screen without having to go back to the CPU for more information.


All times are GMT +1. The time now is 15:18.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.