The way you use fonts in SuperMemo depends on the type of the component, the way the font is defined, and the way the texts are encoded. The number of possible combinations of these three may lead to a substantial confusion (not only among SuperMemo beginners). If fonts and encodings are important for your learning material (e.g. if you learn foreign languages using non-Latin alphabets), it is important that you make good choices in the way you use fonts before you embark on a major expansion of your collection. The summary overview below will help you understand the terminology of fonts as well as the pros and cons of different choices.
Where are the fonts defined?
A definition of a font in SuperMemo includes the typeface (e.g. Arial, Verdana, etc.), size, color, and style (e.g. bold, italic, etc.). Fonts can primarily be defined in three ways: (1) in the font registry, (2) amongst SuperMemo options or (3) in Internet Explorer:
- Font registry can be inspected with Search : Other registries : Font. You can use Text : Edit font in text components to modify a font linked from a registry. New font can be used to define a new font. Finally, you can use Link font to link a component with an existing font definition in the registry. The registry and the font definitions are stored in the registry/font.* files
- Tools : Options : Fonts makes it possible to define default fonts, font displayed in the content window, interface font, etc. Definitions of these fonts are stored in INI files: supermemo.ini (if SuperMemo specific) and collection.ini (if collection specific)
- Internet Explorer: default HTML font can be defined in Internet Explorer 7.0 with Tools : Internet Options : General : Fonts. This font will affect HTML texts that do not define the <font> tag (i.e. have not been previously formatted). Note that also: Tools : Internet Options : General : Accessibility in Internet Explorer can affect the way fonts are displayed in HTML components
How are texts encoded?
Character encoding is a code that matches a set of characters with a specific sequence of numbers. Computers store all texts as numbers. For example, in ASCII encoding, numbers 97, 98, and 99 code for characters a, b, and c. Thus a sequence 97-98-99 codes for 'abc'. SuperMemo uses 3 basic character encoding systems: ANSI, UTF8 and 16-bit Unicode. ANSI is used to represent simple texts made of up to 255 characters taken from any number of 255-character sets. In ANSI encoding, interpretation of individual codes depends on the character encoding table called a code page. Unicode is used to represent texts with virtually all commonly used characters. UTF8 encoding is used to represent Unicode characters with 8-bit characters in such a way that all ASCII texts are unchanged and all non-ASCII characters have the most significant bit set.
Character encodings used in SuperMemo
- ANSI: in plain text components, sound components, Spell-Pad components and in Q&A files. Those texts cannot use more than 255 characters, but use minimum space. Fonts used with this encoding are also referred to as OEM fonts
- Unicode (16-bit): HTML and RTF components. Those texts can use virtually all commonly used characters. HTML components represent Unicode characters using HTML codes. For example: the letter µ is represented as a sequence of ASCII characters: µ where 181 is its Unicode number. You can inspect HTML representation of non-ASCII characters in HTML components with Ctrl+Shift+F6 (Edit : View source)
- UTF8: UTF8 is used to encode Unicode characters in the text registry (Search : Text registry). This makes it possible to uniformly encode all ANSI and Unicode texts and quickly search these texts using the same fast low-level search procedure (e.g. using Search : Find elements). Some Q&A files may also be UTF8 encoded. If so, you should decode these files on Q&A import (check Decode UTF-8 box in the import dialog box)
Different components use fonts differently
|Component type||HTML||Text, sound, Spell-Pad||RTF||Image, Video||Binary, OLE|
|Encoding||Unicode||ANSI||Unicode||No character encoding,
|The server application, such as MS Word, Power Point, etc. determines how the fonts are displayed|
|Font definitions||Hard-wired into HTML code via typeface references (unless the default browser font is used)||Stored in the font registry (unless the default font is used as determined in Options : Font)||Hard-wired into RTF files||No reusable font definition; font representation is part of the file||Depends on the server application|
|Modifiable||yes||yes||yes||no (except dedicated image or video editors)||Depends on the server application|
|Globally modifiable||no (unless the default browser font is used)||yes, by (1) changing templates or by (2) modifying registry fonts themselves||no||no (except through object reuse)||no (except through object reuse)|
|Searchable||no, fonts are not registered with the font registry members (i.e. there is no link between texts and registry fonts)||yes (except when the default question font or the default answer font is used)||no, fonts are not registered with the font registry||no||no|
|Pros||Universal applications, supports Unicode||Small size, speed||Unicode||All imaginable texts can be displayed||All imaginable texts can be displayed and be editable with the server application|
|Cons||Not globally modifiable, large size of collections, slow, requires Internet Explorer||Limited to 255 character sets (i.e. only 255 characters possible in a single component)||Not globally modifiable, large size of collections, format supported only for backward compatibility with earlier SuperMemos (may be phased out in the future)||Pictures are not an efficient way of representing texts (size, convenience of editing, etc.)||Depend on the server application
Not integrated with SuperMemo
|Typical use||Incremental reading,
Default text format
template-based collections with many elements (for small size),
language learning with code page fonts
|Legacy collections||Mathematical formulas, demos, presentations, etc.||Specialist application that depend on the server application|
Hints and tips:
- if you are not sure which component and which encoding you should use, use HTML components (read Cons in the table above!)