17 August 2020, 03:29 | #1 |
Registered User
Join Date: Aug 2018
Location: Minneapolis, USA
Posts: 301
|
AmigaOS 3.2+ and Fonts
One of the things that has always bugged me about the Amiga from the very first days, was the general, well, sloppiness of the bitmapped fonts provided by Commodore, compared to what was available on the Mac.
Now that we're getting 3.2, and then another release after that (knock on wood), I have been thinking about what would make using the Amiga more fun, and so I started playing with FED to see if I could get some crisper fonts going. Now, there are GREAT fixed width fonts for coding on Aminet. I won't spend any time there, as quite a lot of great fonts have already been converted, and a decent chunk of them have licenses that allow redistribution. I'm thinking of a serif font, in various sizes, and a non-serif font in various sizes, both proportional. The goal is clarity, lack of fuzziness (extraneous pixels from poor rendering), consistent spacing, and general legibility. Side note: guess some people don't like XEN, but I think it's clear; the problem I see is more around redistribution: I'm pretty sure it is not allowed by the MUI license. Questions: - any interest in distributing a clearer set of fonts with WB 3.3 (figure too later for 3.2), if they had MIT or similar license? And maybe put some of the uglier fonts into a "other fonts" directory in case users want them? - There is a section of character slots that were reserved for codes from $80-$9f. I think Windows reclaimed that section for -1252. We could cover some more characters, like Euro, Amiga left/right, more quote marks, more european characters if we could use those slots. Not sure what implications of that would be tho for system and existing software. - Short of that, best place to stash the Euro? I see people putting it into $80 and also into the slot for that spiky-ball-thing. - Does 3.2 still have the heinously wide Amiga A in menus for keyboard shortcuts? Any interest in adding an A (or hollow/filled 2 of them) char, and using that instead in 3.3? Progress on first serif font I started with the serif font. Inspired by times new roman, but also pixolde, some stitching patterns I found online, and New York (mostly the just the idea of having single line clarity at small sizes). Maybe needs one more smaller size as well. I can't imagine any one needs a larger one in this day and age. BTW, glad FED got an unofficial update a while back. Some interesting challenges, but mostly just works. Ruby from KS 1.x: CGTimes: From KS 2.x?: Times: From KS 2.x? - Better! but still not crystal clear PixRomana - first pass. |
17 August 2020, 07:05 | #2 |
Registered User
Join Date: Jul 2008
Location: Boston, MA
Posts: 945
|
What is this FED update you mentioned? I hadn't heard about it previously - I'd be interesting in taking a look.
I definitely agree that the character sets need to be extended to support more of the characters you mentioned. But as far as cosmetic improvements go, I think development resources would be better spent on system-level enhancements for ease-of-use of fonts: 1. Anti-aliasing support (probably with some sort of caching). This alone might make existing fonts prettier. 2. Extending bullet.library to support TTF/OTF. Or making bullet.library redundant by overhauling diskfont.library to support TTF/OTF directly (again, probably with some sort of bitmap caching if there's no way to get a decoding engine to render OTF as fast as bitmaps). 3. Better font family support in ASL, so we don't have Arial, Arial Bold, Arial Italic, Arial Bold Italic, etc. cluttering up our font requesters. Just one option for Arial and a cycle gadget to select the particular style. At some point we'll need UTF-8 as well. Lots to do. |
17 August 2020, 09:12 | #3 | |||
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,233
|
Quote:
Also note that the Amiga was not particularly successful in the semi-professional DP-market as the Mac was, so fonts are less important. However, these fonts are standard, and programs may expect them to be present. As such, it is unlikely they are going to be replaced any time soon. If you have better or other fonts to propose, that is certainly great, but one cannot expect in general that programs pick them up. The best approach you can follow is to upload them to Aminet and hope that people use them. Quote:
Amiga follows the ISO 8859 Latin 1 character set and not some *snort* windows assignment. The best space is that defined by ISO-Latin-15, there replacing the glyph taken by the "generic currency symbol" in ISO-Latin-1. Note, however, that Amiga follows ISO-Latin-1 and not ISO-Latin-15, and at present, we do not have switchable code spaces (though this may come). So any appearance of the Euro symbol is, unfortunately, a violation of the specs. What *would* be really needed would be switchable code spaces. Os 4 has them (to some degree), but it would be some work to make the Os aware of that. Likely not for 3.2. Quote:
Yes, but that is not a character of any particular font, but a boopsi of the vector class (IIRC) intuition provides, and thus does not appear in any codeset. It is scalable, but does not require localization as the key on your keyboard is also labelled the same, regardless of the font or nationality. |
|||
17 August 2020, 09:26 | #4 | ||||
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,233
|
Quote:
Quote:
Thanks, but this does not sound very plausible nor doable. Leave that to more powerful machines that are designed and used for professional layout, but not the Amiga. Quote:
However, nobody stops anyone from using this plugin mechanism for other encodings, such as PS or TTF. In fact, you can just go surfing in Aminet and find there the TTFFont manager and a similar engine for postscript fonts which can nicely coexist with each other. There is no need to extend the operating system in any particular way because all you need is possible, and in fact, already available as of today. Just use software that is there. Quote:
Another thing that is unlikely to happen any time soon. UTF-8 uses a complicated multi-byte encoding, and graphics is retricted to a 256-glyph font. Actually, the whole font encoding is "single-byte-per-glyph" throughout the entire system, not just graphics, but intuition, and the console. It is very unrealistic anyone will rewrite all these parts anytime soon. The major dealbreaker is graphics here, depending on the "one-byte-per-glyph" design, and I wouldn't really know how to change that. What is more realistic is a "switchable code base" version where you can select the encoding (such as switch between an ISO-Latin-1 encoding and an ISO-Latin-15 encoding), but even that requires some support throughout the system, from diskfont to ASL, and also CrossDos (yes, really). There is some code there in Os 4, though it is not entirely consistent. |
||||
17 August 2020, 09:50 | #5 | ||
Registered User
Join Date: Nov 2015
Location: Italy
Posts: 191
|
Quote:
Of course one would use antialiased fonts only on hi or true color screens and AOS4, MorphOS, AROS support fonti anti aliasing since decades. Also home computers like Acorn Archimedes already supported it in the 1980s. Adding support for this to AOS 3.x would be very easy. Quote:
|
||
17 August 2020, 10:03 | #6 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,233
|
Quote:
Thus, I suppose if you think that this is easy, you come up with a proposal how to do that. All I can say from my perspective is that this isn't at all easy to integrate into the legacy architecture. |
|
17 August 2020, 14:10 | #7 | |
Registered User
Join Date: Nov 2015
Location: Italy
Posts: 191
|
Quote:
I know it's easy, because it's me who added antialias support for AROS ages ago. Basically you have diskfont->bullet stuff additionally query the font engine for anti aliased glyphs (~chunky gray buffer) and if so you turn the font into a FSF_COLORFONT with flag CT_ANTIALIAS with chunky gray (alpha) buffer in ctf_CharData (but you also keep the standard 1 plane font data in tf_CharData. In graphics/Text() check the flags and if you see it contains antialias data (chunky gray buffer) and rendering is into high or true color bitmap create the text template as chunky buffer and use new BltTemplateAlpha() instead of creating the text template as planar template and using old BltTemplate(). In AOS 3.x since high/truecolor rendering is anyway only done through external P96 you could either leave it completely to P96 to replace Text() and make P96 render AA fonts it AA data is there, or you add an empty do-nothing BltTemplateAlpha() or similiar function which P96 then replaces. And/or clone however they did it in AOS4/AOS4-P96. Or whatever. It's of course also possible to implement BltTemplateAlpha() with unmodified or old P96/CGFX/whatever using ReadPixelArray() -> modify buffer -> WritePixelArray(). BltTemplateAlpha == BltTemplate, except the gray/alpha (instead of the binary 1/0) value indicates the degree by which to mix APen RGB with BPen RGB (JAM2) or APen RGB with background RGB (JAM1). |
|
17 August 2020, 22:32 | #8 | |||||
Registered User
Join Date: Jul 2008
Location: Boston, MA
Posts: 945
|
Thomas, thanks for these details.
Quote:
Quote:
Quote:
Quote:
Quote:
|
|||||
17 August 2020, 22:52 | #9 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,233
|
Quote:
Compugraphic is actually the wrong engine for this type of fun anyhow, it is more for high-resolution professional printing than low-dpi screen rendering without hinting, but well, this was CBM. It was probably cheap to get. Hence, I doubt anyone will touch this in the near future, at least I won't. |
|
17 August 2020, 23:15 | #10 | |||||
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,233
|
Quote:
Quote:
Fontain aka Intellifont got better, but in its core, it is still agfa code of rather moderate quality. Quote:
Again, it is not just a matter of "a couple of tweaks here or there", it is more a matter of entire concepts simply being forgotten, or not considered. Mix that with the overall weak design of graphics, and you see the reason for my reluctance. Quote:
Quote:
So, for example, agfa has multiple encodings for ', and characters that look alike, such as ´, and then uses a search for best matching glyph in the font to satisfy the request for a particular glyph in the target encoding. I remember because one of the team mates helped drilling up "if.uc" to get some fonts working that used somewhat unconventional glyph positions for certain ISO characters. Anyhow, the story is that whenever you use an agfa font, bullet has to map it to a 256 alphabet because this is all graphics is capable of (through "if.uc", as said), so you cannot render more than 256 glyphs of a font at once. If you need more, alternative glyphs, you need to create a new font with a new mapping. Thus, this is not really workable. You would need to make graphics aware of larger fonts, then make console aware of larger fonts, then make console aware of multi-font encoding, and would still have the problem that there is certainly more than one program around that "measures" the size of a non-proprotional text by multiplying the number of characters with the X-Size of the font. Thus, a lot of the "abstractions" graphics makes are inappropriate. Font dimension and string length are no longer related, to name one. With code books, one could at least provide one "if.uc" file per code book and thus can render the same agfa font to multiple bitmap fonts with different encodings. But for utf-8, the problem is a lot larger. Long story short: It's always the same problem: Lack of proper abstraction at all system layers, in particular in graphics. |
|||||
18 August 2020, 00:09 | #11 | |
Registered User
Join Date: Aug 2018
Location: Minneapolis, USA
Posts: 301
|
Quote:
It does have a few quirks, but it gets the job done. |
|
18 August 2020, 00:52 | #12 | |||||
Registered User
Join Date: Aug 2018
Location: Minneapolis, USA
Posts: 301
|
Quote:
Quote:
Quote:
Quote:
Quote:
|
|||||
18 August 2020, 01:22 | #13 | |
Registered User
Join Date: Jul 2008
Location: Boston, MA
Posts: 945
|
Quote:
There’s TypeSmith for serious font work, but sometimes you want a simple tool for a simpler task. |
|
18 August 2020, 08:26 | #14 | |
Registered User
Join Date: Nov 2015
Location: Italy
Posts: 191
|
Colorfont flag/style CT_ANTIALIAS exists in original/old AOS headers. So it was (mis?)used to indicate that font has antialiasing data in addition to old style monochrome planar font/glyph pixels. Antialiased fonts are in certain way some kind of color font, because they do not just contain "black" and "white" but also all the "greys" inbetween. Quote:
|
|
18 August 2020, 08:54 | #15 |
Hardware Designer
Join Date: Aug 2018
Location: Bialystok/Poland
Age: 50
Posts: 178
|
No. Subpixel rendering may be used to improve antialiasing, but is not a requirement. Moreover, subpixel rendering only makes things worse, when logical pixels are not identical to physical LCD pixels. This is usual case for Amigas, as available RTG solutions do not keep up with modern displays, so image is often upscaled. For example my TTEngine project provided antialiased TrueType display for AmigaOS 3.x with RTG, (based on FreeType library) while it did not use subpixel rendering.
Last edited by Krashan; 18 August 2020 at 09:01. |
18 August 2020, 10:48 | #16 |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,233
|
Thanks, I understand. Please note, though, that TTF is not part of the operating system, but bullet is, and the bullet library has no idea about anti-aliasing. Neither has grapihcs (or P96, or the hardware it runs on) an idea about alpha-blending, so it would require a CPU-only implementation, which means at least one multiplication per pixel. Now combine that with the target platform, which is a 68000 running at 7Mhz, and you'll probably see why I don't consider this realistic.
|
18 August 2020, 11:02 | #17 | |||
Registered User
Join Date: Mar 2018
Location: Hastings, New Zealand
Posts: 2,588
|
Quote:
Quote:
Quote:
My A1200 displays in composite on my big TV, so flicker fixing and 'antialiasing' is built in. It works great provided I don't wear glasses and let my eyes blur the text slightly. I also discovered that my small TV has a '1:1' scaling option, which works great with the Vampire. My system font on the Vampire is set to Thin711 for a nice clean look that makes every pixel count. Just the way a retro font system should be! |
|||
18 August 2020, 11:51 | #18 |
Registered User
Join Date: Oct 2012
Location: Germany
Posts: 585
|
|
18 August 2020, 15:52 | #19 |
WinUAE 4000/40, V4SA
Join Date: Apr 2020
Location: East of Oshawa
Posts: 538
|
bubbob42: That just means that bells-and-whistles features don't need to target it, but anything basic (like built-in graphics and font rendering) has to.
While fonts could certainly use an overhaul for Amiga, it's not something that should be out of box with the OS so long as the target platform remains as it is. |
18 August 2020, 19:24 | #20 |
Hardware Designer
Join Date: Aug 2018
Location: Bialystok/Poland
Age: 50
Posts: 178
|
I agree, also antialiasing only makes sense on direct pixel-color screens, which excludes all the Amiga chipsets and 8-bit screens on RTG.
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Finding Fonts | Madcrow | request.Apps | 3 | 20 March 2022 15:12 |
Creating fonts | Brick Nash | Coders. AMOS | 18 | 21 December 2021 20:51 |
Suggestion: AmigaOS handling of foreign characters and bitmap fonts | ancalimon | Coders. General | 0 | 12 August 2020 13:47 |
Fonts | GordonM | support.WinUAE | 8 | 04 May 2016 18:20 |
Fonts | alkis21 | request.Apps | 2 | 23 August 2002 09:33 |
|
|