OBD:Text encoding/Fonts
Presented on this page are images of the actual in-game font, TSFFTahoma. These are presented at the font's largest size (14pt) except for one 7pt exception, in each known variation – U.S. English, European and Russian/Cyrillic. The Japanese and Chinese fonts are omitted because they are in proprietary formats and are stored in external libraries added by the localizers.
U.S. English
The glyphs seen here and in smaller sizes (not pictured) are a straight copy of the old bitmapped Tahoma font from Windows. Tahoma was a good choice of font because it scales down well, maintaining readability at small sizes. Two distinctive qualities of Tahoma are its vertical-stroke variant of the cent symbol and single-stroke variant of the yen/yuan symbol, which are still found in the modern TrueType font. (In the textual version of this table on the main page, the Ұ is reproduced using Unicode's Kakazkh Short U character and the ₵ is reproduced using the Cedi Sign, the symbol for the Ghanaian dollar.) One peculiarity in Oni's font is that point 0x7F (a typically non-printable "delete" character) has a visible box-like glyph in this implementation.
Bold
Not much to say about this one, but uploaded for completeness alongside the plain and italic variants.
Italic
All italic variants of the font are completely unusable because the right side of each glyph is cut off – when the glyph pixel data was authored, the portion of the italicized letter was cut off which leaned outside the boundaries of the box that the non-italicized version would occupy. Needless to say, Oni never uses its italic fonts.
7 point
Speaking of "cut off", the tops of some of the glyphs in the smallest font size are also missing, for instance the Ñ at 0x84 and the È at 0xE9. This font size is used in the game for subtitles as well as for Developer Mode text, but only when the resolution is low.
U.S. PlayStation 2
The PS2 font in the U.S. release is identical to the U.S. releases for Win/Mac except that four code points (0x40, 0x5E, 0x7C and 0x7E) have been replaced with images of the face buttons for the controller, something that would have been necessary for presenting instructions onscreen. Those points might have been chosen by scanning Oni's text strings for which characters in the font are actually used, and picking the first four that came up unused.
European
The accented characters added for European languages, listed here, are perfectly ordinary.
The three mysteriously duplicated characters œ, ¡ (the inverted exclamation point) and ª are not pixel-level duplications of the originals and appear to be newly mastered as if there was no knowledge of the existing versions. That being said, the duplicate ¡ was created by vertically mirroring the ! in the font; the original ¡ already present in the font is visually distinct upon close examination and not a simple mirroring of the !.
The enigmatic ʖ̇, like the duplicate ¡, was created by vertically flipping the existing ? character in the font, whereas the correct ¿ character already present in the font is not a flipped (or rotated) version of the ?, differing slightly on a pixel level.
Italic
Intriguingly, the broken and unused italic font variants do not fully implement the 10 new glyphs and use a copy of the regular question mark in place of the novel ʖ̇. This copy of the question mark is cut off on the right side just like the original character, showing that it was copied from the original, but the native ¿ that was already part of the font is one of the few characters that didn't get cropped and ruined by the authoring process for the italic variants (well, it's missing about one column of pixels on the right side).
Russian
The Russian version only provides an implementation of Windows-1251 for regular and bold fonts. The five italic fonts (7pt, 9pt, 10pt, 12pt and 14pt) have exactly the same data (pixels and glyph descriptors) as the European iteration of Mac OS Roman. This makes sense because italic fonts are inherently broken (see § Italic) and not used by any text in vanilla Oni. More surprisingly, the 14pt bold TSFT does not have a complete Windows-1251 code page either. Instead it is limited to the US-ASCII character set (including the "printable delete" box at code point 0x7F), i.e., the upper section of the above table (white background). However this causes no issue in vanilla Oni because there is no text that uses 14pt bold.
A unique "feature" of the Russian/Cyrillic TSFFTahoma is that all the characters in the extended ASCII range (0x80-0xFF) have a slightly opaque background (about 3% opacity) in the regular (non-bold) font variant, the result of a common oversight in the math used to perform posterization. This mistake isn't visible in-game, but only because the engine (re)posterizes all the glyphs down to 4-bit grayscale when rendering (so that only opacities above 6% are visible).
Last but not least, some fonts in the Russian TSFFTahoma have inconsistent vertical alignment, the most blatant example being 12pt bold: some glyphs are one pixel shorter or taller than the full line height (ascender+descender), without a properly compensated vertical glyph offset; others simply have pixels that are not properly aligned within a glyph's rectangle. Besides that, many glyphs have excessive padding to the left and/or right of a character, which affects readability. (There are other examples of poor alignment, e.g., in 12pt bold the character 0x9C (њ) has its right side cut off, but luckily it doesn't occur in Russian text.)
- Additional minor issues
- The character 0x98, normally non-printable, is implemented as a visible box glyph (☐), slightly larger than 0x7F.
- The character 0x81, normally a "Ѓ" glyph, is replaced with a thin space of inconsistent size (2px wide for all fonts, 3px for 13pt regular and 16pt regular).
- The character 0xA0, normally a non-breaking space, is a space of not-so-consistent size (anywhere from single to triple width, depending on the font).
- The character 0xAD, normally a soft hyphen, is a visible hyphen (similar to the hyphen-minus, 0x2D) for 7pt fonts, and an inconsistently sized space for other fonts.
(Oni's engine could in theory reserve a special treatment for soft hyphens and non-breaking spaces, specified in TSFLRoman, but in practice there is no such functionality.)







