Add all new font files.
BIN
common/fonts/PfefferMediaeval.otf
Normal file
92
common/fonts/TT2020-master/LICENSE
Normal file
@ -0,0 +1,92 @@
|
||||
Copyright (c) 2020 Fredrick R. Brennan (<copypaste@kittens.ph>)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
11
common/fonts/TT2020-master/README.md
Normal file
@ -0,0 +1,11 @@
|
||||
# TT2020
|
||||
|
||||
(Version 0.2: 21 November 2020)
|
||||
|
||||
## [Download the font](https://ctrlcctrlv.github.io/TT2020/docs/download.html)
|
||||
|
||||
### [Why another typewriter font?](https://ctrlcctrlv.github.io/TT2020/docs/moreinfo.html) ♦ [How does it work?](https://ctrlcctrlv.github.io/TT2020/docs/moreinfo2.html) ♦ [Animated specimen](https://ctrlcctrlv.github.io/TT2020/docs/) ♦ [BoingBoing article](https://boingboing.net/2020/01/03/tt2020-an-old-timey-typewrite.html)
|
||||
|
||||

|
||||
|
||||
TT2020 is an advanced, open source, hyperrealistic, multilingual typewriter font for a new decade!
|
68781
common/fonts/TT2020-master/TT.sfd
Normal file
115358
common/fonts/TT2020-master/TT_ita.sfd
Normal file
17
common/fonts/TT2020-master/build/README.md
Normal file
@ -0,0 +1,17 @@
|
||||
# TT2020 build files
|
||||
|
||||
Required:
|
||||
* Python 3+
|
||||
* GEGL
|
||||
* `python-gegl`
|
||||
* GIMP
|
||||
* Inkscape
|
||||
|
||||
Here lie the TT2020 build files; they are typically called in this order:
|
||||
|
||||
* gen_glyphs.sh (list_glyphs.py, export_glyph.py)
|
||||
* gen_style.sh (style[A-G].sh)
|
||||
|
||||
Most styles are generated via GIMP scripts; all styles so far generate bitmaps which are expected to be autotraced by FontForge.
|
||||
|
||||
Possible future work would be, using Inkscape to generate a style, and using OpenGL shaders to much more quickly generate a style than GIMP can do.
|
12
common/fonts/TT2020-master/build/export_glyph.py
Executable file
@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
sys.path.append("/usr/local/lib/python3.8/site-packages")
|
||||
import fontforge
|
||||
gn=sys.argv[1]
|
||||
f = fontforge.open("../TT_ita.sfd")
|
||||
f.ascent+=300
|
||||
f.descent+=300
|
||||
g=f[gn]
|
||||
if g.width == 0:
|
||||
g.width = f["A"].width
|
||||
g.export("svgs/{}.svg".format(gn))
|
37
common/fonts/TT2020-master/build/gen_cell_noise.py
Executable file
@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python3
|
||||
# Minimal example of using the filter `cell-noise` with GEGL through python-gegl.
|
||||
|
||||
import argparse
|
||||
|
||||
import sys
|
||||
sys.path.append("/usr/local/lib/python3.8/site-packages")
|
||||
|
||||
ap = argparse.ArgumentParser(description="Generate Cell Noise without opening GIMP (unneeded arguments hardcoded, see script).", add_help=False)
|
||||
ap.add_argument('-h', '--height', type=int, required=True)
|
||||
ap.add_argument('-w', '--width', type=int, required=True)
|
||||
ap.add_argument('-o', '--outdir', type=str, required=True)
|
||||
ap.add_argument('-s', '--seed', type=int, required=True)
|
||||
ap.add_argument('-б', '--бесцельный', type=int)
|
||||
args = ap.parse_args()
|
||||
|
||||
# These two lines makes sure version of gegl is correct
|
||||
import gi
|
||||
gi.require_version('Gegl', '0.4')
|
||||
|
||||
import gegl
|
||||
import random
|
||||
|
||||
g = gegl.Graph("cell-noise", "crop", "png-save")
|
||||
g[2].path = "{outdir}/{height}x{width}x{seed}.png".format(outdir=args.outdir, height=args.height, width=args.width, seed=args.seed)
|
||||
g[1].height = args.height
|
||||
g[1].width = args.width
|
||||
# Seed bounds ( on my system anyway )
|
||||
#g[0].seed = random.randint(-2147483648, 2147483648)
|
||||
g[0].seed = args.seed
|
||||
g[0].scale = 0.100
|
||||
#These are all the defaults, but we set them in case the defaults change.
|
||||
g[0].iterations = 1
|
||||
g[0].shape = 2
|
||||
g[0].rank = 1
|
||||
g[0].palettize = False
|
||||
g()
|
5
common/fonts/TT2020-master/build/gen_glyphs.sh
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
printf "\033[31mStep 1\e[0m"
|
||||
python list_glyphs.py | parallel --progress './export_glyph.py {}'
|
||||
printf "\033[31mStep 2\e[0m"
|
||||
ls svgs/* | parallel --progress 'inkscape -z {} --export-png=pngs/{/.}.png -d 600 2&>/dev/null'
|
15
common/fonts/TT2020-master/build/gen_style.sh
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
STYLE=$1
|
||||
SEQ="$2 $3"
|
||||
|
||||
# Style arg required.
|
||||
if [[ -z $1 ]]; then exit 1; fi;
|
||||
|
||||
if [[ -z $2 || -z $3 ]]; then SEQ="1 9"; fi;
|
||||
|
||||
if [[ !("$1" =~ [A-G]) ]]; then exit 2; fi
|
||||
|
||||
for i in `seq $SEQ`; do
|
||||
printf "\033[31mStep $i\e[0m\n"
|
||||
./list_glyphs.py | parallel --timeout 500% --progress --bar "./style$1.sh pngs/{}.png $i $i {#}"
|
||||
done
|
6
common/fonts/TT2020-master/build/list_glyphs.py
Executable file
@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
sys.path.append("/usr/local/lib/python3.8/site-packages")
|
||||
import fontforge
|
||||
f = fontforge.open("../TT_ita.sfd")
|
||||
print('\n'.join(['{}'.format(c.glyphname) for c in f.glyphs("encoding")]))
|
52
common/fonts/TT2020-master/build/styleB.py
Executable file
@ -0,0 +1,52 @@
|
||||
# Generate style B, given PNG of a single glyph image.
|
||||
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
i_f = os.environ["GIMPIMAGE"]
|
||||
seed = os.environ["SEED"] or 11
|
||||
alt = os.environ["ALT"] or 1
|
||||
if alt <= 1:
|
||||
outfile = "styleB/{}.png".format(i_f.replace("pngs/", "").replace(".png", ""))
|
||||
else:
|
||||
outfile = "styleB/{}.{}.png".format(i_f.replace("pngs/", "").replace(".png", ""), alt)
|
||||
print("Opening {} and writing to {}".format(i_f, outfile))
|
||||
|
||||
im = pdb.file_png_load(i_f, 0)
|
||||
print("===SIZE IS: {}===".format(str(im.height)+"X"+str(im.width)))
|
||||
pdb.gimp_image_scale(im,im.width/3,im.height/3)
|
||||
print("===SIZE IS: {}===".format(str(im.height)+"X"+str(im.width)))
|
||||
|
||||
pdb.gimp_image_resize(im, im.width+1000, im.height, 500, 0)
|
||||
print(im.layers)
|
||||
for layer in im.layers:
|
||||
pdb.gimp_layer_resize_to_image_size(layer)
|
||||
|
||||
pdb.plug_in_gauss(im, im.active_drawable, 80, 80, 0)
|
||||
cell_noise_file = "gegl:cell-noise/{}x{}x{}.png".format(im.height, im.width, seed)
|
||||
if not os.path.isfile(cell_noise_file):
|
||||
command = "/usr/bin/python3.8 gen_cell_noise.py -h {} -w {} -o 'gegl:cell-noise' -s {}".format(im.height, im.width, seed)
|
||||
os.system(command)
|
||||
la = pdb.gimp_file_load_layer(im, cell_noise_file)
|
||||
new_mask = pdb.gimp_layer_create_mask(la, 5)
|
||||
pdb.gimp_layer_add_mask(im.layers[0], new_mask)
|
||||
pdb.gimp_drawable_invert(new_mask, False)
|
||||
pdb.gimp_brightness_contrast(new_mask, 57, 94)
|
||||
pdb.gimp_layer_remove_mask(im.layers[0], 0)
|
||||
pdb.gimp_layer_flatten(im.layers[0])
|
||||
pdb.gimp_brightness_contrast(im.active_drawable, -127, 127)
|
||||
pdb.gimp_image_convert_indexed(im, 0, 3, 0, False, True, '')
|
||||
pdb.gimp_image_convert_grayscale(im)
|
||||
pdb.gimp_layer_add_alpha(im.layers[0])
|
||||
pdb.gimp_image_select_color(im, 2, im.active_drawable, (1.0,1.0,1.0))
|
||||
pdb.gimp_drawable_edit_clear(im.active_drawable)
|
||||
pdb.script_fu_distress_selection(im, im.active_drawable, 127, 2, 2, 10, 1, 1)
|
||||
pdb.gimp_selection_invert(im)
|
||||
nl = pdb.gimp_layer_new(im, im.width, im.height, 3, "QQ", 100, 0)
|
||||
pdb.gimp_image_insert_layer(im, nl, None, -1)
|
||||
pdb.gimp_image_remove_layer(im, im.layers[0])
|
||||
#Below is problem command
|
||||
pdb.gimp_edit_bucket_fill(im.active_drawable, 0, 0, 100, 255, True, 1.0, 1.0)
|
||||
pdb.file_png_save_defaults(im, im.active_drawable, outfile, 0)
|
||||
pdb.gimp_quit(1)
|
2
common/fonts/TT2020-master/build/styleB.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
ALT="$3" SEED=$((100000+$2+($4-1))) GIMPIMAGE="$1" /home/fred/Downloads/GIMP_AppImage-release-2.10.8-withplugins-x86_64.AppImage -idf --batch-interpreter=python-fu-eval -b - < styleB.py
|
29
common/fonts/TT2020-master/build/styleD.py
Executable file
@ -0,0 +1,29 @@
|
||||
# Generate style D, given PNG of a single glyph image. This style is pretty much verbatim copy of the instructions at https://www.xach.com/gimp/tutorials/rough.html
|
||||
|
||||
import gi
|
||||
gi.require_version('Gegl', '0.4')
|
||||
|
||||
import gegl
|
||||
import sys
|
||||
import os
|
||||
|
||||
i_f = os.environ["GIMPIMAGE"]
|
||||
seed = os.environ["SEED"] or 11
|
||||
alt = os.environ["ALT"] or 1
|
||||
outfile = "styleD/{}.{}.png".format(i_f.replace("pngs/", "").replace(".png", ""), alt)
|
||||
#print("Opening {} and writing to {}".format(i_f, outfile), file=sys.stderr)
|
||||
|
||||
g = gegl.Graph("png-load", "scale-ratio", "noise-spread", "noise-spread", "gaussian-blur")
|
||||
g[0].path = i_f
|
||||
g[1].x = 0.1
|
||||
g[1].y = 0.1
|
||||
g[2].seed = g[3].seed = int(seed)
|
||||
g[2]["amount-x"] = g[3]["amount-x"] = g[2]["amount-y"] = g[3]["amount-y"] = 35
|
||||
g[4]["std-dev-x"] = g[4]["std-dev-y"] = 3.5
|
||||
g2 = gegl.Graph("color", "over", "crop", "threshold", "png-save")
|
||||
g2[-1].path = outfile
|
||||
g2[0].value = (1, 1, 1)
|
||||
g2[2].width = 500
|
||||
g2[2].height = 1000
|
||||
g.plug_as_aux(g2[1])
|
||||
g2()
|
2
common/fonts/TT2020-master/build/styleD.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
ALT="$3" SEED=$((100000+$2+($4-1))) GIMPIMAGE="$1" python styleD.py
|
52
common/fonts/TT2020-master/build/styleE.py
Executable file
@ -0,0 +1,52 @@
|
||||
# Generate style B, given PNG of a single glyph image.
|
||||
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
i_f = os.environ["GIMPIMAGE"]
|
||||
seed = os.environ["SEED"] or 11
|
||||
alt = os.environ["ALT"] or 1
|
||||
if alt <= 1:
|
||||
outfile = "styleE/{}.png".format(i_f.replace("pngs/", "").replace(".png", ""))
|
||||
else:
|
||||
outfile = "styleE/{}.{}.png".format(i_f.replace("pngs/", "").replace(".png", ""), alt)
|
||||
print("Opening {} and writing to {}".format(i_f, outfile))
|
||||
|
||||
im = pdb.file_png_load(i_f, 0)
|
||||
print("===SIZE IS: {}===".format(str(im.height)+"X"+str(im.width)))
|
||||
pdb.gimp_image_scale(im,im.width/3,im.height/3)
|
||||
print("===SIZE IS: {}===".format(str(im.height)+"X"+str(im.width)))
|
||||
|
||||
pdb.gimp_image_resize(im, im.width+1000, im.height, 500, 0)
|
||||
print(im.layers)
|
||||
for layer in im.layers:
|
||||
pdb.gimp_layer_resize_to_image_size(layer)
|
||||
|
||||
pdb.plug_in_gauss(im, im.active_drawable, 40, 40, 0)
|
||||
cell_noise_file = "gegl:cell-noise/{}x{}x{}.png".format(im.height, im.width, seed)
|
||||
if not os.path.isfile(cell_noise_file):
|
||||
command = "/usr/bin/python3.8 gen_cell_noise.py -h {} -w {} -o 'gegl:cell-noise' -s {}".format(im.height, im.width, seed)
|
||||
os.system(command)
|
||||
la = pdb.gimp_file_load_layer(im, cell_noise_file)
|
||||
new_mask = pdb.gimp_layer_create_mask(la, 5)
|
||||
pdb.gimp_layer_add_mask(im.layers[0], new_mask)
|
||||
pdb.gimp_drawable_invert(new_mask, False)
|
||||
pdb.gimp_brightness_contrast(new_mask, 47, 84)
|
||||
pdb.gimp_layer_remove_mask(im.layers[0], 0)
|
||||
pdb.gimp_layer_flatten(im.layers[0])
|
||||
pdb.gimp_brightness_contrast(im.active_drawable, -127, 127)
|
||||
pdb.gimp_image_convert_indexed(im, 0, 3, 0, False, True, '')
|
||||
pdb.gimp_image_convert_grayscale(im)
|
||||
pdb.gimp_layer_add_alpha(im.layers[0])
|
||||
pdb.gimp_image_select_color(im, 2, im.active_drawable, (1.0,1.0,1.0))
|
||||
pdb.gimp_drawable_edit_clear(im.active_drawable)
|
||||
pdb.script_fu_distress_selection(im, im.active_drawable, 127, 2, 2, 10, 1, 1)
|
||||
pdb.gimp_selection_invert(im)
|
||||
nl = pdb.gimp_layer_new(im, im.width, im.height, 3, "QQ", 100, 0)
|
||||
pdb.gimp_image_insert_layer(im, nl, None, -1)
|
||||
pdb.gimp_image_remove_layer(im, im.layers[0])
|
||||
#Below is problem command
|
||||
pdb.gimp_edit_bucket_fill(im.active_drawable, 0, 0, 100, 255, True, 1.0, 1.0)
|
||||
pdb.file_png_save_defaults(im, im.active_drawable, outfile, 0)
|
||||
pdb.gimp_quit(1)
|
2
common/fonts/TT2020-master/build/styleE.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
ALT="$3" SEED=$((100000+$2+($4-1))) GIMPIMAGE="$1" /home/fred/Downloads/GIMP_AppImage-release-2.10.8-withplugins-x86_64.AppImage -idf --batch-interpreter=python-fu-eval -b - < styleE.py
|
37
common/fonts/TT2020-master/build/styleF.py
Executable file
@ -0,0 +1,37 @@
|
||||
# Generate style C, given PNG of a single glyph image.
|
||||
|
||||
import gimpfu
|
||||
import sys
|
||||
import os
|
||||
|
||||
i_f = os.environ["GIMPIMAGE"]
|
||||
seed = os.environ["SEED"] or 11
|
||||
alt = os.environ["ALT"] or 1
|
||||
if alt <= 1:
|
||||
outfile = "styleF/{}.png".format(i_f.replace("pngs/", "").replace(".png", ""))
|
||||
else:
|
||||
outfile = "styleF/{}.{}.png".format(i_f.replace("pngs/", "").replace(".png", ""), alt)
|
||||
#print("Opening {} and writing to {}".format(i_f, outfile))
|
||||
|
||||
im = pdb.file_png_load(i_f, 0)
|
||||
pdb.gimp_image_scale(im,im.width/5,im.height/5)
|
||||
|
||||
pdb.gimp_image_resize(im, im.width+500, im.height, 250, 0)
|
||||
print(im.layers)
|
||||
for layer in im.layers:
|
||||
pdb.gimp_layer_resize_to_image_size(layer)
|
||||
|
||||
new_mask = pdb.gimp_layer_create_mask(im.layers[0], gimpfu.ADD_MASK_WHITE)
|
||||
pdb.gimp_layer_add_mask(im.layers[0], new_mask)
|
||||
pdb.plug_in_plasma(im, new_mask, seed, 2.5)
|
||||
pdb.plug_in_gauss(im, im.layers[0], 40, 40, 0)
|
||||
pdb.gimp_brightness_contrast(new_mask, 45, 45)
|
||||
pdb.gimp_layer_remove_mask(im.layers[0], gimpfu.MASK_APPLY)
|
||||
pdb.gimp_layer_flatten(im.layers[0])
|
||||
pdb.gimp_brightness_contrast(im.layers[0], -117, 127)
|
||||
pdb.plug_in_gauss(im, im.layers[0], 40, 40, 0)
|
||||
pdb.gimp_image_convert_grayscale(im)
|
||||
# 20 is cell-size, 60 is degrees
|
||||
pdb.plug_in_newsprint(im, im.layers[0], 20, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 1)
|
||||
pdb.file_png_save_defaults(im, im.layers[0], outfile, 0)
|
||||
pdb.gimp_quit(1)
|
2
common/fonts/TT2020-master/build/styleF.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
ALT="$3" SEED=$((100000+($2*1000)+($4-1))) GIMPIMAGE="$1" /home/fred/Downloads/GIMP_AppImage-release-2.10.8-withplugins-x86_64.AppImage -idf --batch-interpreter=python-fu-eval -b - < styleF.py
|
37
common/fonts/TT2020-master/build/styleG.py
Executable file
@ -0,0 +1,37 @@
|
||||
# Generate style G, given PNG of a single glyph image.
|
||||
|
||||
import gimpfu
|
||||
import sys
|
||||
import os
|
||||
|
||||
i_f = os.environ["GIMPIMAGE"]
|
||||
seed = os.environ["SEED"] or 11
|
||||
alt = os.environ["ALT"] or 1
|
||||
if alt <= 1:
|
||||
outfile = "styleG/{}.png".format(i_f.replace("pngs/", "").replace(".png", ""))
|
||||
else:
|
||||
outfile = "styleG/{}.{}.png".format(i_f.replace("pngs/", "").replace(".png", ""), alt)
|
||||
#print("Opening {} and writing to {}".format(i_f, outfile))
|
||||
|
||||
im = pdb.file_png_load(i_f, 0)
|
||||
pdb.gimp_image_scale(im,im.width/5,im.height/5)
|
||||
|
||||
pdb.gimp_image_resize(im, im.width+500, im.height, 250, 0)
|
||||
print(im.layers)
|
||||
for layer in im.layers:
|
||||
pdb.gimp_layer_resize_to_image_size(layer)
|
||||
|
||||
new_mask = pdb.gimp_layer_create_mask(im.layers[0], gimpfu.ADD_MASK_WHITE)
|
||||
pdb.gimp_layer_add_mask(im.layers[0], new_mask)
|
||||
pdb.plug_in_plasma(im, new_mask, seed, 2.5)
|
||||
pdb.plug_in_gauss(im, im.layers[0], 40, 40, 0)
|
||||
pdb.gimp_brightness_contrast(new_mask, 90, 90)
|
||||
pdb.gimp_layer_remove_mask(im.layers[0], gimpfu.MASK_APPLY)
|
||||
pdb.gimp_layer_flatten(im.layers[0])
|
||||
pdb.gimp_brightness_contrast(im.layers[0], -117, 127)
|
||||
pdb.plug_in_gauss(im, im.layers[0], 40, 40, 0)
|
||||
pdb.gimp_image_convert_grayscale(im)
|
||||
# 20 is cell-size, 60 is degrees
|
||||
pdb.plug_in_newsprint(im, im.layers[0], 20, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 1)
|
||||
pdb.file_png_save_defaults(im, im.layers[0], outfile, 0)
|
||||
pdb.gimp_quit(1)
|
2
common/fonts/TT2020-master/build/styleG.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
ALT="$3" SEED=$((100000+$2+($4-1))) GIMPIMAGE="$1" /home/fred/Downloads/GIMP_AppImage-release-2.10.8-withplugins-x86_64.AppImage -idf --batch-interpreter=python-fu-eval -b - < styleG.py
|
31
common/fonts/TT2020-master/build/version_0.2_patch.py
Executable file
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env python3
|
||||
# I was in the middle of moving when this release was made and some vital build files were on another computer.
|
||||
# Therefore, let's patch the binaries and call it a release. Users will never know as long as I don't fuck up.
|
||||
# (Famous last words.)
|
||||
|
||||
import fontTools.ttLib
|
||||
import sys
|
||||
|
||||
assert len(sys.argv) == 2, "No filename given"
|
||||
|
||||
ttf=fontTools.ttLib.TTFont(file=sys.argv[1])
|
||||
|
||||
# SFNT revision
|
||||
ttf["head"].fontRevision = 0.2
|
||||
|
||||
# `name` font version
|
||||
padZeroes = lambda bs: b'\x00'.join([b.encode('ascii') for b in bs])
|
||||
names=ttf["name"].names
|
||||
for n in names:
|
||||
if n.nameID != 5: continue
|
||||
n.string = n.string.replace(b'001', b'0.2').replace(padZeroes('001'), padZeroes('0.2')) \
|
||||
.replace(b'0.1', b'0.2').replace(padZeroes('0.1'), padZeroes('0.2'))
|
||||
ttf["name"].names=names
|
||||
|
||||
# `liga` ⇒ `dlig` (Closes #8)
|
||||
if "GSUB" in ttf:
|
||||
for fr in ttf["GSUB"].table.FeatureList.FeatureRecord:
|
||||
fr.FeatureTag = 'dlig' if fr.FeatureTag == 'liga' else fr.FeatureTag
|
||||
|
||||
ttf.save(sys.argv[1])
|
||||
print("Patched {}".format(sys.argv[1]), file=sys.stderr)
|
15
common/fonts/TT2020-master/build_ttf/calt.fea
Normal file
@ -0,0 +1,15 @@
|
||||
include(langs.fea);
|
||||
include(classes2.fea);
|
||||
|
||||
feature calt {
|
||||
lookup calt1 {
|
||||
sub @a1 @a1' by @a2;
|
||||
sub @a2 @a1' by @a3;
|
||||
sub @a3 @a1' by @a4;
|
||||
sub @a4 @a1' by @a5;
|
||||
sub @a5 @a1' by @a6;
|
||||
sub @a6 @a1' by @a7;
|
||||
sub @a7 @a1' by @a8;
|
||||
sub @a8 @a1' by @a9;
|
||||
} calt1;
|
||||
} calt;
|
15
common/fonts/TT2020-master/build_ttf/calt_ita.fea
Normal file
@ -0,0 +1,15 @@
|
||||
include(langs.fea);
|
||||
include(classes2_ita.fea);
|
||||
|
||||
feature calt {
|
||||
lookup calt1 {
|
||||
sub @a1 @a1' by @a2;
|
||||
sub @a2 @a1' by @a3;
|
||||
sub @a3 @a1' by @a4;
|
||||
sub @a4 @a1' by @a5;
|
||||
sub @a5 @a1' by @a6;
|
||||
sub @a6 @a1' by @a7;
|
||||
sub @a7 @a1' by @a8;
|
||||
sub @a8 @a1' by @a9;
|
||||
} calt1;
|
||||
} calt;
|
9
common/fonts/TT2020-master/build_ttf/classes2.fea
Normal file
9
common/fonts/TT2020-master/build_ttf/classes2_ita.fea
Normal file
@ -0,0 +1,9 @@
|
||||
@a1 = [space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde exclamdown cent sterling currency yen brokenbar section dieresis copyright ordfeminine guillemotleft logicalnot uni00AD registered macron degree plusminus uni00B2 uni00B3 acute paragraph periodcentered cedilla uni00B9 ordmasculine guillemotright onequarter onehalf threequarters questiondown Agrave Aacute Acircumflex Atilde Adieresis Aring AE Ccedilla Egrave Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis Eth Ntilde Ograve Oacute Ocircumflex Otilde Odieresis multiply Oslash Ugrave Uacute Ucircumflex Udieresis Yacute Thorn germandbls agrave aacute acircumflex atilde adieresis aring ae ccedilla egrave eacute ecircumflex edieresis igrave iacute icircumflex idieresis eth ntilde ograve oacute ocircumflex otilde odieresis divide oslash ugrave uacute ucircumflex udieresis yacute thorn ydieresis Amacron amacron Abreve abreve Aogonek aogonek Cacute cacute Ccircumflex ccircumflex Cdotaccent cdotaccent Ccaron ccaron Dcaron dcaron Dcroat dcroat Emacron emacron Ebreve ebreve Edotaccent edotaccent Eogonek eogonek Ecaron ecaron Gcircumflex gcircumflex Gbreve gbreve Gdotaccent gdotaccent uni0122 uni0123 Hcircumflex hcircumflex Itilde itilde Imacron imacron Ibreve ibreve Iogonek iogonek Idotaccent dotlessi Jcircumflex jcircumflex uni0136 uni0137 Lacute lacute uni013B uni013C Lcaron lcaron uni013F uni0140 Lslash lslash Nacute nacute uni0145 uni0146 Ncaron ncaron Omacron omacron Obreve obreve Ohungarumlaut ohungarumlaut OE oe Racute racute uni0156 uni0157 Rcaron rcaron Sacute sacute Scircumflex scircumflex Scedilla scedilla Scaron scaron uni0162 uni0163 Tcaron tcaron Utilde utilde Umacron umacron Ubreve ubreve Uring uring Uhungarumlaut uhungarumlaut Uogonek uogonek Wcircumflex wcircumflex Ycircumflex ycircumflex Ydieresis Zacute zacute Zdotaccent zdotaccent Zcaron zcaron longs uni01CD uni01CE uni01CF uni01D0 uni01D1 uni01D2 uni01D3 uni01D4 uni01E2 uni01E3 uni01E6 uni01E7 uni01E8 uni01E9 uni01EA uni01EB uni01F4 uni01F5 uni01F8 uni01F9 uni01FC uni01FD uni01FE uni01FF uni0218 uni0219 uni021A uni021B uni0226 uni0227 uni0228 uni0229 uni022E uni022F uni0232 uni0233 dotlessj gravecomb acutecomb circumflexcomb tildecomb uni0304 brevecomb uni0307 uni0308 uni030A uni030B uni030C commabelowcomb uni0327 uni0328 uni0400 uni0401 uni0403 uni0404 uni0405 uni0406 uni0407 uni0408 uni040C uni040D uni040E cyr_A cyr_BE cyr_VE cyr_GHE cyr_DE cyr_IE cyr_ZHE cyr_ZE cyr_I cyr_SHORT_I cyr_KA cyr_EL cyr_EM cyr_EN cyr_O cyr_PE cyr_ER cyr_ES cyr_TE cyr_U cyr_EF cyr_HA cyr_TSE cyr_CHE cyr_SHA cyr_SHCHA cyr_HARD_SIGN cyr_YERU cyr_SOFT_SIGN cyr_E cyr_YU cyr_YA cyr_a cyr_be cyr_ve cyr_ghe cyr_de cyr_ie cyr_zhe cyr_ze cyr_i cyr_short_i cyr_ka cyr_el cyr_em cyr_en cyr_o cyr_pe cyr_er cyr_es cyr_te cyr_u cyr_ef cyr_ha cyr_tse cyr_che cyr_sha cyr_shcha cyr_hard_sign cyr_yeru cyr_soft_sign cyr_e cyr_yu cyr_ya uni0450 uni0451 uni0453 uni0454 uni0455 uni0456 uni0457 uni0458 uni045C uni045D uni045E uni0490 uni0491 uni1E80 uni1E81 uni1E82 uni1E83 uni1E84 uni1E85 uni1EF2 uni1EF3 uni2010 uni2011 figuredash endash emdash quoteleft quoteright quotesinglbase quotereversed quotedblleft quotedblright quotedblbase uni201F dagger daggerdbl bullet ellipsis fraction twoinferior fourinferior Euro phpeso uni215F brevecomb.salt];
|
||||
@a2 = [space.2 exclam.2 quotedbl.2 numbersign.2 dollar.2 percent.2 ampersand.2 quotesingle.2 parenleft.2 parenright.2 asterisk.2 plus.2 comma.2 hyphen.2 period.2 slash.2 zero.2 one.2 two.2 three.2 four.2 five.2 six.2 seven.2 eight.2 nine.2 colon.2 semicolon.2 less.2 equal.2 greater.2 question.2 at.2 A.2 B.2 C.2 D.2 E.2 F.2 G.2 H.2 I.2 J.2 K.2 L.2 M.2 N.2 O.2 P.2 Q.2 R.2 S.2 T.2 U.2 V.2 W.2 X.2 Y.2 Z.2 bracketleft.2 backslash.2 bracketright.2 asciicircum.2 underscore.2 grave.2 a.2 b.2 c.2 d.2 e.2 f.2 g.2 h.2 i.2 j.2 k.2 l.2 m.2 n.2 o.2 p.2 q.2 r.2 s.2 t.2 u.2 v.2 w.2 x.2 y.2 z.2 braceleft.2 bar.2 braceright.2 asciitilde.2 exclamdown.2 cent.2 sterling.2 currency.2 yen.2 brokenbar.2 section.2 dieresis.2 copyright.2 ordfeminine.2 guillemotleft.2 logicalnot.2 uni00AD.2 registered.2 macron.2 degree.2 plusminus.2 uni00B2.2 uni00B3.2 acute.2 paragraph.2 periodcentered.2 cedilla.2 uni00B9.2 ordmasculine.2 guillemotright.2 onequarter.2 onehalf.2 threequarters.2 questiondown.2 Agrave.2 Aacute.2 Acircumflex.2 Atilde.2 Adieresis.2 Aring.2 AE.2 Ccedilla.2 Egrave.2 Eacute.2 Ecircumflex.2 Edieresis.2 Igrave.2 Iacute.2 Icircumflex.2 Idieresis.2 Eth.2 Ntilde.2 Ograve.2 Oacute.2 Ocircumflex.2 Otilde.2 Odieresis.2 multiply.2 Oslash.2 Ugrave.2 Uacute.2 Ucircumflex.2 Udieresis.2 Yacute.2 Thorn.2 germandbls.2 agrave.2 aacute.2 acircumflex.2 atilde.2 adieresis.2 aring.2 ae.2 ccedilla.2 egrave.2 eacute.2 ecircumflex.2 edieresis.2 igrave.2 iacute.2 icircumflex.2 idieresis.2 eth.2 ntilde.2 ograve.2 oacute.2 ocircumflex.2 otilde.2 odieresis.2 divide.2 oslash.2 ugrave.2 uacute.2 ucircumflex.2 udieresis.2 yacute.2 thorn.2 ydieresis.2 Amacron.2 amacron.2 Abreve.2 abreve.2 Aogonek.2 aogonek.2 Cacute.2 cacute.2 Ccircumflex.2 ccircumflex.2 Cdotaccent.2 cdotaccent.2 Ccaron.2 ccaron.2 Dcaron.2 dcaron.2 Dcroat.2 dcroat.2 Emacron.2 emacron.2 Ebreve.2 ebreve.2 Edotaccent.2 edotaccent.2 Eogonek.2 eogonek.2 Ecaron.2 ecaron.2 Gcircumflex.2 gcircumflex.2 Gbreve.2 gbreve.2 Gdotaccent.2 gdotaccent.2 uni0122.2 uni0123.2 Hcircumflex.2 hcircumflex.2 Itilde.2 itilde.2 Imacron.2 imacron.2 Ibreve.2 ibreve.2 Iogonek.2 iogonek.2 Idotaccent.2 dotlessi.2 Jcircumflex.2 jcircumflex.2 uni0136.2 uni0137.2 Lacute.2 lacute.2 uni013B.2 uni013C.2 Lcaron.2 lcaron.2 uni013F.2 uni0140.2 Lslash.2 lslash.2 Nacute.2 nacute.2 uni0145.2 uni0146.2 Ncaron.2 ncaron.2 Omacron.2 omacron.2 Obreve.2 obreve.2 Ohungarumlaut.2 ohungarumlaut.2 OE.2 oe.2 Racute.2 racute.2 uni0156.2 uni0157.2 Rcaron.2 rcaron.2 Sacute.2 sacute.2 Scircumflex.2 scircumflex.2 Scedilla.2 scedilla.2 Scaron.2 scaron.2 uni0162.2 uni0163.2 Tcaron.2 tcaron.2 Utilde.2 utilde.2 Umacron.2 umacron.2 Ubreve.2 ubreve.2 Uring.2 uring.2 Uhungarumlaut.2 uhungarumlaut.2 Uogonek.2 uogonek.2 Wcircumflex.2 wcircumflex.2 Ycircumflex.2 ycircumflex.2 Ydieresis.2 Zacute.2 zacute.2 Zdotaccent.2 zdotaccent.2 Zcaron.2 zcaron.2 longs.2 uni01CD.2 uni01CE.2 uni01CF.2 uni01D0.2 uni01D1.2 uni01D2.2 uni01D3.2 uni01D4.2 uni01E2.2 uni01E3.2 uni01E6.2 uni01E7.2 uni01E8.2 uni01E9.2 uni01EA.2 uni01EB.2 uni01F4.2 uni01F5.2 uni01F8.2 uni01F9.2 uni01FC.2 uni01FD.2 uni01FE.2 uni01FF.2 uni0218.2 uni0219.2 uni021A.2 uni021B.2 uni0226.2 uni0227.2 uni0228.2 uni0229.2 uni022E.2 uni022F.2 uni0232.2 uni0233.2 dotlessj.2 gravecomb.2 acutecomb.2 circumflexcomb.2 tildecomb.2 uni0304.2 brevecomb.2 uni0307.2 uni0308.2 uni030A.2 uni030B.2 uni030C.2 commabelowcomb.2 uni0327.2 uni0328.2 uni0400.2 uni0401.2 uni0403.2 uni0404.2 uni0405.2 uni0406.2 uni0407.2 uni0408.2 uni040C.2 uni040D.2 uni040E.2 cyr_A.2 cyr_BE.2 cyr_VE.2 cyr_GHE.2 cyr_DE.2 cyr_IE.2 cyr_ZHE.2 cyr_ZE.2 cyr_I.2 cyr_SHORT_I.2 cyr_KA.2 cyr_EL.2 cyr_EM.2 cyr_EN.2 cyr_O.2 cyr_PE.2 cyr_ER.2 cyr_ES.2 cyr_TE.2 cyr_U.2 cyr_EF.2 cyr_HA.2 cyr_TSE.2 cyr_CHE.2 cyr_SHA.2 cyr_SHCHA.2 cyr_HARD_SIGN.2 cyr_YERU.2 cyr_SOFT_SIGN.2 cyr_E.2 cyr_YU.2 cyr_YA.2 cyr_a.2 cyr_be.2 cyr_ve.2 cyr_ghe.2 cyr_de.2 cyr_ie.2 cyr_zhe.2 cyr_ze.2 cyr_i.2 cyr_short_i.2 cyr_ka.2 cyr_el.2 cyr_em.2 cyr_en.2 cyr_o.2 cyr_pe.2 cyr_er.2 cyr_es.2 cyr_te.2 cyr_u.2 cyr_ef.2 cyr_ha.2 cyr_tse.2 cyr_che.2 cyr_sha.2 cyr_shcha.2 cyr_hard_sign.2 cyr_yeru.2 cyr_soft_sign.2 cyr_e.2 cyr_yu.2 cyr_ya.2 uni0450.2 uni0451.2 uni0453.2 uni0454.2 uni0455.2 uni0456.2 uni0457.2 uni0458.2 uni045C.2 uni045D.2 uni045E.2 uni0490.2 uni0491.2 uni1E80.2 uni1E81.2 uni1E82.2 uni1E83.2 uni1E84.2 uni1E85.2 uni1EF2.2 uni1EF3.2 uni2010.2 uni2011.2 figuredash.2 endash.2 emdash.2 quoteleft.2 quoteright.2 quotesinglbase.2 quotereversed.2 quotedblleft.2 quotedblright.2 quotedblbase.2 uni201F.2 dagger.2 daggerdbl.2 bullet.2 ellipsis.2 fraction.2 twoinferior.2 fourinferior.2 Euro.2 phpeso.2 uni215F.2 brevecomb.salt.2];
|
||||
@a3 = [space.3 exclam.3 quotedbl.3 numbersign.3 dollar.3 percent.3 ampersand.3 quotesingle.3 parenleft.3 parenright.3 asterisk.3 plus.3 comma.3 hyphen.3 period.3 slash.3 zero.3 one.3 two.3 three.3 four.3 five.3 six.3 seven.3 eight.3 nine.3 colon.3 semicolon.3 less.3 equal.3 greater.3 question.3 at.3 A.3 B.3 C.3 D.3 E.3 F.3 G.3 H.3 I.3 J.3 K.3 L.3 M.3 N.3 O.3 P.3 Q.3 R.3 S.3 T.3 U.3 V.3 W.3 X.3 Y.3 Z.3 bracketleft.3 backslash.3 bracketright.3 asciicircum.3 underscore.3 grave.3 a.3 b.3 c.3 d.3 e.3 f.3 g.3 h.3 i.3 j.3 k.3 l.3 m.3 n.3 o.3 p.3 q.3 r.3 s.3 t.3 u.3 v.3 w.3 x.3 y.3 z.3 braceleft.3 bar.3 braceright.3 asciitilde.3 exclamdown.3 cent.3 sterling.3 currency.3 yen.3 brokenbar.3 section.3 dieresis.3 copyright.3 ordfeminine.3 guillemotleft.3 logicalnot.3 uni00AD.3 registered.3 macron.3 degree.3 plusminus.3 uni00B2.3 uni00B3.3 acute.3 paragraph.3 periodcentered.3 cedilla.3 uni00B9.3 ordmasculine.3 guillemotright.3 onequarter.3 onehalf.3 threequarters.3 questiondown.3 Agrave.3 Aacute.3 Acircumflex.3 Atilde.3 Adieresis.3 Aring.3 AE.3 Ccedilla.3 Egrave.3 Eacute.3 Ecircumflex.3 Edieresis.3 Igrave.3 Iacute.3 Icircumflex.3 Idieresis.3 Eth.3 Ntilde.3 Ograve.3 Oacute.3 Ocircumflex.3 Otilde.3 Odieresis.3 multiply.3 Oslash.3 Ugrave.3 Uacute.3 Ucircumflex.3 Udieresis.3 Yacute.3 Thorn.3 germandbls.3 agrave.3 aacute.3 acircumflex.3 atilde.3 adieresis.3 aring.3 ae.3 ccedilla.3 egrave.3 eacute.3 ecircumflex.3 edieresis.3 igrave.3 iacute.3 icircumflex.3 idieresis.3 eth.3 ntilde.3 ograve.3 oacute.3 ocircumflex.3 otilde.3 odieresis.3 divide.3 oslash.3 ugrave.3 uacute.3 ucircumflex.3 udieresis.3 yacute.3 thorn.3 ydieresis.3 Amacron.3 amacron.3 Abreve.3 abreve.3 Aogonek.3 aogonek.3 Cacute.3 cacute.3 Ccircumflex.3 ccircumflex.3 Cdotaccent.3 cdotaccent.3 Ccaron.3 ccaron.3 Dcaron.3 dcaron.3 Dcroat.3 dcroat.3 Emacron.3 emacron.3 Ebreve.3 ebreve.3 Edotaccent.3 edotaccent.3 Eogonek.3 eogonek.3 Ecaron.3 ecaron.3 Gcircumflex.3 gcircumflex.3 Gbreve.3 gbreve.3 Gdotaccent.3 gdotaccent.3 uni0122.3 uni0123.3 Hcircumflex.3 hcircumflex.3 Itilde.3 itilde.3 Imacron.3 imacron.3 Ibreve.3 ibreve.3 Iogonek.3 iogonek.3 Idotaccent.3 dotlessi.3 Jcircumflex.3 jcircumflex.3 uni0136.3 uni0137.3 Lacute.3 lacute.3 uni013B.3 uni013C.3 Lcaron.3 lcaron.3 uni013F.3 uni0140.3 Lslash.3 lslash.3 Nacute.3 nacute.3 uni0145.3 uni0146.3 Ncaron.3 ncaron.3 Omacron.3 omacron.3 Obreve.3 obreve.3 Ohungarumlaut.3 ohungarumlaut.3 OE.3 oe.3 Racute.3 racute.3 uni0156.3 uni0157.3 Rcaron.3 rcaron.3 Sacute.3 sacute.3 Scircumflex.3 scircumflex.3 Scedilla.3 scedilla.3 Scaron.3 scaron.3 uni0162.3 uni0163.3 Tcaron.3 tcaron.3 Utilde.3 utilde.3 Umacron.3 umacron.3 Ubreve.3 ubreve.3 Uring.3 uring.3 Uhungarumlaut.3 uhungarumlaut.3 Uogonek.3 uogonek.3 Wcircumflex.3 wcircumflex.3 Ycircumflex.3 ycircumflex.3 Ydieresis.3 Zacute.3 zacute.3 Zdotaccent.3 zdotaccent.3 Zcaron.3 zcaron.3 longs.3 uni01CD.3 uni01CE.3 uni01CF.3 uni01D0.3 uni01D1.3 uni01D2.3 uni01D3.3 uni01D4.3 uni01E2.3 uni01E3.3 uni01E6.3 uni01E7.3 uni01E8.3 uni01E9.3 uni01EA.3 uni01EB.3 uni01F4.3 uni01F5.3 uni01F8.3 uni01F9.3 uni01FC.3 uni01FD.3 uni01FE.3 uni01FF.3 uni0218.3 uni0219.3 uni021A.3 uni021B.3 uni0226.3 uni0227.3 uni0228.3 uni0229.3 uni022E.3 uni022F.3 uni0232.3 uni0233.3 dotlessj.3 gravecomb.3 acutecomb.3 circumflexcomb.3 tildecomb.3 uni0304.3 brevecomb.3 uni0307.3 uni0308.3 uni030A.3 uni030B.3 uni030C.3 commabelowcomb.3 uni0327.3 uni0328.3 uni0400.3 uni0401.3 uni0403.3 uni0404.3 uni0405.3 uni0406.3 uni0407.3 uni0408.3 uni040C.3 uni040D.3 uni040E.3 cyr_A.3 cyr_BE.3 cyr_VE.3 cyr_GHE.3 cyr_DE.3 cyr_IE.3 cyr_ZHE.3 cyr_ZE.3 cyr_I.3 cyr_SHORT_I.3 cyr_KA.3 cyr_EL.3 cyr_EM.3 cyr_EN.3 cyr_O.3 cyr_PE.3 cyr_ER.3 cyr_ES.3 cyr_TE.3 cyr_U.3 cyr_EF.3 cyr_HA.3 cyr_TSE.3 cyr_CHE.3 cyr_SHA.3 cyr_SHCHA.3 cyr_HARD_SIGN.3 cyr_YERU.3 cyr_SOFT_SIGN.3 cyr_E.3 cyr_YU.3 cyr_YA.3 cyr_a.3 cyr_be.3 cyr_ve.3 cyr_ghe.3 cyr_de.3 cyr_ie.3 cyr_zhe.3 cyr_ze.3 cyr_i.3 cyr_short_i.3 cyr_ka.3 cyr_el.3 cyr_em.3 cyr_en.3 cyr_o.3 cyr_pe.3 cyr_er.3 cyr_es.3 cyr_te.3 cyr_u.3 cyr_ef.3 cyr_ha.3 cyr_tse.3 cyr_che.3 cyr_sha.3 cyr_shcha.3 cyr_hard_sign.3 cyr_yeru.3 cyr_soft_sign.3 cyr_e.3 cyr_yu.3 cyr_ya.3 uni0450.3 uni0451.3 uni0453.3 uni0454.3 uni0455.3 uni0456.3 uni0457.3 uni0458.3 uni045C.3 uni045D.3 uni045E.3 uni0490.3 uni0491.3 uni1E80.3 uni1E81.3 uni1E82.3 uni1E83.3 uni1E84.3 uni1E85.3 uni1EF2.3 uni1EF3.3 uni2010.3 uni2011.3 figuredash.3 endash.3 emdash.3 quoteleft.3 quoteright.3 quotesinglbase.3 quotereversed.3 quotedblleft.3 quotedblright.3 quotedblbase.3 uni201F.3 dagger.3 daggerdbl.3 bullet.3 ellipsis.3 fraction.3 twoinferior.3 fourinferior.3 Euro.3 phpeso.3 uni215F.3 brevecomb.salt.3];
|
||||
@a4 = [space.4 exclam.4 quotedbl.4 numbersign.4 dollar.4 percent.4 ampersand.4 quotesingle.4 parenleft.4 parenright.4 asterisk.4 plus.4 comma.4 hyphen.4 period.4 slash.4 zero.4 one.4 two.4 three.4 four.4 five.4 six.4 seven.4 eight.4 nine.4 colon.4 semicolon.4 less.4 equal.4 greater.4 question.4 at.4 A.4 B.4 C.4 D.4 E.4 F.4 G.4 H.4 I.4 J.4 K.4 L.4 M.4 N.4 O.4 P.4 Q.4 R.4 S.4 T.4 U.4 V.4 W.4 X.4 Y.4 Z.4 bracketleft.4 backslash.4 bracketright.4 asciicircum.4 underscore.4 grave.4 a.4 b.4 c.4 d.4 e.4 f.4 g.4 h.4 i.4 j.4 k.4 l.4 m.4 n.4 o.4 p.4 q.4 r.4 s.4 t.4 u.4 v.4 w.4 x.4 y.4 z.4 braceleft.4 bar.4 braceright.4 asciitilde.4 exclamdown.4 cent.4 sterling.4 currency.4 yen.4 brokenbar.4 section.4 dieresis.4 copyright.4 ordfeminine.4 guillemotleft.4 logicalnot.4 uni00AD.4 registered.4 macron.4 degree.4 plusminus.4 uni00B2.4 uni00B3.4 acute.4 paragraph.4 periodcentered.4 cedilla.4 uni00B9.4 ordmasculine.4 guillemotright.4 onequarter.4 onehalf.4 threequarters.4 questiondown.4 Agrave.4 Aacute.4 Acircumflex.4 Atilde.4 Adieresis.4 Aring.4 AE.4 Ccedilla.4 Egrave.4 Eacute.4 Ecircumflex.4 Edieresis.4 Igrave.4 Iacute.4 Icircumflex.4 Idieresis.4 Eth.4 Ntilde.4 Ograve.4 Oacute.4 Ocircumflex.4 Otilde.4 Odieresis.4 multiply.4 Oslash.4 Ugrave.4 Uacute.4 Ucircumflex.4 Udieresis.4 Yacute.4 Thorn.4 germandbls.4 agrave.4 aacute.4 acircumflex.4 atilde.4 adieresis.4 aring.4 ae.4 ccedilla.4 egrave.4 eacute.4 ecircumflex.4 edieresis.4 igrave.4 iacute.4 icircumflex.4 idieresis.4 eth.4 ntilde.4 ograve.4 oacute.4 ocircumflex.4 otilde.4 odieresis.4 divide.4 oslash.4 ugrave.4 uacute.4 ucircumflex.4 udieresis.4 yacute.4 thorn.4 ydieresis.4 Amacron.4 amacron.4 Abreve.4 abreve.4 Aogonek.4 aogonek.4 Cacute.4 cacute.4 Ccircumflex.4 ccircumflex.4 Cdotaccent.4 cdotaccent.4 Ccaron.4 ccaron.4 Dcaron.4 dcaron.4 Dcroat.4 dcroat.4 Emacron.4 emacron.4 Ebreve.4 ebreve.4 Edotaccent.4 edotaccent.4 Eogonek.4 eogonek.4 Ecaron.4 ecaron.4 Gcircumflex.4 gcircumflex.4 Gbreve.4 gbreve.4 Gdotaccent.4 gdotaccent.4 uni0122.4 uni0123.4 Hcircumflex.4 hcircumflex.4 Itilde.4 itilde.4 Imacron.4 imacron.4 Ibreve.4 ibreve.4 Iogonek.4 iogonek.4 Idotaccent.4 dotlessi.4 Jcircumflex.4 jcircumflex.4 uni0136.4 uni0137.4 Lacute.4 lacute.4 uni013B.4 uni013C.4 Lcaron.4 lcaron.4 uni013F.4 uni0140.4 Lslash.4 lslash.4 Nacute.4 nacute.4 uni0145.4 uni0146.4 Ncaron.4 ncaron.4 Omacron.4 omacron.4 Obreve.4 obreve.4 Ohungarumlaut.4 ohungarumlaut.4 OE.4 oe.4 Racute.4 racute.4 uni0156.4 uni0157.4 Rcaron.4 rcaron.4 Sacute.4 sacute.4 Scircumflex.4 scircumflex.4 Scedilla.4 scedilla.4 Scaron.4 scaron.4 uni0162.4 uni0163.4 Tcaron.4 tcaron.4 Utilde.4 utilde.4 Umacron.4 umacron.4 Ubreve.4 ubreve.4 Uring.4 uring.4 Uhungarumlaut.4 uhungarumlaut.4 Uogonek.4 uogonek.4 Wcircumflex.4 wcircumflex.4 Ycircumflex.4 ycircumflex.4 Ydieresis.4 Zacute.4 zacute.4 Zdotaccent.4 zdotaccent.4 Zcaron.4 zcaron.4 longs.4 uni01CD.4 uni01CE.4 uni01CF.4 uni01D0.4 uni01D1.4 uni01D2.4 uni01D3.4 uni01D4.4 uni01E2.4 uni01E3.4 uni01E6.4 uni01E7.4 uni01E8.4 uni01E9.4 uni01EA.4 uni01EB.4 uni01F4.4 uni01F5.4 uni01F8.4 uni01F9.4 uni01FC.4 uni01FD.4 uni01FE.4 uni01FF.4 uni0218.4 uni0219.4 uni021A.4 uni021B.4 uni0226.4 uni0227.4 uni0228.4 uni0229.4 uni022E.4 uni022F.4 uni0232.4 uni0233.4 dotlessj.4 gravecomb.4 acutecomb.4 circumflexcomb.4 tildecomb.4 uni0304.4 brevecomb.4 uni0307.4 uni0308.4 uni030A.4 uni030B.4 uni030C.4 commabelowcomb.4 uni0327.4 uni0328.4 uni0400.4 uni0401.4 uni0403.4 uni0404.4 uni0405.4 uni0406.4 uni0407.4 uni0408.4 uni040C.4 uni040D.4 uni040E.4 cyr_A.4 cyr_BE.4 cyr_VE.4 cyr_GHE.4 cyr_DE.4 cyr_IE.4 cyr_ZHE.4 cyr_ZE.4 cyr_I.4 cyr_SHORT_I.4 cyr_KA.4 cyr_EL.4 cyr_EM.4 cyr_EN.4 cyr_O.4 cyr_PE.4 cyr_ER.4 cyr_ES.4 cyr_TE.4 cyr_U.4 cyr_EF.4 cyr_HA.4 cyr_TSE.4 cyr_CHE.4 cyr_SHA.4 cyr_SHCHA.4 cyr_HARD_SIGN.4 cyr_YERU.4 cyr_SOFT_SIGN.4 cyr_E.4 cyr_YU.4 cyr_YA.4 cyr_a.4 cyr_be.4 cyr_ve.4 cyr_ghe.4 cyr_de.4 cyr_ie.4 cyr_zhe.4 cyr_ze.4 cyr_i.4 cyr_short_i.4 cyr_ka.4 cyr_el.4 cyr_em.4 cyr_en.4 cyr_o.4 cyr_pe.4 cyr_er.4 cyr_es.4 cyr_te.4 cyr_u.4 cyr_ef.4 cyr_ha.4 cyr_tse.4 cyr_che.4 cyr_sha.4 cyr_shcha.4 cyr_hard_sign.4 cyr_yeru.4 cyr_soft_sign.4 cyr_e.4 cyr_yu.4 cyr_ya.4 uni0450.4 uni0451.4 uni0453.4 uni0454.4 uni0455.4 uni0456.4 uni0457.4 uni0458.4 uni045C.4 uni045D.4 uni045E.4 uni0490.4 uni0491.4 uni1E80.4 uni1E81.4 uni1E82.4 uni1E83.4 uni1E84.4 uni1E85.4 uni1EF2.4 uni1EF3.4 uni2010.4 uni2011.4 figuredash.4 endash.4 emdash.4 quoteleft.4 quoteright.4 quotesinglbase.4 quotereversed.4 quotedblleft.4 quotedblright.4 quotedblbase.4 uni201F.4 dagger.4 daggerdbl.4 bullet.4 ellipsis.4 fraction.4 twoinferior.4 fourinferior.4 Euro.4 phpeso.4 uni215F.4 brevecomb.salt.4];
|
||||
@a5 = [space.5 exclam.5 quotedbl.5 numbersign.5 dollar.5 percent.5 ampersand.5 quotesingle.5 parenleft.5 parenright.5 asterisk.5 plus.5 comma.5 hyphen.5 period.5 slash.5 zero.5 one.5 two.5 three.5 four.5 five.5 six.5 seven.5 eight.5 nine.5 colon.5 semicolon.5 less.5 equal.5 greater.5 question.5 at.5 A.5 B.5 C.5 D.5 E.5 F.5 G.5 H.5 I.5 J.5 K.5 L.5 M.5 N.5 O.5 P.5 Q.5 R.5 S.5 T.5 U.5 V.5 W.5 X.5 Y.5 Z.5 bracketleft.5 backslash.5 bracketright.5 asciicircum.5 underscore.5 grave.5 a.5 b.5 c.5 d.5 e.5 f.5 g.5 h.5 i.5 j.5 k.5 l.5 m.5 n.5 o.5 p.5 q.5 r.5 s.5 t.5 u.5 v.5 w.5 x.5 y.5 z.5 braceleft.5 bar.5 braceright.5 asciitilde.5 exclamdown.5 cent.5 sterling.5 currency.5 yen.5 brokenbar.5 section.5 dieresis.5 copyright.5 ordfeminine.5 guillemotleft.5 logicalnot.5 uni00AD.5 registered.5 macron.5 degree.5 plusminus.5 uni00B2.5 uni00B3.5 acute.5 paragraph.5 periodcentered.5 cedilla.5 uni00B9.5 ordmasculine.5 guillemotright.5 onequarter.5 onehalf.5 threequarters.5 questiondown.5 Agrave.5 Aacute.5 Acircumflex.5 Atilde.5 Adieresis.5 Aring.5 AE.5 Ccedilla.5 Egrave.5 Eacute.5 Ecircumflex.5 Edieresis.5 Igrave.5 Iacute.5 Icircumflex.5 Idieresis.5 Eth.5 Ntilde.5 Ograve.5 Oacute.5 Ocircumflex.5 Otilde.5 Odieresis.5 multiply.5 Oslash.5 Ugrave.5 Uacute.5 Ucircumflex.5 Udieresis.5 Yacute.5 Thorn.5 germandbls.5 agrave.5 aacute.5 acircumflex.5 atilde.5 adieresis.5 aring.5 ae.5 ccedilla.5 egrave.5 eacute.5 ecircumflex.5 edieresis.5 igrave.5 iacute.5 icircumflex.5 idieresis.5 eth.5 ntilde.5 ograve.5 oacute.5 ocircumflex.5 otilde.5 odieresis.5 divide.5 oslash.5 ugrave.5 uacute.5 ucircumflex.5 udieresis.5 yacute.5 thorn.5 ydieresis.5 Amacron.5 amacron.5 Abreve.5 abreve.5 Aogonek.5 aogonek.5 Cacute.5 cacute.5 Ccircumflex.5 ccircumflex.5 Cdotaccent.5 cdotaccent.5 Ccaron.5 ccaron.5 Dcaron.5 dcaron.5 Dcroat.5 dcroat.5 Emacron.5 emacron.5 Ebreve.5 ebreve.5 Edotaccent.5 edotaccent.5 Eogonek.5 eogonek.5 Ecaron.5 ecaron.5 Gcircumflex.5 gcircumflex.5 Gbreve.5 gbreve.5 Gdotaccent.5 gdotaccent.5 uni0122.5 uni0123.5 Hcircumflex.5 hcircumflex.5 Itilde.5 itilde.5 Imacron.5 imacron.5 Ibreve.5 ibreve.5 Iogonek.5 iogonek.5 Idotaccent.5 dotlessi.5 Jcircumflex.5 jcircumflex.5 uni0136.5 uni0137.5 Lacute.5 lacute.5 uni013B.5 uni013C.5 Lcaron.5 lcaron.5 uni013F.5 uni0140.5 Lslash.5 lslash.5 Nacute.5 nacute.5 uni0145.5 uni0146.5 Ncaron.5 ncaron.5 Omacron.5 omacron.5 Obreve.5 obreve.5 Ohungarumlaut.5 ohungarumlaut.5 OE.5 oe.5 Racute.5 racute.5 uni0156.5 uni0157.5 Rcaron.5 rcaron.5 Sacute.5 sacute.5 Scircumflex.5 scircumflex.5 Scedilla.5 scedilla.5 Scaron.5 scaron.5 uni0162.5 uni0163.5 Tcaron.5 tcaron.5 Utilde.5 utilde.5 Umacron.5 umacron.5 Ubreve.5 ubreve.5 Uring.5 uring.5 Uhungarumlaut.5 uhungarumlaut.5 Uogonek.5 uogonek.5 Wcircumflex.5 wcircumflex.5 Ycircumflex.5 ycircumflex.5 Ydieresis.5 Zacute.5 zacute.5 Zdotaccent.5 zdotaccent.5 Zcaron.5 zcaron.5 longs.5 uni01CD.5 uni01CE.5 uni01CF.5 uni01D0.5 uni01D1.5 uni01D2.5 uni01D3.5 uni01D4.5 uni01E2.5 uni01E3.5 uni01E6.5 uni01E7.5 uni01E8.5 uni01E9.5 uni01EA.5 uni01EB.5 uni01F4.5 uni01F5.5 uni01F8.5 uni01F9.5 uni01FC.5 uni01FD.5 uni01FE.5 uni01FF.5 uni0218.5 uni0219.5 uni021A.5 uni021B.5 uni0226.5 uni0227.5 uni0228.5 uni0229.5 uni022E.5 uni022F.5 uni0232.5 uni0233.5 dotlessj.5 gravecomb.5 acutecomb.5 circumflexcomb.5 tildecomb.5 uni0304.5 brevecomb.5 uni0307.5 uni0308.5 uni030A.5 uni030B.5 uni030C.5 commabelowcomb.5 uni0327.5 uni0328.5 uni0400.5 uni0401.5 uni0403.5 uni0404.5 uni0405.5 uni0406.5 uni0407.5 uni0408.5 uni040C.5 uni040D.5 uni040E.5 cyr_A.5 cyr_BE.5 cyr_VE.5 cyr_GHE.5 cyr_DE.5 cyr_IE.5 cyr_ZHE.5 cyr_ZE.5 cyr_I.5 cyr_SHORT_I.5 cyr_KA.5 cyr_EL.5 cyr_EM.5 cyr_EN.5 cyr_O.5 cyr_PE.5 cyr_ER.5 cyr_ES.5 cyr_TE.5 cyr_U.5 cyr_EF.5 cyr_HA.5 cyr_TSE.5 cyr_CHE.5 cyr_SHA.5 cyr_SHCHA.5 cyr_HARD_SIGN.5 cyr_YERU.5 cyr_SOFT_SIGN.5 cyr_E.5 cyr_YU.5 cyr_YA.5 cyr_a.5 cyr_be.5 cyr_ve.5 cyr_ghe.5 cyr_de.5 cyr_ie.5 cyr_zhe.5 cyr_ze.5 cyr_i.5 cyr_short_i.5 cyr_ka.5 cyr_el.5 cyr_em.5 cyr_en.5 cyr_o.5 cyr_pe.5 cyr_er.5 cyr_es.5 cyr_te.5 cyr_u.5 cyr_ef.5 cyr_ha.5 cyr_tse.5 cyr_che.5 cyr_sha.5 cyr_shcha.5 cyr_hard_sign.5 cyr_yeru.5 cyr_soft_sign.5 cyr_e.5 cyr_yu.5 cyr_ya.5 uni0450.5 uni0451.5 uni0453.5 uni0454.5 uni0455.5 uni0456.5 uni0457.5 uni0458.5 uni045C.5 uni045D.5 uni045E.5 uni0490.5 uni0491.5 uni1E80.5 uni1E81.5 uni1E82.5 uni1E83.5 uni1E84.5 uni1E85.5 uni1EF2.5 uni1EF3.5 uni2010.5 uni2011.5 figuredash.5 endash.5 emdash.5 quoteleft.5 quoteright.5 quotesinglbase.5 quotereversed.5 quotedblleft.5 quotedblright.5 quotedblbase.5 uni201F.5 dagger.5 daggerdbl.5 bullet.5 ellipsis.5 fraction.5 twoinferior.5 fourinferior.5 Euro.5 phpeso.5 uni215F.5 brevecomb.salt.5];
|
||||
@a6 = [space.6 exclam.6 quotedbl.6 numbersign.6 dollar.6 percent.6 ampersand.6 quotesingle.6 parenleft.6 parenright.6 asterisk.6 plus.6 comma.6 hyphen.6 period.6 slash.6 zero.6 one.6 two.6 three.6 four.6 five.6 six.6 seven.6 eight.6 nine.6 colon.6 semicolon.6 less.6 equal.6 greater.6 question.6 at.6 A.6 B.6 C.6 D.6 E.6 F.6 G.6 H.6 I.6 J.6 K.6 L.6 M.6 N.6 O.6 P.6 Q.6 R.6 S.6 T.6 U.6 V.6 W.6 X.6 Y.6 Z.6 bracketleft.6 backslash.6 bracketright.6 asciicircum.6 underscore.6 grave.6 a.6 b.6 c.6 d.6 e.6 f.6 g.6 h.6 i.6 j.6 k.6 l.6 m.6 n.6 o.6 p.6 q.6 r.6 s.6 t.6 u.6 v.6 w.6 x.6 y.6 z.6 braceleft.6 bar.6 braceright.6 asciitilde.6 exclamdown.6 cent.6 sterling.6 currency.6 yen.6 brokenbar.6 section.6 dieresis.6 copyright.6 ordfeminine.6 guillemotleft.6 logicalnot.6 uni00AD.6 registered.6 macron.6 degree.6 plusminus.6 uni00B2.6 uni00B3.6 acute.6 paragraph.6 periodcentered.6 cedilla.6 uni00B9.6 ordmasculine.6 guillemotright.6 onequarter.6 onehalf.6 threequarters.6 questiondown.6 Agrave.6 Aacute.6 Acircumflex.6 Atilde.6 Adieresis.6 Aring.6 AE.6 Ccedilla.6 Egrave.6 Eacute.6 Ecircumflex.6 Edieresis.6 Igrave.6 Iacute.6 Icircumflex.6 Idieresis.6 Eth.6 Ntilde.6 Ograve.6 Oacute.6 Ocircumflex.6 Otilde.6 Odieresis.6 multiply.6 Oslash.6 Ugrave.6 Uacute.6 Ucircumflex.6 Udieresis.6 Yacute.6 Thorn.6 germandbls.6 agrave.6 aacute.6 acircumflex.6 atilde.6 adieresis.6 aring.6 ae.6 ccedilla.6 egrave.6 eacute.6 ecircumflex.6 edieresis.6 igrave.6 iacute.6 icircumflex.6 idieresis.6 eth.6 ntilde.6 ograve.6 oacute.6 ocircumflex.6 otilde.6 odieresis.6 divide.6 oslash.6 ugrave.6 uacute.6 ucircumflex.6 udieresis.6 yacute.6 thorn.6 ydieresis.6 Amacron.6 amacron.6 Abreve.6 abreve.6 Aogonek.6 aogonek.6 Cacute.6 cacute.6 Ccircumflex.6 ccircumflex.6 Cdotaccent.6 cdotaccent.6 Ccaron.6 ccaron.6 Dcaron.6 dcaron.6 Dcroat.6 dcroat.6 Emacron.6 emacron.6 Ebreve.6 ebreve.6 Edotaccent.6 edotaccent.6 Eogonek.6 eogonek.6 Ecaron.6 ecaron.6 Gcircumflex.6 gcircumflex.6 Gbreve.6 gbreve.6 Gdotaccent.6 gdotaccent.6 uni0122.6 uni0123.6 Hcircumflex.6 hcircumflex.6 Itilde.6 itilde.6 Imacron.6 imacron.6 Ibreve.6 ibreve.6 Iogonek.6 iogonek.6 Idotaccent.6 dotlessi.6 Jcircumflex.6 jcircumflex.6 uni0136.6 uni0137.6 Lacute.6 lacute.6 uni013B.6 uni013C.6 Lcaron.6 lcaron.6 uni013F.6 uni0140.6 Lslash.6 lslash.6 Nacute.6 nacute.6 uni0145.6 uni0146.6 Ncaron.6 ncaron.6 Omacron.6 omacron.6 Obreve.6 obreve.6 Ohungarumlaut.6 ohungarumlaut.6 OE.6 oe.6 Racute.6 racute.6 uni0156.6 uni0157.6 Rcaron.6 rcaron.6 Sacute.6 sacute.6 Scircumflex.6 scircumflex.6 Scedilla.6 scedilla.6 Scaron.6 scaron.6 uni0162.6 uni0163.6 Tcaron.6 tcaron.6 Utilde.6 utilde.6 Umacron.6 umacron.6 Ubreve.6 ubreve.6 Uring.6 uring.6 Uhungarumlaut.6 uhungarumlaut.6 Uogonek.6 uogonek.6 Wcircumflex.6 wcircumflex.6 Ycircumflex.6 ycircumflex.6 Ydieresis.6 Zacute.6 zacute.6 Zdotaccent.6 zdotaccent.6 Zcaron.6 zcaron.6 longs.6 uni01CD.6 uni01CE.6 uni01CF.6 uni01D0.6 uni01D1.6 uni01D2.6 uni01D3.6 uni01D4.6 uni01E2.6 uni01E3.6 uni01E6.6 uni01E7.6 uni01E8.6 uni01E9.6 uni01EA.6 uni01EB.6 uni01F4.6 uni01F5.6 uni01F8.6 uni01F9.6 uni01FC.6 uni01FD.6 uni01FE.6 uni01FF.6 uni0218.6 uni0219.6 uni021A.6 uni021B.6 uni0226.6 uni0227.6 uni0228.6 uni0229.6 uni022E.6 uni022F.6 uni0232.6 uni0233.6 dotlessj.6 gravecomb.6 acutecomb.6 circumflexcomb.6 tildecomb.6 uni0304.6 brevecomb.6 uni0307.6 uni0308.6 uni030A.6 uni030B.6 uni030C.6 commabelowcomb.6 uni0327.6 uni0328.6 uni0400.6 uni0401.6 uni0403.6 uni0404.6 uni0405.6 uni0406.6 uni0407.6 uni0408.6 uni040C.6 uni040D.6 uni040E.6 cyr_A.6 cyr_BE.6 cyr_VE.6 cyr_GHE.6 cyr_DE.6 cyr_IE.6 cyr_ZHE.6 cyr_ZE.6 cyr_I.6 cyr_SHORT_I.6 cyr_KA.6 cyr_EL.6 cyr_EM.6 cyr_EN.6 cyr_O.6 cyr_PE.6 cyr_ER.6 cyr_ES.6 cyr_TE.6 cyr_U.6 cyr_EF.6 cyr_HA.6 cyr_TSE.6 cyr_CHE.6 cyr_SHA.6 cyr_SHCHA.6 cyr_HARD_SIGN.6 cyr_YERU.6 cyr_SOFT_SIGN.6 cyr_E.6 cyr_YU.6 cyr_YA.6 cyr_a.6 cyr_be.6 cyr_ve.6 cyr_ghe.6 cyr_de.6 cyr_ie.6 cyr_zhe.6 cyr_ze.6 cyr_i.6 cyr_short_i.6 cyr_ka.6 cyr_el.6 cyr_em.6 cyr_en.6 cyr_o.6 cyr_pe.6 cyr_er.6 cyr_es.6 cyr_te.6 cyr_u.6 cyr_ef.6 cyr_ha.6 cyr_tse.6 cyr_che.6 cyr_sha.6 cyr_shcha.6 cyr_hard_sign.6 cyr_yeru.6 cyr_soft_sign.6 cyr_e.6 cyr_yu.6 cyr_ya.6 uni0450.6 uni0451.6 uni0453.6 uni0454.6 uni0455.6 uni0456.6 uni0457.6 uni0458.6 uni045C.6 uni045D.6 uni045E.6 uni0490.6 uni0491.6 uni1E80.6 uni1E81.6 uni1E82.6 uni1E83.6 uni1E84.6 uni1E85.6 uni1EF2.6 uni1EF3.6 uni2010.6 uni2011.6 figuredash.6 endash.6 emdash.6 quoteleft.6 quoteright.6 quotesinglbase.6 quotereversed.6 quotedblleft.6 quotedblright.6 quotedblbase.6 uni201F.6 dagger.6 daggerdbl.6 bullet.6 ellipsis.6 fraction.6 twoinferior.6 fourinferior.6 Euro.6 phpeso.6 uni215F.6 brevecomb.salt.6];
|
||||
@a7 = [space.7 exclam.7 quotedbl.7 numbersign.7 dollar.7 percent.7 ampersand.7 quotesingle.7 parenleft.7 parenright.7 asterisk.7 plus.7 comma.7 hyphen.7 period.7 slash.7 zero.7 one.7 two.7 three.7 four.7 five.7 six.7 seven.7 eight.7 nine.7 colon.7 semicolon.7 less.7 equal.7 greater.7 question.7 at.7 A.7 B.7 C.7 D.7 E.7 F.7 G.7 H.7 I.7 J.7 K.7 L.7 M.7 N.7 O.7 P.7 Q.7 R.7 S.7 T.7 U.7 V.7 W.7 X.7 Y.7 Z.7 bracketleft.7 backslash.7 bracketright.7 asciicircum.7 underscore.7 grave.7 a.7 b.7 c.7 d.7 e.7 f.7 g.7 h.7 i.7 j.7 k.7 l.7 m.7 n.7 o.7 p.7 q.7 r.7 s.7 t.7 u.7 v.7 w.7 x.7 y.7 z.7 braceleft.7 bar.7 braceright.7 asciitilde.7 exclamdown.7 cent.7 sterling.7 currency.7 yen.7 brokenbar.7 section.7 dieresis.7 copyright.7 ordfeminine.7 guillemotleft.7 logicalnot.7 uni00AD.7 registered.7 macron.7 degree.7 plusminus.7 uni00B2.7 uni00B3.7 acute.7 paragraph.7 periodcentered.7 cedilla.7 uni00B9.7 ordmasculine.7 guillemotright.7 onequarter.7 onehalf.7 threequarters.7 questiondown.7 Agrave.7 Aacute.7 Acircumflex.7 Atilde.7 Adieresis.7 Aring.7 AE.7 Ccedilla.7 Egrave.7 Eacute.7 Ecircumflex.7 Edieresis.7 Igrave.7 Iacute.7 Icircumflex.7 Idieresis.7 Eth.7 Ntilde.7 Ograve.7 Oacute.7 Ocircumflex.7 Otilde.7 Odieresis.7 multiply.7 Oslash.7 Ugrave.7 Uacute.7 Ucircumflex.7 Udieresis.7 Yacute.7 Thorn.7 germandbls.7 agrave.7 aacute.7 acircumflex.7 atilde.7 adieresis.7 aring.7 ae.7 ccedilla.7 egrave.7 eacute.7 ecircumflex.7 edieresis.7 igrave.7 iacute.7 icircumflex.7 idieresis.7 eth.7 ntilde.7 ograve.7 oacute.7 ocircumflex.7 otilde.7 odieresis.7 divide.7 oslash.7 ugrave.7 uacute.7 ucircumflex.7 udieresis.7 yacute.7 thorn.7 ydieresis.7 Amacron.7 amacron.7 Abreve.7 abreve.7 Aogonek.7 aogonek.7 Cacute.7 cacute.7 Ccircumflex.7 ccircumflex.7 Cdotaccent.7 cdotaccent.7 Ccaron.7 ccaron.7 Dcaron.7 dcaron.7 Dcroat.7 dcroat.7 Emacron.7 emacron.7 Ebreve.7 ebreve.7 Edotaccent.7 edotaccent.7 Eogonek.7 eogonek.7 Ecaron.7 ecaron.7 Gcircumflex.7 gcircumflex.7 Gbreve.7 gbreve.7 Gdotaccent.7 gdotaccent.7 uni0122.7 uni0123.7 Hcircumflex.7 hcircumflex.7 Itilde.7 itilde.7 Imacron.7 imacron.7 Ibreve.7 ibreve.7 Iogonek.7 iogonek.7 Idotaccent.7 dotlessi.7 Jcircumflex.7 jcircumflex.7 uni0136.7 uni0137.7 Lacute.7 lacute.7 uni013B.7 uni013C.7 Lcaron.7 lcaron.7 uni013F.7 uni0140.7 Lslash.7 lslash.7 Nacute.7 nacute.7 uni0145.7 uni0146.7 Ncaron.7 ncaron.7 Omacron.7 omacron.7 Obreve.7 obreve.7 Ohungarumlaut.7 ohungarumlaut.7 OE.7 oe.7 Racute.7 racute.7 uni0156.7 uni0157.7 Rcaron.7 rcaron.7 Sacute.7 sacute.7 Scircumflex.7 scircumflex.7 Scedilla.7 scedilla.7 Scaron.7 scaron.7 uni0162.7 uni0163.7 Tcaron.7 tcaron.7 Utilde.7 utilde.7 Umacron.7 umacron.7 Ubreve.7 ubreve.7 Uring.7 uring.7 Uhungarumlaut.7 uhungarumlaut.7 Uogonek.7 uogonek.7 Wcircumflex.7 wcircumflex.7 Ycircumflex.7 ycircumflex.7 Ydieresis.7 Zacute.7 zacute.7 Zdotaccent.7 zdotaccent.7 Zcaron.7 zcaron.7 longs.7 uni01CD.7 uni01CE.7 uni01CF.7 uni01D0.7 uni01D1.7 uni01D2.7 uni01D3.7 uni01D4.7 uni01E2.7 uni01E3.7 uni01E6.7 uni01E7.7 uni01E8.7 uni01E9.7 uni01EA.7 uni01EB.7 uni01F4.7 uni01F5.7 uni01F8.7 uni01F9.7 uni01FC.7 uni01FD.7 uni01FE.7 uni01FF.7 uni0218.7 uni0219.7 uni021A.7 uni021B.7 uni0226.7 uni0227.7 uni0228.7 uni0229.7 uni022E.7 uni022F.7 uni0232.7 uni0233.7 dotlessj.7 gravecomb.7 acutecomb.7 circumflexcomb.7 tildecomb.7 uni0304.7 brevecomb.7 uni0307.7 uni0308.7 uni030A.7 uni030B.7 uni030C.7 commabelowcomb.7 uni0327.7 uni0328.7 uni0400.7 uni0401.7 uni0403.7 uni0404.7 uni0405.7 uni0406.7 uni0407.7 uni0408.7 uni040C.7 uni040D.7 uni040E.7 cyr_A.7 cyr_BE.7 cyr_VE.7 cyr_GHE.7 cyr_DE.7 cyr_IE.7 cyr_ZHE.7 cyr_ZE.7 cyr_I.7 cyr_SHORT_I.7 cyr_KA.7 cyr_EL.7 cyr_EM.7 cyr_EN.7 cyr_O.7 cyr_PE.7 cyr_ER.7 cyr_ES.7 cyr_TE.7 cyr_U.7 cyr_EF.7 cyr_HA.7 cyr_TSE.7 cyr_CHE.7 cyr_SHA.7 cyr_SHCHA.7 cyr_HARD_SIGN.7 cyr_YERU.7 cyr_SOFT_SIGN.7 cyr_E.7 cyr_YU.7 cyr_YA.7 cyr_a.7 cyr_be.7 cyr_ve.7 cyr_ghe.7 cyr_de.7 cyr_ie.7 cyr_zhe.7 cyr_ze.7 cyr_i.7 cyr_short_i.7 cyr_ka.7 cyr_el.7 cyr_em.7 cyr_en.7 cyr_o.7 cyr_pe.7 cyr_er.7 cyr_es.7 cyr_te.7 cyr_u.7 cyr_ef.7 cyr_ha.7 cyr_tse.7 cyr_che.7 cyr_sha.7 cyr_shcha.7 cyr_hard_sign.7 cyr_yeru.7 cyr_soft_sign.7 cyr_e.7 cyr_yu.7 cyr_ya.7 uni0450.7 uni0451.7 uni0453.7 uni0454.7 uni0455.7 uni0456.7 uni0457.7 uni0458.7 uni045C.7 uni045D.7 uni045E.7 uni0490.7 uni0491.7 uni1E80.7 uni1E81.7 uni1E82.7 uni1E83.7 uni1E84.7 uni1E85.7 uni1EF2.7 uni1EF3.7 uni2010.7 uni2011.7 figuredash.7 endash.7 emdash.7 quoteleft.7 quoteright.7 quotesinglbase.7 quotereversed.7 quotedblleft.7 quotedblright.7 quotedblbase.7 uni201F.7 dagger.7 daggerdbl.7 bullet.7 ellipsis.7 fraction.7 twoinferior.7 fourinferior.7 Euro.7 phpeso.7 uni215F.7 brevecomb.salt.7];
|
||||
@a8 = [space.8 exclam.8 quotedbl.8 numbersign.8 dollar.8 percent.8 ampersand.8 quotesingle.8 parenleft.8 parenright.8 asterisk.8 plus.8 comma.8 hyphen.8 period.8 slash.8 zero.8 one.8 two.8 three.8 four.8 five.8 six.8 seven.8 eight.8 nine.8 colon.8 semicolon.8 less.8 equal.8 greater.8 question.8 at.8 A.8 B.8 C.8 D.8 E.8 F.8 G.8 H.8 I.8 J.8 K.8 L.8 M.8 N.8 O.8 P.8 Q.8 R.8 S.8 T.8 U.8 V.8 W.8 X.8 Y.8 Z.8 bracketleft.8 backslash.8 bracketright.8 asciicircum.8 underscore.8 grave.8 a.8 b.8 c.8 d.8 e.8 f.8 g.8 h.8 i.8 j.8 k.8 l.8 m.8 n.8 o.8 p.8 q.8 r.8 s.8 t.8 u.8 v.8 w.8 x.8 y.8 z.8 braceleft.8 bar.8 braceright.8 asciitilde.8 exclamdown.8 cent.8 sterling.8 currency.8 yen.8 brokenbar.8 section.8 dieresis.8 copyright.8 ordfeminine.8 guillemotleft.8 logicalnot.8 uni00AD.8 registered.8 macron.8 degree.8 plusminus.8 uni00B2.8 uni00B3.8 acute.8 paragraph.8 periodcentered.8 cedilla.8 uni00B9.8 ordmasculine.8 guillemotright.8 onequarter.8 onehalf.8 threequarters.8 questiondown.8 Agrave.8 Aacute.8 Acircumflex.8 Atilde.8 Adieresis.8 Aring.8 AE.8 Ccedilla.8 Egrave.8 Eacute.8 Ecircumflex.8 Edieresis.8 Igrave.8 Iacute.8 Icircumflex.8 Idieresis.8 Eth.8 Ntilde.8 Ograve.8 Oacute.8 Ocircumflex.8 Otilde.8 Odieresis.8 multiply.8 Oslash.8 Ugrave.8 Uacute.8 Ucircumflex.8 Udieresis.8 Yacute.8 Thorn.8 germandbls.8 agrave.8 aacute.8 acircumflex.8 atilde.8 adieresis.8 aring.8 ae.8 ccedilla.8 egrave.8 eacute.8 ecircumflex.8 edieresis.8 igrave.8 iacute.8 icircumflex.8 idieresis.8 eth.8 ntilde.8 ograve.8 oacute.8 ocircumflex.8 otilde.8 odieresis.8 divide.8 oslash.8 ugrave.8 uacute.8 ucircumflex.8 udieresis.8 yacute.8 thorn.8 ydieresis.8 Amacron.8 amacron.8 Abreve.8 abreve.8 Aogonek.8 aogonek.8 Cacute.8 cacute.8 Ccircumflex.8 ccircumflex.8 Cdotaccent.8 cdotaccent.8 Ccaron.8 ccaron.8 Dcaron.8 dcaron.8 Dcroat.8 dcroat.8 Emacron.8 emacron.8 Ebreve.8 ebreve.8 Edotaccent.8 edotaccent.8 Eogonek.8 eogonek.8 Ecaron.8 ecaron.8 Gcircumflex.8 gcircumflex.8 Gbreve.8 gbreve.8 Gdotaccent.8 gdotaccent.8 uni0122.8 uni0123.8 Hcircumflex.8 hcircumflex.8 Itilde.8 itilde.8 Imacron.8 imacron.8 Ibreve.8 ibreve.8 Iogonek.8 iogonek.8 Idotaccent.8 dotlessi.8 Jcircumflex.8 jcircumflex.8 uni0136.8 uni0137.8 Lacute.8 lacute.8 uni013B.8 uni013C.8 Lcaron.8 lcaron.8 uni013F.8 uni0140.8 Lslash.8 lslash.8 Nacute.8 nacute.8 uni0145.8 uni0146.8 Ncaron.8 ncaron.8 Omacron.8 omacron.8 Obreve.8 obreve.8 Ohungarumlaut.8 ohungarumlaut.8 OE.8 oe.8 Racute.8 racute.8 uni0156.8 uni0157.8 Rcaron.8 rcaron.8 Sacute.8 sacute.8 Scircumflex.8 scircumflex.8 Scedilla.8 scedilla.8 Scaron.8 scaron.8 uni0162.8 uni0163.8 Tcaron.8 tcaron.8 Utilde.8 utilde.8 Umacron.8 umacron.8 Ubreve.8 ubreve.8 Uring.8 uring.8 Uhungarumlaut.8 uhungarumlaut.8 Uogonek.8 uogonek.8 Wcircumflex.8 wcircumflex.8 Ycircumflex.8 ycircumflex.8 Ydieresis.8 Zacute.8 zacute.8 Zdotaccent.8 zdotaccent.8 Zcaron.8 zcaron.8 longs.8 uni01CD.8 uni01CE.8 uni01CF.8 uni01D0.8 uni01D1.8 uni01D2.8 uni01D3.8 uni01D4.8 uni01E2.8 uni01E3.8 uni01E6.8 uni01E7.8 uni01E8.8 uni01E9.8 uni01EA.8 uni01EB.8 uni01F4.8 uni01F5.8 uni01F8.8 uni01F9.8 uni01FC.8 uni01FD.8 uni01FE.8 uni01FF.8 uni0218.8 uni0219.8 uni021A.8 uni021B.8 uni0226.8 uni0227.8 uni0228.8 uni0229.8 uni022E.8 uni022F.8 uni0232.8 uni0233.8 dotlessj.8 gravecomb.8 acutecomb.8 circumflexcomb.8 tildecomb.8 uni0304.8 brevecomb.8 uni0307.8 uni0308.8 uni030A.8 uni030B.8 uni030C.8 commabelowcomb.8 uni0327.8 uni0328.8 uni0400.8 uni0401.8 uni0403.8 uni0404.8 uni0405.8 uni0406.8 uni0407.8 uni0408.8 uni040C.8 uni040D.8 uni040E.8 cyr_A.8 cyr_BE.8 cyr_VE.8 cyr_GHE.8 cyr_DE.8 cyr_IE.8 cyr_ZHE.8 cyr_ZE.8 cyr_I.8 cyr_SHORT_I.8 cyr_KA.8 cyr_EL.8 cyr_EM.8 cyr_EN.8 cyr_O.8 cyr_PE.8 cyr_ER.8 cyr_ES.8 cyr_TE.8 cyr_U.8 cyr_EF.8 cyr_HA.8 cyr_TSE.8 cyr_CHE.8 cyr_SHA.8 cyr_SHCHA.8 cyr_HARD_SIGN.8 cyr_YERU.8 cyr_SOFT_SIGN.8 cyr_E.8 cyr_YU.8 cyr_YA.8 cyr_a.8 cyr_be.8 cyr_ve.8 cyr_ghe.8 cyr_de.8 cyr_ie.8 cyr_zhe.8 cyr_ze.8 cyr_i.8 cyr_short_i.8 cyr_ka.8 cyr_el.8 cyr_em.8 cyr_en.8 cyr_o.8 cyr_pe.8 cyr_er.8 cyr_es.8 cyr_te.8 cyr_u.8 cyr_ef.8 cyr_ha.8 cyr_tse.8 cyr_che.8 cyr_sha.8 cyr_shcha.8 cyr_hard_sign.8 cyr_yeru.8 cyr_soft_sign.8 cyr_e.8 cyr_yu.8 cyr_ya.8 uni0450.8 uni0451.8 uni0453.8 uni0454.8 uni0455.8 uni0456.8 uni0457.8 uni0458.8 uni045C.8 uni045D.8 uni045E.8 uni0490.8 uni0491.8 uni1E80.8 uni1E81.8 uni1E82.8 uni1E83.8 uni1E84.8 uni1E85.8 uni1EF2.8 uni1EF3.8 uni2010.8 uni2011.8 figuredash.8 endash.8 emdash.8 quoteleft.8 quoteright.8 quotesinglbase.8 quotereversed.8 quotedblleft.8 quotedblright.8 quotedblbase.8 uni201F.8 dagger.8 daggerdbl.8 bullet.8 ellipsis.8 fraction.8 twoinferior.8 fourinferior.8 Euro.8 phpeso.8 uni215F.8 brevecomb.salt.8];
|
||||
@a9 = [space.9 exclam.9 quotedbl.9 numbersign.9 dollar.9 percent.9 ampersand.9 quotesingle.9 parenleft.9 parenright.9 asterisk.9 plus.9 comma.9 hyphen.9 period.9 slash.9 zero.9 one.9 two.9 three.9 four.9 five.9 six.9 seven.9 eight.9 nine.9 colon.9 semicolon.9 less.9 equal.9 greater.9 question.9 at.9 A.9 B.9 C.9 D.9 E.9 F.9 G.9 H.9 I.9 J.9 K.9 L.9 M.9 N.9 O.9 P.9 Q.9 R.9 S.9 T.9 U.9 V.9 W.9 X.9 Y.9 Z.9 bracketleft.9 backslash.9 bracketright.9 asciicircum.9 underscore.9 grave.9 a.9 b.9 c.9 d.9 e.9 f.9 g.9 h.9 i.9 j.9 k.9 l.9 m.9 n.9 o.9 p.9 q.9 r.9 s.9 t.9 u.9 v.9 w.9 x.9 y.9 z.9 braceleft.9 bar.9 braceright.9 asciitilde.9 exclamdown.9 cent.9 sterling.9 currency.9 yen.9 brokenbar.9 section.9 dieresis.9 copyright.9 ordfeminine.9 guillemotleft.9 logicalnot.9 uni00AD.9 registered.9 macron.9 degree.9 plusminus.9 uni00B2.9 uni00B3.9 acute.9 paragraph.9 periodcentered.9 cedilla.9 uni00B9.9 ordmasculine.9 guillemotright.9 onequarter.9 onehalf.9 threequarters.9 questiondown.9 Agrave.9 Aacute.9 Acircumflex.9 Atilde.9 Adieresis.9 Aring.9 AE.9 Ccedilla.9 Egrave.9 Eacute.9 Ecircumflex.9 Edieresis.9 Igrave.9 Iacute.9 Icircumflex.9 Idieresis.9 Eth.9 Ntilde.9 Ograve.9 Oacute.9 Ocircumflex.9 Otilde.9 Odieresis.9 multiply.9 Oslash.9 Ugrave.9 Uacute.9 Ucircumflex.9 Udieresis.9 Yacute.9 Thorn.9 germandbls.9 agrave.9 aacute.9 acircumflex.9 atilde.9 adieresis.9 aring.9 ae.9 ccedilla.9 egrave.9 eacute.9 ecircumflex.9 edieresis.9 igrave.9 iacute.9 icircumflex.9 idieresis.9 eth.9 ntilde.9 ograve.9 oacute.9 ocircumflex.9 otilde.9 odieresis.9 divide.9 oslash.9 ugrave.9 uacute.9 ucircumflex.9 udieresis.9 yacute.9 thorn.9 ydieresis.9 Amacron.9 amacron.9 Abreve.9 abreve.9 Aogonek.9 aogonek.9 Cacute.9 cacute.9 Ccircumflex.9 ccircumflex.9 Cdotaccent.9 cdotaccent.9 Ccaron.9 ccaron.9 Dcaron.9 dcaron.9 Dcroat.9 dcroat.9 Emacron.9 emacron.9 Ebreve.9 ebreve.9 Edotaccent.9 edotaccent.9 Eogonek.9 eogonek.9 Ecaron.9 ecaron.9 Gcircumflex.9 gcircumflex.9 Gbreve.9 gbreve.9 Gdotaccent.9 gdotaccent.9 uni0122.9 uni0123.9 Hcircumflex.9 hcircumflex.9 Itilde.9 itilde.9 Imacron.9 imacron.9 Ibreve.9 ibreve.9 Iogonek.9 iogonek.9 Idotaccent.9 dotlessi.9 Jcircumflex.9 jcircumflex.9 uni0136.9 uni0137.9 Lacute.9 lacute.9 uni013B.9 uni013C.9 Lcaron.9 lcaron.9 uni013F.9 uni0140.9 Lslash.9 lslash.9 Nacute.9 nacute.9 uni0145.9 uni0146.9 Ncaron.9 ncaron.9 Omacron.9 omacron.9 Obreve.9 obreve.9 Ohungarumlaut.9 ohungarumlaut.9 OE.9 oe.9 Racute.9 racute.9 uni0156.9 uni0157.9 Rcaron.9 rcaron.9 Sacute.9 sacute.9 Scircumflex.9 scircumflex.9 Scedilla.9 scedilla.9 Scaron.9 scaron.9 uni0162.9 uni0163.9 Tcaron.9 tcaron.9 Utilde.9 utilde.9 Umacron.9 umacron.9 Ubreve.9 ubreve.9 Uring.9 uring.9 Uhungarumlaut.9 uhungarumlaut.9 Uogonek.9 uogonek.9 Wcircumflex.9 wcircumflex.9 Ycircumflex.9 ycircumflex.9 Ydieresis.9 Zacute.9 zacute.9 Zdotaccent.9 zdotaccent.9 Zcaron.9 zcaron.9 longs.9 uni01CD.9 uni01CE.9 uni01CF.9 uni01D0.9 uni01D1.9 uni01D2.9 uni01D3.9 uni01D4.9 uni01E2.9 uni01E3.9 uni01E6.9 uni01E7.9 uni01E8.9 uni01E9.9 uni01EA.9 uni01EB.9 uni01F4.9 uni01F5.9 uni01F8.9 uni01F9.9 uni01FC.9 uni01FD.9 uni01FE.9 uni01FF.9 uni0218.9 uni0219.9 uni021A.9 uni021B.9 uni0226.9 uni0227.9 uni0228.9 uni0229.9 uni022E.9 uni022F.9 uni0232.9 uni0233.9 dotlessj.9 gravecomb.9 acutecomb.9 circumflexcomb.9 tildecomb.9 uni0304.9 brevecomb.9 uni0307.9 uni0308.9 uni030A.9 uni030B.9 uni030C.9 commabelowcomb.9 uni0327.9 uni0328.9 uni0400.9 uni0401.9 uni0403.9 uni0404.9 uni0405.9 uni0406.9 uni0407.9 uni0408.9 uni040C.9 uni040D.9 uni040E.9 cyr_A.9 cyr_BE.9 cyr_VE.9 cyr_GHE.9 cyr_DE.9 cyr_IE.9 cyr_ZHE.9 cyr_ZE.9 cyr_I.9 cyr_SHORT_I.9 cyr_KA.9 cyr_EL.9 cyr_EM.9 cyr_EN.9 cyr_O.9 cyr_PE.9 cyr_ER.9 cyr_ES.9 cyr_TE.9 cyr_U.9 cyr_EF.9 cyr_HA.9 cyr_TSE.9 cyr_CHE.9 cyr_SHA.9 cyr_SHCHA.9 cyr_HARD_SIGN.9 cyr_YERU.9 cyr_SOFT_SIGN.9 cyr_E.9 cyr_YU.9 cyr_YA.9 cyr_a.9 cyr_be.9 cyr_ve.9 cyr_ghe.9 cyr_de.9 cyr_ie.9 cyr_zhe.9 cyr_ze.9 cyr_i.9 cyr_short_i.9 cyr_ka.9 cyr_el.9 cyr_em.9 cyr_en.9 cyr_o.9 cyr_pe.9 cyr_er.9 cyr_es.9 cyr_te.9 cyr_u.9 cyr_ef.9 cyr_ha.9 cyr_tse.9 cyr_che.9 cyr_sha.9 cyr_shcha.9 cyr_hard_sign.9 cyr_yeru.9 cyr_soft_sign.9 cyr_e.9 cyr_yu.9 cyr_ya.9 uni0450.9 uni0451.9 uni0453.9 uni0454.9 uni0455.9 uni0456.9 uni0457.9 uni0458.9 uni045C.9 uni045D.9 uni045E.9 uni0490.9 uni0491.9 uni1E80.9 uni1E81.9 uni1E82.9 uni1E83.9 uni1E84.9 uni1E85.9 uni1EF2.9 uni1EF3.9 uni2010.9 uni2011.9 figuredash.9 endash.9 emdash.9 quoteleft.9 quoteright.9 quotesinglbase.9 quotereversed.9 quotedblleft.9 quotedblright.9 quotedblbase.9 uni201F.9 dagger.9 daggerdbl.9 bullet.9 ellipsis.9 fraction.9 twoinferior.9 fourinferior.9 Euro.9 phpeso.9 uni215F.9 brevecomb.salt.9];
|
120
common/fonts/TT2020-master/build_ttf/features.fea
Executable file
@ -0,0 +1,120 @@
|
||||
languagesystem DFLT dflt;
|
||||
languagesystem latn dflt;
|
||||
languagesystem grek dflt;
|
||||
languagesystem cyrl dflt;
|
||||
|
||||
@zero = [zero zero.2 zero.3 zero.4 zero.5 zero.6 zero.7 zero.8 zero.9];
|
||||
@one = [one one.2 one.3 one.4 one.5 one.6 one.7 one.8 one.9];
|
||||
@two = [two two.2 two.3 two.4 two.5 two.6 two.7 two.8 two.9];
|
||||
@three = [three three.2 three.3 three.4 three.5 three.6 three.7 three.8 three.9];
|
||||
@four = [four four.2 four.3 four.4 four.5 four.6 four.7 four.8 four.9];
|
||||
@five = [five five.2 five.3 five.4 five.5 five.6 five.7 five.8 five.9];
|
||||
@six = [six six.2 six.3 six.4 six.5 six.6 six.7 six.8 six.9];
|
||||
@seven = [seven seven.2 seven.3 seven.4 seven.5 seven.6 seven.7 seven.8 seven.9];
|
||||
@eight = [eight eight.2 eight.3 eight.4 eight.5 eight.6 eight.7 eight.8 eight.9];
|
||||
@nine = [nine nine.2 nine.3 nine.4 nine.5 nine.6 nine.7 nine.8 nine.9];
|
||||
@zero.dnom = [zero.dnom zero.dnom.2 zero.dnom.3 zero.dnom.4 zero.dnom.5 zero.dnom.6 zero.dnom.7 zero.dnom.8 zero.dnom.9];
|
||||
@one.dnom = [one.dnom one.dnom.2 one.dnom.3 one.dnom.4 one.dnom.5 one.dnom.6 one.dnom.7 one.dnom.8 one.dnom.9];
|
||||
@two.dnom = [two.dnom two.dnom.2 two.dnom.3 two.dnom.4 two.dnom.5 two.dnom.6 two.dnom.7 two.dnom.8 two.dnom.9];
|
||||
@three.dnom = [three.dnom three.dnom.2 three.dnom.3 three.dnom.4 three.dnom.5 three.dnom.6 three.dnom.7 three.dnom.8 three.dnom.9];
|
||||
@four.dnom = [four.dnom four.dnom.2 four.dnom.3 four.dnom.4 four.dnom.5 four.dnom.6 four.dnom.7 four.dnom.8 four.dnom.9];
|
||||
@five.dnom = [five.dnom five.dnom.2 five.dnom.3 five.dnom.4 five.dnom.5 five.dnom.6 five.dnom.7 five.dnom.8 five.dnom.9];
|
||||
@six.dnom = [six.dnom six.dnom.2 six.dnom.3 six.dnom.4 six.dnom.5 six.dnom.6 six.dnom.7 six.dnom.8 six.dnom.9];
|
||||
@seven.dnom = [seven.dnom seven.dnom.2 seven.dnom.3 seven.dnom.4 seven.dnom.5 seven.dnom.6 seven.dnom.7 seven.dnom.8 seven.dnom.9];
|
||||
@eight.dnom = [eight.dnom eight.dnom.2 eight.dnom.3 eight.dnom.4 eight.dnom.5 eight.dnom.6 eight.dnom.7 eight.dnom.8 eight.dnom.9];
|
||||
@nine.dnom = [nine.dnom nine.dnom.2 nine.dnom.3 nine.dnom.4 nine.dnom.5 nine.dnom.6 nine.dnom.7 nine.dnom.8 nine.dnom.9];
|
||||
@zero.numr = [zero.numr zero.numr.2 zero.numr.3 zero.numr.4 zero.numr.5 zero.numr.6 zero.numr.7 zero.numr.8 zero.numr.9];
|
||||
@one.numr = [one.numr one.numr.2 one.numr.3 one.numr.4 one.numr.5 one.numr.6 one.numr.7 one.numr.8 one.numr.9];
|
||||
@two.numr = [two.numr two.numr.2 two.numr.3 two.numr.4 two.numr.5 two.numr.6 two.numr.7 two.numr.8 two.numr.9];
|
||||
@three.numr = [three.numr three.numr.2 three.numr.3 three.numr.4 three.numr.5 three.numr.6 three.numr.7 three.numr.8 three.numr.9];
|
||||
@four.numr = [four.numr four.numr.2 four.numr.3 four.numr.4 four.numr.5 four.numr.6 four.numr.7 four.numr.8 four.numr.9];
|
||||
@five.numr = [five.numr five.numr.2 five.numr.3 five.numr.4 five.numr.5 five.numr.6 five.numr.7 five.numr.8 five.numr.9];
|
||||
@six.numr = [six.numr six.numr.2 six.numr.3 six.numr.4 six.numr.5 six.numr.6 six.numr.7 six.numr.8 six.numr.9];
|
||||
@seven.numr = [seven.numr seven.numr.2 seven.numr.3 seven.numr.4 seven.numr.5 seven.numr.6 seven.numr.7 seven.numr.8 seven.numr.9];
|
||||
@eight.numr = [eight.numr eight.numr.2 eight.numr.3 eight.numr.4 eight.numr.5 eight.numr.6 eight.numr.7 eight.numr.8 eight.numr.9];
|
||||
@nine.numr = [nine.numr nine.numr.2 nine.numr.3 nine.numr.4 nine.numr.5 nine.numr.6 nine.numr.7 nine.numr.8 nine.numr.9];
|
||||
|
||||
@dnom = [@zero.dnom @one.dnom @two.dnom @three.dnom @four.dnom @five.dnom @six.dnom @seven.dnom @eight.dnom @nine.dnom];
|
||||
@numr = [@zero.numr @one.numr @two.numr @three.numr @four.numr @five.numr @six.numr @seven.numr @eight.numr @nine.numr];
|
||||
@ordn = [@zero @one @two @three @four @five @six @seven @eight @nine];
|
||||
|
||||
feature frac {
|
||||
lookup fracf {
|
||||
sub slash by fraction;
|
||||
} fracf;
|
||||
|
||||
lookup fracs {
|
||||
sub @ordn' fraction by @numr;
|
||||
sub fraction @ordn' by @dnom;
|
||||
sub @dnom @ordn' by @dnom;
|
||||
} fracs;
|
||||
|
||||
lookup fracn {
|
||||
sub @ordn' @numr by @numr;
|
||||
} fracn;
|
||||
|
||||
lookup fracn3 {
|
||||
sub @ordn' @numr @numr by @numr;
|
||||
} fracn3;
|
||||
|
||||
lookup fracn4 {
|
||||
sub @ordn' @numr @numr @numr by @numr;
|
||||
} fracn4;
|
||||
|
||||
lookup fracn5 {
|
||||
sub @ordn' @numr @numr @numr @numr by @numr;
|
||||
} fracn5;
|
||||
|
||||
lookup fracn6 {
|
||||
sub @ordn' @numr @numr @numr @numr @numr by @numr;
|
||||
} fracn6;
|
||||
|
||||
lookup fracn7 {
|
||||
sub @ordn' @numr @numr @numr @numr @numr @numr by @numr;
|
||||
} fracn7;
|
||||
|
||||
lookup fracn8 {
|
||||
sub @ordn' @numr @numr @numr @numr @numr @numr @numr by @numr;
|
||||
} fracn8;
|
||||
|
||||
lookup fracn9 {
|
||||
sub @ordn' @numr @numr @numr @numr @numr @numr @numr @numr by @numr;
|
||||
} fracn9;
|
||||
|
||||
lookup fracn10 {
|
||||
sub @ordn' @numr @numr @numr @numr @numr @numr @numr @numr @numr by @numr;
|
||||
} fracn10;
|
||||
|
||||
lookup fracq {
|
||||
pos @numr fraction -150;
|
||||
pos fraction @dnom -150;
|
||||
pos @numr @numr -150;
|
||||
pos @dnom @dnom -150;
|
||||
} fracq;
|
||||
} frac;
|
||||
|
||||
@geresh = [geresh geresh.2 geresh.3 geresh.4];
|
||||
@gershayim = [gershayim gershayim.2 gershayim.3 gershayim.4];
|
||||
@yud = [yud yud.2 yud.3 yud.4];
|
||||
@vav = [vav vav.2 vav.3 vav.4];
|
||||
@vav_vav = [vav_vav vav_vav.2 vav_vav.3 vav_vav.4];
|
||||
@yud_vav = [yud_vav yud_vav.2 yud_vav.3 yud_vav.4];
|
||||
@yud_yud = [yud_yud yud_yud.2 yud_yud.3 yud_yud.4];
|
||||
|
||||
@f = [f f.2 f.3 f.4];
|
||||
@i = [i i.2 i.3 i.4];
|
||||
@l = [l l.2 l.3 l.4];
|
||||
|
||||
feature liga {
|
||||
lookup ligahebrew {
|
||||
sub @geresh @geresh by gershayim;
|
||||
sub @yud @yud by yud_yud;
|
||||
sub @vav @vav by vav_vav;
|
||||
sub @yud @vav by yud_vav;
|
||||
} ligahebrew;
|
||||
|
||||
lookup ligalatin {
|
||||
sub @f @i by fi;
|
||||
sub @f @l by fl;
|
||||
} ligalatin;
|
||||
} liga;
|
18
common/fonts/TT2020-master/build_ttf/fixMarks.py
Normal file
@ -0,0 +1,18 @@
|
||||
import unicodedata as ud
|
||||
import fontforge
|
||||
f=fontforge.fonts()[0]
|
||||
WIDTH=547
|
||||
f.ascent -= 300
|
||||
f.descent -= 300
|
||||
|
||||
for g in f.glyphs("encoding"):
|
||||
if ud.category( chr(abs(g.unicode)) ) == "Mn":
|
||||
g.width = 0
|
||||
for i in range (2,10):
|
||||
try: f[g.glyphname+".{}".format(str(i))].width = 0
|
||||
except: pass
|
||||
else:
|
||||
g.width = WIDTH
|
||||
for i in range (2,10):
|
||||
try: f[g.glyphname+".{}".format(str(i))].width = WIDTH
|
||||
except: pass
|
7
common/fonts/TT2020-master/build_ttf/langs.fea
Normal file
@ -0,0 +1,7 @@
|
||||
languagesystem DFLT dflt;
|
||||
languagesystem latn dflt;
|
||||
languagesystem grek dflt;
|
||||
languagesystem cyrl dflt;
|
||||
languagesystem armn dflt;
|
||||
languagesystem hebr dflt;
|
||||
languagesystem geor dflt;
|
26
common/fonts/TT2020-master/build_ttf/styleB_ita.py
Normal file
@ -0,0 +1,26 @@
|
||||
import fontforge
|
||||
f=fontforge.fonts()[0]
|
||||
|
||||
f.ascent+=300
|
||||
f.descent+=300
|
||||
|
||||
|
||||
for g in f.glyphs("encoding"):
|
||||
if g.glyphname == ".notdef": continue
|
||||
if g.glyphname.endswith(".2"): break # loop-around
|
||||
if g.glyphname.startswith("NameMe"): break # ignore junkies
|
||||
origglyphname = g.glyphname
|
||||
for j in range(1,10):
|
||||
if j!=1: g=f.createChar(-1,origglyphname+"."+str(j))
|
||||
|
||||
print("Trying {} \u2026".format(g.glyphname))
|
||||
|
||||
g.clear()
|
||||
try:
|
||||
# Change this line as needed, depending on where the glyph bitmaps are
|
||||
g.importOutlines("buildI/styleB/"+origglyphname+".{}.png".format(j))
|
||||
except:
|
||||
print("Failed to import {}".format(g.glyphname))
|
||||
g.autoTrace()
|
||||
g.clearBackground()
|
||||
g.right_side_bearing=547
|
28
common/fonts/TT2020-master/build_ttf/styleChunk.py
Normal file
@ -0,0 +1,28 @@
|
||||
import fontforge
|
||||
import subprocess
|
||||
import sys
|
||||
S=sys.argv[1]
|
||||
ita=sys.argv[2] if len(sys.argv) >= 2 else ''
|
||||
f=fontforge.open("TT{}.sfd".format("_"+ita if len(ita) > 0 else ""))
|
||||
|
||||
from itertools import zip_longest # for Python 3.x
|
||||
def grouper(n, iterable, padvalue=None):
|
||||
"grouper(3, 'abcdefg', 'x') --> ('a','b','c'), ('d','e','f'), ('g','x','x')"
|
||||
return zip_longest(*[iter(iterable)]*n, fillvalue=padvalue)
|
||||
|
||||
f.ascent+=300
|
||||
f.descent+=300
|
||||
G = list()
|
||||
|
||||
for g in f.glyphs("encoding"):
|
||||
if g.glyphname == ".notdef": continue
|
||||
if g.glyphname.endswith(".2"): break # loop-around
|
||||
G.append(g.glyphname)
|
||||
|
||||
f.save("TT{}_{}.sfd".format(ita,S))
|
||||
f.close()
|
||||
|
||||
for gL in grouper(100, G):
|
||||
glyphs = "\n".join([e for e in gL if e is not None])
|
||||
pr = subprocess.Popen(["fontforge", "-lang=py", "-script", "styleChunk_sub.py", S, ita], stdin=subprocess.PIPE, bufsize=0)
|
||||
pr.communicate(glyphs.encode("ascii"))
|
28
common/fonts/TT2020-master/build_ttf/styleChunk_sub.py
Normal file
@ -0,0 +1,28 @@
|
||||
import fontforge
|
||||
import sys
|
||||
S=sys.argv[1]
|
||||
ita=sys.argv[2] if len(sys.argv) >= 2 else ''
|
||||
|
||||
f=fontforge.open("TT{}_{}.sfd".format(ita, S))
|
||||
print("Opened file")
|
||||
for gO in sys.stdin.readlines():
|
||||
g = f.createMappedChar(gO.strip())
|
||||
if g.glyphname == ".notdef": continue
|
||||
if g.glyphname.endswith(".2"): break # loop-around
|
||||
origglyphname = g.glyphname
|
||||
for j in range(1,10):
|
||||
if j!=1: g=f.createChar(-1,origglyphname+"."+str(j))
|
||||
|
||||
print("Trying {} \u2026".format(g.glyphname))
|
||||
|
||||
g.clear()
|
||||
try:
|
||||
g.importOutlines("build{}/style{}/{}.{}.png".format("I" if ita == "ita" else ita,S,origglyphname,j))
|
||||
except:
|
||||
print("Failed to import {}".format(g.glyphname))
|
||||
g.autoTrace()
|
||||
g.clearBackground()
|
||||
g.right_side_bearing=547
|
||||
f.save()
|
||||
f.close()
|
||||
print("Font closed")
|
3
common/fonts/TT2020-master/dist/README.txt
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
To build the WOFF2 files from the TTF's, do:
|
||||
|
||||
ls | parallel --progress woff2_compress
|
BIN
common/fonts/TT2020-master/dist/TT2020Base-Italic.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020Base-Italic.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020Base-Regular.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020Base-Regular.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleB-Italic.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleB-Italic.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleB-Regular.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleB-Regular.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleD-Italic.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleD-Italic.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleD-Regular.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleD-Regular.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleE-Italic.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleE-Italic.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleE-Regular.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleE-Regular.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleF-Regular-ASCII.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleF-Regular-ASCII.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleF-Regular.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleF-Regular.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleG-Regular-ASCII.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleG-Regular-ASCII.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleG-Regular.ttf
vendored
Normal file
BIN
common/fonts/TT2020-master/dist/TT2020StyleG-Regular.woff2
vendored
Normal file
BIN
common/fonts/TT2020-master/docs/TT2020Base-Italic.png
Normal file
After Width: | Height: | Size: 139 KiB |
BIN
common/fonts/TT2020-master/docs/TT2020Base-Regular.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
common/fonts/TT2020-master/docs/TT2020StyleB-Italic.png
Normal file
After Width: | Height: | Size: 135 KiB |
BIN
common/fonts/TT2020-master/docs/TT2020StyleB-Regular.png
Normal file
After Width: | Height: | Size: 132 KiB |
BIN
common/fonts/TT2020-master/docs/TT2020StyleD-Italic.png
Normal file
After Width: | Height: | Size: 151 KiB |
BIN
common/fonts/TT2020-master/docs/TT2020StyleD-Regular.png
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
common/fonts/TT2020-master/docs/TT2020StyleE-Italic.png
Normal file
After Width: | Height: | Size: 146 KiB |
BIN
common/fonts/TT2020-master/docs/TT2020StyleE-Regular.png
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
common/fonts/TT2020-master/docs/TT2020StyleF-Regular.png
Normal file
After Width: | Height: | Size: 415 KiB |
BIN
common/fonts/TT2020-master/docs/TT2020StyleG-Regular.png
Normal file
After Width: | Height: | Size: 456 KiB |
1
common/fonts/TT2020-master/docs/dist
Symbolic link
@ -0,0 +1 @@
|
||||
../dist/
|
103
common/fonts/TT2020-master/docs/download.html
Normal file
@ -0,0 +1,103 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TT2020 | More Information</title>
|
||||
<style>img{width:42em}</style>
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<h2>DOWNLOAD.</h2>
|
||||
<p>
|
||||
<a href="https://github.com/ctrlcctrlv/TT2020/archive/master.zip">Download all fonts & documentation</a>, or:
|
||||
</p>
|
||||
<h2><span style="color:rgba(1,1,1,0)">̌</span>DOWNLOAD INDIVI<span style="color:rgba(1,1,1,0)">̌</span>DUAL STYLES.</h2>
|
||||
<p>
|
||||
In general, the TTF is most useful. However, if you will be using my fonts on your website, use the WOFF2 to save on your bandwidth bill. :-)
|
||||
</p>
|
||||
<p>
|
||||
All of the fonts on this page are licensed under the <a href="https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL#5667e9e4">SIL Open Font License</a>, version 1.1.<br/>
|
||||
These documentation pages are licensed under the <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 License</a>.
|
||||
</p>
|
||||
|
||||
<!-- === Begin output from fonts.sh === -->
|
||||
<h2>Base Style</h2>
|
||||
<h3>Regular</h3>
|
||||
<img src="TT2020Base-Regular.png">
|
||||
<a href="../dist/TT2020Base-Regular.ttf">TT2020Base-Regular.ttf</a>
|
||||
164K<br/>
|
||||
<a href="../dist/TT2020Base-Regular.woff2">TT2020Base-Regular.woff2</a>
|
||||
64K<br/>
|
||||
<h3>Italic</h3>
|
||||
<img src="TT2020Base-Italic.png">
|
||||
<a href="../dist/TT2020Base-Italic.ttf">TT2020Base-Italic.ttf</a>
|
||||
72K<br/>
|
||||
<a href="../dist/TT2020Base-Italic.woff2">TT2020Base-Italic.woff2</a>
|
||||
32K<br/>
|
||||
<h2>Style B</h2>
|
||||
<h3>Regular</h3>
|
||||
<img src="TT2020StyleB-Regular.png">
|
||||
<a href="../dist/TT2020StyleB-Regular.ttf">TT2020StyleB-Regular.ttf</a>
|
||||
3.5M<br/>
|
||||
<a href="../dist/TT2020StyleB-Regular.woff2">TT2020StyleB-Regular.woff2</a>
|
||||
1.9M<br/>
|
||||
<h3>Italic</h3>
|
||||
<img src="TT2020StyleB-Italic.png">
|
||||
<a href="../dist/TT2020StyleB-Italic.ttf">TT2020StyleB-Italic.ttf</a>
|
||||
4.2M<br/>
|
||||
<a href="../dist/TT2020StyleB-Italic.woff2">TT2020StyleB-Italic.woff2</a>
|
||||
1.9M<br/>
|
||||
<h2>Style D</h2>
|
||||
<h3>Regular</h3>
|
||||
<img src="TT2020StyleD-Regular.png">
|
||||
<a href="../dist/TT2020StyleD-Regular.ttf">TT2020StyleD-Regular.ttf</a>
|
||||
2.9M<br/>
|
||||
<a href="../dist/TT2020StyleD-Regular.woff2">TT2020StyleD-Regular.woff2</a>
|
||||
844K<br/>
|
||||
<h3>Italic</h3>
|
||||
<img src="TT2020StyleD-Italic.png">
|
||||
<a href="../dist/TT2020StyleD-Italic.ttf">TT2020StyleD-Italic.ttf</a>
|
||||
3.7M<br/>
|
||||
<a href="../dist/TT2020StyleD-Italic.woff2">TT2020StyleD-Italic.woff2</a>
|
||||
1.4M<br/>
|
||||
<h2>Style E</h2>
|
||||
<h3>Regular</h3>
|
||||
<img src="TT2020StyleE-Regular.png">
|
||||
<a href="../dist/TT2020StyleE-Regular.ttf">TT2020StyleE-Regular.ttf</a>
|
||||
3.3M<br/>
|
||||
<a href="../dist/TT2020StyleE-Regular.woff2">TT2020StyleE-Regular.woff2</a>
|
||||
1.8M<br/>
|
||||
<h3>Italic</h3>
|
||||
<img src="TT2020StyleE-Italic.png">
|
||||
<a href="../dist/TT2020StyleE-Italic.ttf">TT2020StyleE-Italic.ttf</a>
|
||||
4.1M<br/>
|
||||
<a href="../dist/TT2020StyleE-Italic.woff2">TT2020StyleE-Italic.woff2</a>
|
||||
1.8M<br/>
|
||||
<h2>Style F</h2>
|
||||
<h3>Regular</h3>
|
||||
<img src="TT2020StyleF-Regular.png">
|
||||
<a href="../dist/TT2020StyleF-Regular.ttf">TT2020StyleF-Regular.ttf</a>
|
||||
84M<br/>
|
||||
<a href="../dist/TT2020StyleF-Regular.woff2">TT2020StyleF-Regular.woff2</a>
|
||||
31M<br/>
|
||||
<a href="../dist/TT2020StyleF-Regular-ASCII.ttf">TT2020StyleF-Regular-ASCII.ttf</a>
|
||||
9.0M<br/>
|
||||
<a href="../dist/TT2020StyleF-Regular-ASCII.woff2">TT2020StyleF-Regular-ASCII.woff2</a>
|
||||
3.4M<br/>
|
||||
<h2>Style G</h2>
|
||||
<h3>Regular</h3>
|
||||
<img src="TT2020StyleG-Regular.png">
|
||||
<a href="../dist/TT2020StyleG-Regular.ttf">TT2020StyleG-Regular.ttf</a>
|
||||
96M<br/>
|
||||
<a href="../dist/TT2020StyleG-Regular.woff2">TT2020StyleG-Regular.woff2</a>
|
||||
19M<br/>
|
||||
<a href="../dist/TT2020StyleG-Regular-ASCII.ttf">TT2020StyleG-Regular-ASCII.ttf</a>
|
||||
11M<br/>
|
||||
<a href="../dist/TT2020StyleG-Regular-ASCII.woff2">TT2020StyleG-Regular-ASCII.woff2</a>
|
||||
2.3M<br/>
|
||||
<!-- End output from fonts.sh -->
|
||||
</p>
|
||||
<hr>
|
||||
<p>Content © Fredrick R. Brennan, originally released on 1 January 2020</p>
|
||||
</body>
|
||||
</html>
|
BIN
common/fonts/TT2020-master/docs/ff.png
Normal file
After Width: | Height: | Size: 161 KiB |
46
common/fonts/TT2020-master/docs/fonts.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
echo '<!-- === Begin output from fonts.sh === -->'
|
||||
for f in ../dist/*.ttf;
|
||||
do
|
||||
s='../dist/'
|
||||
r=""
|
||||
ff=${f/$s/$r}
|
||||
fs=${ff/%\.ttf/$r}
|
||||
if [[ $fs =~ "ASCII" || $fs =~ "Italic" ]]; then continue; fi
|
||||
STYLE=`echo $fs | sed -E -e 's/.*Style([A-Za-z0-9])+-.*/\1/'`
|
||||
|
||||
if [[ ${#STYLE} -eq 1 ]]; then
|
||||
echo "<h2>Style $STYLE</h2>"
|
||||
else
|
||||
echo "<h2>Base Style</h2>"
|
||||
fi
|
||||
|
||||
filesize() {
|
||||
printf `du -h "$1" | cut -f1`
|
||||
printf "<br/>"
|
||||
printf "\n"
|
||||
}
|
||||
|
||||
H3="<h3>Regular</h3>"
|
||||
echo $H3;
|
||||
convert -font "$f" -pointsize 288 label:'Beekeepers QqGgRrAa\nMMMM ЖЖЖЖ אאאלף' "$fs".png
|
||||
echo "<img src=\"""$fs".png"\">"
|
||||
VAR='<a href="'$f'">'$ff'</a>'
|
||||
echo $VAR;
|
||||
filesize "${f}"
|
||||
WOFF2="${VAR//ttf/woff2}";
|
||||
echo $WOFF2;
|
||||
|
||||
|
||||
filesize "${f//ttf/woff2}"
|
||||
if [[ -f "${f/Regular/Italic}" ]]; then
|
||||
convert -font "${f/Regular/Italic}" -pointsize 288 label:'Beekeepers QqGgRrAa\nMMMM ЖЖЖЖ אאאלף' "${fs/Regular/Italic}".png
|
||||
echo "${H3/Regular/Italic}";
|
||||
echo "<img src=\"""${fs/Regular/Italic}".png"\">"
|
||||
echo "${VAR//Regular/Italic}"; filesize "${f/Regular/Italic}"; echo "${WOFF2//Regular/Italic}"; W2="${f/Regular/Italic}"; W2="${W2//ttf/woff2}"; filesize $W2;
|
||||
|
||||
fi
|
||||
if [[ -f "${f/Regular/Regular-ASCII}" ]]; then echo "${VAR//Regular/Regular-ASCII}"; filesize "${f/Regular/Regular-ASCII}"; echo "${WOFF2//Regular/Regular-ASCII}"; W2="${f/Regular/Regular-ASCII}"; W2="${W2//ttf/woff2}"; filesize $W2; fi
|
||||
|
||||
done
|
||||
echo '<!-- End output from fonts.sh -->'
|
205
common/fonts/TT2020-master/docs/index.html
Normal file
@ -0,0 +1,205 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TT2020</title>
|
||||
<style type="text/css">
|
||||
|
||||
@keyframes spincube {
|
||||
from,to { transform: rotateX(0deg) }
|
||||
25% { transform: rotateX(90deg); }
|
||||
50% { transform: rotateX(180deg); }
|
||||
75% { transform: rotateX(270deg); }
|
||||
100% { transform: rotateX(360deg); }
|
||||
}
|
||||
|
||||
.cubespinner {
|
||||
animation-name: spincube;
|
||||
/*animation-timing-function: ease-in-out;*/
|
||||
animation-timing-function: cubic-bezier(1.0, 0.05, 0.05, 1.0);
|
||||
animation-iteration-count: infinite;
|
||||
animation-duration: 25s;
|
||||
|
||||
transform-style: preserve-3d;
|
||||
|
||||
transform-origin: 0.655em 0.655em 0;
|
||||
}
|
||||
|
||||
.stage {
|
||||
width: 800px;
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
.cubespinner div {
|
||||
width: 800px;
|
||||
position: absolute;
|
||||
border: 1px solid #ccc;
|
||||
background: rgba(255,255,255,1.0);
|
||||
box-shadow: inset 0 0 20px rgba(0,0,0,0.2);
|
||||
line-height: 120px;
|
||||
text-align: center;
|
||||
font-size: 100px;
|
||||
}
|
||||
|
||||
.cubespinner .face1 {
|
||||
transform: translateZ(0.6em);
|
||||
}
|
||||
.cubespinner .face2 {
|
||||
transform: rotateY(90deg) translateZ(0.6em);
|
||||
}
|
||||
.cubespinner .face3 {
|
||||
transform: rotateY(0deg) rotateX(90deg) translateZ(0.6em);
|
||||
}
|
||||
.cubespinner .face4 {
|
||||
transform: rotateY(180deg) rotateZ(180deg) translateZ(0.6em);
|
||||
}
|
||||
.cubespinner .face5 {
|
||||
transform: rotateY(-90deg) rotateZ(90deg) translateZ(0.6em);
|
||||
}
|
||||
.cubespinner .face6 {
|
||||
transform: rotateX(-90deg) translateZ(0.6em);
|
||||
}
|
||||
|
||||
</style>
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: TTE;
|
||||
src: url(dist/TT2020StyleE-Regular.woff2);
|
||||
}
|
||||
@font-face {
|
||||
font-family: TTD;
|
||||
src: url(dist/TT2020StyleD-Regular.woff2);
|
||||
}
|
||||
@font-face {
|
||||
font-family: TTB;
|
||||
src: url(dist/TT2020StyleB-Regular.woff2);
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: TTB_ita;
|
||||
src: url(dist/TT2020StyleB-Italic.woff2);
|
||||
font-weight: normal;
|
||||
font-style: italic, oblique;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: TTF;
|
||||
src: url(dist/TT2020StyleF-Regular-ASCII.woff2);
|
||||
}
|
||||
@font-face {
|
||||
font-family: TTG;
|
||||
src: url(dist/TT2020StyleG-Regular-ASCII.woff2);
|
||||
}
|
||||
@font-face {
|
||||
font-family: TT;
|
||||
src: url(dist/TT2020Base-Regular.woff2);
|
||||
}
|
||||
|
||||
*{font-display:block}
|
||||
p{margin:0;margin-top:50px}
|
||||
body {font-family:TT;font-size:100px}
|
||||
h1{font-family:TTB;font-weight:normal;font-size:400px;text-align:center;margin-bottom:0px;margin-top:0px}
|
||||
hr{margin:15px}
|
||||
.slogan{text-align:center;font-family:TTB;line-height:1.15}
|
||||
em{font-family:TTB_ita;font-style:normal}
|
||||
.dl {text-align:center}
|
||||
.dl a:hover{font-family:TTB_ita;line-height:.9}
|
||||
|
||||
@media screen and (max-width: 1776px) {
|
||||
h1 {
|
||||
font-size:200px;
|
||||
}
|
||||
.dl { font-size:100px }
|
||||
.cubespinner div, .slogan {
|
||||
font-size:70px
|
||||
}
|
||||
.cubespinner, .stage {
|
||||
height:80px;
|
||||
width:450px;
|
||||
}
|
||||
.cubespinner div {
|
||||
height:80px;
|
||||
width:450px;
|
||||
line-height:80px;
|
||||
overflow:hidden;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 770px) {
|
||||
h1 {
|
||||
font-size:100px;
|
||||
}
|
||||
.dl { font-size:36px }
|
||||
.cubespinner div, .slogan {
|
||||
font-size:35px
|
||||
}
|
||||
.cubespinner, .stage {
|
||||
height:35px;
|
||||
width:250px;
|
||||
}
|
||||
.cubespinner div {
|
||||
height:35px;
|
||||
width:250px;
|
||||
line-height:35px;
|
||||
overflow:hidden;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>TT2020-</h1>
|
||||
<div class="slogan">
|
||||
<div style="display:inline-block;vertical-align:0.2em">the</div>
|
||||
<div class="stage" style="display:inline-block">
|
||||
<div class="cubespinner">
|
||||
<div class="face1" style="font-family:TTF">advanced</div>
|
||||
<div class="face3" style="font-family:TTD">spontaneous</div>
|
||||
<div class="face4" style="font-family:TTG"><span>open source</span></div>
|
||||
<div class="face6" style="font-family:TTE">multilingual</div>
|
||||
</div>
|
||||
</div>
|
||||
<div><em>typewriter font family</em> for a new decade.</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="dl"><a href="download.html">Download</a> <a href="moreinfo.html">More Info</a></div>
|
||||
|
||||
<!--
|
||||
<p>TT2020 is an advanced, multilingual and free typewriter font family for a new decade.</p>
|
||||
<p>תת ה'תש"ף הוא продвинутый, многоязычный և անվճար γραμματοσειρά γραφομηχανής նոր տասնամյակի համար:</p>
|
||||
<p>MMMMMMMMMM ÑÑÑÑÑÑÑÑÑÑ $$$$$$$$$$ ?????????? <span style="font-feature-settings: 'frac'">88/33</span></p>-->
|
||||
<!--
|
||||
<span style="font-family:TTD;">
|
||||
<p>Mamma’s sisters, (nuns,) in a nunnery abide.</p>
|
||||
</span>
|
||||
<p>Mamma’s sisters, (nuns,) in a nunnery abide.</p>
|
||||
<span style="font-family:TTD;">
|
||||
<p>Matagal talaga ang buhay; kaya dapat tayo laging mag-enjoy.</p>
|
||||
<p>Nga deti në det të ndritshëm, Nga majë mali në majë mali</p>
|
||||
<p>Жук жужжит над абажуром, Жужжит жужелица, Жужжит, кружится.</p>
|
||||
<p>En tres tristes trastos tragaban trigo tres tristes tigres.</p>
|
||||
<p>¿Qué tigre trigaba más? Todos trigaban igual (sino yo).</p>
|
||||
</span>
|
||||
-->
|
||||
<p></p>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
tt=document.querySelector("h1")
|
||||
console.log(tt.innerHTML)
|
||||
var i=j=0;
|
||||
u=function(){
|
||||
i++;j++;
|
||||
if (i>10)i=0;
|
||||
tt.innerHTML=("<span style='color:white'>q</span>".repeat(i))+"TT2020-"
|
||||
tt.style.marginLeft = "-"+(i*0.548)+"em"
|
||||
|
||||
styles=new Array("TTB", "TTD", "TTE", "TTF", "TTG");
|
||||
s=Math.floor(j/20)%5
|
||||
tt.style.fontFamily=styles[s]
|
||||
}
|
||||
setInterval(u, 500)
|
||||
</script>
|
||||
</html>
|
69
common/fonts/TT2020-master/docs/moreinfo.html
Normal file
@ -0,0 +1,69 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TT2020 | More Information</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<h2>THE PROBLEM.</h2>
|
||||
<p>
|
||||
Most typewriter fonts out there are hopelessly unrealistic—especially the popular freeware ones, most of them made in the early 2000’s.
|
||||
</p>
|
||||
<p>
|
||||
What's worse, the typewriter is now so old that many (mostly young) people don't even <em>know</em> that the output is unrealistic!!
|
||||
</p>
|
||||
<p>
|
||||
The main problem is that an analog typewriter is incapable of producing the same output every time. Even the IBM Selectric, one of the most mechanically sophisticated typewriters ever produced, is incapable of doing this. However, most people are not trying to imitate an IBM Selectric; instead they are trying to imitate much older typewriters such as the Underwood №5.
|
||||
</p>
|
||||
<p>
|
||||
I had the idea for this font for a while, but bearing in mind how much work it would be to recreate, and how many other projects I had to do, I put it off & put it off. Then, one day in Q4 2019, I saw <em>Joker</em>, a very popular film. At the climax of the film, the eponymous Joker is reading typewritten documents.
|
||||
</p>
|
||||
<p>
|
||||
<img src="problem1.jpg">
|
||||
</p>
|
||||
<p>
|
||||
<img src="problem2.jpg">
|
||||
</p>
|
||||
<p>
|
||||
The absurd lack of realism displayed here let me know that I could put this project off no longer. In case you don't see anything wrong, let me try to help:
|
||||
<ul>
|
||||
<li>The letters are of different sizes in the first image. That, quite simply, would never happen. Only at the end of the era did typewriters even have changable type elements (“fonts”), certainly the typewriter clumsily being imitated here wouldn't have had them. Look especially at the word «was», that huge ‹a› is completely unrealistic.</li>
|
||||
<li>In the second image, there are three ‹N›’s. Yet, they all look exactly the same. A real typewriter can, quite rarely, have one of its letters damaged, or misaligned, such that that letter regularly makes an inferior strike to all the other letters. However, this degree of regularity is <em>impossible</em>; could Underwood or Remington have acheived it, they would have leapt for joy. It is therefore clearly a digital facsimile and not a real typewritten document.
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
If you still can't see it, as <a href="https://www.reddit.com/r/typography/comments/ei3gr7/tt2020_is_an_advanced_open_source_hyperrealistic/fcnw7kv/">u/Bureaucrat_Conrad on Reddit</a> wasn't able to, simply compare the images in the movie to an old-school typewriter font, <a href="https://www.1001fonts.com/carbontype-font.html">CarbonType</a>, © 2004 Vic Fieger, which has one glyph per character:<br>
|
||||
<img src="problem4.png" style="width:20em">
|
||||
<img src="problem2.jpg" style="width:20em">
|
||||
</p>
|
||||
<p>
|
||||
It is abundantly clear that this is the font they used, and no typewriter was involved in the production of this scene, even though the documents were the primary object of the scene.
|
||||
</p>
|
||||
<p>While working on the project, incredibly, another bad typewriter scene intruded upon my life. I don't often sit around and watch movies, so I suppose there are only two possibilities:
|
||||
<ol type="a">
|
||||
<li> There are so many of these unrealistic typewritten documents in late-2010’s cinema that almost any movie with a typewritten document in it will be hopelessly unrealistic, <em>or</em></li>
|
||||
<li> The universe, nay, God himself, was urging me on to complete this project in lieu of others I could finish!</li>
|
||||
</ol>
|
||||
</p>
|
||||
<p>Behold, <em>The Irishman</em> and its ‹W›’s:</p>
|
||||
<p>
|
||||
<img src="problem3.jpg">
|
||||
</p>
|
||||
<p>In case you still continue to doubt that I am right about how analog typewriter outlook appears, let me display below a sampling of it before I discuss my solution to this vexing issue.</p>
|
||||
<hr>
|
||||
<p>
|
||||
Notice especially the dissimilarity of the «a»’s—<br/>
|
||||
<img src="sampling1.jpg" width="720"><br/>
|
||||
(Image courtesy <a href="https://repository.tcu.edu/handle/116099117/25873">Texas Christian University—Mary Couts Burnett Library</a>)
|
||||
</p>
|
||||
<p>
|
||||
Notice especially the dissimilarity of the CAPITAL LETTERS—<br/>
|
||||
<img src="sampling2.jpg" width="720"><br/>
|
||||
(Image courtesy <a href="https://munk.org/typecast/2011/03/11/1920-underwood-5/">Theodore Munk</a>)
|
||||
<hr>
|
||||
<a href="moreinfo2.html">NEXT PAGE: »» My Solution »»</a>
|
||||
<hr>
|
||||
<p>Content © Fredrick R. Brennan, originally released on 1 January 2020</p>
|
||||
</body>
|
||||
</html>
|
61
common/fonts/TT2020-master/docs/moreinfo2.html
Normal file
@ -0,0 +1,61 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TT2020 | More Information</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<h2>MY SOLUTION.</h2>
|
||||
<p>
|
||||
While it would be ideal for the font itself to contain code through which it could create a (near-) infinite number of similar-looking glyphs, that is not possible in an OpenType font.<sup style="position:absolute">†</sup> My first inspiration was <em>FF Duper</em>, a plucky little proprietary font developed by Martin Wenzel in 2009. <em>FF Duper</em>, however, works via hundreds of GSUB subtables; while I tried to follow Wenzel's lead in this regard, I eventually realized that for my font it was not going to be possible; the layout would be far too slow and the GSUB table far too large.
|
||||
</p>
|
||||
<p>The solution came to me after an IRC chat with my extremely patient friend Skef Iterum (thank you Skef). Instead of large tables and variable numbers of alternate glyphs, acquiesce, and include <em>n</em> (I decided on 9) versions of each glyph, even such glyphs as “space”. Then, define classes <em>@a1</em> through <em>@a9</em> which include a list of all glyphs in the font. For example, <em>@a2</em> begins as:<br>
|
||||
<code><em>@a2</em> = [space.2 exclam.2 quotedbl.2 numbersign.2 dollar.2 percent.2 ampersand.2 quotesingle.2 parenleft.2 parenright.2 asterisk.2plus.2 comma.2 hyphen.2 period.2 slash.2 zero.2 one.2 two.2 three. 2 four.2 five.2 six.2 seven.2 eight.2 nine.2 colon.2 semicolon.2 less.2 equal.2 greater.2 question.2 at.2 A.2 B.2 C.2 D.2 E.2 F.2 G.2 H.2 I.2 J.2 K.2 L.2 M.2 N.2 O.2 P.2 Q.2 …</code>
|
||||
|
||||
Having these classes, we can then do this:
|
||||
|
||||
<code>
|
||||
feature calt {<br/>
|
||||
lookup calt1 {<br/>
|
||||
sub @a1 @a1' by @a2;<br/>
|
||||
sub @a2 @a1' by @a3;<br/>
|
||||
sub @a3 @a1' by @a4;<br/>
|
||||
sub @a4 @a1' by @a5;<br/>
|
||||
sub @a5 @a1' by @a6;<br/>
|
||||
sub @a6 @a1' by @a7;<br/>
|
||||
sub @a7 @a1' by @a8;<br/>
|
||||
sub @a8 @a1' by @a9;<br/>
|
||||
} calt1;<br/>
|
||||
} calt;
|
||||
</code>
|
||||
|
||||
And do our layout with a single subtable! This is of course only pseudo-random, but it's, almost all of the time, “good enough,” and with a higher <em>n</em> hereon <em>m</em> it becomes more and more realistic. Perhaps, indeed, only popular glyphs would need have the full number of <em>m</em> versions; “unpopular” glyphs, when a version of index <em>i</em> is requested and <em>i</em> > <em>n</em>, the glyph could simply be a reference to the glyph of index <em>i</em> mod <em>n</em>.<br/>
|
||||
</p>
|
||||
<p>
|
||||
As it stands though, what we have is good enough for an initial version. The guts of the system only obviously spill out with carefully chosen inputs, e.g.:<br>
|
||||
<span style="font-size:4em;line-height:1.5em">QBEE<span style="color:#ee0000">K</span>E<span style="color:#0000ee">E</span>PINBEE<span style="color:#ee0000">K</span>E<span style="color:#0000ee">E</span>PIN </span>
|
||||
</p>
|
||||
<p>
|
||||
<img src="ff.png" style="width:42em">
|
||||
</p>
|
||||
<p>
|
||||
The letters highlighted in red and blue are the same because they are nine characters apart. The computer tokenizes the string to glyph-names as <em>Q B.2 E.3 E.4 <span style="color:#ee0000">K.5</span> E.6 <span style="color:#0000ee">E.7</span> P.8 I.9 N B.2 E.3 E.4 <span style="color:#ee0000">K.5</span> E.6 <span style="color:#0000ee">E.7</span> P.8 I.9 N</em>.
|
||||
</p>
|
||||
<p>
|
||||
Each distinct font style is built from a base font and a base SFD; for the regular style, <em>TT.sfd</em> (based on IBM Selectric Pica 10 Pitch), and the italic, <em>TT_ita.sfd</em> (based on IBM Selectric Light Italic 12 Pitch).
|
||||
<ol>
|
||||
<li>First, we need an SVG of each glyph image. So, we ask FontForge to give us one.</li>
|
||||
<li>We have two choices. We can either <ul style="list-style:'• '"><li>write an Inkscape script to roughen up the glyph but keeping it as a vector, or</li> <li>we can export it to PNG and roughen it up as a bitmap. So far all «style»s do the latter, but I haven't ruled out the former forever. The important thing about the script is that it must be pseudo-random, initialized with a seed, so that we get the same output each time for the same seed. Right now, all the scripts are GIMP scripts (or rely on GIMP's plumbling via GEGL), and this means it can take a long time to generate each glyph @ a high DPI, muchless nine versions of each glyph. I'm interested in making a script which would use OpenGL shaders on the input bitmap instead.</li></ul></li>
|
||||
<li>Re-import the glyph back into FontForge, followed by the other <em>n</em> copies of the glyph.</li>
|
||||
<li>Merge the OpenType layout features, the most important one of which is “Contextual Alternates”, («calt»).</li>
|
||||
</ol>
|
||||
</p>
|
||||
<p> † Assuming that one is using one of the commonplace OpenType layout engines of late 2019, such as HarfBuzz.
|
||||
</p>
|
||||
<hr>
|
||||
<a href="download.html">NEXT PAGE: »» Download the Fonts »»</a>
|
||||
<hr>
|
||||
<p>Content © Fredrick R. Brennan, originally released on 1 January 2020</p>
|
||||
</body>
|
||||
</html>
|
BIN
common/fonts/TT2020-master/docs/problem1.jpg
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
common/fonts/TT2020-master/docs/problem2.jpg
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
common/fonts/TT2020-master/docs/problem3.jpg
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
common/fonts/TT2020-master/docs/problem4.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
common/fonts/TT2020-master/docs/sampling1.jpg
Normal file
After Width: | Height: | Size: 384 KiB |
BIN
common/fonts/TT2020-master/docs/sampling2.jpg
Normal file
After Width: | Height: | Size: 140 KiB |
27
common/fonts/TT2020-master/docs/style.css
Normal file
@ -0,0 +1,27 @@
|
||||
@font-face {
|
||||
font-family: TTB;
|
||||
src: url(dist/TT2020StyleB-Regular.woff2);
|
||||
font-weight:bold;
|
||||
}
|
||||
@font-face {
|
||||
font-family: TTE;
|
||||
src: url(dist/TT2020StyleE-Regular.woff2);
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: TTE;
|
||||
src: url(dist/TT2020StyleE-Italic.woff2);
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
*{font-display:block}
|
||||
p{margin:0;margin-top:1.1em;line-height:1em}
|
||||
h2 {font-family:TTB}
|
||||
body {font-family:TTE;max-width:42em;font-size:1.5em}
|
||||
em{font-size:1em}
|
||||
code{font-family:TTE;padding:1.5em;display:block;color:#888}
|
||||
|
||||
@media screen and (max-width: 1776px) {
|
||||
}
|
||||
@media screen and (max-width: 770px) {
|
||||
}
|
13788
common/fonts/TT2020-master/docs/tt.svg
Normal file
After Width: | Height: | Size: 715 KiB |
BIN
common/fonts/TT2020-master/docs/tt2020.png
Normal file
After Width: | Height: | Size: 250 KiB |