Merge remote-tracking branch 'cu2qu-origin/fonttools-merge' into cu2qu

This commit is contained in:
Cosimo Lupo 2020-03-31 12:28:43 +01:00
commit 0b697b60fc
No known key found for this signature in database
GPG Key ID: 179A8F0895A02F4F
137 changed files with 6780 additions and 0 deletions

View File

@ -0,0 +1,23 @@
# Copyright 2015 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function, division, absolute_import
try:
from ._version import version as __version__
except ImportError:
__version__ = "0.0.0+unknown"
from .cu2qu import *

View File

@ -0,0 +1,364 @@
#cython: language_level=3
#distutils: define_macros=CYTHON_TRACE_NOGIL=1
# Copyright 2015 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function, division, absolute_import
try:
import cython
except ImportError:
# if not installed, use the embedded (no-op) copy of Cython.Shadow
from . import cython
import math
from .errors import Error as Cu2QuError, ApproxNotFoundError
__all__ = ['curve_to_quadratic', 'curves_to_quadratic']
MAX_N = 100
NAN = float("NaN")
if cython.compiled:
# Yep, I'm compiled.
COMPILED = True
else:
# Just a lowly interpreted script.
COMPILED = False
@cython.cfunc
@cython.inline
@cython.returns(cython.double)
@cython.locals(v1=cython.complex, v2=cython.complex)
def dot(v1, v2):
"""Return the dot product of two vectors."""
return (v1 * v2.conjugate()).real
@cython.cfunc
@cython.inline
@cython.locals(a=cython.complex, b=cython.complex, c=cython.complex, d=cython.complex)
@cython.locals(_1=cython.complex, _2=cython.complex, _3=cython.complex, _4=cython.complex)
def calc_cubic_points(a, b, c, d):
_1 = d
_2 = (c / 3.0) + d
_3 = (b + c) / 3.0 + _2
_4 = a + d + c + b
return _1, _2, _3, _4
@cython.cfunc
@cython.inline
@cython.locals(p0=cython.complex, p1=cython.complex, p2=cython.complex, p3=cython.complex)
@cython.locals(a=cython.complex, b=cython.complex, c=cython.complex, d=cython.complex)
def calc_cubic_parameters(p0, p1, p2, p3):
c = (p1 - p0) * 3.0
b = (p2 - p1) * 3.0 - c
d = p0
a = p3 - d - c - b
return a, b, c, d
@cython.cfunc
@cython.locals(p0=cython.complex, p1=cython.complex, p2=cython.complex, p3=cython.complex)
def split_cubic_into_n_iter(p0, p1, p2, p3, n):
# Hand-coded special-cases
if n == 2:
return iter(split_cubic_into_two(p0, p1, p2, p3))
if n == 3:
return iter(split_cubic_into_three(p0, p1, p2, p3))
if n == 4:
a, b = split_cubic_into_two(p0, p1, p2, p3)
return iter(split_cubic_into_two(*a) + split_cubic_into_two(*b))
if n == 6:
a, b = split_cubic_into_two(p0, p1, p2, p3)
return iter(split_cubic_into_three(*a) + split_cubic_into_three(*b))
return _split_cubic_into_n_gen(p0,p1,p2,p3,n)
@cython.locals(p0=cython.complex, p1=cython.complex, p2=cython.complex, p3=cython.complex, n=cython.int)
@cython.locals(a=cython.complex, b=cython.complex, c=cython.complex, d=cython.complex)
@cython.locals(dt=cython.double, delta_2=cython.double, delta_3=cython.double, i=cython.int)
@cython.locals(a1=cython.complex, b1=cython.complex, c1=cython.complex, d1=cython.complex)
def _split_cubic_into_n_gen(p0, p1, p2, p3, n):
a, b, c, d = calc_cubic_parameters(p0, p1, p2, p3)
dt = 1 / n
delta_2 = dt * dt
delta_3 = dt * delta_2
for i in range(n):
t1 = i * dt
t1_2 = t1 * t1
# calc new a, b, c and d
a1 = a * delta_3
b1 = (3*a*t1 + b) * delta_2
c1 = (2*b*t1 + c + 3*a*t1_2) * dt
d1 = a*t1*t1_2 + b*t1_2 + c*t1 + d
yield calc_cubic_points(a1, b1, c1, d1)
@cython.locals(p0=cython.complex, p1=cython.complex, p2=cython.complex, p3=cython.complex)
@cython.locals(mid=cython.complex, deriv3=cython.complex)
def split_cubic_into_two(p0, p1, p2, p3):
mid = (p0 + 3 * (p1 + p2) + p3) * .125
deriv3 = (p3 + p2 - p1 - p0) * .125
return ((p0, (p0 + p1) * .5, mid - deriv3, mid),
(mid, mid + deriv3, (p2 + p3) * .5, p3))
@cython.locals(p0=cython.complex, p1=cython.complex, p2=cython.complex, p3=cython.complex, _27=cython.double)
@cython.locals(mid1=cython.complex, deriv1=cython.complex, mid2=cython.complex, deriv2=cython.complex)
def split_cubic_into_three(p0, p1, p2, p3, _27=1/27):
# we define 1/27 as a keyword argument so that it will be evaluated only
# once but still in the scope of this function
mid1 = (8*p0 + 12*p1 + 6*p2 + p3) * _27
deriv1 = (p3 + 3*p2 - 4*p0) * _27
mid2 = (p0 + 6*p1 + 12*p2 + 8*p3) * _27
deriv2 = (4*p3 - 3*p1 - p0) * _27
return ((p0, (2*p0 + p1) / 3.0, mid1 - deriv1, mid1),
(mid1, mid1 + deriv1, mid2 - deriv2, mid2),
(mid2, mid2 + deriv2, (p2 + 2*p3) / 3.0, p3))
@cython.returns(cython.complex)
@cython.locals(t=cython.double, p0=cython.complex, p1=cython.complex, p2=cython.complex, p3=cython.complex)
@cython.locals(_p1=cython.complex, _p2=cython.complex)
def cubic_approx_control(t, p0, p1, p2, p3):
"""Approximate a cubic bezier curve with a quadratic one.
Returns the candidate control point."""
_p1 = p0 + (p1 - p0) * 1.5
_p2 = p3 + (p2 - p3) * 1.5
return _p1 + (_p2 - _p1) * t
@cython.returns(cython.complex)
@cython.locals(a=cython.complex, b=cython.complex, c=cython.complex, d=cython.complex)
@cython.locals(ab=cython.complex, cd=cython.complex, p=cython.complex, h=cython.double)
def calc_intersect(a, b, c, d):
"""Calculate the intersection of ab and cd, given a, b, c, d."""
ab = b - a
cd = d - c
p = ab * 1j
try:
h = dot(p, a - c) / dot(p, cd)
except ZeroDivisionError:
return complex(NAN, NAN)
return c + cd * h
@cython.cfunc
@cython.returns(cython.int)
@cython.locals(tolerance=cython.double, p0=cython.complex, p1=cython.complex, p2=cython.complex, p3=cython.complex)
@cython.locals(mid=cython.complex, deriv3=cython.complex)
def cubic_farthest_fit_inside(p0, p1, p2, p3, tolerance):
"""Returns True if the cubic Bezier p entirely lies within a distance
tolerance of origin, False otherwise. Assumes that p0 and p3 do fit
within tolerance of origin, and just checks the inside of the curve."""
# First check p2 then p1, as p2 has higher error early on.
if abs(p2) <= tolerance and abs(p1) <= tolerance:
return True
# Split.
mid = (p0 + 3 * (p1 + p2) + p3) * .125
if abs(mid) > tolerance:
return False
deriv3 = (p3 + p2 - p1 - p0) * .125
return (cubic_farthest_fit_inside(p0, (p0+p1)*.5, mid-deriv3, mid, tolerance) and
cubic_farthest_fit_inside(mid, mid+deriv3, (p2+p3)*.5, p3, tolerance))
@cython.cfunc
@cython.locals(tolerance=cython.double, _2_3=cython.double)
@cython.locals(q1=cython.complex, c0=cython.complex, c1=cython.complex, c2=cython.complex, c3=cython.complex)
def cubic_approx_quadratic(cubic, tolerance, _2_3=2/3):
"""Return the uniq quadratic approximating cubic that maintains
endpoint tangents if that is within tolerance, None otherwise."""
# we define 2/3 as a keyword argument so that it will be evaluated only
# once but still in the scope of this function
q1 = calc_intersect(*cubic)
if math.isnan(q1.imag):
return None
c0 = cubic[0]
c3 = cubic[3]
c1 = c0 + (q1 - c0) * _2_3
c2 = c3 + (q1 - c3) * _2_3
if not cubic_farthest_fit_inside(0,
c1 - cubic[1],
c2 - cubic[2],
0, tolerance):
return None
return c0, q1, c3
@cython.cfunc
@cython.locals(n=cython.int, tolerance=cython.double, _2_3=cython.double)
@cython.locals(i=cython.int)
@cython.locals(c0=cython.complex, c1=cython.complex, c2=cython.complex, c3=cython.complex)
@cython.locals(q0=cython.complex, q1=cython.complex, next_q1=cython.complex, q2=cython.complex, d1=cython.complex)
def cubic_approx_spline(cubic, n, tolerance, _2_3=2/3):
"""Approximate a cubic bezier curve with a spline of n quadratics.
Returns None if no quadratic approximation is found which lies entirely
within a distance `tolerance` from the original curve.
"""
# we define 2/3 as a keyword argument so that it will be evaluated only
# once but still in the scope of this function
if n == 1:
return cubic_approx_quadratic(cubic, tolerance)
cubics = split_cubic_into_n_iter(cubic[0], cubic[1], cubic[2], cubic[3], n)
# calculate the spline of quadratics and check errors at the same time.
next_cubic = next(cubics)
next_q1 = cubic_approx_control(0, *next_cubic)
q2 = cubic[0]
d1 = 0j
spline = [cubic[0], next_q1]
for i in range(1, n+1):
# Current cubic to convert
c0, c1, c2, c3 = next_cubic
# Current quadratic approximation of current cubic
q0 = q2
q1 = next_q1
if i < n:
next_cubic = next(cubics)
next_q1 = cubic_approx_control(i / (n-1), *next_cubic)
spline.append(next_q1)
q2 = (q1 + next_q1) * .5
else:
q2 = c3
# End-point deltas
d0 = d1
d1 = q2 - c3
if (abs(d1) > tolerance or
not cubic_farthest_fit_inside(d0,
q0 + (q1 - q0) * _2_3 - c1,
q2 + (q1 - q2) * _2_3 - c2,
d1,
tolerance)):
return None
spline.append(cubic[3])
return spline
@cython.locals(max_err=cython.double)
@cython.locals(n=cython.int)
def curve_to_quadratic(curve, max_err):
"""Return a quadratic spline approximating this cubic bezier.
Raise 'ApproxNotFoundError' if no suitable approximation can be found
with the given parameters.
"""
curve = [complex(*p) for p in curve]
for n in range(1, MAX_N + 1):
spline = cubic_approx_spline(curve, n, max_err)
if spline is not None:
# done. go home
return [(s.real, s.imag) for s in spline]
raise ApproxNotFoundError(curve)
@cython.locals(l=cython.int, last_i=cython.int, i=cython.int)
def curves_to_quadratic(curves, max_errors):
"""Return quadratic splines approximating these cubic beziers.
Raise 'ApproxNotFoundError' if no suitable approximation can be found
for all curves with the given parameters.
"""
curves = [[complex(*p) for p in curve] for curve in curves]
assert len(max_errors) == len(curves)
l = len(curves)
splines = [None] * l
last_i = i = 0
n = 1
while True:
spline = cubic_approx_spline(curves[i], n, max_errors[i])
if spline is None:
if n == MAX_N:
break
n += 1
last_i = i
continue
splines[i] = spline
i = (i + 1) % l
if i == last_i:
# done. go home
return [[(s.real, s.imag) for s in spline] for spline in splines]
raise ApproxNotFoundError(curves)
if __name__ == '__main__':
import random
import timeit
MAX_ERR = 5
def generate_curve():
return [
tuple(float(random.randint(0, 2048)) for coord in range(2))
for point in range(4)]
def setup_curve_to_quadratic():
return generate_curve(), MAX_ERR
def setup_curves_to_quadratic():
num_curves = 3
return (
[generate_curve() for curve in range(num_curves)],
[MAX_ERR] * num_curves)
def run_benchmark(
benchmark_module, module, function, setup_suffix='', repeat=5, number=1000):
setup_func = 'setup_' + function
if setup_suffix:
print('%s with %s:' % (function, setup_suffix), end='')
setup_func += '_' + setup_suffix
else:
print('%s:' % function, end='')
def wrapper(function, setup_func):
function = globals()[function]
setup_func = globals()[setup_func]
def wrapped():
return function(*setup_func())
return wrapped
results = timeit.repeat(wrapper(function, setup_func), repeat=repeat, number=number)
print('\t%5.1fus' % (min(results) * 1000000. / number))
def main():
run_benchmark('cu2qu.benchmark', 'cu2qu', 'curve_to_quadratic')
run_benchmark('cu2qu.benchmark', 'cu2qu', 'curves_to_quadratic')
random.seed(1)
main()

View File

