- PostScript Type1
- CFF
- CFF-CID
- OpenType
- TrueType
- TrueType Collections.
Addtionally lots of wrapper formats are recognized e.g. Mac Resourc ‘sfnt’ files.
The
Addtionally lots of wrapper formats are recognized e.g. Mac Resourc ‘sfnt’ files.
The
Starting with version 1.1.007, InsideFont can open and view individual font files as well as fonts registered in the operating system. This is possible via the program Menu “File” - “Open Font File” (or F3) and “Open System Font” (or F4) or via the buttons in the middle of the program.
As mentioned earlier, the font cache is a central object of the
The font cache is stored in the Users directory, on my machine it's located here:
C:\Users\a.dippe\AppData\Roaming\InsideFont\FontCache\FontCache.fcache
Create the font cache by clicking the “Create Font-Cache” button (or F5) and then selecting a folder containing font files. On the first try, the system font folder is displayed here. After all files have been scanned and the list has been updated in the program, all fonts have already been identified and the font cache has been created. The next time the program is started, the font cache is opened immediately.
Select a font in the list to preview the font. In the program menu “Pangram Select” the preview of the Pangram's can be made more selective.
Use the tabs to get a deeper look at the font.
Turns on the font cache view. All data stored in the font cache is displayed here. These are PDF relevant data and general information for searching and sorting. To explain each column, we strongly recommend the PDF Specification
This entry is empty if the file cannot be identified as font
The file path
The date of the last modification
The following entries are set for fonts only
The index, if the file contains more than one font
The main font name
The font family name
Alternative font names, e.g. if several encodings are present
The Font Bounding Box contains rectangular coordinates surrounding all glyphs
The angle the glyphs are skewed by
The font weight, e.g. 400 means Normal and 700 means bold, values from 100 to 900 are allowed
Font's upper length
Font descender
Font caps height
Font medium length
Measure for the thickness of vertical bars in glyphs
Number of charachters in the font
List of all identified Unicodes
The “Registry” entry in CIDSystemInfo of CID fonts
The “Ordering” entry in CIDSystemInfo of CID fonts
The “Supplement” entry in CIDSystemInfo of CID fonts
A list of all CIDs of a CID font; the CID's meanings depend on the CIDSystemInfo
In the lower area a glyph preview is displayed for a selected font. The displayed texts are called “Pangrams”. Via the menu “Pangram Select” one can select the desired language. (Further information about pangrams).
This is a detail view for a selected font. The view differs in dependency of the font type. There are 3 main font types PostScript Type 1, TrueType and CFF.
It might be difficult to understand the relationships here without knowledge about the structure of the previously mentioned font types. Here are some links which might help.
There are mainly three different formatgs to encode outline fonts with, TrueType (OpenType too), CFF (Compact Font Format) and PostScript Type1. The differences are not limited to the inner structure of the font files but even affects the definition of glyphs, i.e. how the vector graphics of glyphs are cretaed.
,PDF relevant tables are ‘cmap’, ‘glyf’, ‘head’, ‘hhea’, ‘hmtx’, ‘loca’, ‘maxp’, ‘CFF’, ‘cvt’, ‘fpgm’ and ‘prep’. All encoding information can be found in the ‘cmap’ table. Glyph descriptions are defined in the ‘glyf’ table. If there is a ‘CFF’ table in the font it's propably an OpenType font using CFF outline data to describe its glyphs. Additionally there are TrueType Collections, containers which contain more than one TrueTyp font. The individual fonts are built up like TrueType fonts. InsideFont also analyzes all TrueType-Instructions in the tables ‘fpgm’ and ‘prep’ for syntactically correctness. Occuring errors are displayed.
The setup is defined by many structures, those are much extensive, confusing and often interdependent.
Mainly exists as OpenType font files only. In PDF files the OpenType shell can be omitted. Thus CFF fonts can be embedded as native format. The encoding is defined in the “Encoding” and/or “Charset” array and the glyph descriptions in the “CharStrings” Dictionary.
CFF fonts are a compact form of PostScript Type1 fonts. I have to say that I really like the structure of those fonts. As CFF fonts does not have structures with fix byte length' like TrueType fonts, a parser/interpreter is required to be developed to read and interpret the font sequentially. Encoding is here realized either via glyph names or as an CID font with help of CMap files.
This are PostScript files defining one or more font resources. In principle everything defined in PostScript standard is allowed. In practice only 65% of the PostScript operators are required, one only needs to know which are. The encoding is defined in the “Encoding” array and glyph descriptions in the “CharStrings” dictionary.
Thus for those fonts an entire PostScript parser/interpreter is required which development is a difficult challenge itself.
Glyphs of the selected font can be analyzed individually. The display also includes the dots of single contures, stem hints and binary data.
The glyphs (characters) are the stars here. In the left area of the window the selected glyph is displayed. This view can be made more selective via the buttons (see picture above).
General information, like encoding, glyph name, etc. are displayed in the tree control on the right side. Followed by a detailed list of glyph character commands and conture dots. The listing strongly depends on the font type. The binary data forms the closure for TrueType and CFF fonts, these are the raw data. InsideFont also analyzes all TrueType instructions in the glyphs for syntactically correctness. Occuring errors are displayed.
In PostScript Type1 fonts may be native PostScript code is displayed when there is a link to a “OtherSubrs”.
A single glyph is displayed in the lower area. Here the slider control should be used to navigate faster through the existing glyphs as there are fonts with thousands of glyphs.
In this tab all information for the identification of glyphs is presenetd. This is widely known as encoding.
Unicodes are the identifiers (ID) of glyphs because the question in a computer surely is: What kinda character is this at all in this font? Unicodes are defined in an internantional standard (ISO 10646). A Unicode is a number assigned to a character as ID. This assignment is done by the ISO (International Standardization Organisation) (The History of Unicodes). The unicodes are devided in ranges depending on their language and writing system. For example there are ranges for “Basic Latin”, “Mathematical Operators” or “Greek and Coptic”.
In this tab the unicodes found for the selected font are presented. There is a graphical overview about the so-called BMP (Basic Multilingual Plane) in the upper left. These are the unicodes from U+0000 up to U+FFFF. The ranges inside of this overview can be clicked to get the corresponding glyphs displayed on the right side.
The glyphs of the selected unicode range are displayed on the right side. While hovering a glyph with the cursor its glyph id and its unicode are displayed. On click the glyph becomes the first glyph in view.
There is a tree control in the lower left which also displays the unicode ranges and their corresponding glyph indices in TrueType and CFF fonts. In PostScript Type1 fonts the glyph name is displayed instead of a glyph index. Is a single unicoded selected it becomes displayed as the first glyph in the right view.
There is a link “Show Summary Text” in “About” menu. If it get activated a text control is displayed below which contains the unicode information in a copyable form. The link has a similar effect on the first tab “All Font Files”.
For the very first time, InsideFont version 1.1.007 provides the posibility to view and analyze information from CMap files, used in PDF environment to define translation tables for character codes to glyphs. Syntactically issues as well as conformity issues are found and displayed in correspondig colors.
The CMap format origins from Adobe and is used there for encoding purposes in PDF environment. These are e.g. translation tables for character codes to CIDs or character codes to unicode for example. Every time you install the Acrobat Reader, CMap files are installed as well. Internally CMap files are programmed in PostScript code. Because they can contain lots of confusing information InsideFont got the possibility to analyze them. InsideFont also delivers CMap files. Such encoding files are located in the directories etc\Encoding and etc\CMap.
The “Open CMap File” button (or F9) opens a CMap file and presents selected data. If one selects an opened CMap file in the list a special tab “One CMap File” is created.
It's worth a look on this tab to get a more detailed view. Here all code points are displayed in a table. Because of the mass of information a resorting of the table may help for a better overview.
CMap files are required for mapping or translation tables to assign a specific value to a byte code of variable length. In PDF, mappings of character codes to CIDs and to unicodes are required. To limit the amount of possible character codes it's required to setup valid ranges. This is defined by code space ranges.
Because CMap files have to be PostScript files first, they are checked by the PostScript interpreter of the
One or more Bytes. In PDF encodings up to 6 Bytes occur as a single Byte code depending on the encoding used.
Is a number (0 – 65535 ) assigned to a specified character. Those characters are defined in character collections.
The value assigned to the byte code. This can be a unicode or a CID for example.
A PostScript command which displays another CMap file at this position.
Defines the range of allowed byte values in the byte code. Those define a range of values for each byte in a byte code.
Byte codes can be defined in a CMap file either as single code points or in a group.
Additionally all byte codes which are allowed in the code space ranges but don't have a mapping code are displayed.
The ADi-FontEngine is a library developed in C++ (static or dynamic, 32 or 64 bit) for analyzis and manipulation of fonts be it as file or as stream e.g. from a PDF file. It's optimized for PDF programs.
If your using a Windows 64 bit operating system it's recommended to also use the 64 bit version of