diff options
Diffstat (limited to 'Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/private_use.py')
-rwxr-xr-x | Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/private_use.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/private_use.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/private_use.py new file mode 100755 index 00000000000..1874af6dead --- /dev/null +++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/private_use.py @@ -0,0 +1,92 @@ +#!/usr/bin/env ../utility/fontforge-interp.sh + +__doc__ = """ +private_use.py + + fontforge -script private_use.py font_file_path... + +Output is HTML showing all the font's glyphs that are in Unicode "Private Use" +areas. +Also reports whether glyphs have references, or if they are ligatures. +""" +__author__ = "Stevan White <stevan.white@googlemail.com>" +__date__ = "Dec 2009" +__version__ = "$Revision: 1.2 $" + +import fontforge +import sys + + +preamble = """<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>Private Use area</title> +<style type="text/css"> + .nonchar { background-color: red; } + table, tr, td { font-family: inherit; } + table, tr, td { font-style: inherit; } + table, tr, td { font-weight: inherit; } + td { text-align: right; } + td { line-height: 1; } + .ligatures td { width: 2em; } + .ligatures th { text-align: left; font-family: freemono, monospace; } +</style> +</head> +<body> +""" + +def makePreamble(): + return preamble + +postamble=""" +</body> +</html> +""" + +def print_private( fontPath ): + font = fontforge.open( fontPath ) + + print '<div style="font-family: \'' + font.familyname + '\'; ' \ + '\">' + print '<h2>Private Use Area in ' + font.fontname + '</h2>' + + font.selection.select(("ranges",None),0xe000,0xf8ff) + print '<table>' + for g in font.selection.byGlyphs: + print '<tr><td>' + print '%s%0.4x%s' %( "0x", g.encoding, "" ) + print '</td><td>' + print '' + g.glyphname + print '</td><td>' + if g.getPosSub( '*' ): + print "is ligature" + if g.references: + print "has references" + print '</td><td>' + print '</td></tr>' + + print '</table>' + print '</div>' + sys.stdout.flush() + +def printentity( font, s ): + if s == -1: + print >> sys.stderr, 'Missing glyph: ' + a + sys.stdout.write( '<span class="nonchar"> </span>' ) + else: + sys.stdout.write( formatted_hex_value( s ) ) + +def formatted_hex_value( n ): + return '%s%0.4x%s' %( "&#x", n, ";" ) + +args = sys.argv[1:] + +if len( args ) < 1 or len( args[0].strip() ) == 0: + sys.exit( 0 ) + +print makePreamble() +for font_name in args: + print_private( font_name ) +print postamble |