List of OpenType font feature inspection tools?

Is there a list of OpenType font feature inspection tools available?  I'm interested in programs for various platforms and/or online apps, either with a GUI or on the command line. Optimally, I'm looking for a wiki page that holds all this information.

Essentially, the tools I'm interested in should report what scripts and languages a given font supports, and what features are available (ideally showing some examples).

Comments

  • Hin-Tak Leung
    Hin-Tak Leung Posts: 361
    edited July 2017
    I think this part of Font Validator does that (see around line 300 onwards for the full table of feature tags) - 

    https://github.com/HinTak/Font-Validator/blob/master/OTFontFileVal/OTLVal.cs

    But I am not sure which tests use this - probably gpos and gsub? Anyway, it does the LangSys Script and FeatureList tables.
  • Theunis de Jong
    Theunis de Jong Posts: 112
    edited July 2017
    Hin-Tak: nah, that's just a flat list so it can report unknown tags (see l.275). The list itself contains both GSUB ('liga', 'smcp') and GPOS ('titl', 'kern') items.

    Werner, any OpenType tool and library worth its disk space can report the lists you mention. For those lists you don't even need a dedicated library either -- all you need is being able to parse the basic 'sfnt' table structure, and the data you are looking for is pretty much right at the start of both GSUB and GPOS. It's all in the specifications.

    Showing a relevant example (as what, an image?) is more complex, because you'd need to parse the actual lookup data so you can tell what glyphs get processed.

    Would you be interested in samples of 'the usual' only, or would you require actual examples of Arabic justification, Hindi halants reordering, Urdu slanted typesetting, and Vietnamese stacked accents as well? [Disclaimer: a random list from memory, I don't actually know what any of these phrases mean.]

    This is part of the output of a fun program I recently wrote in plain C, using a GSUB parser of my own design and FreeType2 for the character rendering:

    ./freetypetest -F minionpro-regular -f smcp -f lnum "1Ab"<br><pre>GSUB: aalt c2sc case dlig dnom frac hist liga lnum numr onum ordn ornm pnum salt sinf smcp ss01 ss02 subs sups tnum zero
    [.. omitted ..]
    ................................##.................................
    ................................###................................
    ...............................####................................
    ..............................######...............................
    ..............................#..####..............................
    .........###.................##...###............#############.....
    ....########................##....####.............####.....####...
    ........####................#......###.............####......###...
    ........####...............##......####............####......###...
    ........####..............##############...........####.....###....
    ........####..............#..........###...........###########.....
    ........####.............##..........####..........####......####..
    ........####............##............###..........####.......###..
    ........####............##............####.........####.......###..
    ........####...........###.............####........####......###...
    ....############....########........##########...#############.....
    </pre>
  • The interror of Font Validator is scriptable with python (it has a built in ironpython interpreter, a bit like fontforge, I guess). That it checks for unknown tags already, means it is relatively simple to add some code to get it to dump the read and known tags too, I think... 

    Does freetype itself not do that, or don't care enough about these to let harfbuzz provides these?
  • Thanks for your replies. However, I want something very simple that is suitable for end users (i.e., not font developers) who want to know more about the typographic capabilities of a given font (halant reordering probably doesn't count as a typographic capability explicitly requested by a user). For example, the four-letter tags are not very descriptive; they should be accompanied with longer explanations. You write 'any OpenType tool and library worth its disk space can report the lists you mention' – so what are those tools? A full-fledged OpenType font editor is definitely the wrong app (since far too powerful). A library is the opposite...
  • James Puckett
    James Puckett Posts: 1,995
    DTL OTMaster is useful for poking around in OpenType fonts. But it’s not going to be user friendly to people who aren’t type designers who do their own font production.
  • I was thinking of something like Python fontTools (https://pypkg.com/pypi/fonttools/). I started writing out a basic Python script but found it already done as https://pypkg.com/pypi/fonttools/f/Snippets/layout-features.py

    This lists all scripts, languages, and features in a supplied font file with the usual abbreviated tags, like this:

    python list_feat.py /Library/Fonts/Arial.ttf<br><br>Table: GSUB<br>&nbsp; Script: arab<br>&nbsp; &nbsp; Language: default<br>&nbsp; &nbsp; &nbsp; Feature: ccmp<br>&nbsp; &nbsp; &nbsp; &nbsp; Lookups: 4<br>&nbsp; &nbsp; &nbsp; Feature: init<br>&nbsp; &nbsp; &nbsp; &nbsp; Lookups: 11
    ... (several hundred more lines)
    For your purposes, this would not need the detailed "Lookups" listing (the list of individual components inside a certain feature), and it needs a translation of the shorthand tags into the "official" full name for each language, script, and feature.

    These are rather extensive lists, but all can be found on the canonical OpenType specification site maintained by Microsoft. The list of features, for example, is at https://www.microsoft.com/typography/otspec/featurelist.htm.

    The current (2017) list of languages is a whopping 600 items long, there are about 150 scripts, and the list of possible features is so long it gets spread over several web pages ... All in all, although adding the Friendly Forms into the existing script should be trivial, I'm going to have that slide for to-night – it's past 1:30 over here :)

    By and large, it would be a command line program and provide a list such as the above, with the longer descriptions.

    Would that be something you are looking for? It still requires the skills to install Python and the library itself, but that should be covered in any beginners' guide.
  • In many situations the line command otfinfo (see also LCDF Typetools) which comes installed with TeXlive (for me MacTeX) gives me the kind of information you seem to be looking for. 
  • DTL OTMaster Light (free) http://fontmaster.nl/

    TrueType Viewer (free) http://home.kabelfoon.nl/~slam/fonts/truetypeviewer.html
  • Thanks for the tips!  What Theunis suggests is what 'otfinfo' program already implements :-) For me, this is exactly the right tool on the command line (it could be a little more verbose, though).

    'TrueType viewer', alas, is unmaintained since many years.  And I agree that DTL OTMaster is a bit heavy for a simple inspection of features.

  • Hin-Tak Leung
    Hin-Tak Leung Posts: 361
    edited August 2017
    Font Validator's output reports already have a number of "Informative" items; and users already have the options of filtering by Passed/Informative/Warnings/Errors. If it isn't an overwhelming amount of information, and is generally useful to most, it can be added with not much additional code in a fairly straight-forward manner. So do you think this is (1) of general interests , (2) does not take up too much volume or proportion of a report, to add to the output?

    The helpID starting with "I" are such :
    https://github.com/HinTak/Font-Validator/blob/master/GenerateFValData/OurData.xml
    Currently there are 36 of those, out of over 900. About 300 starts with P (passed). Another option is to append to the "Details" field of a Passed item... The rest of 600 is W/E.
  • Maybe http://fontdrop.viktornuebel.com is helpful. It's a web service, so no installation required.

    Another web tool is http://www.alphabet-type.com/tools/charset-checker/ but it may be too complex for the casual user.
  • Jens, fontdrop is very nice, thank you! I think this is what I can recommend to (slightly typographically educated) end-users.
  • Hin-Tak, please reformulate, I don't understand what you are asking. What should be added to what? Regarldess of that I think that Font Validator is a tool for professionals only.
  • Hin-Tak Leung
    Hin-Tak Leung Posts: 361
    edited August 2017
    I meant Font Validator already provides some other purely informative output in the report. For example, even if you unselect every test, it would still output what tables are found, their checksums, and whether the checksums are as expected.

    Do you think it would be useful to add this info (which it already parses and kept internally for further analysis) to the output? That's assuming this additional info is not an overwhelming amount of new output swarming the rest of the usual output one expects from font validator...

    Yes, the full output is only of interests to some specific professionals. But the current "unselect everything" output is about the same as what "ttx -l ..." does, and is mostly generally useful as a first look, and not particularly slow.
  • Maybe yes.  I can imagine a supa-dupa mode that reports everything :smile:
  • For me:
    For most cases → OTM
    For rare cases → otfccdump + read the JSON
    For building typefaces → directly write JSON + otfccbuild