Files
wallter/plotter-app/venv/lib/python3.8/site-packages/HersheyFonts/HersheyFonts.py
2024-11-20 17:17:14 +01:00

584 lines
89 KiB
Python

import base64
import json
import tarfile
from io import BytesIO
from itertools import chain
try:
from statistics import multimode as statistics_multimode
from statistics import median as statistics_median
except ImportError:
# Python 2.7 mockup for statistics
def statistics_multimode(data):
return data
def statistics_median(lst):
n = len(lst)
s = sorted(lst)
return (sum(s[n // 2 - 1:n // 2 + 1]) / 2.0, s[n // 2])[n % 2] if n else None
try:
from itertools import zip_longest
except ImportError:
from itertools import izip_longest as zip_longest
try:
from string import split
except ImportError:
split = str.split
class HersheyFonts(object):
'''The Hershey Fonts:
- are a set of more than 2000 glyph (symbol) descriptions in vector
( <x,y> point-to-point ) format
- can be grouped as almost 20 'occidental' (english, greek,
cyrillic) fonts, 3 or more 'oriental' (Kanji, Hiragana,
and Katakana) fonts, and a few hundred miscellaneous
symbols (mathematical, musical, cartographic, etc etc)
- are suitable for typographic quality output on a vector device
(such as a plotter) when used at an appropriate scale.
- were digitized by Dr. A. V. Hershey while working for the U.S.
Government National Bureau of Standards (NBS).
- are in the public domain, with a few caveats:
- They are available from NTIS (National Technical Info.
Service) in a computer-readable from which is *not*
in the public domain. This format is described in
a hardcopy publication "Tables of Coordinates for
Hershey's Repertory of Occidental Type Fonts and
Graphic Symbols" available from NTIS for less than
$20 US (phone number +1 703 487 4763).
- NTIS does not care about and doesn't want to know about
what happens to Hershey Font data that is not
distributed in their exact format.
- This distribution is not in the NTIS format, and thus is
only subject to the simple restriction described
at the top of this file.
Hard Copy samples of the Hershey Fonts are best obtained by purchasing the
book described above from NTIS. It contains a sample of all of the Occidental
symbols (but none of the Oriental symbols).
This distribution:
- contains
* a complete copy of the Font data using the original
glyph-numbering sequence
* a set of translation tables that could be used to generate
ASCII-sequence fonts in various typestyles
* a couple of sample programs in C and Fortran that are
capable of parsing the font data and displaying it
on a graphic device (we recommend that if you
wish to write programs using the fonts, you should
hack up one of these until it works on your system)
- consists of the following files...
hershey.doc - details of the font data format, typestyles and
symbols included, etc.
hersh.oc[1-4] - The Occidental font data (these files can
be catenated into one large database)
hersh.or[1-4] - The Oriental font data (likewise here)
*.hmp - Occidental font map files. Each file is a translation
table from Hershey glyph numbers to ASCII
sequence for a particular typestyle.
hershey.f77 - A fortran program that reads and displays all
of the glyphs in a Hershey font file.
hershey.c - The same, in C, using GKS, for MS-DOS and the
PC-Color Graphics Adaptor.
Additional Work To Be Done (volunteers welcome!):
- Integrate this complete set of data with the hershey font typesetting
program recently distributed to mod.sources
- Come up with an integrated data structure and supporting routines
that make use of the ASCII translation tables
- Digitize additional characters for the few places where non-ideal
symbol substitutions were made in the ASCII translation tables.
- Make a version of the demo program (hershey.c or hershey.f77) that
uses the standard Un*x plot routines.
- Write a banner-style program using Hershey Fonts for input and
non-graphic terminals or printers for output.
- Anything else you'd like!
This file provides a brief description of the contents of the Occidental
Hershey Font Files. For a complete listing of the fonts in hard copy, order
NBS Special Publication 424, "A contribution to computer typesetting
techniques: Tables of Coordinates for Hershey's Repertory of Occidental
Type Fonts and Graphic Symbols". You can get it from NTIS (phone number is
+1 703 487 4763) for less than twenty dollars US.
Basic Glyph (symbol) data:
hersh.oc1 - numbers 1 to 1199
hersh.oc2 - numbers 1200 to 2499
hersh.oc3 - numbers 2500 to 3199
hersh.oc4 - numbers 3200 to 3999
These four files contain approximately 19 different fonts in
the A-Z alphabet plus greek and cyrillic, along with hundreds of special
symbols, described generically below.
There are also four files of Oriental fonts (hersh.or[1-4]). These
files contain symbols from three Japanese alphabets (Kanji, Hiragana, and
Katakana). It is unknown what other symbols may be contained therein, nor
is it known what order the symbols are in (I don't know Japanese!).
Back to the Occidental files:
Fonts:
Roman: Plain, Simplex, Duplex, Complex Small, Complex, Triplex
Italic: Complex Small, Complex, Triplex
Script: Simplex, Complex
Gothic: German, English, Italian
Greek: Plain, Simplex, Complex Small, Complex
Cyrillic: Complex
Symbols:
Mathematical (227-229,232,727-779,732,737-740,1227-1270,2227-2270,
1294-1412,2294-2295,2401-2412)
Daggers (for footnotes, etc) (1276-1279, 2276-2279)
Astronomical (1281-1293,2281-2293)
Astrological (2301-2312)
Musical (2317-2382)
Typesetting (ffl,fl,fi sorts of things) (miscellaneous places)
Miscellaneous (mostly in 741-909, but also elsewhere):
- Playing card suits
- Meteorology
- Graphics (lines, curves)
- Electrical
- Geometric (shapes)
- Cartographic
- Naval
- Agricultural
- Highways
- Etc...
ASCII sequence translation files:
The Hershey glyphs, while in a particular order, are not in an
ASCII sequence. I have provided translation files that give the
sequence of glyph numbers that will most closely approximate the
ASCII printing sequence (from space through ~, with the degree
circle tacked on at the end) for each of the above fonts:
File names are made up of fffffftt.hmp,
where ffffff is the font style, one of:
roman Roman
greek Greek
italic Italic
script Script
cyril Cyrillic (some characters not placed in
the ASCII sequence)
gothgr Gothic German
gothgb Gothic English
gothit Gothic Italian
and tt is the font type, one of:
p Plain (very small, no lower case)
s Simplex (plain, normal size, no serifs)
d Duplex (normal size, no serifs, doubled lines)
c Complex (normal size, serifs, doubled lines)
t Triplex (normal size, serifs, tripled lines)
cs Complex Small (Complex, smaller than normal size)
The three sizes are coded with particular base line (bottom of a capital
letter) and cap line (top of a capital letter) values for 'y':
Size Base Line Cap Line
Very Small -5 +4
Small -6 +7
Normal -9 +12
(Note: some glyphs in the 'Very Small' fonts are actually 'Small')
The top line and bottom line, which are normally used to define vertical
spacing, are not given. Maybe somebody can determine appropriate
values for these!
The left line and right line, which are used to define horizontal spacing,
are provided with each character in the database.
Format of Hershey glyphs:
5 bytes - glyphnumber
3 bytes - length of data length in 16-bit words including left&right numbers
1 byte - x value of left margin
1 byte - x value of right margin
(length*2)-2 bytes - stroke data
left&right margins and stroke data are biased by the value of the letter 'R'
Subtract the letter 'R' to get the data.
e.g. if the data byte is 'R', the data is 0
if the data byte is 'T', the data is +2
if the data byte is 'J', the data is -8
and so on...
The coordinate system is x-y, with the origin (0,0) in the center of the
glyph. X increases to the right and y increases *down*.
The stroke data is pairs of bytes, one byte for x followed by one byte for y.
A ' R' in the stroke data indicates a 'lift pen and move' instruction.'''
__compressed_fonts_base64 = B'''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'''
class _objdict(dict):
def __getattr__(self, name):
if name in self:
return self[name]
else:
raise AttributeError('No such attribute: ' + name)
def __setattr__(self, name, value):
if name in self:
self[name] = value
else:
raise AttributeError('No such attribute: ' + name)
class _rednderopts(_objdict):
@property
def cap_line(self):
return self['cap_line'] * self.scaley
@property
def bottom_line(self):
return self['bottom_line'] * self.scaley
@property
def base_line(self):
return self['base_line'] * self.scaley
class _HersheyRenderIterator(object):
def __init__(self, glyphs, text=None):
self.__text = text or ''
if not isinstance(glyphs, dict):
raise TypeError('glyphs parameter has to be a dictionary')
self.__glyphs = glyphs
def text_glyphs(self, text=None):
text = text or self.__text or ''
for current_char in text:
if current_char in self.__glyphs:
the_glyph = self.__glyphs[current_char]
if isinstance(the_glyph, _HersheyGlyph):
yield the_glyph
def text_strokes(self, text=None, xofs=0, yofs=0, scalex=1, scaley=1, spacing=0, **kwargs):
for glyph in self.text_glyphs(text=text):
for stroke in glyph.strokes:
yield [(xofs + (x - glyph.left_offset) * scalex, yofs + y * scaley) for x, y in stroke]
xofs += spacing + scalex * glyph.char_width
def __init__(self, load_from_data_iterator='', load_default_font=None):
self.__glyphs = {}
self.__default_font_names_list = None
self.__font_params = self._rednderopts({'xofs': 0, 'yofs': 0, 'scalex': 1, 'scaley': 1, 'spacing': 0, 'cap_line': -12, 'base_line': 9, 'bottom_line': 16})
if load_default_font is not None:
self.load_default_font(load_default_font)
else:
self.read_from_string_lines(data_iterator=load_from_data_iterator)
@property
def render_options(self):
'''xofs=0, yofs=0,
scalex=1, scaley=1,
spacing=0,
cap_line=-12, base_line= 9, bottom_line= 16'''
return self.__font_params
@property
def all_glyphs(self):
'''Get all Glyphs stored for currently loaded font. ={} if no font loaded'''
return dict(self.__glyphs)
@render_options.setter
def render_options(self, newdim):
'''xofs=0, yofs=0,
scalex=1, scaley=1,
spacing=0,
cap_line=-12, base_line= 9, bottom_line= 16'''
if newdim.issubset(self.render_options.keys()):
self.render_options.update(newdim)
else:
raise AttributeError('Unable to set unknown parameters')
@property
def default_font_names(self):
'''Get the list of built-in fonts'''
if not self.__default_font_names_list:
with BytesIO(self.__get_compressed_font_bytes()) as compressed_file_stream:
with tarfile.open(fileobj=compressed_file_stream, mode='r', ) as ftar:
self.__default_font_names_list = list(map(lambda tar_member: tar_member.name, ftar.getmembers()))
del ftar
del compressed_file_stream
return list(self.__default_font_names_list)
def __get_compressed_font_bytes(self):
for enc in ('64', '85', '32', '16'):
if hasattr(self, '_HersheyFonts__compressed_fonts_base' + enc):
if hasattr(base64, 'b' + enc + 'decode'):
decoded = getattr(base64, 'b' + enc + 'decode')(getattr(self, '_HersheyFonts__compressed_fonts_base' + enc))
return bytes(decoded)
raise NotImplementedError('base' + enc + ' encoding not supported on this platform.')
def normalize_rendering(self, factor=1.0):
'''Set rendering options to output text lines in upright direction, size set to "factor"'''
scale_factor = float(factor) / (self.render_options['bottom_line'] - self.render_options['cap_line'])
self.render_options.scaley = -scale_factor
self.render_options.scalex = scale_factor
self.render_options.yofs = self.render_options['bottom_line'] * scale_factor
self.render_options.xofs = 0
def load_default_font(self, default_font_name=''):
'''load built-in font by name. If default_font_name not specified, selects the predefined default font. The routine is returning the name of the loaded font.'''
if not default_font_name:
default_font_name = self.default_font_names[0]
if default_font_name in self.default_font_names:
with BytesIO(self.__get_compressed_font_bytes()) as compressed_file_stream:
with tarfile.open(fileobj=compressed_file_stream, mode='r', ) as ftar:
tarmember = ftar.extractfile(default_font_name)
self.read_from_string_lines(tarmember)
return default_font_name
raise ValueError('"{0}" font not found.'.format(default_font_name))
def load_font_file(self, file_name):
'''load font from external file'''
with open(file_name, 'r') as fin:
self.read_from_string_lines(fin)
def read_from_string_lines(self, data_iterator=None, first_glyph_ascii_code=32, use_charcode=False, merge_existing=False):
'''Read font from iterable list of strings
Parameters:
- data_iterator : string list or empty to clear current font data
- use_charcode : if True use the font embedded charcode parameter for glyph storage
- first_glyph_ascii_code : if use_charcode is False, use this ASCII code for the first character in font line
- merge_existing : if True merge the glyphs from data_iterator to the current font
'''
glyph_ascii_code = first_glyph_ascii_code
cap = []
base = []
bottom = []
cap_line = None
base_line = None
bottom_line = None
aglyph = None
if not merge_existing:
self.__glyphs = {}
if data_iterator:
for line in data_iterator or '':
if isinstance(line, str) and hasattr(line, 'decode'):
line = line.decode()
elif isinstance(line, bytes) and hasattr(line, 'decode'):
line = line.decode('utf-8')
if line[0] == '#':
extraparams = json.loads(line[1:])
if 'define_cap_line' in extraparams:
cap_line = extraparams['define_cap_line']
if 'define_base_line' in extraparams:
base_line = extraparams['define_base_line']
if 'define_bottom_line' in extraparams:
bottom_line = extraparams['define_bottom_line']
if aglyph:
aglyph.parse_string_line(line)
else:
aglyph = _HersheyGlyph(data_line=line, default_base_line=base_line, default_bottom_line=bottom_line, default_cap_line=cap_line)
if line[0] != '#':
glyph_key = chr(aglyph.font_charcode if use_charcode else glyph_ascii_code)
self.__glyphs[glyph_key] = aglyph
cap.append(aglyph.cap_line)
base.append(aglyph.base_line)
bottom.append(aglyph.bottom_line)
aglyph = None
glyph_ascii_code += 1
caps = statistics_multimode(cap)
bases = statistics_multimode(base)
bottoms = statistics_multimode(bottom)
self.render_options.cap_line = statistics_median(caps) if cap_line is None else cap_line
self.render_options.base_line = statistics_median(bases) if base_line is None else base_line
self.render_options.bottom_line = statistics_median(bottoms) if bottom_line is None else bottom_line
def glyphs_for_text(self, text):
'''Return iterable list of glyphs for the given text'''
return self._HersheyRenderIterator(self.__glyphs).text_glyphs(text=text)
def strokes_for_text(self, text):
'''Return iterable list of continuous strokes (polygons) for all characters with pre calculated offsets for the given text.
Strokes (polygons) are list of (x,y) coordinates.
'''
return self._HersheyRenderIterator(self.__glyphs).text_strokes(text=text, **self.__font_params)
def lines_for_text(self, text):
'''Return iterable list of individual lines for all characters with pre calculated offsets for the given text.
Lines are a list of ((x0,y0),(x1,y1)) coordinates.
'''
return chain.from_iterable(zip(stroke[::], stroke[1::]) for stroke in self._HersheyRenderIterator(self.__glyphs).text_strokes(text=text, **self.__font_params))
class _HersheyGlyph(object):
def __init__(self, data_line='', default_cap_line=None, default_base_line=None, default_bottom_line=None):
self.__capline = default_cap_line
self.__baseline = default_base_line
self.__bottomline = default_bottom_line
self.__charcode = -1
self.__left_side = 0
self.__right_side = 0
self.__strokes = []
self.__xmin = self.__xmax = self.__ymin = self.__ymax = 0
self.parse_string_line(data_line=data_line)
@property
def base_line(self):
'''Return the base line of the glyph. e.g. Horizontal leg of letter L.
The parameter might be in or outside of the bounding box for the glyph
'''
return 9 if self.__baseline is None else self.__baseline
@property
def cap_line(self):
'''Return the cap line of the glyph. e.g. Horizontal hat of letter T.
The parameter might be in or outside of the bounding box for the glyph
'''
return -12 if self.__capline is None else self.__capline
@property
def bottom_line(self):
'''Return the bottom line of the glyph. e.g. Lowest point of letter j.
The parameter might be in or outside of the bounding box for the glyph
'''
return 16 if self.__bottomline is None else self.__bottomline
@property
def font_charcode(self):
'''Get the Hershey charcode of this glyph.'''
return self.__charcode
@property
def left_offset(self):
'''Get left side of the glyph. Can be different to bounding box.'''
return self.__left_side
@property
def strokes(self):
'''Return iterable list of continuous strokes (polygons) for this glyph.
Strokes (polygons) are list of (x,y) coordinates.
'''
return self.__strokes
@property
def char_width(self):
'''Return the width of this glyph. May be different to bounding box.'''
return self.__right_side - self.__left_side
@property
def draw_box(self):
'''Return the graphical bounding box for this Glyph in format ((xmin,ymin),(xmax,ymax))'''
return (self.__xmin, self.__ymin), (self.__xmax, self.__ymax)
@property
def char_box(self):
'''Return the typographical bounding box for this Glyph in format ((xmin,ymin),(xmax,ymax)).
Can be different to bounding box.
See draw_box property for rendering bounding box
'''
return (self.__left_side, self.__bottomline), (self.__right_side, self.__capline)
def __char2val(self, c): # data is stored as signed bytes relative to ASCII R
return ord(c) - ord('R')
@property
def lines(self):
'''Return iterable list of individual lines for this Glyph.
Lines are a list of ((x0,y0),(x1,y1)) coordinates.
'''
return chain.from_iterable(zip(stroke[::], stroke[1::]) for stroke in self.__strokes)
def parse_string_line(self, data_line):
"""Interprets a line of Hershey font text """
if data_line:
data_line = data_line.rstrip()
if data_line:
if data_line[0] == '#':
extraparams = json.loads(data_line[1:])
if 'glyph_cap_line' in extraparams:
self.__capline = extraparams['glyph_cap_line']
if 'glyph_base_line' in extraparams:
self.__baseline = extraparams['glyph_base_line']
if 'glyph_bottom_line' in extraparams:
self.__bottomline = extraparams['glyph_bottom_line']
elif len(data_line) > 9:
strokes = []
xmin = xmax = ymin = ymax = None
# individual strokes are stored separated by <space>+R
# starting at col 11
for s in split(data_line[10:], ' R'):
if len(s):
stroke = list(zip(map(self.__char2val, s[::2]), map(self.__char2val, s[1::2])))
xmin = min(stroke + ([xmin] if xmin else []), key=lambda t: t[0])
ymin = min(stroke + ([ymin] if ymin else []), key=lambda t: t[1])
xmax = max(stroke + ([xmax] if xmax else []), key=lambda t: t[0])
ymax = max(stroke + ([ymax] if ymax else []), key=lambda t: t[1])
strokes.append(stroke)
self.__charcode = int(data_line[0:5])
self.__left_side = self.__char2val(data_line[8])
self.__right_side = self.__char2val(data_line[9])
self.__strokes = strokes
self.__xmin, self.__ymin, self.__xmax, self.__ymax = (xmin[0], ymin[1], xmax[0], ymax[1]) if strokes else (0, 0, 0, 0)
return True
return False
def main():
thefont = HersheyFonts()
main_script(thefont)
main_gui(thefont)
def main_script(thefont=HersheyFonts()):
print('Built in fonts:')
default_font_names = sorted(thefont.default_font_names)
for fontname1, fontname2 in zip_longest(default_font_names[::2], default_font_names[1::2]):
fontname2 = '' if fontname2 is None else '- "' + fontname2 + '"'
fontname1 = '' if fontname1 is None else '"' + fontname1 + '"'
print(' - {0:<25} {1}'.format(fontname1, fontname2))
print('Default font: "{0}"'.format(thefont.load_default_font()))
print('')
print('Rendering options:')
for optname, defval in thefont.render_options.items():
print(' render_options.{0} = {1}'.format(optname, defval))
def main_gui(thefont=HersheyFonts()):
import turtle
thefont.load_default_font()
thefont.normalize_rendering(30)
thefont.render_options.xofs = -367
turtle.mode('logo')
turtle.tracer(2, delay=3)
for coord in range(4):
turtle.forward(200)
if coord < 2:
turtle.stamp()
turtle.back(200)
turtle.right(90)
turtle.color('blue')
lineslist = thefont.lines_for_text('Pack my box with five dozen liquor jugs.')
for pt1, pt2 in lineslist:
turtle.penup()
turtle.goto(pt1)
turtle.setheading(turtle.towards(pt2))
turtle.pendown()
turtle.goto(pt2)
turtle.penup()
turtle.color('red')
turtle.goto(0, 100)
turtle.setheading(180)
turtle.update()
turtle.exitonclick()
if __name__ == '__main__':
main()