@ -0,0 +1,477 @@
""" This module is copied verbatim from the "Cython.Shadow" module:
https://github.com/cython/cython/blob/master/Cython/Shadow.py
Cython is licensed under the Apache 2.0 Software License.
"""
# cython.* namespace for pure mode.
from __future__ import absolute_import
__version__ = "0.29.14"
try:
from __builtin__ import basestring
except ImportError:
basestring = str
# BEGIN shameless copy from Cython/minivect/minitypes.py
class _ArrayType(object):
is_array = True
subtypes = ['dtype']
def __init__(self, dtype, ndim, is_c_contig=False, is_f_contig=False,
inner_contig=False, broadcasting=None):
self.dtype = dtype
self.ndim = ndim
self.is_c_contig = is_c_contig
self.is_f_contig = is_f_contig
self.inner_contig = inner_contig or is_c_contig or is_f_contig
self.broadcasting = broadcasting
def __repr__(self):
axes = [":"] * self.ndim
if self.is_c_contig:
axes[-1] = "::1"
elif self.is_f_contig:
axes[0] = "::1"
return "%s[%s]" % (self.dtype, ", ".join(axes))
def index_type(base_type, item):
"""
Support array type creation by slicing, e.g. double[:, :] specifies
a 2D strided array of doubles. The syntax is the same as for
Cython memoryviews.
"""
class InvalidTypeSpecification(Exception):
pass
def verify_slice(s):
if s.start or s.stop or s.step not in (None, 1):
raise InvalidTypeSpecification(
"Only a step of 1 may be provided to indicate C or "
"Fortran contiguity")
if isinstance(item, tuple):
step_idx = None
for idx, s in enumerate(item):
verify_slice(s)
if s.step and (step_idx or idx not in (0, len(item) - 1)):
raise InvalidTypeSpecification(
"Step may only be provided once, and only in the "
"first or last dimension.")
if s.step == 1:
step_idx = idx
return _ArrayType(base_type, len(item),
is_c_contig=step_idx == len(item) - 1,
is_f_contig=step_idx == 0)
elif isinstance(item, slice):
verify_slice(item)
return _ArrayType(base_type, 1, is_c_contig=bool(item.step))
else:
# int[8] etc.
assert int(item) == item # array size must be a plain integer
array(base_type, item)
# END shameless copy
compiled = False
_Unspecified = object()
# Function decorators
def _empty_decorator(x):
return x
def locals(**arg_types):
return _empty_decorator
def test_assert_path_exists(*paths):
return _empty_decorator
def test_fail_if_path_exists(*paths):
return _empty_decorator
class _EmptyDecoratorAndManager(object):
def __call__(self, x):
return x
def __enter__(self):
pass
def __exit__(self, exc_type, exc_value, traceback):
pass
class _Optimization(object):
pass
cclass = ccall = cfunc = _EmptyDecoratorAndManager()
returns = wraparound = boundscheck = initializedcheck = nonecheck = \
embedsignature = cdivision = cdivision_warnings = \
always_allows_keywords = profile = linetrace = infer_types = \
unraisable_tracebacks = freelist = \
lambda _: _EmptyDecoratorAndManager()
exceptval = lambda _=None, check=True: _EmptyDecoratorAndManager()
overflowcheck = lambda _: _EmptyDecoratorAndManager()
optimization = _Optimization()
overflowcheck.fold = optimization.use_switch = \
optimization.unpack_method_calls = lambda arg: _EmptyDecoratorAndManager()
final = internal = type_version_tag = no_gc_clear = no_gc = _empty_decorator
_cython_inline = None
def inline(f, *args, **kwds):
if isinstance(f, basestring):
global _cython_inline
if _cython_inline is None:
from Cython.Build.Inline import cython_inline as _cython_inline
return _cython_inline(f, *args, **kwds)
else:
assert len(args) == len(kwds) == 0
return f
def compile(f):
from Cython.Build.Inline import RuntimeCompiledFunction
return RuntimeCompiledFunction(f)
# Special functions
def cdiv(a, b):
q = a / b
if q < 0:
q += 1
return q
def cmod(a, b):
r = a % b
if (a*b) < 0:
r -= b
return r
# Emulated language constructs
def cast(type, *args, **kwargs):
kwargs.pop('typecheck', None)
assert not kwargs
if hasattr(type, '__call__'):
return type(*args)
else:
return args[0]
def sizeof(arg):
return 1
def typeof(arg):
return arg.__class__.__name__
# return type(arg)
def address(arg):
return pointer(type(arg))([arg])
def declare(type=None, value=_Unspecified, **kwds):
if type not in (None, object) and hasattr(type, '__call__'):
if value is not _Unspecified:
return type(value)
else:
return type()
else:
return value
class _nogil(object):
"""Support for 'with nogil' statement and @nogil decorator.
"""
def __call__(self, x):
if callable(x):
# Used as function decorator => return the function unchanged.
return x
# Used as conditional context manager or to create an "@nogil(True/False)" decorator => keep going.
return self
def __enter__(self):
pass
def __exit__(self, exc_class, exc, tb):
return exc_class is None
nogil = _nogil()
gil = _nogil()
del _nogil
# Emulated types
class CythonMetaType(type):
def __getitem__(type, ix):
return array(type, ix)
CythonTypeObject = CythonMetaType('CythonTypeObject', (object,), {})
class CythonType(CythonTypeObject):
def _pointer(self, n=1):
for i in range(n):
self = pointer(self)
return self
class PointerType(CythonType):
def __init__(self, value=None):
if isinstance(value, (ArrayType, PointerType)):
self._items = [cast(self._basetype, a) for a in value._items]
elif isinstance(value, list):
self._items = [cast(self._basetype, a) for a in value]
elif value is None or value == 0:
self._items = []
else:
raise ValueError
def __getitem__(self, ix):
if ix < 0:
raise IndexError("negative indexing not allowed in C")
return self._items[ix]
def __setitem__(self, ix, value):
if ix < 0:
raise IndexError("negative indexing not allowed in C")
self._items[ix] = cast(self._basetype, value)
def __eq__(self, value):
if value is None and not self._items:
return True
elif type(self) != type(value):
return False
else:
return not self._items and not value._items
def __repr__(self):
return "%s *" % (self._basetype,)
class ArrayType(PointerType):
def __init__(self):
self._items = [None] * self._n
class StructType(CythonType):
def __init__(self, cast_from=_Unspecified, **data):
if cast_from is not _Unspecified:
# do cast
if len(data) > 0:
raise ValueError('Cannot accept keyword arguments when casting.')
if type(cast_from) is not type(self):
raise ValueError('Cannot cast from %s'%cast_from)
for key, value in cast_from.__dict__.items():
setattr(self, key, value)
else:
for key, value in data.items():
setattr(self, key, value)
def __setattr__(self, key, value):
if key in self._members:
self.__dict__[key] = cast(self._members[key], value)
else:
raise AttributeError("Struct has no member '%s'" % key)
class UnionType(CythonType):
def __init__(self, cast_from=_Unspecified, **data):
if cast_from is not _Unspecified:
# do type cast
if len(data) > 0:
raise ValueError('Cannot accept keyword arguments when casting.')
if isinstance(cast_from, dict):
datadict = cast_from
elif type(cast_from) is type(self):
datadict = cast_from.__dict__
else:
raise ValueError('Cannot cast from %s'%cast_from)
else:
datadict = data
if len(datadict) > 1:
raise AttributeError("Union can only store one field at a time.")
for key, value in datadict.items():
setattr(self, key, value)
def __setattr__(self, key, value):
if key in '__dict__':
CythonType.__setattr__(self, key, value)
elif key in self._members:
self.__dict__ = {key: cast(self._members[key], value)}
else:
raise AttributeError("Union has no member '%s'" % key)
def pointer(basetype):
class PointerInstance(PointerType):
_basetype = basetype
return PointerInstance
def array(basetype, n):
class ArrayInstance(ArrayType):
_basetype = basetype
_n = n
return ArrayInstance
def struct(**members):
class StructInstance(StructType):
_members = members
for key in members:
setattr(StructInstance, key, None)
return StructInstance
def union(**members):
class UnionInstance(UnionType):
_members = members
for key in members:
setattr(UnionInstance, key, None)
return UnionInstance
class typedef(CythonType):
def __init__(self, type, name=None):
self._basetype = type
self.name = name
def __call__(self, *arg):
value = cast(self._basetype, *arg)
return value
def __repr__(self):
return self.name or str(self._basetype)
__getitem__ = index_type
class _FusedType(CythonType):
pass
def fused_type(*args):
if not args:
raise TypeError("Expected at least one type as argument")
# Find the numeric type with biggest rank if all types are numeric
rank = -1
for type in args:
if type not in (py_int, py_long, py_float, py_complex):
break
if type_ordering.index(type) > rank:
result_type = type
else:
return result_type
# Not a simple numeric type, return a fused type instance. The result
# isn't really meant to be used, as we can't keep track of the context in
# pure-mode. Casting won't do anything in this case.
return _FusedType()
def _specialized_from_args(signatures, args, kwargs):
"Perhaps this should be implemented in a TreeFragment in Cython code"
raise Exception("yet to be implemented")
py_int = typedef(int, "int")
try:
py_long = typedef(long, "long")
except NameError: # Py3
py_long = typedef(int, "long")
py_float = typedef(float, "float")
py_complex = typedef(complex, "double complex")
# Predefined types
int_types = ['char', 'short', 'Py_UNICODE', 'int', 'Py_UCS4', 'long', 'longlong', 'Py_ssize_t', 'size_t']
float_types = ['longdouble', 'double', 'float']
complex_types = ['longdoublecomplex', 'doublecomplex', 'floatcomplex', 'complex']
other_types = ['bint', 'void', 'Py_tss_t']
to_repr = {
'longlong': 'long long',
'longdouble': 'long double',
'longdoublecomplex': 'long double complex',
'doublecomplex': 'double complex',
'floatcomplex': 'float complex',
}.get
gs = globals()
# note: cannot simply name the unicode type here as 2to3 gets in the way and replaces it by str
try:
import __builtin__ as builtins
except ImportError: # Py3
import builtins
gs['unicode'] = typedef(getattr(builtins, 'unicode', str), 'unicode')
del builtins
for name in int_types:
reprname = to_repr(name, name)
gs[name] = typedef(py_int, reprname)
if name not in ('Py_UNICODE', 'Py_UCS4') and not name.endswith('size_t'):
gs['u'+name] = typedef(py_int, "unsigned " + reprname)
gs['s'+name] = typedef(py_int, "signed " + reprname)
for name in float_types:
gs[name] = typedef(py_float, to_repr(name, name))
for name in complex_types:
gs[name] = typedef(py_complex, to_repr(name, name))
bint = typedef(bool, "bint")
void = typedef(None, "void")
Py_tss_t = typedef(None, "Py_tss_t")
for t in int_types + float_types + complex_types + other_types:
for i in range(1, 4):
gs["%s_%s" % ('p'*i, t)] = gs[t]._pointer(i)
NULL = gs['p_void'](0)
# looks like 'gs' has some users out there by now...
#del gs
integral = floating = numeric = _FusedType()
type_ordering = [py_int, py_long, py_float, py_complex]
class CythonDotParallel(object):
"""
The cython.parallel module.
"""
__all__ = ['parallel', 'prange', 'threadid']
def parallel(self, num_threads=None):
return nogil
def prange(self, start=0, stop=None, step=1, nogil=False, schedule=None, chunksize=None, num_threads=None):
if stop is None:
stop = start
start = 0
return range(start, stop, step)
def threadid(self):
return 0
# def threadsavailable(self):
# return 1
import sys
sys.modules['cython.parallel'] = CythonDotParallel()
del sys

View File

@ -0,0 +1,65 @@
from __future__ import print_function, absolute_import, division
class Error(Exception):
"""Base Cu2Qu exception class for all other errors."""
class ApproxNotFoundError(Error):
def __init__(self, curve):
message = "no approximation found: %s" % curve
super(Error, self).__init__(message)
self.curve = curve
class UnequalZipLengthsError(Error):
pass
class IncompatibleGlyphsError(Error):
def __init__(self, glyphs):
assert len(glyphs) > 1
self.glyphs = glyphs
names = set(repr(g.name) for g in glyphs)
if len(names) > 1:
self.combined_name = "{%s}" % ", ".join(sorted(names))
else:
self.combined_name = names.pop()
def __repr__(self):
return "<%s %s>" % (type(self).__name__, self.combined_name)
class IncompatibleSegmentNumberError(IncompatibleGlyphsError):
def __str__(self):
return "Glyphs named %s have different number of segments" % (
self.combined_name
)
class IncompatibleSegmentTypesError(IncompatibleGlyphsError):
def __init__(self, glyphs, segments):
IncompatibleGlyphsError.__init__(self, glyphs)
self.segments = segments
def __str__(self):
lines = []
ndigits = len(str(max(self.segments)))
for i, tags in sorted(self.segments.items()):
lines.append(
"%s: (%s)" % (str(i).rjust(ndigits), ", ".join(repr(t) for t in tags))
)
return "Glyphs named %s have incompatible segment types:\n %s" % (
self.combined_name,
"\n ".join(lines),
)
class IncompatibleFontsError(Error):
def __init__(self, glyph_errors):
self.glyph_errors = glyph_errors
def __str__(self):
return "fonts contains incompatible glyphs: %s" % (
", ".join(repr(g) for g in sorted(self.glyph_errors.keys()))
)

View File

@ -0,0 +1,240 @@
from __future__ import print_function, division, absolute_import
from cu2qu import curve_to_quadratic
from fontTools.pens.basePen import AbstractPen, decomposeSuperBezierSegment
from fontTools.pens.reverseContourPen import ReverseContourPen
from fontTools.pens.pointPen import BasePointToSegmentPen
from fontTools.pens.pointPen import ReverseContourPointPen
class Cu2QuPen(AbstractPen):
""" A filter pen to convert cubic bezier curves to quadratic b-splines
using the FontTools SegmentPen protocol.
other_pen: another SegmentPen used to draw the transformed outline.
max_err: maximum approximation error in font units.
reverse_direction: flip the contours' direction but keep starting point.
stats: a dictionary counting the point numbers of quadratic segments.
ignore_single_points: don't emit contours containing only a single point
NOTE: The "ignore_single_points" argument is deprecated since v1.3.0,
which dropped Robofab subpport. It's no longer needed to special-case
UFO2-style anchors (aka "named points") when using ufoLib >= 2.0,
as these are no longer drawn onto pens as single-point contours,
but are handled separately as anchors.
"""
def __init__(self, other_pen, max_err, reverse_direction=False,
stats=None, ignore_single_points=False):
if reverse_direction:
self.pen = ReverseContourPen(other_pen)
else:
self.pen = other_pen
self.max_err = max_err
self.stats = stats
if ignore_single_points:
import warnings
warnings.warn("ignore_single_points is deprecated and "
"will be removed in future versions",
UserWarning, stacklevel=2)
self.ignore_single_points = ignore_single_points
self.start_pt = None
self.current_pt = None
def _check_contour_is_open(self):
if self.current_pt is None:
raise AssertionError("moveTo is required")
def _check_contour_is_closed(self):
if self.current_pt is not None:
raise AssertionError("closePath or endPath is required")
def _add_moveTo(self):
if self.start_pt is not None:
self.pen.moveTo(self.start_pt)
self.start_pt = None
def moveTo(self, pt):
self._check_contour_is_closed()
self.start_pt = self.current_pt = pt
if not self.ignore_single_points:
self._add_moveTo()
def lineTo(self, pt):
self._check_contour_is_open()
self._add_moveTo()
self.pen.lineTo(pt)
self.current_pt = pt
def qCurveTo(self, *points):
self._check_contour_is_open()
n = len(points)
if n == 1:
self.lineTo(points[0])
elif n > 1:
self._add_moveTo()
self.pen.qCurveTo(*points)
self.current_pt = points[-1]
else:
raise AssertionError("illegal qcurve segment point count: %d" % n)
def _curve_to_quadratic(self, pt1, pt2, pt3):
curve = (self.current_pt, pt1, pt2, pt3)
quadratic = curve_to_quadratic(curve, self.max_err)
if self.stats is not None:
n = str(len(quadratic) - 2)
self.stats[n] = self.stats.get(n, 0) + 1
self.qCurveTo(*quadratic[1:])
def curveTo(self, *points):
self._check_contour_is_open()
n = len(points)
if n == 3:
# this is the most common case, so we special-case it
self._curve_to_quadratic(*points)
elif n > 3:
for segment in decomposeSuperBezierSegment(points):
self._curve_to_quadratic(*segment)
elif n == 2:
self.qCurveTo(*points)
elif n == 1:
self.lineTo(points[0])
else:
raise AssertionError("illegal curve segment point count: %d" % n)
def closePath(self):
self._check_contour_is_open()
if self.start_pt is None:
# if 'start_pt' is _not_ None, we are ignoring single-point paths
self.pen.closePath()
self.current_pt = self.start_pt = None
def endPath(self):
self._check_contour_is_open()
if self.start_pt is None:
self.pen.endPath()
self.current_pt = self.start_pt = None
def addComponent(self, glyphName, transformation):
self._check_contour_is_closed()
self.pen.addComponent(glyphName, transformation)
class Cu2QuPointPen(BasePointToSegmentPen):
""" A filter pen to convert cubic bezier curves to quadratic b-splines
using the RoboFab PointPen protocol.
other_point_pen: another PointPen used to draw the transformed outline.
max_err: maximum approximation error in font units.
reverse_direction: reverse the winding direction of all contours.
stats: a dictionary counting the point numbers of quadratic segments.
"""
def __init__(self, other_point_pen, max_err, reverse_direction=False,
stats=None):
BasePointToSegmentPen.__init__(self)
if reverse_direction:
self.pen = ReverseContourPointPen(other_point_pen)
else:
self.pen = other_point_pen
self.max_err = max_err
self.stats = stats
def _flushContour(self, segments):
assert len(segments) >= 1
closed = segments[0][0] != "move"
new_segments = []
prev_points = segments[-1][1]
prev_on_curve = prev_points[-1][0]
for segment_type, points in segments:
if segment_type == 'curve':
for sub_points in self._split_super_bezier_segments(points):
on_curve, smooth, name, kwargs = sub_points[-1]
bcp1, bcp2 = sub_points[0][0], sub_points[1][0]
cubic = [prev_on_curve, bcp1, bcp2, on_curve]
quad = curve_to_quadratic(cubic, self.max_err)
if self.stats is not None:
n = str(len(quad) - 2)
self.stats[n] = self.stats.get(n, 0) + 1
new_points = [(pt, False, None, {}) for pt in quad[1:-1]]
new_points.append((on_curve, smooth, name, kwargs))
new_segments.append(["qcurve", new_points])
prev_on_curve = sub_points[-1][0]
else:
new_segments.append([segment_type, points])
prev_on_curve = points[-1][0]
if closed:
# the BasePointToSegmentPen.endPath method that calls _flushContour
# rotates the point list of closed contours so that they end with
# the first on-curve point. We restore the original starting point.
new_segments = new_segments[-1:] + new_segments[:-1]
self._drawPoints(new_segments)
def _split_super_bezier_segments(self, points):
sub_segments = []
# n is the number of control points
n = len(points) - 1
if n == 2:
# a simple bezier curve segment
sub_segments.append(points)
elif n > 2:
# a "super" bezier; decompose it
on_curve, smooth, name, kwargs = points[-1]
num_sub_segments = n - 1
for i, sub_points in enumerate(decomposeSuperBezierSegment([
pt for pt, _, _, _ in points])):
new_segment = []
for point in sub_points[:-1]:
new_segment.append((point, False, None, {}))
if i == (num_sub_segments - 1):
# the last on-curve keeps its original attributes
new_segment.append((on_curve, smooth, name, kwargs))
else:
# on-curves of sub-segments are always "smooth"
new_segment.append((sub_points[-1], True, None, {}))
sub_segments.append(new_segment)
else:
raise AssertionError(
"expected 2 control points, found: %d" % n)
return sub_segments
def _drawPoints(self, segments):
pen = self.pen
pen.beginPath()
last_offcurves = []
for i, (segment_type, points) in enumerate(segments):
if segment_type in ("move", "line"):
assert len(points) == 1, (
"illegal line segment point count: %d" % len(points))
pt, smooth, name, kwargs = points[0]
pen.addPoint(pt, segment_type, smooth, name, **kwargs)
elif segment_type == "qcurve":
assert len(points) >= 2, (
"illegal qcurve segment point count: %d" % len(points))
offcurves = points[:-1]
if offcurves:
if i == 0:
# any off-curve points preceding the first on-curve
# will be appended at the end of the contour
last_offcurves = offcurves
else:
for (pt, smooth, name, kwargs) in offcurves:
pen.addPoint(pt, None, smooth, name, **kwargs)
pt, smooth, name, kwargs = points[-1]
if pt is None:
# special quadratic contour with no on-curve points:
# we need to skip the "None" point. See also the Pen
# protocol's qCurveTo() method and fontTools.pens.basePen
pass
else:
pen.addPoint(pt, segment_type, smooth, name, **kwargs)
else:
# 'curve' segments must have been converted to 'qcurve' by now
raise AssertionError(
"unexpected segment type: %r" % segment_type)
for (pt, smooth, name, kwargs) in last_offcurves:
pen.addPoint(pt, None, smooth, name, **kwargs)
pen.endPath()
def addComponent(self, baseGlyphName, transformation):
assert self.currentPath is None
self.pen.addComponent(baseGlyphName, transformation)

View File

@ -0,0 +1,13 @@
import os
from fontTools.ufoLib.glifLib import GlyphSet
import pkg_resources
DATADIR = os.path.join(os.path.dirname(__file__), 'data')
CUBIC_GLYPHS = GlyphSet(os.path.join(DATADIR, 'cubic'))
QUAD_GLYPHS = GlyphSet(os.path.join(DATADIR, 'quadratic'))
import unittest
# Python 3 renamed 'assertRaisesRegexp' to 'assertRaisesRegex', and fires
# deprecation warnings if a program uses the old name.
if not hasattr(unittest.TestCase, 'assertRaisesRegex'):
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp

View File

@ -0,0 +1,180 @@
# Copyright 2016 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function, division, absolute_import
import collections
import math
import unittest
import os
import json
from cu2qu import curve_to_quadratic, curves_to_quadratic
from . import DATADIR
MAX_ERR = 5
class CurveToQuadraticTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
"""Do the curve conversion ahead of time, and run tests on results."""
with open(os.path.join(DATADIR, "curves.json"), "r") as fp:
curves = json.load(fp)
cls.single_splines = [
curve_to_quadratic(c, MAX_ERR) for c in curves]
cls.single_errors = [
cls.curve_spline_dist(c, s)
for c, s in zip(curves, cls.single_splines)]
curve_groups = [curves[i:i + 3] for i in range(0, 300, 3)]
cls.compat_splines = [
curves_to_quadratic(c, [MAX_ERR] * 3) for c in curve_groups]
cls.compat_errors = [
[cls.curve_spline_dist(c, s) for c, s in zip(curve_group, splines)]
for curve_group, splines in zip(curve_groups, cls.compat_splines)]
cls.results = []
@classmethod
def tearDownClass(cls):
"""Print stats from conversion, as determined during tests."""
for tag, results in cls.results:
print('\n%s\n%s' % (
tag, '\n'.join(
'%s: %s (%d)' % (k, '#' * (v // 10 + 1), v)
for k, v in sorted(results.items()))))
def test_results_unchanged(self):
"""Tests that the results of conversion haven't changed since the time
of this test's writing. Useful as a quick check whenever one modifies
the conversion algorithm.
"""
expected = {
2: 6,
3: 26,
4: 82,
5: 232,
6: 360,
7: 266,
8: 28}
results = collections.defaultdict(int)
for spline in self.single_splines:
n = len(spline) - 2
results[n] += 1
self.assertEqual(results, expected)
self.results.append(('single spline lengths', results))
def test_results_unchanged_multiple(self):
"""Test that conversion results are unchanged for multiple curves."""
expected = {
5: 11,
6: 35,
7: 49,
8: 5}
results = collections.defaultdict(int)
for splines in self.compat_splines:
n = len(splines[0]) - 2
for spline in splines[1:]:
self.assertEqual(len(spline) - 2, n,
'Got incompatible conversion results')
results[n] += 1
self.assertEqual(results, expected)
self.results.append(('compatible spline lengths', results))
def test_does_not_exceed_tolerance(self):
"""Test that conversion results do not exceed given error tolerance."""
results = collections.defaultdict(int)
for error in self.single_errors:
results[round(error, 1)] += 1
self.assertLessEqual(error, MAX_ERR)
self.results.append(('single errors', results))
def test_does_not_exceed_tolerance_multiple(self):
"""Test that error tolerance isn't exceeded for multiple curves."""
results = collections.defaultdict(int)
for errors in self.compat_errors:
for error in errors:
results[round(error, 1)] += 1
self.assertLessEqual(error, MAX_ERR)
self.results.append(('compatible errors', results))
@classmethod
def curve_spline_dist(cls, bezier, spline, total_steps=20):
"""Max distance between a bezier and quadratic spline at sampled points."""
error = 0
n = len(spline) - 2
steps = total_steps // n
for i in range(0, n - 1):
p1 = spline[0] if i == 0 else p3
p2 = spline[i + 1]
if i < n - 1:
p3 = cls.lerp(spline[i + 1], spline[i + 2], 0.5)
else:
p3 = spline[n + 2]
segment = p1, p2, p3
for j in range(steps):
error = max(error, cls.dist(
cls.cubic_bezier_at(bezier, (j / steps + i) / n),
cls.quadratic_bezier_at(segment, j / steps)))
return error
@classmethod
def lerp(cls, p1, p2, t):
(x1, y1), (x2, y2) = p1, p2
return x1 + (x2 - x1) * t, y1 + (y2 - y1) * t
@classmethod
def dist(cls, p1, p2):
(x1, y1), (x2, y2) = p1, p2
return math.hypot(x1 - x2, y1 - y2)
@classmethod
def quadratic_bezier_at(cls, b, t):
(x1, y1), (x2, y2), (x3, y3) = b
_t = 1 - t
t2 = t * t
_t2 = _t * _t
_2_t_t = 2 * t * _t
return (_t2 * x1 + _2_t_t * x2 + t2 * x3,
_t2 * y1 + _2_t_t * y2 + t2 * y3)
@classmethod
def cubic_bezier_at(cls, b, t):
(x1, y1), (x2, y2), (x3, y3), (x4, y4) = b
_t = 1 - t
t2 = t * t
_t2 = _t * _t
t3 = t * t2
_t3 = _t * _t2
_3_t2_t = 3 * t2 * _t
_3_t_t2 = 3 * t * _t2
return (_t3 * x1 + _3_t_t2 * x2 + _3_t2_t * x3 + t3 * x4,
_t3 * y1 + _3_t_t2 * y2 + _3_t2_t * y3 + t3 * y4)
if __name__ == '__main__':
unittest.main()

View File

@ -0,0 +1,205 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ascender</key>
<integer>2146</integer>
<key>capHeight</key>
<integer>1456</integer>
<key>copyright</key>
<string>Copyright 2011 Google Inc. All Rights Reserved.</string>
<key>descender</key>
<integer>-555</integer>
<key>familyName</key>
<string>RobotoSubset</string>
<key>italicAngle</key>
<integer>0</integer>
<key>openTypeHeadCreated</key>
<string>2008/09/12 12:29:34</string>
<key>openTypeHeadFlags</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>3</integer>
<integer>4</integer>
</array>
<key>openTypeHeadLowestRecPPEM</key>
<integer>9</integer>
<key>openTypeHheaAscender</key>
<integer>1900</integer>
<key>openTypeHheaDescender</key>
<integer>-500</integer>
<key>openTypeHheaLineGap</key>
<integer>0</integer>
<key>openTypeNameDescription</key>
<string></string>
<key>openTypeNameDesigner</key>
<string></string>
<key>openTypeNameDesignerURL</key>
<string></string>
<key>openTypeNameLicense</key>
<string></string>
<key>openTypeNameLicenseURL</key>
<string></string>
<key>openTypeNameManufacturer</key>
<string></string>
<key>openTypeNameManufacturerURL</key>
<string></string>
<key>openTypeNameSampleText</key>
<string></string>
<key>openTypeOS2CodePageRanges</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
<integer>4</integer>
<integer>7</integer>
<integer>8</integer>
<integer>29</integer>
</array>
<key>openTypeOS2FamilyClass</key>
<array>
<integer>0</integer>
<integer>0</integer>
</array>
<key>openTypeOS2Panose</key>
<array>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
</array>
<key>openTypeOS2Selection</key>
<array>
</array>
<key>openTypeOS2StrikeoutPosition</key>
<integer>512</integer>
<key>openTypeOS2StrikeoutSize</key>
<integer>102</integer>
<key>openTypeOS2SubscriptXOffset</key>
<integer>0</integer>
<key>openTypeOS2SubscriptXSize</key>
<integer>1434</integer>
<key>openTypeOS2SubscriptYOffset</key>
<integer>287</integer>
<key>openTypeOS2SubscriptYSize</key>
<integer>1331</integer>
<key>openTypeOS2SuperscriptXOffset</key>
<integer>0</integer>
<key>openTypeOS2SuperscriptXSize</key>
<integer>1434</integer>
<key>openTypeOS2SuperscriptYOffset</key>
<integer>977</integer>
<key>openTypeOS2SuperscriptYSize</key>
<integer>1331</integer>
<key>openTypeOS2Type</key>
<array>
</array>
<key>openTypeOS2TypoAscender</key>
<integer>2146</integer>
<key>openTypeOS2TypoDescender</key>
<integer>-555</integer>
<key>openTypeOS2TypoLineGap</key>
<integer>0</integer>
<key>openTypeOS2UnicodeRanges</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
<integer>4</integer>
<integer>5</integer>
<integer>6</integer>
<integer>7</integer>
<integer>9</integer>
<integer>11</integer>
<integer>29</integer>
<integer>30</integer>
<integer>31</integer>
<integer>32</integer>
<integer>33</integer>
<integer>34</integer>
<integer>35</integer>
<integer>36</integer>
<integer>37</integer>
<integer>38</integer>
<integer>40</integer>
<integer>45</integer>
<integer>60</integer>
<integer>62</integer>
<integer>64</integer>
<integer>69</integer>
</array>
<key>openTypeOS2VendorID</key>
<string>GOOG</string>
<key>openTypeOS2WeightClass</key>
<integer>700</integer>
<key>openTypeOS2WidthClass</key>
<integer>5</integer>
<key>openTypeOS2WinAscent</key>
<integer>2146</integer>
<key>openTypeOS2WinDescent</key>
<integer>555</integer>
<key>postscriptBlueFuzz</key>
<integer>1</integer>
<key>postscriptBlueScale</key>
<real>0.039625</real>
<key>postscriptBlueShift</key>
<integer>7</integer>
<key>postscriptBlueValues</key>
<array>
<integer>-20</integer>
<integer>0</integer>
<integer>1082</integer>
<integer>1102</integer>
<integer>1456</integer>
<integer>1476</integer>
</array>
<key>postscriptDefaultCharacter</key>
<string>space</string>
<key>postscriptForceBold</key>
<false/>
<key>postscriptIsFixedPitch</key>
<false/>
<key>postscriptOtherBlues</key>
<array>
<integer>-436</integer>
<integer>-416</integer>
</array>
<key>postscriptStemSnapH</key>
<array>
<integer>250</integer>
</array>
<key>postscriptStemSnapV</key>
<array>
<integer>316</integer>
</array>
<key>postscriptUnderlinePosition</key>
<integer>-150</integer>
<key>postscriptUnderlineThickness</key>
<integer>100</integer>
<key>postscriptUniqueID</key>
<integer>-1</integer>
<key>styleName</key>
<string>Bold</string>
<key>trademark</key>
<string></string>
<key>unitsPerEm</key>
<integer>2048</integer>
<key>versionMajor</key>
<integer>1</integer>
<key>versionMinor</key>
<integer>0</integer>
<key>xHeight</key>
<integer>1082</integer>
<key>year</key>
<integer>2017</integer>
</dict>
</plist>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="A" format="2">
<unicode hex="0041"/>
<advance width="1390"/>
<outline>
<contour>
<point x="727" y="1150" type="line"/>
<point x="764" y="1456" type="line"/>
<point x="537" y="1456" type="line"/>
<point x="0" y="0" type="line"/>
<point x="358" y="0" type="line"/>
</contour>
<contour>
<point x="1032" y="0" type="line"/>
<point x="1391" y="0" type="line"/>
<point x="851" y="1456" type="line"/>
<point x="621" y="1456" type="line"/>
<point x="662" y="1150" type="line"/>
</contour>
<contour>
<point x="1018" y="543" type="line"/>
<point x="262" y="543" type="line"/>
<point x="262" y="272" type="line"/>
<point x="1018" y="272" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="B" format="2">
<unicode hex="0042"/>
<advance width="1317"/>
<outline>
<contour>
<point x="703" y="619" type="line"/>
<point x="797" y="710" type="line"/>
<point x="1092" y="713"/>
<point x="1199" y="875"/>
<point x="1199" y="1054" type="curve"/>
<point x="1199" y="1326"/>
<point x="988" y="1456"/>
<point x="636" y="1456" type="curve"/>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
<point x="452" y="1185" type="line"/>
<point x="636" y="1185" type="line"/>
<point x="795" y="1185"/>
<point x="864" y="1135"/>
<point x="864" y="1012" type="curve"/>
<point x="864" y="904"/>
<point x="797" y="849"/>
<point x="635" y="849" type="curve"/>
<point x="328" y="849" type="line"/>
<point x="330" y="619" type="line"/>
</contour>
<contour>
<point x="690" y="0" type="line"/>
<point x="1042" y="0"/>
<point x="1230" y="145"/>
<point x="1230" y="431" type="curve" smooth="yes"/>
<point x="1230" y="598"/>
<point x="1129" y="769"/>
<point x="846" y="757" type="curve"/>
<point x="768" y="849" type="line"/>
<point x="412" y="849" type="line"/>
<point x="410" y="619" type="line"/>
<point x="703" y="619" type="line" smooth="yes"/>
<point x="842" y="619"/>
<point x="896" y="548"/>
<point x="896" y="436" type="curve" smooth="yes"/>
<point x="896" y="344"/>
<point x="836" y="270"/>
<point x="690" y="270" type="curve" smooth="yes"/>
<point x="365" y="270" type="line"/>
<point x="245" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="C" format="2">
<unicode hex="0043"/>
<advance width="1343"/>
<outline>
<contour>
<point x="950" y="493" type="line"/>
<point x="942" y="329"/>
<point x="856" y="255"/>
<point x="687" y="255" type="curve" smooth="yes"/>
<point x="489" y="255"/>
<point x="415" y="379"/>
<point x="415" y="688" type="curve" smooth="yes"/>
<point x="415" y="769" type="line" smooth="yes"/>
<point x="415" y="1079"/>
<point x="503" y="1202"/>
<point x="685" y="1202" type="curve" smooth="yes"/>
<point x="875" y="1202"/>
<point x="944" y="1117"/>
<point x="952" y="953" type="curve"/>
<point x="1286" y="953" type="line"/>
<point x="1259" y="1255"/>
<point x="1060" y="1477"/>
<point x="685" y="1477" type="curve" smooth="yes"/>
<point x="316" y="1477"/>
<point x="75" y="1205"/>
<point x="75" y="767" type="curve"/>
<point x="75" y="688" type="line"/>
<point x="75" y="250"/>
<point x="303" y="-20"/>
<point x="687" y="-20" type="curve" smooth="yes"/>
<point x="1046" y="-20"/>
<point x="1268" y="188"/>
<point x="1284" y="493" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="D" format="2">
<unicode hex="0044"/>
<advance width="1327"/>
<outline>
<contour>
<point x="581" y="0" type="line"/>
<point x="973" y="0"/>
<point x="1251" y="285"/>
<point x="1251" y="697" type="curve"/>
<point x="1251" y="758" type="line"/>
<point x="1251" y="1170"/>
<point x="973" y="1456"/>
<point x="579" y="1456" type="curve"/>
<point x="255" y="1456" type="line"/>
<point x="255" y="1185" type="line"/>
<point x="579" y="1185" type="line"/>
<point x="794" y="1185"/>
<point x="910" y="1039"/>
<point x="910" y="760" type="curve"/>
<point x="910" y="697" type="line" smooth="yes"/>
<point x="910" y="416"/>
<point x="793" y="270"/>
<point x="581" y="270" type="curve"/>
<point x="263" y="270" type="line"/>
<point x="261" y="0" type="line"/>
</contour>
<contour>
<point x="452" y="1456" type="line"/>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="E" format="2">
<unicode hex="0045"/>
<advance width="1148"/>
<outline>
<contour>
<point x="1111" y="270" type="line"/>
<point x="337" y="270" type="line"/>
<point x="337" y="0" type="line"/>
<point x="1111" y="0" type="line"/>
</contour>
<contour>
<point x="452" y="1456" type="line"/>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
</contour>
<contour>
<point x="1011" y="878" type="line"/>
<point x="337" y="878" type="line"/>
<point x="337" y="617" type="line"/>
<point x="1011" y="617" type="line"/>
</contour>
<contour>
<point x="1112" y="1456" type="line"/>
<point x="337" y="1456" type="line"/>
<point x="337" y="1185" type="line"/>
<point x="1112" y="1185" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="F" format="2">
<unicode hex="0046"/>
<advance width="1121"/>
<outline>
<contour>
<point x="452" y="1456" type="line"/>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
</contour>
<contour>
<point x="1021" y="850" type="line"/>
<point x="359" y="850" type="line"/>
<point x="359" y="580" type="line"/>
<point x="1021" y="580" type="line"/>
</contour>
<contour>
<point x="1083" y="1456" type="line"/>
<point x="359" y="1456" type="line"/>
<point x="359" y="1185" type="line"/>
<point x="1083" y="1185" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="G" format="2">
<unicode hex="0047"/>
<advance width="1396"/>
<outline>
<contour>
<point x="1296" y="778" type="line"/>
<point x="708" y="778" type="line"/>
<point x="708" y="537" type="line"/>
<point x="961" y="537" type="line"/>
<point x="961" y="311" type="line"/>
<point x="931" y="284"/>
<point x="868" y="250"/>
<point x="746" y="250" type="curve" smooth="yes"/>
<point x="529" y="250"/>
<point x="426" y="396"/>
<point x="426" y="687" type="curve" smooth="yes"/>
<point x="426" y="770" type="line" smooth="yes"/>
<point x="426" y="1063"/>
<point x="535" y="1207"/>
<point x="715" y="1207" type="curve" smooth="yes"/>
<point x="883" y="1207"/>
<point x="951" y="1125"/>
<point x="972" y="981" type="curve"/>
<point x="1295" y="981" type="line"/>
<point x="1265" y="1272"/>
<point x="1098" y="1477"/>
<point x="704" y="1477" type="curve" smooth="yes"/>
<point x="340" y="1477"/>
<point x="86" y="1221"/>
<point x="86" y="768" type="curve" smooth="yes"/>
<point x="86" y="687" type="line" smooth="yes"/>
<point x="86" y="234"/>
<point x="340" y="-20"/>
<point x="724" y="-20" type="curve" smooth="yes"/>
<point x="1040" y="-20"/>
<point x="1223" y="98"/>
<point x="1296" y="180" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="H" format="2">
<unicode hex="0048"/>
<advance width="1442"/>
<outline>
<contour>
<point x="1094" y="878" type="line"/>
<point x="345" y="878" type="line"/>
<point x="345" y="608" type="line"/>
<point x="1094" y="608" type="line"/>
</contour>
<contour>
<point x="452" y="1456" type="line"/>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
</contour>
<contour>
<point x="1324" y="1456" type="line"/>
<point x="990" y="1456" type="line"/>
<point x="990" y="0" type="line"/>
<point x="1324" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="I" format="2">
<unicode hex="0049"/>
<advance width="612"/>
<outline>
<contour>
<point x="473" y="1456" type="line"/>
<point x="139" y="1456" type="line"/>
<point x="139" y="0" type="line"/>
<point x="473" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="J" format="2">
<unicode hex="004A"/>
<advance width="1149"/>
<outline>
<contour>
<point x="699" y="457" type="line"/>
<point x="699" y="327"/>
<point x="638" y="250"/>
<point x="536" y="250" type="curve" smooth="yes"/>
<point x="433" y="250"/>
<point x="374" y="292"/>
<point x="374" y="440" type="curve"/>
<point x="38" y="440" type="line"/>
<point x="38" y="124"/>
<point x="246" y="-20"/>
<point x="536" y="-20" type="curve" smooth="yes"/>
<point x="816" y="-20"/>
<point x="1033" y="165"/>
<point x="1033" y="457" type="curve"/>
<point x="1033" y="1456" type="line"/>
<point x="699" y="1456" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="K" format="2">
<unicode hex="004B"/>
<advance width="1307"/>
<outline>
<contour>
<point x="452" y="1456" type="line"/>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
</contour>
<contour>
<point x="1322" y="1456" type="line"/>
<point x="909" y="1456" type="line"/>
<point x="577" y="999" type="line"/>
<point x="361" y="679" type="line"/>
<point x="422" y="357" type="line"/>
<point x="754" y="718" type="line"/>
</contour>
<contour>
<point x="930" y="0" type="line"/>
<point x="1327" y="0" type="line"/>
<point x="794" y="857" type="line"/>
<point x="538" y="656" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="L" format="2">
<unicode hex="004C"/>
<advance width="1110"/>
<outline>
<contour>
<point x="1071" y="270" type="line"/>
<point x="337" y="270" type="line"/>
<point x="337" y="0" type="line"/>
<point x="1071" y="0" type="line"/>
</contour>
<contour>
<point x="452" y="1456" type="line"/>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="M" format="2">
<unicode hex="004D"/>
<advance width="1795"/>
<outline>
<contour>
<point x="279" y="1456" type="line"/>
<point x="784" y="0" type="line"/>
<point x="1008" y="0" type="line"/>
<point x="1513" y="1456" type="line"/>
<point x="1236" y="1456" type="line"/>
<point x="896" y="443" type="line"/>
<point x="556" y="1456" type="line"/>
</contour>
<contour>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
<point x="452" y="340" type="line"/>
<point x="400" y="1456" type="line"/>
</contour>
<contour>
<point x="1392" y="1456" type="line"/>
<point x="1340" y="340" type="line"/>
<point x="1340" y="0" type="line"/>
<point x="1676" y="0" type="line"/>
<point x="1676" y="1456" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="N" format="2">
<unicode hex="004E"/>
<advance width="1441"/>
<outline>
<contour>
<point x="1323" y="1456" type="line"/>
<point x="989" y="1456" type="line"/>
<point x="989" y="550" type="line"/>
<point x="452" y="1456" type="line"/>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
<point x="452" y="906" type="line"/>
<point x="989" y="0" type="line"/>
<point x="1323" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="O" format="2">
<unicode hex="004F"/>
<advance width="1414"/>
<outline>
<contour>
<point x="1338" y="757" type="line"/>
<point x="1338" y="1202"/>
<point x="1076" y="1476"/>
<point x="706" y="1476" type="curve" smooth="yes"/>
<point x="334" y="1476"/>
<point x="75" y="1202"/>
<point x="75" y="757" type="curve"/>
<point x="75" y="698" type="line"/>
<point x="75" y="253"/>
<point x="336" y="-20"/>
<point x="708" y="-20" type="curve" smooth="yes"/>
<point x="1078" y="-20"/>
<point x="1338" y="253"/>
<point x="1338" y="698" type="curve"/>
</contour>
<contour>
<point x="998" y="698" type="line"/>
<point x="998" y="413"/>
<point x="894" y="254"/>
<point x="708" y="254" type="curve" smooth="yes"/>
<point x="517" y="254"/>
<point x="415" y="413"/>
<point x="415" y="698" type="curve" smooth="yes"/>
<point x="415" y="759" type="line" smooth="yes"/>
<point x="415" y="1047"/>
<point x="515" y="1201"/>
<point x="706" y="1201" type="curve" smooth="yes"/>
<point x="892" y="1201"/>
<point x="998" y="1047"/>
<point x="998" y="759" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="P" format="2">
<unicode hex="0050"/>
<advance width="1330"/>
<outline>
<contour>
<point x="694" y="494" type="line"/>
<point x="1042" y="494"/>
<point x="1253" y="680"/>
<point x="1253" y="962" type="curve"/>
<point x="1253" y="1247"/>
<point x="1042" y="1456"/>
<point x="694" y="1456" type="curve"/>
<point x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
<point x="452" y="1185" type="line"/>
<point x="694" y="1185" type="line"/>
<point x="849" y="1185"/>
<point x="914" y="1079"/>
<point x="914" y="960" type="curve"/>
<point x="914" y="847"/>
<point x="849" y="765"/>
<point x="694" y="765" type="curve"/>
<point x="330" y="765" type="line"/>
<point x="330" y="494" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="Q" format="2">
<unicode hex="0051"/>
<advance width="1414"/>
<outline>
<contour>
<point x="922" y="240" type="line"/>
<point x="720" y="56" type="line"/>
<point x="1116" y="-266" type="line"/>
<point x="1325" y="-82" type="line"/>
</contour>
<contour>
<point x="1339" y="757" type="line"/>
<point x="1339" y="1202"/>
<point x="1077" y="1476"/>
<point x="707" y="1476" type="curve" smooth="yes"/>
<point x="335" y="1476"/>
<point x="76" y="1202"/>
<point x="76" y="757" type="curve"/>
<point x="76" y="698" type="line"/>
<point x="76" y="253"/>
<point x="337" y="-20"/>
<point x="709" y="-20" type="curve" smooth="yes"/>
<point x="1079" y="-20"/>
<point x="1339" y="253"/>
<point x="1339" y="698" type="curve"/>
</contour>
<contour>
<point x="999" y="698" type="line"/>
<point x="999" y="413"/>
<point x="895" y="254"/>
<point x="709" y="254" type="curve" smooth="yes"/>
<point x="518" y="254"/>
<point x="416" y="413"/>
<point x="416" y="698" type="curve" smooth="yes"/>
<point x="416" y="759" type="line" smooth="yes"/>
<point x="416" y="1047"/>
<point x="516" y="1201"/>
<point x="707" y="1201" type="curve" smooth="yes"/>
<point x="893" y="1201"/>
<point x="999" y="1047"/>
<point x="999" y="759" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="R" format="2">
<unicode hex="0052"/>
<advance width="1327"/>
<outline>
<contour>
<point name="hr00" x="117" y="1456" type="line"/>
<point x="117" y="0" type="line"/>
<point x="452" y="0" type="line"/>
<point x="452" y="1185" type="line"/>
<point x="680" y="1185" type="line" smooth="yes"/>
<point x="820" y="1185"/>
<point x="892" y="1109"/>
<point x="892" y="984" type="curve" smooth="yes"/>
<point x="892" y="860"/>
<point x="821" y="785"/>
<point x="680" y="785" type="curve" smooth="yes"/>
<point x="328" y="785" type="line"/>
<point x="330" y="514" type="line"/>
<point x="806" y="514" type="line"/>
<point x="915" y="579" type="line"/>
<point x="1102" y="649"/>
<point x="1227" y="766"/>
<point x="1227" y="1016" type="curve" smooth="yes"/>
<point x="1227" y="1303"/>
<point x="1016" y="1456"/>
<point x="680" y="1456" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="919" y="0" type="line"/>
<point x="1278" y="0" type="line"/>
<point x="1278" y="15" type="line"/>
<point x="949" y="646" type="line"/>
<point x="594" y="644" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="S" format="2">
<unicode hex="0053"/>
<advance width="1275"/>
<outline>
<contour>
<point name="hr00" x="869" y="387" type="curve" smooth="yes"/>
<point x="869" y="309"/>
<point x="809" y="244"/>
<point x="669" y="244" type="curve" smooth="yes"/>
<point x="502" y="244"/>
<point x="402" y="301"/>
<point x="402" y="472" type="curve"/>
<point x="66" y="472" type="line"/>
<point x="66" y="127"/>
<point x="373" y="-20"/>
<point x="669" y="-20" type="curve" smooth="yes"/>
<point x="993" y="-20"/>
<point x="1204" y="127"/>
<point x="1204" y="389" type="curve"/>
<point x="1204" y="634"/>
<point x="1030" y="772"/>
<point x="718" y="870" type="curve"/>
<point x="545" y="924"/>
<point x="444" y="977"/>
<point x="444" y="1064" type="curve"/>
<point x="444" y="1144"/>
<point x="515" y="1211"/>
<point x="656" y="1211" type="curve" smooth="yes"/>
<point x="800" y="1211"/>
<point x="870" y="1134"/>
<point x="870" y="1024" type="curve"/>
<point x="1204" y="1024" type="line"/>
<point x="1204" y="1299"/>
<point x="983" y="1476"/>
<point x="663" y="1476" type="curve" smooth="yes"/>
<point x="343" y="1476"/>
<point x="110" y="1317"/>
<point x="110" y="1067" type="curve"/>
<point x="110" y="805"/>
<point x="344" y="685"/>
<point x="603" y="600" type="curve"/>
<point x="827" y="527"/>
<point x="869" y="478"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="T" format="2">
<unicode hex="0054"/>
<advance width="1284"/>
<outline>
<contour>
<point x="805" y="1456" type="line"/>
<point x="470" y="1456" type="line"/>
<point x="470" y="0" type="line"/>
<point x="805" y="0" type="line"/>
</contour>
<contour>
<point x="1245" y="1456" type="line"/>
<point x="38" y="1456" type="line"/>
<point x="38" y="1185" type="line"/>
<point x="1245" y="1185" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="U" format="2">
<unicode hex="0055"/>
<advance width="1357"/>
<outline>
<contour>
<point x="911" y="1456" type="line"/>
<point x="911" y="505" type="line" smooth="yes"/>
<point x="911" y="325"/>
<point x="829" y="250"/>
<point x="679" y="250" type="curve" smooth="yes"/>
<point x="530" y="250"/>
<point x="445" y="325"/>
<point x="445" y="505" type="curve" smooth="yes"/>
<point x="445" y="1456" type="line"/>
<point x="109" y="1456" type="line"/>
<point x="109" y="505" type="line"/>
<point x="109" y="164"/>
<point x="342" y="-20"/>
<point x="679" y="-20" type="curve" smooth="yes"/>
<point x="1017" y="-20"/>
<point x="1246" y="164"/>
<point x="1246" y="505" type="curve"/>
<point x="1246" y="1456" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="V" format="2">
<unicode hex="0056"/>
<advance width="1349"/>
<outline>
<contour>
<point x="659" y="343" type="line"/>
<point x="610" y="0" type="line"/>
<point x="854" y="0" type="line"/>
<point x="1350" y="1456" type="line"/>
<point x="976" y="1456" type="line"/>
</contour>
<contour>
<point x="372" y="1456" type="line"/>
<point x="0" y="1456" type="line"/>
<point x="493" y="0" type="line"/>
<point x="739" y="0" type="line"/>
<point x="688" y="343" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="W" format="2">
<unicode hex="0057"/>
<advance width="1784"/>
<outline>
<contour>
<point x="459" y="132" type="line"/>
<point x="498" y="0" type="line"/>
<point x="684" y="0" type="line"/>
<point x="993" y="1343" type="line"/>
<point x="918" y="1456" type="line"/>
<point x="748" y="1456" type="line"/>
</contour>
<contour>
<point x="359" y="1456" type="line"/>
<point x="26" y="1456" type="line"/>
<point x="340" y="0" type="line"/>
<point x="552" y="0" type="line"/>
<point x="601" y="122" type="line"/>
</contour>
<contour>
<point x="1183" y="129" type="line"/>
<point x="1230" y="0" type="line"/>
<point x="1442" y="0" type="line"/>
<point x="1755" y="1456" type="line"/>
<point x="1423" y="1456" type="line"/>
</contour>
<contour>
<point x="1032" y="1456" type="line"/>
<point x="863" y="1456" type="line"/>
<point x="785" y="1345" type="line"/>
<point x="1098" y="0" type="line"/>
<point x="1284" y="0" type="line"/>
<point x="1326" y="124" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="X" format="2">
<unicode hex="0058"/>
<advance width="1306"/>
<outline>
<contour>
<point x="404" y="1456" type="line"/>
<point x="21" y="1456" type="line"/>
<point x="433" y="734" type="line"/>
<point x="10" y="0" type="line"/>
<point x="397" y="0" type="line"/>
<point x="653" y="493" type="line"/>
<point x="909" y="0" type="line"/>
<point x="1296" y="0" type="line"/>
<point x="873" y="734" type="line"/>
<point x="1285" y="1456" type="line"/>
<point x="902" y="1456" type="line"/>
<point x="653" y="972" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="Y" format="2">
<unicode hex="0059"/>
<advance width="1280"/>
<outline>
<contour>
<point x="361" y="1456" type="line"/>
<point x="-2" y="1456" type="line"/>
<point x="470" y="523" type="line"/>
<point x="470" y="0" type="line"/>
<point x="810" y="0" type="line"/>
<point x="810" y="523" type="line"/>
<point x="1282" y="1456" type="line"/>
<point x="919" y="1456" type="line"/>
<point x="640" y="824" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="Z" format="2">
<unicode hex="005A"/>
<advance width="1247"/>
<outline>
<contour>
<point x="1195" y="270" type="line"/>
<point x="149" y="270" type="line"/>
<point x="149" y="0" type="line"/>
<point x="1195" y="0" type="line"/>
</contour>
<contour>
<point x="1185" y="1276" type="line"/>
<point x="1185" y="1456" type="line"/>
<point x="954" y="1456" type="line"/>
<point x="69" y="185" type="line"/>
<point x="69" y="0" type="line"/>
<point x="309" y="0" type="line"/>
</contour>
<contour>
<point x="1075" y="1456" type="line"/>
<point x="66" y="1456" type="line"/>
<point x="66" y="1185" type="line"/>
<point x="1075" y="1185" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="a" format="2">
<unicode hex="0061"/>
<advance width="1091"/>
<outline>
<contour>
<point name="hr00" x="670" y="272" type="line"/>
<point x="670" y="169"/>
<point x="684" y="66"/>
<point x="715" y="0" type="curve"/>
<point x="1038" y="0" type="line"/>
<point x="1038" y="17" type="line"/>
<point x="1009" y="71"/>
<point x="993" y="132"/>
<point x="993" y="273" type="curve" smooth="yes"/>
<point x="993" y="716" type="line"/>
<point x="993" y="973"/>
<point x="803" y="1102"/>
<point x="548" y="1102" type="curve" smooth="yes"/>
<point x="262" y="1102"/>
<point x="78" y="950"/>
<point x="78" y="749" type="curve"/>
<point x="400" y="749" type="line"/>
<point x="400" y="828"/>
<point x="448" y="867"/>
<point x="531" y="867" type="curve" smooth="yes"/>
<point x="629" y="867"/>
<point x="670" y="809"/>
<point x="670" y="718" type="curve"/>
</contour>
<contour>
<point x="710" y="661" type="line"/>
<point x="558" y="661" type="line"/>
<point x="216" y="661"/>
<point x="53" y="528"/>
<point x="53" y="305" type="curve" smooth="yes"/>
<point x="53" y="113"/>
<point x="218" y="-20"/>
<point x="420" y="-20" type="curve" smooth="yes"/>
<point x="627" y="-20"/>
<point x="709" y="108"/>
<point x="758" y="214" type="curve"/>
<point x="683" y="352" type="line"/>
<point x="683" y="297"/>
<point x="612" y="220"/>
<point x="495" y="220" type="curve" smooth="yes"/>
<point x="424" y="220"/>
<point x="375" y="262"/>
<point x="375" y="323" type="curve" smooth="yes"/>
<point x="375" y="405"/>
<point x="425" y="481"/>
<point x="560" y="481" type="curve"/>
<point x="712" y="481" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="b" format="2">
<unicode hex="0062"/>
<advance width="1153"/>
<outline>
<contour>
<point x="102" y="1536" type="line"/>
<point x="102" y="0" type="line"/>
<point x="391" y="0" type="line"/>
<point x="424" y="266" type="line"/>
<point x="424" y="1536" type="line"/>
</contour>
<contour>
<point x="1095" y="553" type="line"/>
<point x="1095" y="870"/>
<point x="961" y="1102"/>
<point x="673" y="1102" type="curve" smooth="yes"/>
<point x="412" y="1102"/>
<point x="306" y="856"/>
<point x="264" y="554" type="curve"/>
<point x="264" y="529" type="line"/>
<point x="306" y="225"/>
<point x="412" y="-20"/>
<point x="675" y="-20" type="curve" smooth="yes"/>
<point x="961" y="-20"/>
<point x="1095" y="205"/>
<point x="1095" y="532" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="773" y="532" type="line"/>
<point x="773" y="358"/>
<point x="745" y="239"/>
<point x="594" y="239" type="curve" smooth="yes"/>
<point x="445" y="239"/>
<point x="394" y="335"/>
<point x="394" y="502" type="curve" smooth="yes"/>
<point x="394" y="581" type="line" smooth="yes"/>
<point x="394" y="744"/>
<point x="445" y="842"/>
<point x="592" y="842" type="curve" smooth="yes"/>
<point x="741" y="842"/>
<point x="773" y="710"/>
<point x="773" y="553" type="curve" smooth="yes"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="c" format="2">
<unicode hex="0063"/>
<advance width="1066"/>
<outline>
<contour>
<point x="555" y="240" type="curve" smooth="yes"/>
<point x="404" y="240"/>
<point x="379" y="369"/>
<point x="379" y="529" type="curve" smooth="yes"/>
<point x="379" y="552" type="line" smooth="yes"/>
<point x="379" y="708"/>
<point x="405" y="842"/>
<point x="553" y="842" type="curve"/>
<point x="661" y="842"/>
<point x="714" y="765"/>
<point x="714" y="668" type="curve"/>
<point x="1016" y="668" type="line"/>
<point x="1016" y="943"/>
<point x="829" y="1102"/>
<point x="560" y="1102" type="curve" smooth="yes"/>
<point x="225" y="1102"/>
<point x="57" y="865"/>
<point x="57" y="552" type="curve" smooth="yes"/>
<point x="57" y="529" type="line" smooth="yes"/>
<point x="57" y="216"/>
<point x="225" y="-20"/>
<point x="562" y="-20" type="curve"/>
<point x="819" y="-20"/>
<point x="1016" y="142"/>
<point x="1016" y="386" type="curve"/>
<point x="714" y="386" type="line"/>
<point x="714" y="294"/>
<point x="653" y="240"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>A</key>
<string>A_.glif</string>
<key>B</key>
<string>B_.glif</string>
<key>C</key>
<string>C_.glif</string>
<key>D</key>
<string>D_.glif</string>
<key>E</key>
<string>E_.glif</string>
<key>F</key>
<string>F_.glif</string>
<key>G</key>
<string>G_.glif</string>
<key>H</key>
<string>H_.glif</string>
<key>I</key>
<string>I_.glif</string>
<key>J</key>
<string>J_.glif</string>
<key>K</key>
<string>K_.glif</string>
<key>L</key>
<string>L_.glif</string>
<key>M</key>
<string>M_.glif</string>
<key>N</key>
<string>N_.glif</string>
<key>O</key>
<string>O_.glif</string>
<key>P</key>
<string>P_.glif</string>
<key>Q</key>
<string>Q_.glif</string>
<key>R</key>
<string>R_.glif</string>
<key>S</key>
<string>S_.glif</string>
<key>T</key>
<string>T_.glif</string>
<key>U</key>
<string>U_.glif</string>
<key>V</key>
<string>V_.glif</string>
<key>W</key>
<string>W_.glif</string>
<key>X</key>
<string>X_.glif</string>
<key>Y</key>
<string>Y_.glif</string>
<key>Z</key>
<string>Z_.glif</string>
<key>a</key>
<string>a.glif</string>
<key>b</key>
<string>b.glif</string>
<key>c</key>
<string>c.glif</string>
<key>d</key>
<string>d.glif</string>
<key>e</key>
<string>e.glif</string>
<key>f</key>
<string>f.glif</string>
<key>g</key>
<string>g.glif</string>
<key>h</key>
<string>h.glif</string>
<key>i</key>
<string>i.glif</string>
<key>j</key>
<string>j.glif</string>
<key>k</key>
<string>k.glif</string>
<key>l</key>
<string>l.glif</string>
<key>m</key>
<string>m.glif</string>
<key>n</key>
<string>n.glif</string>
<key>o</key>
<string>o.glif</string>
<key>p</key>
<string>p.glif</string>
<key>q</key>
<string>q.glif</string>
<key>r</key>
<string>r.glif</string>
<key>s</key>
<string>s.glif</string>
<key>space</key>
<string>space.glif</string>
<key>t</key>
<string>t.glif</string>
<key>u</key>
<string>u.glif</string>
<key>v</key>
<string>v.glif</string>
<key>w</key>
<string>w.glif</string>
<key>x</key>
<string>x.glif</string>
<key>y</key>
<string>y.glif</string>
<key>z</key>
<string>z.glif</string>
</dict>
</plist>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="d" format="2">
<unicode hex="0064"/>
<advance width="1153"/>
<outline>
<contour>
<point x="728" y="248" type="line"/>
<point x="761" y="0" type="line"/>
<point x="1051" y="0" type="line"/>
<point x="1051" y="1536" type="line"/>
<point x="728" y="1536" type="line"/>
</contour>
<contour>
<point x="57" y="528" type="line"/>
<point x="57" y="213"/>
<point x="205" y="-20"/>
<point x="477" y="-20" type="curve" smooth="yes"/>
<point x="728" y="-20"/>
<point x="848" y="227"/>
<point x="889" y="520" type="curve"/>
<point x="889" y="545" type="line"/>
<point x="848" y="858"/>
<point x="728" y="1102"/>
<point x="479" y="1102" type="curve" smooth="yes"/>
<point x="205" y="1102"/>
<point x="57" y="878"/>
<point x="57" y="549" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="379" y="549" type="line"/>
<point x="379" y="717"/>
<point x="427" y="842"/>
<point x="561" y="842" type="curve" smooth="yes"/>
<point x="695" y="842"/>
<point x="759" y="748"/>
<point x="759" y="572" type="curve" smooth="yes"/>
<point x="759" y="493" type="line" smooth="yes"/>
<point x="759" y="339"/>
<point x="694" y="240"/>
<point x="559" y="240" type="curve" smooth="yes"/>
<point x="423" y="240"/>
<point x="379" y="366"/>
<point x="379" y="528" type="curve" smooth="yes"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="e" format="2">
<unicode hex="0065"/>
<advance width="1113"/>
<outline>
<contour>
<point x="616" y="-20" type="curve" smooth="yes"/>
<point x="825" y="-20"/>
<point x="973" y="75"/>
<point x="1041" y="170" type="curve"/>
<point x="891" y="352" type="line"/>
<point x="827" y="272"/>
<point x="733" y="240"/>
<point x="637" y="240" type="curve" smooth="yes"/>
<point x="481" y="240"/>
<point x="387" y="345"/>
<point x="387" y="505" type="curve" smooth="yes"/>
<point x="387" y="543" type="line" smooth="yes"/>
<point x="387" y="704"/>
<point x="430" y="842"/>
<point x="579" y="842" type="curve" smooth="yes"/>
<point x="694" y="842"/>
<point x="753" y="779"/>
<point x="753" y="672" type="curve" smooth="yes"/>
<point x="753" y="646" type="line"/>
<point name="hr01" x="192" y="646" type="line"/>
<point x="192" y="435" type="line"/>
<point x="1068" y="435" type="line"/>
<point x="1068" y="572" type="line" smooth="yes"/>
<point x="1068" y="897"/>
<point x="890" y="1102"/>
<point x="581" y="1102" type="curve" smooth="yes"/>
<point x="246" y="1102"/>
<point x="65" y="859"/>
<point name="hr02" x="65" y="543" type="curve" smooth="yes"/>
<point x="65" y="505" type="line" smooth="yes"/>
<point x="65" y="221"/>
<point x="268" y="-20"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="f" format="2">
<unicode hex="0066"/>
<advance width="740"/>
<outline>
<contour>
<point name="hr00" x="499" y="0" type="line"/>
<point x="499" y="1170" type="line"/>
<point x="499" y="1252"/>
<point x="555" y="1297"/>
<point x="655" y="1297" type="curve" smooth="yes"/>
<point x="691" y="1297"/>
<point x="716" y="1294"/>
<point x="740" y="1288" type="curve"/>
<point x="740" y="1536" type="line"/>
<point x="692" y="1548"/>
<point x="641" y="1557"/>
<point x="585" y="1557" type="curve" smooth="yes"/>
<point x="334" y="1557"/>
<point x="176" y="1421"/>
<point x="176" y="1170" type="curve"/>
<point x="176" y="0" type="line"/>
</contour>
<contour>
<point x="711" y="1082" type="line"/>
<point x="18" y="1082" type="line"/>
<point x="18" y="848" type="line"/>
<point x="711" y="848" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="g" format="2">
<unicode hex="0067"/>
<advance width="1176"/>
<outline>
<contour>
<point x="782" y="1082" type="line"/>
<point x="751" y="826" type="line"/>
<point x="751" y="44" type="line" smooth="yes"/>
<point x="751" y="-96"/>
<point x="669" y="-177"/>
<point x="521" y="-177" type="curve" smooth="yes"/>
<point x="411" y="-177"/>
<point x="326" y="-128"/>
<point x="268" y="-66" type="curve"/>
<point x="131" y="-264" type="line"/>
<point x="221" y="-370"/>
<point x="392" y="-426"/>
<point x="533" y="-426" type="curve" smooth="yes"/>
<point x="856" y="-426"/>
<point x="1074" y="-258"/>
<point x="1074" y="42" type="curve" smooth="yes"/>
<point x="1074" y="1082" type="line"/>
</contour>
<contour>
<point x="60" y="528" type="line"/>
<point x="60" y="213"/>
<point x="228" y="-20"/>
<point x="500" y="-20" type="curve" smooth="yes"/>
<point x="763" y="-20"/>
<point x="869" y="227"/>
<point x="912" y="520" type="curve"/>
<point x="912" y="545" type="line"/>
<point x="869" y="858"/>
<point x="795" y="1102"/>
<point x="502" y="1102" type="curve" smooth="yes"/>
<point x="228" y="1102"/>
<point x="60" y="878"/>
<point x="60" y="549" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="382" y="549" type="line"/>
<point x="382" y="717"/>
<point x="450" y="842"/>
<point x="584" y="842" type="curve" smooth="yes"/>
<point x="731" y="842"/>
<point x="792" y="748"/>
<point x="792" y="572" type="curve" smooth="yes"/>
<point x="792" y="493" type="line" smooth="yes"/>
<point x="792" y="339"/>
<point x="731" y="240"/>
<point x="582" y="240" type="curve" smooth="yes"/>
<point x="446" y="240"/>
<point x="382" y="366"/>
<point x="382" y="528" type="curve" smooth="yes"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="h" format="2">
<unicode hex="0068"/>
<advance width="1153"/>
<outline>
<contour>
<point x="415" y="1536" type="line"/>
<point x="93" y="1536" type="line"/>
<point x="93" y="0" type="line"/>
<point x="415" y="0" type="line"/>
</contour>
<contour>
<point x="374" y="578" type="line"/>
<point x="374" y="729"/>
<point x="413" y="842"/>
<point x="573" y="842" type="curve" smooth="yes"/>
<point x="674" y="842"/>
<point x="733" y="806"/>
<point x="733" y="674" type="curve" smooth="yes"/>
<point x="733" y="0" type="line"/>
<point x="1056" y="0" type="line"/>
<point x="1056" y="672" type="line" smooth="yes"/>
<point x="1056" y="986"/>
<point x="909" y="1102"/>
<point x="695" y="1102" type="curve" smooth="yes"/>
<point x="454" y="1102"/>
<point x="295" y="880"/>
<point x="295" y="576" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="i" format="2">
<unicode hex="0069"/>
<advance width="557"/>
<outline>
<contour>
<point x="440" y="1082" type="line"/>
<point x="117" y="1082" type="line"/>
<point x="117" y="0" type="line"/>
<point x="440" y="0" type="line"/>
</contour>
<contour>
<point x="98" y="1361" type="curve" smooth="yes"/>
<point x="98" y="1265"/>
<point x="170" y="1197"/>
<point x="277" y="1197" type="curve" smooth="yes"/>
<point x="384" y="1197"/>
<point x="456" y="1265"/>
<point x="456" y="1361" type="curve" smooth="yes"/>
<point x="456" y="1457"/>
<point x="384" y="1525"/>
<point x="277" y="1525" type="curve" smooth="yes"/>
<point x="170" y="1525"/>
<point x="98" y="1457"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="j" format="2">
<unicode hex="006A"/>
<advance width="547"/>
<outline>
<contour>
<point x="122" y="1082" type="line"/>
<point x="122" y="-35" type="line"/>
<point x="122" y="-129"/>
<point x="73" y="-174"/>
<point x="-16" y="-174" type="curve" smooth="yes"/>
<point x="-49" y="-174"/>
<point x="-77" y="-170"/>
<point x="-110" y="-165" type="curve"/>
<point x="-110" y="-420" type="line"/>
<point x="-55" y="-433"/>
<point x="-10" y="-437"/>
<point x="45" y="-437" type="curve" smooth="yes"/>
<point x="294" y="-437"/>
<point x="445" y="-295"/>
<point x="445" y="-35" type="curve"/>
<point x="445" y="1082" type="line"/>
</contour>
<contour>
<point x="98" y="1361" type="curve" smooth="yes"/>
<point x="98" y="1265"/>
<point x="170" y="1197"/>
<point x="277" y="1197" type="curve" smooth="yes"/>
<point x="384" y="1197"/>
<point x="456" y="1265"/>
<point x="456" y="1361" type="curve" smooth="yes"/>
<point x="456" y="1457"/>
<point x="384" y="1525"/>
<point x="277" y="1525" type="curve" smooth="yes"/>
<point x="170" y="1525"/>
<point x="98" y="1457"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="k" format="2">
<unicode hex="006B"/>
<advance width="1112"/>
<outline>
<contour>
<point x="424" y="1537" type="line"/>
<point x="102" y="1537" type="line"/>
<point x="102" y="0" type="line"/>
<point x="424" y="0" type="line"/>
</contour>
<contour>
<point x="1112" y="1082" type="line"/>
<point x="726" y="1082" type="line"/>
<point x="465" y="766" type="line"/>
<point x="261" y="499" type="line"/>
<point x="394" y="285" type="line"/>
<point x="643" y="531" type="line"/>
</contour>
<contour>
<point x="771" y="0" type="line"/>
<point x="1140" y="0" type="line"/>
<point x="706" y="670" type="line"/>
<point x="473" y="493" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="l" format="2">
<unicode hex="006C"/>
<advance width="557"/>
<outline>
<contour>
<point x="440" y="1536" type="line"/>
<point x="117" y="1536" type="line"/>
<point x="117" y="0" type="line"/>
<point x="440" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="m" format="2">
<unicode hex="006D"/>
<advance width="1767"/>
<outline>
<contour>
<point x="424" y="853" type="line"/>
<point x="404" y="1082" type="line"/>
<point x="102" y="1082" type="line"/>
<point x="102" y="0" type="line"/>
<point x="424" y="0" type="line"/>
</contour>
<contour>
<point x="383" y="578" type="line"/>
<point x="383" y="729"/>
<point x="452" y="842"/>
<point x="581" y="842" type="curve" smooth="yes"/>
<point x="670" y="842"/>
<point x="722" y="816"/>
<point x="722" y="679" type="curve"/>
<point x="722" y="0" type="line"/>
<point x="1044" y="0" type="line"/>
<point x="1044" y="722" type="line"/>
<point x="1044" y="992"/>
<point x="914" y="1102"/>
<point x="724" y="1102" type="curve" smooth="yes"/>
<point x="450" y="1102"/>
<point x="304" y="880"/>
<point x="304" y="576" type="curve"/>
</contour>
<contour>
<point x="1010" y="578" type="line"/>
<point x="1010" y="729"/>
<point x="1072" y="842"/>
<point x="1202" y="842" type="curve" smooth="yes"/>
<point x="1289" y="842"/>
<point x="1342" y="815"/>
<point x="1342" y="681" type="curve" smooth="yes"/>
<point x="1342" y="0" type="line"/>
<point x="1665" y="0" type="line"/>
<point x="1665" y="681" type="line" smooth="yes"/>
<point x="1665" y="995"/>
<point x="1526" y="1102"/>
<point x="1324" y="1102" type="curve" smooth="yes"/>
<point x="1050" y="1102"/>
<point x="911" y="880"/>
<point x="911" y="576" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="n" format="2">
<unicode hex="006E"/>
<advance width="1153"/>
<outline>
<contour>
<point x="416" y="851" type="line"/>
<point x="396" y="1082" type="line"/>
<point x="94" y="1082" type="line"/>
<point x="94" y="0" type="line"/>
<point x="416" y="0" type="line"/>
</contour>
<contour>
<point x="375" y="578" type="line"/>
<point x="375" y="729"/>
<point x="431" y="842"/>
<point x="574" y="842" type="curve" smooth="yes"/>
<point x="675" y="842"/>
<point x="733" y="812"/>
<point x="733" y="682" type="curve"/>
<point x="733" y="0" type="line"/>
<point x="1056" y="0" type="line"/>
<point x="1056" y="681" type="line"/>
<point x="1056" y="995"/>
<point x="918" y="1102"/>
<point x="716" y="1102" type="curve" smooth="yes"/>
<point x="464" y="1102"/>
<point x="296" y="907"/>
<point x="296" y="576" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="o" format="2">
<unicode hex="006F"/>
<advance width="1153"/>
<outline>
<contour>
<point x="57" y="530" type="line"/>
<point x="57" y="214"/>
<point x="241" y="-20"/>
<point x="577" y="-20" type="curve" smooth="yes"/>
<point x="912" y="-20"/>
<point x="1095" y="214"/>
<point x="1095" y="530" type="curve"/>
<point x="1095" y="551" type="line"/>
<point x="1095" y="867"/>
<point x="912" y="1102"/>
<point x="575" y="1102" type="curve" smooth="yes"/>
<point x="241" y="1102"/>
<point x="57" y="867"/>
<point x="57" y="551" type="curve"/>
</contour>
<contour>
<point x="379" y="551" type="line"/>
<point x="379" y="709"/>
<point x="427" y="842"/>
<point x="575" y="842" type="curve" smooth="yes"/>
<point x="726" y="842"/>
<point x="773" y="709"/>
<point x="773" y="551" type="curve"/>
<point x="773" y="530" type="line"/>
<point x="773" y="367"/>
<point x="725" y="240"/>
<point x="577" y="240" type="curve" smooth="yes"/>
<point x="426" y="240"/>
<point x="379" y="367"/>
<point x="379" y="530" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="p" format="2">
<unicode hex="0070"/>
<advance width="1153"/>
<outline>
<contour>
<point x="424" y="874" type="line"/>
<point x="402" y="1082" type="line"/>
<point x="102" y="1082" type="line"/>
<point x="102" y="-416" type="line"/>
<point x="424" y="-416" type="line"/>
</contour>
<contour>
<point x="1095" y="554" type="line"/>
<point x="1095" y="883"/>
<point x="948" y="1102"/>
<point x="673" y="1102" type="curve" smooth="yes"/>
<point x="412" y="1102"/>
<point x="306" y="863"/>
<point x="264" y="550" type="curve"/>
<point x="264" y="523" type="line"/>
<point x="306" y="231"/>
<point x="412" y="-20"/>
<point x="675" y="-20" type="curve" smooth="yes"/>
<point x="948" y="-20"/>
<point x="1095" y="218"/>
<point x="1095" y="533" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="773" y="533" type="line"/>
<point x="773" y="371"/>
<point x="729" y="240"/>
<point x="594" y="240" type="curve" smooth="yes"/>
<point x="445" y="240"/>
<point x="394" y="343"/>
<point x="394" y="495" type="curve" smooth="yes"/>
<point x="394" y="577" type="line" smooth="yes"/>
<point x="394" y="753"/>
<point x="445" y="842"/>
<point x="592" y="842" type="curve" smooth="yes"/>
<point x="725" y="842"/>
<point x="773" y="722"/>
<point x="773" y="554" type="curve" smooth="yes"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="q" format="2">
<unicode hex="0071"/>
<advance width="1153"/>
<outline>
<contour>
<point x="728" y="-416" type="line"/>
<point x="1051" y="-416" type="line"/>
<point x="1051" y="1082" type="line"/>
<point x="771" y="1082" type="line"/>
<point x="728" y="855" type="line"/>
</contour>
<contour>
<point x="57" y="531" type="line"/>
<point x="57" y="216"/>
<point x="205" y="-20"/>
<point x="477" y="-20" type="curve" smooth="yes"/>
<point x="740" y="-20"/>
<point x="846" y="230"/>
<point x="889" y="523" type="curve"/>
<point x="889" y="548" type="line"/>
<point x="846" y="861"/>
<point x="740" y="1102"/>
<point x="479" y="1102" type="curve" smooth="yes"/>
<point x="205" y="1102"/>
<point x="57" y="881"/>
<point x="57" y="552" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="379" y="552" type="line"/>
<point x="379" y="720"/>
<point x="427" y="842"/>
<point x="561" y="842" type="curve" smooth="yes"/>
<point x="708" y="842"/>
<point x="759" y="751"/>
<point x="759" y="575" type="curve" smooth="yes"/>
<point x="759" y="496" type="line" smooth="yes"/>
<point x="759" y="342"/>
<point x="708" y="240"/>
<point x="559" y="240" type="curve" smooth="yes"/>
<point x="423" y="240"/>
<point x="379" y="369"/>
<point x="379" y="531" type="curve" smooth="yes"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="r" format="2">
<unicode hex="0072"/>
<advance width="767"/>
<outline>
<contour>
<point x="424" y="814" type="line"/>
<point x="404" y="1082" type="line"/>
<point x="102" y="1082" type="line"/>
<point x="102" y="0" type="line"/>
<point x="424" y="0" type="line"/>
</contour>
<contour>
<point x="745" y="1090" type="line"/>
<point x="721" y="1098"/>
<point x="685" y="1102"/>
<point x="653" y="1102" type="curve"/>
<point x="459" y="1102"/>
<point x="343" y="902"/>
<point x="343" y="612" type="curve"/>
<point x="403" y="572" type="line"/>
<point x="403" y="714"/>
<point x="472" y="785"/>
<point x="631" y="785" type="curve"/>
<point x="661" y="785"/>
<point x="712" y="780"/>
<point x="740" y="777" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="s" format="2">
<unicode hex="0073"/>
<advance width="1051"/>
<outline>
<contour>
<point x="673" y="304" type="curve" smooth="yes"/>
<point x="673" y="244"/>
<point x="622" y="203"/>
<point x="525" y="203" type="curve" smooth="yes"/>
<point x="424" y="203"/>
<point x="348" y="247"/>
<point x="344" y="347" type="curve"/>
<point x="42" y="347" type="line"/>
<point x="42" y="173"/>
<point x="208" y="-20"/>
<point x="517" y="-20" type="curve" smooth="yes"/>
<point x="803" y="-20"/>
<point x="984" y="123"/>
<point x="984" y="314" type="curve"/>
<point x="984" y="543"/>
<point x="792" y="619"/>
<point x="569" y="659" type="curve" smooth="yes"/>
<point x="435" y="683"/>
<point x="382" y="719"/>
<point x="382" y="777" type="curve"/>
<point x="382" y="839"/>
<point x="438" y="880"/>
<point x="516" y="880" type="curve" smooth="yes"/>
<point x="620" y="880"/>
<point x="662" y="832"/>
<point x="662" y="750" type="curve"/>
<point x="984" y="750" type="line"/>
<point x="984" y="958"/>
<point x="805" y="1102"/>
<point x="517" y="1102" type="curve" smooth="yes"/>
<point x="238" y="1102"/>
<point x="76" y="943"/>
<point x="76" y="760" type="curve"/>
<point x="76" y="570"/>
<point x="243" y="472"/>
<point x="458" y="426" type="curve" smooth="yes"/>
<point x="629" y="389"/>
<point x="673" y="359"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="space" format="1">
<advance width="510"/>
<unicode hex="0020"/>
<outline>
</outline>
<lib>
<dict>
<key>com.typemytype.robofont.guides</key>
<array>
<dict>
<key>angle</key>
<real>0</real>
<key>isGlobal</key>
<false/>
<key>magnetic</key>
<integer>5</integer>
<key>x</key>
<real>0</real>
<key>y</key>
<real>901</real>
</dict>
<dict>
<key>angle</key>
<real>0</real>
<key>isGlobal</key>
<false/>
<key>magnetic</key>
<integer>5</integer>
<key>x</key>
<real>0</real>
<key>y</key>
<real>555</real>
</dict>
</array>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="t" format="2">
<unicode hex="0074"/>
<advance width="700"/>
<outline>
<contour>
<point x="658" y="1082" type="line"/>
<point x="12" y="1082" type="line"/>
<point x="12" y="848" type="line"/>
<point x="658" y="848" type="line"/>
</contour>
<contour>
<point x="156" y="1351" type="line"/>
<point x="156" y="311" type="line"/>
<point x="156" y="76"/>
<point x="279" y="-20"/>
<point x="487" y="-20" type="curve" smooth="yes"/>
<point x="558" y="-20"/>
<point x="617" y="-10"/>
<point x="672" y="9" type="curve"/>
<point x="672" y="250" type="line"/>
<point x="650" y="246"/>
<point x="625" y="244"/>
<point x="588" y="244" type="curve" smooth="yes"/>
<point x="508" y="244"/>
<point x="478" y="267"/>
<point x="478" y="353" type="curve"/>
<point x="478" y="1351" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="u" format="2">
<unicode hex="0075"/>
<advance width="1153"/>
<outline>
<contour>
<point x="734" y="263" type="line"/>
<point x="755" y="0" type="line"/>
<point x="1057" y="0" type="line"/>
<point x="1057" y="1082" type="line"/>
<point x="734" y="1082" type="line"/>
</contour>
<contour>
<point x="767" y="483" type="line"/>
<point x="767" y="344"/>
<point x="718" y="240"/>
<point x="557" y="240" type="curve" smooth="yes"/>
<point x="469" y="240"/>
<point x="416" y="285"/>
<point x="416" y="380" type="curve"/>
<point x="416" y="1082" type="line"/>
<point x="94" y="1082" type="line"/>
<point x="94" y="382" type="line"/>
<point x="94" y="96"/>
<point x="241" y="-20"/>
<point x="455" y="-20" type="curve" smooth="yes"/>
<point x="716" y="-20"/>
<point x="854" y="194"/>
<point x="854" y="485" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="v" format="2">
<unicode hex="0076"/>
<advance width="1051"/>
<outline>
<contour>
<point x="483" y="231" type="line"/>
<point x="483" y="0" type="line"/>
<point x="685" y="0" type="line"/>
<point x="1042" y="1082" type="line"/>
<point x="704" y="1082" type="line"/>
</contour>
<contour>
<point x="345" y="1082" type="line"/>
<point x="6" y="1082" type="line"/>
<point x="363" y="0" type="line"/>
<point x="565" y="0" type="line"/>
<point x="565" y="231" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="w" format="2">
<unicode hex="0077"/>
<advance width="1493"/>
<outline>
<contour>
<point x="422" y="322" type="line"/>
<point x="392" y="0" type="line"/>
<point x="557" y="0" type="line"/>
<point x="764" y="701" type="line"/>
<point x="833" y="1082" type="line"/>
<point x="631" y="1082" type="line"/>
</contour>
<contour>
<point x="333" y="1082" type="line"/>
<point x="24" y="1082" type="line"/>
<point x="286" y="0" type="line"/>
<point x="483" y="0" type="line"/>
<point x="470" y="328" type="line"/>
</contour>
<contour>
<point x="1019" y="344" type="line"/>
<point x="1007" y="0" type="line"/>
<point x="1204" y="0" type="line"/>
<point x="1465" y="1082" type="line"/>
<point x="1156" y="1082" type="line"/>
</contour>
<contour>
<point x="858" y="1082" type="line"/>
<point x="661" y="1082" type="line"/>
<point x="727" y="699" type="line"/>
<point x="932" y="0" type="line"/>
<point x="1098" y="0" type="line"/>
<point x="1068" y="324" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="x" format="2">
<unicode hex="0078"/>
<advance width="1051"/>
<outline>
<contour>
<point x="370" y="1082" type="line"/>
<point x="30" y="1082" type="line"/>
<point x="321" y="555" type="line"/>
<point x="15" y="0" type="line"/>
<point x="355" y="0" type="line"/>
<point x="530" y="320" type="line"/>
<point x="707" y="0" type="line"/>
<point x="1046" y="0" type="line"/>
<point x="740" y="555" type="line"/>
<point x="1032" y="1082" type="line"/>
<point x="695" y="1082" type="line"/>
<point x="530" y="784" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="y" format="2">
<unicode hex="0079"/>
<advance width="1051"/>
<outline>
<contour>
<point x="428" y="127" type="line"/>
<point x="347" y="-82" type="line"/>
<point x="324" y="-143"/>
<point x="285" y="-176"/>
<point x="175" y="-176" type="curve" smooth="yes"/>
<point x="160" y="-176"/>
<point x="147" y="-176"/>
<point x="131" y="-176" type="curve"/>
<point x="131" y="-417" type="line"/>
<point x="187" y="-432"/>
<point x="205" y="-437"/>
<point x="267" y="-437" type="curve" smooth="yes"/>
<point x="508" y="-437"/>
<point x="583" y="-270"/>
<point x="621" y="-161" type="curve" smooth="yes"/>
<point x="1055" y="1082" type="line"/>
<point x="710" y="1082" type="line"/>
</contour>
<contour>
<point x="343" y="1082" type="line"/>
<point x="-2" y="1082" type="line"/>
<point x="384" y="-32" type="line"/>
<point x="600" y="-32" type="line"/>
<point x="562" y="325" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="z" format="2">
<unicode hex="007A"/>
<advance width="1051"/>
<outline>
<contour>
<point x="981" y="260" type="line"/>
<point x="149" y="260" type="line"/>
<point x="149" y="0" type="line"/>
<point x="981" y="0" type="line"/>
</contour>
<contour>
<point x="969" y="900" type="line"/>
<point x="969" y="1082" type="line"/>
<point x="749" y="1082" type="line"/>
<point x="69" y="188" type="line"/>
<point x="69" y="0" type="line"/>
<point x="288" y="0" type="line"/>
</contour>
<contour>
<point x="861" y="1082" type="line"/>
<point x="88" y="1082" type="line"/>
<point x="88" y="822" type="line"/>
<point x="861" y="822" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<array>
<string>public.default</string>
<string>glyphs</string>
</array>
</array>
</plist>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>public.glyphOrder</key>
<array>
<string>space</string>
<string>A</string>
<string>B</string>
<string>C</string>
<string>D</string>
<string>E</string>
<string>F</string>
<string>G</string>
<string>H</string>
<string>I</string>
<string>J</string>
<string>K</string>
<string>L</string>
<string>M</string>
<string>N</string>
<string>O</string>
<string>P</string>
<string>Q</string>
<string>R</string>
<string>S</string>
<string>T</string>
<string>U</string>
<string>V</string>
<string>W</string>
<string>X</string>
<string>Y</string>
<string>Z</string>
<string>a</string>
<string>b</string>
<string>c</string>
<string>d</string>
<string>e</string>
<string>f</string>
<string>g</string>
<string>h</string>
<string>i</string>
<string>j</string>
<string>k</string>
<string>l</string>
<string>m</string>
<string>n</string>
<string>o</string>
<string>p</string>
<string>q</string>
<string>r</string>
<string>s</string>
<string>t</string>
<string>u</string>
<string>v</string>
<string>w</string>
<string>x</string>
<string>y</string>
<string>z</string>
</array>
</dict>
</plist>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>creator</key>
<string>org.robofab.ufoLib</string>
<key>formatVersion</key>
<integer>3</integer>
</dict>
</plist>

View File

@ -0,0 +1,214 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ascender</key>
<integer>2146</integer>
<key>capHeight</key>
<integer>1456</integer>
<key>copyright</key>
<string>Copyright 2011 Google Inc. All Rights Reserved.</string>
<key>descender</key>
<integer>-555</integer>
<key>familyName</key>
<string>RobotoSubset</string>
<key>guidelines</key>
<array>
</array>
<key>italicAngle</key>
<integer>0</integer>
<key>openTypeHeadCreated</key>
<string>2008/09/12 12:29:34</string>
<key>openTypeHeadFlags</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>3</integer>
<integer>4</integer>
</array>
<key>openTypeHeadLowestRecPPEM</key>
<integer>9</integer>
<key>openTypeHheaAscender</key>
<integer>1900</integer>
<key>openTypeHheaDescender</key>
<integer>-500</integer>
<key>openTypeHheaLineGap</key>
<integer>0</integer>
<key>openTypeNameDescription</key>
<string></string>
<key>openTypeNameDesigner</key>
<string></string>
<key>openTypeNameDesignerURL</key>
<string></string>
<key>openTypeNameLicense</key>
<string></string>
<key>openTypeNameLicenseURL</key>
<string></string>
<key>openTypeNameManufacturer</key>
<string></string>
<key>openTypeNameManufacturerURL</key>
<string></string>
<key>openTypeNameSampleText</key>
<string></string>
<key>openTypeOS2CodePageRanges</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
<integer>4</integer>
<integer>7</integer>
<integer>8</integer>
<integer>29</integer>
</array>
<key>openTypeOS2FamilyClass</key>
<array>
<integer>0</integer>
<integer>0</integer>
</array>
<key>openTypeOS2Panose</key>
<array>
<integer>2</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
<integer>0</integer>
</array>
<key>openTypeOS2Selection</key>
<array>
</array>
<key>openTypeOS2StrikeoutPosition</key>
<integer>512</integer>
<key>openTypeOS2StrikeoutSize</key>
<integer>102</integer>
<key>openTypeOS2SubscriptXOffset</key>
<integer>0</integer>
<key>openTypeOS2SubscriptXSize</key>
<integer>1434</integer>
<key>openTypeOS2SubscriptYOffset</key>
<integer>287</integer>
<key>openTypeOS2SubscriptYSize</key>
<integer>1331</integer>
<key>openTypeOS2SuperscriptXOffset</key>
<integer>0</integer>
<key>openTypeOS2SuperscriptXSize</key>
<integer>1434</integer>
<key>openTypeOS2SuperscriptYOffset</key>
<integer>977</integer>
<key>openTypeOS2SuperscriptYSize</key>
<integer>1331</integer>
<key>openTypeOS2Type</key>
<array>
</array>
<key>openTypeOS2TypoAscender</key>
<integer>2146</integer>
<key>openTypeOS2TypoDescender</key>
<integer>-555</integer>
<key>openTypeOS2TypoLineGap</key>
<integer>0</integer>
<key>openTypeOS2UnicodeRanges</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
<integer>4</integer>
<integer>5</integer>
<integer>6</integer>
<integer>7</integer>
<integer>9</integer>
<integer>11</integer>
<integer>29</integer>
<integer>30</integer>
<integer>31</integer>
<integer>32</integer>
<integer>33</integer>
<integer>34</integer>
<integer>35</integer>
<integer>36</integer>
<integer>37</integer>
<integer>38</integer>
<integer>40</integer>
<integer>45</integer>
<integer>60</integer>
<integer>62</integer>
<integer>64</integer>
<integer>69</integer>
</array>
<key>openTypeOS2VendorID</key>
<string>GOOG</string>
<key>openTypeOS2WeightClass</key>
<integer>400</integer>
<key>openTypeOS2WidthClass</key>
<integer>5</integer>
<key>openTypeOS2WinAscent</key>
<integer>2146</integer>
<key>openTypeOS2WinDescent</key>
<integer>555</integer>
<key>postscriptBlueFuzz</key>
<integer>1</integer>
<key>postscriptBlueScale</key>
<real>0.039625</real>
<key>postscriptBlueShift</key>
<integer>7</integer>
<key>postscriptBlueValues</key>
<array>
<integer>-20</integer>
<integer>0</integer>
<integer>1082</integer>
<integer>1102</integer>
<integer>1456</integer>
<integer>1476</integer>
</array>
<key>postscriptDefaultCharacter</key>
<string>space</string>
<key>postscriptFamilyBlues</key>
<array>
</array>
<key>postscriptFamilyOtherBlues</key>
<array>
</array>
<key>postscriptForceBold</key>
<false/>
<key>postscriptIsFixedPitch</key>
<false/>
<key>postscriptOtherBlues</key>
<array>
<integer>-436</integer>
<integer>-416</integer>
</array>
<key>postscriptStemSnapH</key>
<array>
<integer>154</integer>
</array>
<key>postscriptStemSnapV</key>
<array>
<integer>196</integer>
</array>
<key>postscriptUnderlinePosition</key>
<integer>-150</integer>
<key>postscriptUnderlineThickness</key>
<integer>100</integer>
<key>postscriptUniqueID</key>
<integer>-1</integer>
<key>styleName</key>
<string>Regular</string>
<key>trademark</key>
<string></string>
<key>unitsPerEm</key>
<integer>2048</integer>
<key>versionMajor</key>
<integer>1</integer>
<key>versionMinor</key>
<integer>0</integer>
<key>xHeight</key>
<integer>1082</integer>
<key>year</key>
<integer>2017</integer>
</dict>
</plist>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="A" format="2">
<unicode hex="0041"/>
<advance width="1349"/>
<outline>
<contour>
<point x="718" y="1320" type="line"/>
<point x="720" y="1456" type="line"/>
<point x="585" y="1456" type="line"/>
<point x="28" y="0" type="line"/>
<point x="241" y="0" type="line"/>
</contour>
<contour>
<point x="1110" y="0" type="line"/>
<point x="1323" y="0" type="line"/>
<point x="765" y="1456" type="line"/>
<point x="630" y="1456" type="line"/>
<point x="632" y="1320" type="line"/>
</contour>
<contour>
<point x="1099" y="543" type="line"/>
<point x="271" y="543" type="line"/>
<point x="271" y="376" type="line"/>
<point x="1099" y="376" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="B" format="2">
<unicode hex="0042"/>
<advance width="1280"/>
<outline>
<contour>
<point x="688" y="678" type="line"/>
<point x="755" y="726" type="line"/>
<point x="976" y="752"/>
<point x="1128" y="887"/>
<point x="1128" y="1067" type="curve"/>
<point x="1128" y="1339"/>
<point x="951" y="1456"/>
<point x="653" y="1456" type="curve"/>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
<point x="374" y="1289" type="line"/>
<point x="653" y="1289" type="line"/>
<point x="834" y="1289"/>
<point x="920" y="1224"/>
<point x="920" y="1068" type="curve"/>
<point x="920" y="927"/>
<point x="812" y="841"/>
<point x="657" y="841" type="curve"/>
<point x="327" y="841" type="line"/>
<point x="329" y="678" type="line"/>
</contour>
<contour>
<point x="679" y="0" type="line"/>
<point x="973" y="0"/>
<point x="1164" y="148"/>
<point x="1164" y="422" type="curve" smooth="yes"/>
<point x="1164" y="610"/>
<point x="1048" y="764"/>
<point x="835" y="782" type="curve"/>
<point x="790" y="841" type="line"/>
<point x="411" y="841" type="line"/>
<point x="409" y="678" type="line"/>
<point x="688" y="678" type="line" smooth="yes"/>
<point x="877" y="678"/>
<point x="956" y="581"/>
<point x="956" y="420" type="curve" smooth="yes"/>
<point x="956" y="265"/>
<point x="855" y="166"/>
<point x="679" y="166" type="curve" smooth="yes"/>
<point x="364" y="166" type="line"/>
<point x="244" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="C" format="2">
<unicode hex="0043"/>
<advance width="1334"/>
<outline>
<contour>
<point x="1038" y="464" type="line"/>
<point x="1005" y="266"/>
<point x="933" y="146"/>
<point x="690" y="146" type="curve" smooth="yes"/>
<point x="434" y="146"/>
<point x="325" y="378"/>
<point x="325" y="658" type="curve" smooth="yes"/>
<point x="325" y="799" type="line" smooth="yes"/>
<point x="325" y="1104"/>
<point x="454" y="1309"/>
<point x="709" y="1309" type="curve" smooth="yes"/>
<point x="928" y="1309"/>
<point x="1009" y="1184"/>
<point x="1038" y="987" type="curve"/>
<point x="1246" y="987" type="line"/>
<point x="1216" y="1272"/>
<point x="1043" y="1476"/>
<point x="709" y="1476" type="curve" smooth="yes"/>
<point x="344" y="1476"/>
<point x="117" y="1207"/>
<point x="117" y="797" type="curve"/>
<point x="117" y="658" type="line"/>
<point x="117" y="248"/>
<point x="345" y="-20"/>
<point x="690" y="-20" type="curve" smooth="yes"/>
<point x="1046" y="-20"/>
<point x="1215" y="192"/>
<point x="1246" y="464" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="D" format="2">
<unicode hex="0044"/>
<advance width="1344"/>
<outline>
<contour>
<point x="559" y="0" type="line"/>
<point x="969" y="0"/>
<point x="1225" y="263"/>
<point x="1225" y="688" type="curve"/>
<point x="1225" y="767" type="line"/>
<point x="1225" y="1192"/>
<point x="965" y="1456"/>
<point x="578" y="1456" type="curve"/>
<point x="254" y="1456" type="line"/>
<point x="254" y="1289" type="line"/>
<point x="578" y="1289" type="line"/>
<point x="863" y="1289"/>
<point x="1019" y="1102"/>
<point x="1019" y="769" type="curve"/>
<point x="1019" y="688" type="line" smooth="yes"/>
<point x="1019" y="371"/>
<point x="869" y="166"/>
<point x="559" y="166" type="curve"/>
<point x="262" y="166" type="line"/>
<point x="260" y="0" type="line"/>
</contour>
<contour>
<point x="374" y="1456" type="line"/>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="E" format="2">
<unicode hex="0045"/>
<advance width="1164"/>
<outline>
<contour>
<point x="1095" y="166" type="line"/>
<point x="335" y="166" type="line"/>
<point x="335" y="0" type="line"/>
<point x="1095" y="0" type="line"/>
</contour>
<contour>
<point x="374" y="1456" type="line"/>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
</contour>
<contour>
<point x="993" y="835" type="line"/>
<point x="335" y="835" type="line"/>
<point x="335" y="669" type="line"/>
<point x="993" y="669" type="line"/>
</contour>
<contour>
<point x="1084" y="1456" type="line"/>
<point x="335" y="1456" type="line"/>
<point x="335" y="1289" type="line"/>
<point x="1084" y="1289" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="F" format="2">
<unicode hex="0046"/>
<advance width="1128"/>
<outline>
<contour>
<point x="374" y="1456" type="line"/>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
</contour>
<contour>
<point x="969" y="803" type="line"/>
<point x="332" y="803" type="line"/>
<point x="332" y="637" type="line"/>
<point x="969" y="637" type="line"/>
</contour>
<contour>
<point x="1068" y="1456" type="line"/>
<point x="332" y="1456" type="line"/>
<point x="332" y="1289" type="line"/>
<point x="1068" y="1289" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="G" format="2">
<unicode hex="0047"/>
<advance width="1394"/>
<outline>
<contour>
<point x="1247" y="731" type="line"/>
<point x="715" y="731" type="line"/>
<point x="715" y="566" type="line"/>
<point x="1040" y="566" type="line"/>
<point x="1040" y="248" type="line"/>
<point x="1002" y="206"/>
<point x="934" y="146"/>
<point x="731" y="146" type="curve" smooth="yes"/>
<point x="489" y="146"/>
<point x="326" y="341"/>
<point x="326" y="676" type="curve" smooth="yes"/>
<point x="326" y="781" type="line" smooth="yes"/>
<point x="326" y="1108"/>
<point x="440" y="1309"/>
<point x="708" y="1309" type="curve" smooth="yes"/>
<point x="922" y="1309"/>
<point x="1012" y="1181"/>
<point x="1039" y="1027" type="curve"/>
<point x="1247" y="1027" type="line"/>
<point x="1209" y="1287"/>
<point x="1042" y="1476"/>
<point x="707" y="1476" type="curve" smooth="yes"/>
<point x="325" y="1476"/>
<point x="117" y="1219"/>
<point x="117" y="779" type="curve" smooth="yes"/>
<point x="117" y="676" type="line" smooth="yes"/>
<point x="117" y="236"/>
<point x="373" y="-20"/>
<point x="730" y="-20" type="curve" smooth="yes"/>
<point x="1061" y="-20"/>
<point x="1191" y="114"/>
<point x="1247" y="195" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="H" format="2">
<unicode hex="0048"/>
<advance width="1463"/>
<outline>
<contour>
<point x="1110" y="835" type="line"/>
<point x="344" y="835" type="line"/>
<point x="344" y="669" type="line"/>
<point x="1110" y="669" type="line"/>
</contour>
<contour>
<point x="374" y="1456" type="line"/>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
</contour>
<contour>
<point x="1294" y="1456" type="line"/>
<point x="1086" y="1456" type="line"/>
<point x="1086" y="0" type="line"/>
<point x="1294" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="I" format="2">
<unicode hex="0049"/>
<advance width="560"/>
<outline>
<contour>
<point x="385" y="1456" type="line"/>
<point x="177" y="1456" type="line"/>
<point x="177" y="0" type="line"/>
<point x="385" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="J" format="2">
<unicode hex="004A"/>
<advance width="1131"/>
<outline>
<contour>
<point x="769" y="424" type="line"/>
<point x="769" y="242"/>
<point x="660" y="146"/>
<point x="513" y="146" type="curve" smooth="yes"/>
<point x="366" y="146"/>
<point x="257" y="224"/>
<point x="257" y="403" type="curve"/>
<point x="49" y="403" type="line"/>
<point x="49" y="116"/>
<point x="244" y="-20"/>
<point x="513" y="-20" type="curve" smooth="yes"/>
<point x="784" y="-20"/>
<point x="977" y="136"/>
<point x="977" y="424" type="curve"/>
<point x="977" y="1456" type="line"/>
<point x="769" y="1456" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="K" format="2">
<unicode hex="004B"/>
<advance width="1283"/>
<outline>
<contour>
<point x="374" y="1456" type="line"/>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
</contour>
<contour>
<point x="1248" y="1456" type="line"/>
<point x="999" y="1456" type="line"/>
<point x="523" y="918" type="line"/>
<point x="267" y="632" type="line"/>
<point x="303" y="415" type="line"/>
<point x="648" y="775" type="line"/>
</contour>
<contour>
<point x="1044" y="0" type="line"/>
<point x="1292" y="0" type="line"/>
<point x="645" y="866" type="line"/>
<point x="521" y="703" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="L" format="2">
<unicode hex="004C"/>
<advance width="1108"/>
<outline>
<contour>
<point x="1058" y="166" type="line"/>
<point x="335" y="166" type="line"/>
<point x="335" y="0" type="line"/>
<point x="1058" y="0" type="line"/>
</contour>
<contour>
<point x="374" y="1456" type="line"/>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="M" format="2">
<unicode hex="004D"/>
<advance width="1792"/>
<outline>
<contour>
<point x="231" y="1456" type="line"/>
<point x="816" y="0" type="line"/>
<point x="974" y="0" type="line"/>
<point x="1560" y="1456" type="line"/>
<point x="1358" y="1456" type="line"/>
<point x="896" y="285" type="line"/>
<point x="433" y="1456" type="line"/>
</contour>
<contour>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="373" y="0" type="line"/>
<point x="373" y="556" type="line"/>
<point x="343" y="1456" type="line"/>
</contour>
<contour>
<point x="1448" y="1456" type="line"/>
<point x="1418" y="556" type="line"/>
<point x="1418" y="0" type="line"/>
<point x="1625" y="0" type="line"/>
<point x="1625" y="1456" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="N" format="2">
<unicode hex="004E"/>
<advance width="1462"/>
<outline>
<contour>
<point x="1293" y="1456" type="line"/>
<point x="1087" y="1456" type="line"/>
<point x="1087" y="350" type="line"/>
<point x="374" y="1456" type="line"/>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
<point x="374" y="1102" type="line"/>
<point x="1084" y="0" type="line"/>
<point x="1293" y="0" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="O" format="2">
<unicode hex="004F"/>
<advance width="1414"/>
<outline>
<contour>
<point x="1296" y="768" type="line"/>
<point x="1296" y="1209"/>
<point x="1063" y="1476"/>
<point x="706" y="1476" type="curve" smooth="yes"/>
<point x="360" y="1476"/>
<point x="117" y="1209"/>
<point x="117" y="768" type="curve"/>
<point x="117" y="687" type="line"/>
<point x="117" y="246"/>
<point x="362" y="-20"/>
<point x="708" y="-20" type="curve" smooth="yes"/>
<point x="1065" y="-20"/>
<point x="1296" y="246"/>
<point x="1296" y="687" type="curve"/>
</contour>
<contour>
<point x="1090" y="687" type="line"/>
<point x="1090" y="338"/>
<point x="952" y="153"/>
<point x="708" y="153" type="curve" smooth="yes"/>
<point x="478" y="153"/>
<point x="323" y="338"/>
<point x="323" y="687" type="curve" smooth="yes"/>
<point x="323" y="770" type="line" smooth="yes"/>
<point x="323" y="1117"/>
<point x="476" y="1302"/>
<point x="706" y="1302" type="curve" smooth="yes"/>
<point x="948" y="1302"/>
<point x="1090" y="1117"/>
<point x="1090" y="770" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="P" format="2">
<unicode hex="0050"/>
<advance width="1299"/>
<outline>
<contour>
<point x="712" y="567" type="line"/>
<point x="1044" y="567"/>
<point x="1227" y="727"/>
<point x="1227" y="1010" type="curve"/>
<point x="1227" y="1269"/>
<point x="1044" y="1456"/>
<point x="712" y="1456" type="curve"/>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
<point x="374" y="1289" type="line"/>
<point x="712" y="1289" type="line"/>
<point x="930" y="1289"/>
<point x="1019" y="1153"/>
<point x="1019" y="1008" type="curve"/>
<point x="1019" y="846"/>
<point x="930" y="733"/>
<point x="712" y="733" type="curve"/>
<point x="329" y="733" type="line"/>
<point x="329" y="567" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="Q" format="2">
<unicode hex="0051"/>
<advance width="1414"/>
<outline>
<contour>
<point x="918" y="176" type="line"/>
<point x="785" y="45" type="line"/>
<point x="1156" y="-245" type="line"/>
<point x="1297" y="-117" type="line"/>
</contour>
<contour>
<point x="1287" y="768" type="line"/>
<point x="1287" y="1209"/>
<point x="1054" y="1476"/>
<point x="696" y="1476" type="curve" smooth="yes"/>
<point x="350" y="1476"/>
<point x="107" y="1209"/>
<point x="107" y="768" type="curve"/>
<point x="107" y="687" type="line"/>
<point x="107" y="246"/>
<point x="352" y="-20"/>
<point x="698" y="-20" type="curve" smooth="yes"/>
<point x="1056" y="-20"/>
<point x="1287" y="246"/>
<point x="1287" y="687" type="curve"/>
</contour>
<contour>
<point x="1080" y="687" type="line"/>
<point x="1080" y="338"/>
<point x="942" y="153"/>
<point x="698" y="153" type="curve" smooth="yes"/>
<point x="469" y="153"/>
<point x="314" y="338"/>
<point x="314" y="687" type="curve" smooth="yes"/>
<point x="314" y="770" type="line" smooth="yes"/>
<point x="314" y="1117"/>
<point x="467" y="1302"/>
<point x="696" y="1302" type="curve" smooth="yes"/>
<point x="939" y="1302"/>
<point x="1080" y="1117"/>
<point x="1080" y="770" type="curve"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="R" format="2">
<unicode hex="0052"/>
<advance width="1253"/>
<outline>
<contour>
<point x="166" y="1456" type="line"/>
<point x="166" y="0" type="line"/>
<point x="374" y="0" type="line"/>
<point x="374" y="1289" type="line"/>
<point x="650" y="1289" type="line" smooth="yes"/>
<point x="868" y="1289"/>
<point x="956" y="1180"/>
<point x="956" y="1017" type="curve" smooth="yes"/>
<point x="956" y="869"/>
<point x="854" y="753"/>
<point x="651" y="753" type="curve" smooth="yes"/>
<point x="327" y="753" type="line"/>
<point x="329" y="587" type="line"/>
<point x="770" y="587" type="line"/>
<point x="827" y="609" type="line"/>
<point x="1039" y="666"/>
<point x="1164" y="818"/>
<point x="1164" y="1017" type="curve" smooth="yes"/>
<point x="1164" y="1303"/>
<point x="983" y="1456"/>
<point x="650" y="1456" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="1006" y="0" type="line"/>
<point x="1229" y="0" type="line"/>
<point x="1229" y="12" type="line"/>
<point x="874" y="662" type="line"/>
<point x="657" y="662" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="S" format="2">
<unicode hex="0053"/>
<advance width="1216"/>
<outline>
<contour>
<point x="931" y="370" type="curve" smooth="yes"/>
<point x="931" y="232"/>
<point x="826" y="146"/>
<point x="631" y="146" type="curve" smooth="yes"/>
<point x="446" y="146"/>
<point x="287" y="232"/>
<point x="287" y="423" type="curve"/>
<point x="79" y="423" type="line"/>
<point x="79" y="136"/>
<point x="360" y="-20"/>
<point x="631" y="-20" type="curve" smooth="yes"/>
<point x="942" y="-20"/>
<point x="1140" y="135"/>
<point x="1140" y="372" type="curve"/>
<point x="1140" y="596"/>
<point x="998" y="727"/>
<point x="663" y="822" type="curve"/>
<point x="435" y="886"/>
<point x="334" y="959"/>
<point x="334" y="1079" type="curve"/>
<point x="334" y="1212"/>
<point x="423" y="1309"/>
<point x="621" y="1309" type="curve" smooth="yes"/>
<point x="834" y="1309"/>
<point x="930" y="1194"/>
<point x="930" y="1035" type="curve"/>
<point x="1138" y="1035" type="line"/>
<point x="1138" y="1260"/>
<point x="955" y="1476"/>
<point x="621" y="1476" type="curve" smooth="yes"/>
<point x="320" y="1476"/>
<point x="125" y="1303"/>
<point x="125" y="1076" type="curve"/>
<point x="125" y="851"/>
<point x="309" y="728"/>
<point x="596" y="644" type="curve"/>
<point x="865" y="565"/>
<point x="931" y="502"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="T" format="2">
<unicode hex="0054"/>
<advance width="1222"/>
<outline>
<contour>
<point x="715" y="1456" type="line"/>
<point x="509" y="1456" type="line"/>
<point x="509" y="0" type="line"/>
<point x="715" y="0" type="line"/>
</contour>
<contour>
<point x="1176" y="1456" type="line"/>
<point x="49" y="1456" type="line"/>
<point x="49" y="1289" type="line"/>
<point x="1176" y="1289" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="U" format="2">
<unicode hex="0055"/>
<advance width="1324"/>
<outline>
<contour>
<point x="988" y="1456" type="line"/>
<point x="988" y="471" type="line" smooth="yes"/>
<point x="988" y="248"/>
<point x="860" y="146"/>
<point x="664" y="146" type="curve" smooth="yes"/>
<point x="470" y="146"/>
<point x="341" y="248"/>
<point x="341" y="471" type="curve" smooth="yes"/>
<point x="341" y="1456" type="line"/>
<point x="135" y="1456" type="line"/>
<point x="135" y="471" type="line"/>
<point x="135" y="143"/>
<point x="366" y="-20"/>
<point x="664" y="-20" type="curve" smooth="yes"/>
<point x="946" y="-20"/>
<point x="1196" y="143"/>
<point x="1196" y="471" type="curve"/>
<point x="1196" y="1456" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="V" format="2">
<unicode hex="0056"/>
<advance width="1313"/>
<outline>
<contour>
<point x="639" y="228" type="line"/>
<point x="588" y="0" type="line"/>
<point x="748" y="0" type="line"/>
<point x="1287" y="1456" type="line"/>
<point x="1061" y="1456" type="line"/>
</contour>
<contour>
<point x="254" y="1456" type="line"/>
<point x="28" y="1456" type="line"/>
<point x="566" y="0" type="line"/>
<point x="726" y="0" type="line"/>
<point x="672" y="228" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="W" format="2">
<unicode hex="0057"/>
<advance width="1813"/>
<outline>
<contour>
<point x="552" y="450" type="line"/>
<point x="448" y="0" type="line"/>
<point x="597" y="0" type="line"/>
<point x="902" y="1048" type="line"/>
<point x="984" y="1456" type="line"/>
<point x="834" y="1456" type="line"/>
</contour>
<contour>
<point x="268" y="1456" type="line"/>
<point x="61" y="1456" type="line"/>
<point x="409" y="0" type="line"/>
<point x="556" y="0" type="line"/>
<point x="490" y="471" type="line"/>
</contour>
<contour>
<point x="1346" y="472" type="line"/>
<point x="1276" y="0" type="line"/>
<point x="1423" y="0" type="line"/>
<point x="1771" y="1456" type="line"/>
<point x="1563" y="1456" type="line"/>
</contour>
<contour>
<point x="1007" y="1456" type="line"/>
<point x="860" y="1456" type="line"/>
<point x="942" y="1048" type="line"/>
<point x="1235" y="0" type="line"/>
<point x="1384" y="0" type="line"/>
<point x="1281" y="450" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="X" format="2">
<unicode hex="0058"/>
<advance width="1291"/>
<outline>
<contour>
<point x="311" y="1456" type="line"/>
<point x="68" y="1456" type="line"/>
<point x="524" y="734" type="line"/>
<point x="58" y="0" type="line"/>
<point x="303" y="0" type="line"/>
<point x="648" y="557" type="line"/>
<point x="992" y="0" type="line"/>
<point x="1237" y="0" type="line"/>
<point x="772" y="734" type="line"/>
<point x="1227" y="1456" type="line"/>
<point x="984" y="1456" type="line"/>
<point x="648" y="908" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="Y" format="2">
<unicode hex="0059"/>
<advance width="1231"/>
<outline>
<contour>
<point x="250" y="1456" type="line"/>
<point x="13" y="1456" type="line"/>
<point x="510" y="543" type="line"/>
<point x="510" y="0" type="line"/>
<point x="718" y="0" type="line"/>
<point x="718" y="543" type="line"/>
<point x="1215" y="1456" type="line"/>
<point x="979" y="1456" type="line"/>
<point x="614" y="736" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="Z" format="2">
<unicode hex="005A"/>
<advance width="1227"/>
<outline>
<contour>
<point x="1148" y="166" type="line"/>
<point x="165" y="166" type="line"/>
<point x="165" y="0" type="line"/>
<point x="1148" y="0" type="line"/>
</contour>
<contour>
<point x="1116" y="1307" type="line"/>
<point x="1116" y="1456" type="line"/>
<point x="987" y="1456" type="line"/>
<point x="86" y="153" type="line"/>
<point x="86" y="0" type="line"/>
<point x="214" y="0" type="line"/>
</contour>
<contour>
<point x="1028" y="1456" type="line"/>
<point x="96" y="1456" type="line"/>
<point x="96" y="1289" type="line"/>
<point x="1028" y="1289" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="a" format="2">
<unicode hex="0061"/>
<advance width="1118"/>
<outline>
<contour>
<point x="771" y="183" type="line"/>
<point x="771" y="123"/>
<point x="782" y="41"/>
<point x="802" y="0" type="curve"/>
<point x="1010" y="0" type="line"/>
<point x="1010" y="17" type="line"/>
<point x="984" y="76"/>
<point x="971" y="166"/>
<point x="971" y="238" type="curve" smooth="yes"/>
<point x="971" y="738" type="line"/>
<point x="971" y="981"/>
<point x="803" y="1102"/>
<point x="566" y="1102" type="curve" smooth="yes"/>
<point x="301" y="1102"/>
<point x="133" y="935"/>
<point x="133" y="782" type="curve"/>
<point x="333" y="782" type="line"/>
<point x="333" y="867"/>
<point x="421" y="945"/>
<point x="554" y="945" type="curve" smooth="yes"/>
<point x="697" y="945"/>
<point x="771" y="864"/>
<point x="771" y="740" type="curve"/>
</contour>
<contour>
<point x="804" y="661" type="line"/>
<point x="596" y="661" type="line"/>
<point x="301" y="661"/>
<point x="111" y="539"/>
<point x="111" y="303" type="curve" smooth="yes"/>
<point x="111" y="123"/>
<point x="257" y="-20"/>
<point x="480" y="-20" type="curve" smooth="yes"/>
<point x="711" y="-20"/>
<point x="857" y="170"/>
<point x="874" y="277" type="curve"/>
<point x="789" y="370" type="line"/>
<point x="789" y="279"/>
<point x="673" y="151"/>
<point x="510" y="151" type="curve" smooth="yes"/>
<point x="377" y="151"/>
<point x="311" y="230"/>
<point x="311" y="331" type="curve" smooth="yes"/>
<point x="311" y="462"/>
<point x="425" y="524"/>
<point x="629" y="524" type="curve"/>
<point x="806" y="524" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="b" format="2">
<unicode hex="0062"/>
<advance width="1153"/>
<outline>
<contour>
<point x="137" y="1536" type="line"/>
<point x="137" y="0" type="line"/>
<point x="320" y="0" type="line"/>
<point x="337" y="210" type="line"/>
<point x="337" y="1536" type="line"/>
</contour>
<contour>
<point x="1063" y="550" type="line"/>
<point x="1063" y="879"/>
<point x="912" y="1102"/>
<point x="639" y="1102" type="curve" smooth="yes"/>
<point x="362" y="1102"/>
<point x="230" y="901"/>
<point x="200" y="572" type="curve"/>
<point x="200" y="510" type="line"/>
<point x="230" y="181"/>
<point x="362" y="-20"/>
<point x="641" y="-20" type="curve" smooth="yes"/>
<point x="910" y="-20"/>
<point x="1063" y="214"/>
<point x="1063" y="529" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="863" y="529" type="line"/>
<point x="863" y="320"/>
<point x="785" y="146"/>
<point x="590" y="146" type="curve" smooth="yes"/>
<point x="411" y="146"/>
<point x="327" y="287"/>
<point x="296" y="426" type="curve"/>
<point x="296" y="655" type="line"/>
<point x="326" y="803"/>
<point x="411" y="937"/>
<point x="588" y="937" type="curve" smooth="yes"/>
<point x="794" y="937"/>
<point x="863" y="759"/>
<point x="863" y="550" type="curve" smooth="yes"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="c" format="2">
<unicode hex="0063"/>
<advance width="1076"/>
<outline>
<contour>
<point x="578" y="140" type="curve" smooth="yes"/>
<point x="352" y="140"/>
<point x="292" y="337"/>
<point x="292" y="520" type="curve" smooth="yes"/>
<point x="292" y="562" type="line" smooth="yes"/>
<point x="292" y="743"/>
<point x="354" y="942"/>
<point x="578" y="942" type="curve"/>
<point x="723" y="942"/>
<point x="813" y="835"/>
<point x="823" y="709" type="curve"/>
<point x="1012" y="709" type="line"/>
<point x="1002" y="929"/>
<point x="836" y="1102"/>
<point x="578" y="1102" type="curve" smooth="yes"/>
<point x="248" y="1102"/>
<point x="92" y="850"/>
<point x="92" y="562" type="curve" smooth="yes"/>
<point x="92" y="520" type="line" smooth="yes"/>
<point x="92" y="232"/>
<point x="247" y="-20"/>
<point x="578" y="-20" type="curve"/>
<point x="809" y="-20"/>
<point x="1002" y="153"/>
<point x="1012" y="343" type="curve"/>
<point x="823" y="343" type="line"/>
<point x="813" y="229"/>
<point x="706" y="140"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>A</key>
<string>A_.glif</string>
<key>B</key>
<string>B_.glif</string>
<key>C</key>
<string>C_.glif</string>
<key>D</key>
<string>D_.glif</string>
<key>E</key>
<string>E_.glif</string>
<key>F</key>
<string>F_.glif</string>
<key>G</key>
<string>G_.glif</string>
<key>H</key>
<string>H_.glif</string>
<key>I</key>
<string>I_.glif</string>
<key>J</key>
<string>J_.glif</string>
<key>K</key>
<string>K_.glif</string>
<key>L</key>
<string>L_.glif</string>
<key>M</key>
<string>M_.glif</string>
<key>N</key>
<string>N_.glif</string>
<key>O</key>
<string>O_.glif</string>
<key>P</key>
<string>P_.glif</string>
<key>Q</key>
<string>Q_.glif</string>
<key>R</key>
<string>R_.glif</string>
<key>S</key>
<string>S_.glif</string>
<key>T</key>
<string>T_.glif</string>
<key>U</key>
<string>U_.glif</string>
<key>V</key>
<string>V_.glif</string>
<key>W</key>
<string>W_.glif</string>
<key>X</key>
<string>X_.glif</string>
<key>Y</key>
<string>Y_.glif</string>
<key>Z</key>
<string>Z_.glif</string>
<key>a</key>
<string>a.glif</string>
<key>b</key>
<string>b.glif</string>
<key>c</key>
<string>c.glif</string>
<key>d</key>
<string>d.glif</string>
<key>e</key>
<string>e.glif</string>
<key>f</key>
<string>f.glif</string>
<key>g</key>
<string>g.glif</string>
<key>h</key>
<string>h.glif</string>
<key>i</key>
<string>i.glif</string>
<key>j</key>
<string>j.glif</string>
<key>k</key>
<string>k.glif</string>
<key>l</key>
<string>l.glif</string>
<key>m</key>
<string>m.glif</string>
<key>n</key>
<string>n.glif</string>
<key>o</key>
<string>o.glif</string>
<key>p</key>
<string>p.glif</string>
<key>q</key>
<string>q.glif</string>
<key>r</key>
<string>r.glif</string>
<key>s</key>
<string>s.glif</string>
<key>space</key>
<string>space.glif</string>
<key>t</key>
<string>t.glif</string>
<key>u</key>
<string>u.glif</string>
<key>v</key>
<string>v.glif</string>
<key>w</key>
<string>w.glif</string>
<key>x</key>
<string>x.glif</string>
<key>y</key>
<string>y.glif</string>
<key>z</key>
<string>z.glif</string>
</dict>
</plist>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="d" format="2">
<unicode hex="0064"/>
<advance width="1159"/>
<outline>
<contour>
<point x="815" y="210" type="line"/>
<point x="832" y="0" type="line"/>
<point x="1015" y="0" type="line"/>
<point x="1015" y="1536" type="line"/>
<point x="815" y="1536" type="line"/>
</contour>
<contour>
<point x="92" y="529" type="line"/>
<point x="92" y="214"/>
<point x="266" y="-20"/>
<point x="520" y="-20" type="curve" smooth="yes"/>
<point x="798" y="-20"/>
<point x="931" y="181"/>
<point x="960" y="510" type="curve"/>
<point x="960" y="572" type="line"/>
<point x="931" y="901"/>
<point x="798" y="1102"/>
<point x="522" y="1102" type="curve" smooth="yes"/>
<point x="264" y="1102"/>
<point x="92" y="879"/>
<point x="92" y="550" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="292" y="550" type="line"/>
<point x="292" y="759"/>
<point x="375" y="937"/>
<point x="573" y="937" type="curve" smooth="yes"/>
<point x="750" y="937"/>
<point x="834" y="803"/>
<point x="865" y="655" type="curve"/>
<point x="865" y="426" type="line"/>
<point x="824" y="277"/>
<point x="750" y="146"/>
<point x="571" y="146" type="curve" smooth="yes"/>
<point x="375" y="146"/>
<point x="292" y="320"/>
<point x="292" y="529" type="curve" smooth="yes"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="e" format="2">
<unicode hex="0065"/>
<advance width="1092"/>
<outline>
<contour>
<point x="593" y="-20" type="curve"/>
<point x="812" y="-20"/>
<point x="936" y="85"/>
<point x="1006" y="192" type="curve"/>
<point x="885" y="286" type="line"/>
<point x="820" y="200"/>
<point x="735" y="140"/>
<point x="604" y="140" type="curve" smooth="yes"/>
<point x="406" y="140"/>
<point x="294" y="302"/>
<point x="294" y="502" type="curve" smooth="yes"/>
<point x="294" y="544" type="line" smooth="yes"/>
<point x="294" y="803"/>
<point x="407" y="942"/>
<point x="569" y="942" type="curve"/>
<point x="755" y="942"/>
<point x="808" y="792"/>
<point x="818" y="655" type="curve"/>
<point x="818" y="641" type="line"/>
<point x="212" y="641" type="line"/>
<point x="212" y="481" type="line"/>
<point x="1018" y="481" type="line"/>
<point x="1018" y="566" type="line" smooth="yes"/>
<point x="1018" y="871"/>
<point x="887" y="1102"/>
<point x="569" y="1102" type="curve" smooth="yes"/>
<point x="326" y="1102"/>
<point x="94" y="900"/>
<point x="94" y="544" type="curve" smooth="yes"/>
<point x="94" y="502" type="line" smooth="yes"/>
<point x="94" y="198"/>
<point x="287" y="-20"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="f" format="2">
<unicode hex="0066"/>
<advance width="719"/>
<outline>
<contour>
<point x="429" y="0" type="line"/>
<point x="429" y="1193" type="line"/>
<point x="429" y="1320"/>
<point x="496" y="1390"/>
<point x="612" y="1390" type="curve" smooth="yes"/>
<point x="645" y="1390"/>
<point x="683" y="1387"/>
<point x="710" y="1382" type="curve"/>
<point x="720" y="1541" type="line"/>
<point x="679" y="1551"/>
<point x="635" y="1557"/>
<point x="593" y="1557" type="curve" smooth="yes"/>
<point x="367" y="1557"/>
<point x="229" y="1428"/>
<point x="229" y="1193" type="curve"/>
<point x="229" y="0" type="line"/>
</contour>
<contour>
<point x="653" y="1082" type="line"/>
<point x="60" y="1082" type="line"/>
<point x="60" y="932" type="line"/>
<point x="653" y="932" type="line"/>
</contour>
</outline>
</glyph>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="g" format="2">
<unicode hex="0067"/>
<advance width="1153"/>
<outline>
<contour>
<point x="836" y="1082" type="line"/>
<point x="817" y="844" type="line"/>
<point x="817" y="14" type="line" smooth="yes"/>
<point x="817" y="-170"/>
<point x="706" y="-266"/>
<point x="538" y="-266" type="curve" smooth="yes"/>
<point x="444" y="-266"/>
<point x="341" y="-232"/>
<point x="250" y="-121" type="curve"/>
<point x="147" y="-238" type="line"/>
<point x="246" y="-382"/>
<point x="446" y="-426"/>
<point x="553" y="-426" type="curve" smooth="yes"/>
<point x="825" y="-426"/>
<point x="1017" y="-264"/>
<point x="1017" y="24" type="curve" smooth="yes"/>
<point x="1017" y="1082" type="line"/>
</contour>
<contour>
<point x="94" y="529" type="line"/>
<point x="94" y="214"/>
<point x="261" y="-20"/>
<point x="521" y="-20" type="curve" smooth="yes"/>
<point x="799" y="-20"/>
<point x="932" y="181"/>
<point x="962" y="510" type="curve"/>
<point x="962" y="572" type="line"/>
<point x="932" y="901"/>
<point x="799" y="1102"/>
<point x="523" y="1102" type="curve" smooth="yes"/>
<point x="259" y="1102"/>
<point x="94" y="879"/>
<point x="94" y="550" type="curve" smooth="yes"/>
</contour>
<contour>
<point x="294" y="550" type="line"/>
<point x="294" y="759"/>
<point x="376" y="937"/>
<point x="574" y="937" type="curve" smooth="yes"/>
<point x="751" y="937"/>
<point x="835" y="803"/>
<point x="866" y="655" type="curve"/>
<point x="866" y="426" type="line"/>
<point x="825" y="277"/>
<point x="751" y="146"/>
<point x="572" y="146" type="curve" smooth="yes"/>
<point x="376" y="146"/>
<point x="294" y="320"/>
<point x="294" y="529" type="curve" smooth="yes"/>
</contour>
</outline>
</glyph>

Some files were not shown because too many files have changed in this diff Show More