Temporarily remove axisregistry/
29
axisregistry/.github/workflows/tox.yml
vendored
@@ -1,29 +0,0 @@
|
||||
name: Tests & linting with tox
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
max-parallel: 5
|
||||
matrix:
|
||||
python-version: [3.7, 3.8, 3.9]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install tox tox-gh-actions
|
||||
|
||||
- name: Test with tox
|
||||
run: tox
|
||||
@@ -1,10 +0,0 @@
|
||||
# This is the official list of authors of the
|
||||
# `gflanguages` module for copyright purposes.
|
||||
# This file is distinct from the CONTRIBUTORS files.
|
||||
# See the latter for an explanation.
|
||||
|
||||
# Names should be added to this file as:
|
||||
# Name or Organization <email address>
|
||||
# The email address is not required for organizations.
|
||||
|
||||
Google LLC
|
||||
@@ -1,17 +0,0 @@
|
||||
Below are the most important changes from each release.
|
||||
|
||||
## 0.2.0 (2022-Mar-14)
|
||||
- Remove pre-processing of fallback names and simplify API
|
||||
|
||||
## 0.1.1 (2022-Mar-14)
|
||||
- Fix typos on cursive and monospace axes descriptions.
|
||||
- Remove space characteres from fallback name entries of all axes. (issue #7)
|
||||
- Update `min_value` and `default_value` on **y_transparent_uppercase**.
|
||||
|
||||
|
||||
## 0.1.0 (2022-Mar-04)
|
||||
### Release notes
|
||||
- Initial release of the `axisregistry` python module.
|
||||
- Most of the code & data was migrated from the [`fontbakery`](https://github.com/googlefonts/fontbakery/) and [`google/fonts`](https://github.com/google/fonts/) git repositories so that the GF Axis Registry data can be easily available to all our tools. The most immediate user of this module is `Font Bakery` itself, as well as `GFTools`.
|
||||
- Axis Registry definitions are still being gradualy updated on the `google/fonts` repo, on its **axisregistry/** directory (https://github.com/google/fonts/tree/main/axisregistry) and this `axisregistry` python module will try to be kept in sync.
|
||||
- There's an ongoing plan to make this module the main place to update these definitions, avoiding data duplication and guaranteeing uniformity across tools.
|
||||
@@ -1,27 +0,0 @@
|
||||
# This is the official list of people who can contribute
|
||||
# (and typically have contributed) code to this repository.
|
||||
# The AUTHORS file lists the copyright holders; this file
|
||||
# lists people. For example, Google employees are listed here
|
||||
# but not in AUTHORS, because Google holds the copyright.
|
||||
#
|
||||
# Names should be added to this file only after verifying that
|
||||
# the individual or the individual's organization has agreed to
|
||||
# the appropriate Contributor License Agreement, found here:
|
||||
#
|
||||
# http://code.google.com/legal/individual-cla-v1.0.html
|
||||
# http://code.google.com/legal/corporate-cla-v1.0.html
|
||||
#
|
||||
# The agreement for individuals can be filled out on the web.
|
||||
#
|
||||
# When adding J Random Contributor's name to this file,
|
||||
# either J's name or J's organization's name should be
|
||||
# added to the AUTHORS file, depending on whether the
|
||||
# individual or corporate CLA was used.
|
||||
#
|
||||
# Names should be added to this file like so:
|
||||
# Name <email address>
|
||||
#
|
||||
# Please keep the list sorted.
|
||||
# (first name; alphabetical order)
|
||||
|
||||
Felipe Correa da Silva Sanches <juca@members.fsf.org>
|
||||
@@ -1,202 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
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.
|
||||
@@ -1,50 +0,0 @@
|
||||
from pkg_resources import resource_filename
|
||||
from google.protobuf import text_format
|
||||
|
||||
from axisregistry.axes_pb2 import AxisProto
|
||||
|
||||
try:
|
||||
from ._version import version as __version__ # type: ignore
|
||||
except ImportError:
|
||||
__version__ = "0.0.0+unknown"
|
||||
|
||||
|
||||
def AxisRegistry():
|
||||
registry = {}
|
||||
|
||||
def get_Protobuf_Message(klass, path):
|
||||
message = klass()
|
||||
with open(path, "rb") as text_data:
|
||||
text_format.Merge(text_data.read(), message)
|
||||
return message
|
||||
|
||||
def append_AxisMessage(path):
|
||||
axis = get_Protobuf_Message(AxisProto, path)
|
||||
registry[axis.tag] = axis # pylint: disable=E1101
|
||||
|
||||
for axis in ["casual.textproto",
|
||||
"cursive.textproto",
|
||||
"fill.textproto",
|
||||
"flair.textproto",
|
||||
"grade.textproto",
|
||||
"italic.textproto",
|
||||
"monospace.textproto",
|
||||
"optical_size.textproto",
|
||||
"slant.textproto",
|
||||
"softness.textproto",
|
||||
"volume.textproto",
|
||||
"weight.textproto",
|
||||
"width.textproto",
|
||||
"wonky.textproto",
|
||||
"x_opaque.textproto",
|
||||
"x_transparent_figures.textproto",
|
||||
"x_transparent.textproto",
|
||||
"y_opaque.textproto",
|
||||
"y_transparent_ascender.textproto",
|
||||
"y_transparent_descender.textproto",
|
||||
"y_transparent_figures.textproto",
|
||||
"y_transparent_lowercase.textproto",
|
||||
"y_transparent_uppercase.textproto"]:
|
||||
append_AxisMessage(resource_filename('axisregistry', 'data/' + axis))
|
||||
|
||||
return registry
|
||||
@@ -1,46 +0,0 @@
|
||||
syntax = "proto2";
|
||||
// GF Axis Registry Protos
|
||||
|
||||
// An axis in the GF Axis Registry
|
||||
message AxisProto {
|
||||
// Axis tag
|
||||
optional string tag = 1;
|
||||
|
||||
// Display name for axis, e.g. "Optical size" for 'opsz'
|
||||
// Like 'Name' in
|
||||
// https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_opsz
|
||||
optional string display_name = 7;
|
||||
|
||||
// Lower bound for the axis
|
||||
optional float min_value = 2;
|
||||
|
||||
// The default position to use and to prefer for exemplars
|
||||
optional float default_value = 3;
|
||||
|
||||
// Upper bound for the axis
|
||||
optional float max_value = 4;
|
||||
|
||||
// Input values for this axis must aligned to 10^precision
|
||||
optional int32 precision = 5;
|
||||
|
||||
// Fallback positions along the axis
|
||||
repeated FallbackProto fallback = 6;
|
||||
|
||||
// Short descriptive paragraph
|
||||
optional string description = 8;
|
||||
|
||||
// Whether only the fallback positions should be used, for example, an axis
|
||||
// might have only three relevant positions: the min, the middle, and the max.
|
||||
optional bool fallback_only = 9;
|
||||
|
||||
// The thumbnail image for this axis, if any.
|
||||
optional string illustration_url = 10;
|
||||
|
||||
// Next = 11
|
||||
}
|
||||
|
||||
message FallbackProto {
|
||||
optional string name = 1;
|
||||
optional float value = 2;
|
||||
optional string display_name = 3;
|
||||
}
|
||||
@@ -1,188 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: axes.proto
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='axes.proto',
|
||||
package='',
|
||||
syntax='proto2',
|
||||
serialized_options=None,
|
||||
create_key=_descriptor._internal_create_key,
|
||||
serialized_pb=b'\n\naxes.proto\"\xe6\x01\n\tAxisProto\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x07 \x01(\t\x12\x11\n\tmin_value\x18\x02 \x01(\x02\x12\x15\n\rdefault_value\x18\x03 \x01(\x02\x12\x11\n\tmax_value\x18\x04 \x01(\x02\x12\x11\n\tprecision\x18\x05 \x01(\x05\x12 \n\x08\x66\x61llback\x18\x06 \x03(\x0b\x32\x0e.FallbackProto\x12\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12\x15\n\rfallback_only\x18\t \x01(\x08\x12\x18\n\x10illustration_url\x18\n \x01(\t\"B\n\rFallbackProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t'
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
_AXISPROTO = _descriptor.Descriptor(
|
||||
name='AxisProto',
|
||||
full_name='AxisProto',
|
||||
filename=None,
|
||||
file=DESCRIPTOR,
|
||||
containing_type=None,
|
||||
create_key=_descriptor._internal_create_key,
|
||||
fields=[
|
||||
_descriptor.FieldDescriptor(
|
||||
name='tag', full_name='AxisProto.tag', index=0,
|
||||
number=1, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=b"".decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='display_name', full_name='AxisProto.display_name', index=1,
|
||||
number=7, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=b"".decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='min_value', full_name='AxisProto.min_value', index=2,
|
||||
number=2, type=2, cpp_type=6, label=1,
|
||||
has_default_value=False, default_value=float(0),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='default_value', full_name='AxisProto.default_value', index=3,
|
||||
number=3, type=2, cpp_type=6, label=1,
|
||||
has_default_value=False, default_value=float(0),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='max_value', full_name='AxisProto.max_value', index=4,
|
||||
number=4, type=2, cpp_type=6, label=1,
|
||||
has_default_value=False, default_value=float(0),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='precision', full_name='AxisProto.precision', index=5,
|
||||
number=5, type=5, cpp_type=1, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='fallback', full_name='AxisProto.fallback', index=6,
|
||||
number=6, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='description', full_name='AxisProto.description', index=7,
|
||||
number=8, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=b"".decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='fallback_only', full_name='AxisProto.fallback_only', index=8,
|
||||
number=9, type=8, cpp_type=7, label=1,
|
||||
has_default_value=False, default_value=False,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='illustration_url', full_name='AxisProto.illustration_url', index=9,
|
||||
number=10, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=b"".decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto2',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=15,
|
||||
serialized_end=245,
|
||||
)
|
||||
|
||||
|
||||
_FALLBACKPROTO = _descriptor.Descriptor(
|
||||
name='FallbackProto',
|
||||
full_name='FallbackProto',
|
||||
filename=None,
|
||||
file=DESCRIPTOR,
|
||||
containing_type=None,
|
||||
create_key=_descriptor._internal_create_key,
|
||||
fields=[
|
||||
_descriptor.FieldDescriptor(
|
||||
name='name', full_name='FallbackProto.name', index=0,
|
||||
number=1, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=b"".decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='FallbackProto.value', index=1,
|
||||
number=2, type=2, cpp_type=6, label=1,
|
||||
has_default_value=False, default_value=float(0),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='display_name', full_name='FallbackProto.display_name', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=b"".decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto2',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=247,
|
||||
serialized_end=313,
|
||||
)
|
||||
|
||||
_AXISPROTO.fields_by_name['fallback'].message_type = _FALLBACKPROTO
|
||||
DESCRIPTOR.message_types_by_name['AxisProto'] = _AXISPROTO
|
||||
DESCRIPTOR.message_types_by_name['FallbackProto'] = _FALLBACKPROTO
|
||||
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
|
||||
|
||||
AxisProto = _reflection.GeneratedProtocolMessageType('AxisProto', (_message.Message,), {
|
||||
'DESCRIPTOR' : _AXISPROTO,
|
||||
'__module__' : 'axes_pb2'
|
||||
# @@protoc_insertion_point(class_scope:AxisProto)
|
||||
})
|
||||
_sym_db.RegisterMessage(AxisProto)
|
||||
|
||||
FallbackProto = _reflection.GeneratedProtocolMessageType('FallbackProto', (_message.Message,), {
|
||||
'DESCRIPTOR' : _FALLBACKPROTO,
|
||||
'__module__' : 'axes_pb2'
|
||||
# @@protoc_insertion_point(class_scope:FallbackProto)
|
||||
})
|
||||
_sym_db.RegisterMessage(FallbackProto)
|
||||
|
||||
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
Before Width: | Height: | Size: 18 KiB |
@@ -1,21 +0,0 @@
|
||||
# CASL based on https://github.com/arrowtype/Recursive#variable-axes
|
||||
tag: "CASL"
|
||||
display_name: "Casual"
|
||||
min_value: 0
|
||||
max_value: 1
|
||||
default_value: 0
|
||||
precision: -2
|
||||
fallback {
|
||||
name: "Linear"
|
||||
value: 0
|
||||
}
|
||||
fallback {
|
||||
name: "Casual"
|
||||
value: 1
|
||||
}
|
||||
fallback_only: false
|
||||
illustration_url: "casual.svg"
|
||||
description:
|
||||
"Along this axis, letterforms adjust in stroke curvature, contrast, and"
|
||||
" terminals to go from a sturdy, rational 'Linear' style to a friendly,"
|
||||
" energetic 'Casual' style."
|
||||
|
Before Width: | Height: | Size: 23 KiB |
@@ -1,28 +0,0 @@
|
||||
# CRSV based on https://github.com/arrowtype/Recursive#variable-axes
|
||||
tag: "CRSV"
|
||||
display_name: "Cursive"
|
||||
min_value: 0
|
||||
max_value: 1
|
||||
default_value: 0.5
|
||||
precision: -1
|
||||
fallback {
|
||||
name: "Roman"
|
||||
value: 0
|
||||
display_name: "Off"
|
||||
}
|
||||
fallback {
|
||||
name: "Auto"
|
||||
value: 0.5
|
||||
}
|
||||
fallback {
|
||||
name: "Cursive"
|
||||
value: 1
|
||||
display_name: "On"
|
||||
}
|
||||
fallback_only: true
|
||||
illustration_url: "cursive.svg"
|
||||
description:
|
||||
"Controls the substitution of cursive forms along the Slant axis. 'Off' (0)"
|
||||
" maintains Roman letterforms such as a double-storey a and g, 'Auto' (0.5)"
|
||||
" allows for Cursive substitution, and 'On' (1) asserts cursive forms even"
|
||||
" in upright text with a Slant of 0."
|
||||
|
Before Width: | Height: | Size: 6.7 KiB |
@@ -1,23 +0,0 @@
|
||||
tag: "FILL"
|
||||
display_name: "Fill"
|
||||
min_value: 0.0
|
||||
default_value: 0.0
|
||||
max_value: 1.0
|
||||
precision: -2
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 0.0
|
||||
}
|
||||
fallback {
|
||||
name: "Filled"
|
||||
value: 1.0
|
||||
}
|
||||
fallback_only: false
|
||||
illustration_url: "fill.svg"
|
||||
description: "The Fill axis is intended to provide a treatment of the design"
|
||||
" that fills in transparent forms with opaque ones (and sometimes interior"
|
||||
" opaque forms become transparent, to maintain contrasting shapes)."
|
||||
" Transitions often occur from the center, a side, or a corner,"
|
||||
" but can be in any direction. This can be useful in animation or"
|
||||
" interaction to convey a state transition. The numbers indicate"
|
||||
" proportion filled, from 0 (no treatment) to 1 (completely filled)."
|
||||
@@ -1,19 +0,0 @@
|
||||
tag: "FLAR"
|
||||
display_name: "Flair"
|
||||
min_value: 0.0
|
||||
default_value: 0.0
|
||||
max_value: 100.0
|
||||
precision: 1
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 0.0
|
||||
}
|
||||
fallback {
|
||||
name: "Flair"
|
||||
value: 100.0
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"As the flair axis grows, the straight sans serif terminals develop"
|
||||
" a swelling, and joints become more idiosyncratic. Originally referring"
|
||||
" to the flaring of the stems, Flair stands for style and panache."
|
||||
|
Before Width: | Height: | Size: 15 KiB |
@@ -1,19 +0,0 @@
|
||||
# GRAD based on https://github.com/TypeNetwork/Opentype-1.8-Axis-Proposal/blob/gh-pages/proposal/Grade/ProposalSummary.md
|
||||
tag: "GRAD"
|
||||
display_name: "Grade"
|
||||
min_value: -1000
|
||||
max_value: 1000
|
||||
default_value: 0
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 0
|
||||
}
|
||||
fallback_only: false
|
||||
illustration_url: "grade.svg"
|
||||
description:
|
||||
"Finesse the style from lighter to bolder in typographic color, by varying"
|
||||
" stroke thicknesses or other forms, without any changes overall width,"
|
||||
" inter-letter spacing, or kerning, so there are no changes to line breaks"
|
||||
" or page layout. Negative grade makes the style lighter, while positive"
|
||||
" grade makes it bolder. The units are the same as in the Weight axis."
|
||||
|
Before Width: | Height: | Size: 24 KiB |
@@ -1,21 +0,0 @@
|
||||
# ital based on https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_ital
|
||||
tag: "ital"
|
||||
display_name: "Italic"
|
||||
min_value: 0
|
||||
max_value: 1
|
||||
default_value: 0
|
||||
precision: -1
|
||||
fallback {
|
||||
name: "Roman"
|
||||
value: 0
|
||||
}
|
||||
fallback {
|
||||
name: "Italic"
|
||||
value: 1
|
||||
}
|
||||
fallback_only: true
|
||||
illustration_url: "italic.svg"
|
||||
description:
|
||||
"Adjust the style from roman to italic. This can be provided as"
|
||||
" a continuous range within a single font file, like most axes, or as a"
|
||||
" toggle between two roman and italic files that form a family as a pair."
|
||||
|
Before Width: | Height: | Size: 19 KiB |
@@ -1,25 +0,0 @@
|
||||
# FOR TESTING ONLY [for now anyway]
|
||||
# MONO based on https://github.com/arrowtype/Recursive#variable-axes
|
||||
tag: "MONO"
|
||||
display_name: "Monospace"
|
||||
min_value: 0
|
||||
max_value: 1
|
||||
default_value: 0
|
||||
precision: -2
|
||||
fallback {
|
||||
name: "Proportional"
|
||||
value: 0
|
||||
}
|
||||
fallback {
|
||||
name: "Monospace"
|
||||
value: 1
|
||||
}
|
||||
fallback_only: false
|
||||
illustration_url: "monospace.svg"
|
||||
description:
|
||||
"Adjust the style from proportional (natural widths, default) to"
|
||||
" monospace (fixed width). Monospace is when all glyphs have the same"
|
||||
" total character width, and more wide or narrow letter proportions to fill"
|
||||
" the space such as a narrower 'w' or wider 'r.' Proportionally spaced"
|
||||
" fonts have letters drawn with more typical proportions, and each glyph"
|
||||
" takes up a unique amount of space on a line."
|
||||
|
Before Width: | Height: | Size: 11 KiB |
@@ -1,103 +0,0 @@
|
||||
# opsz based on https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_opsz
|
||||
# fallbacks based on https://en.wikipedia.org/wiki/Traditional_point-size_names
|
||||
# plus discussion with dcrossland@
|
||||
tag: "opsz"
|
||||
display_name: "Optical Size"
|
||||
min_value: 6
|
||||
max_value: 144
|
||||
default_value: 14
|
||||
precision: -1
|
||||
fallback {
|
||||
name: "6pt"
|
||||
value: 6
|
||||
}
|
||||
fallback {
|
||||
name: "7pt"
|
||||
value: 7
|
||||
}
|
||||
fallback {
|
||||
name: "8pt"
|
||||
value: 8
|
||||
}
|
||||
fallback {
|
||||
name: "9pt"
|
||||
value: 9
|
||||
}
|
||||
fallback {
|
||||
name: "10pt"
|
||||
value: 10
|
||||
}
|
||||
fallback {
|
||||
name: "11pt"
|
||||
value: 11
|
||||
}
|
||||
fallback {
|
||||
name: "12pt"
|
||||
value: 12
|
||||
}
|
||||
fallback {
|
||||
name: "14pt"
|
||||
value: 14
|
||||
}
|
||||
fallback {
|
||||
name: "16pt"
|
||||
value: 16
|
||||
}
|
||||
fallback {
|
||||
name: "17pt"
|
||||
value: 17
|
||||
}
|
||||
fallback {
|
||||
name: "18pt"
|
||||
value: 18
|
||||
}
|
||||
fallback {
|
||||
name: "20pt"
|
||||
value: 20
|
||||
}
|
||||
fallback {
|
||||
name: "24pt"
|
||||
value: 24
|
||||
}
|
||||
fallback {
|
||||
name: "28pt"
|
||||
value: 28
|
||||
}
|
||||
fallback {
|
||||
name: "36pt"
|
||||
value: 36
|
||||
}
|
||||
fallback {
|
||||
name: "48pt"
|
||||
value: 48
|
||||
}
|
||||
fallback {
|
||||
name: "60pt"
|
||||
value: 60
|
||||
}
|
||||
fallback {
|
||||
name: "72pt"
|
||||
value: 72
|
||||
}
|
||||
fallback {
|
||||
name: "96pt"
|
||||
value: 96
|
||||
}
|
||||
fallback {
|
||||
name: "120pt"
|
||||
value: 120
|
||||
}
|
||||
fallback {
|
||||
name: "144pt"
|
||||
value: 144
|
||||
}
|
||||
fallback_only: false
|
||||
illustration_url: "optical_size.svg"
|
||||
description:
|
||||
"Adapt the style to specific text sizes, specified in Points. At smaller"
|
||||
" sizes, letters typically become optimized for more legibility, with loose"
|
||||
" spacing/kerning and thicker strokes with less detail. At larger sizes,"
|
||||
" letters are typically optimized for headlines with thinner strokes and"
|
||||
" more detailed forms, and more extreme weights and widths. When used in"
|
||||
" CSS, this axis is activated by default, but not all products/platforms"
|
||||
" use it automatically."
|
||||
|
Before Width: | Height: | Size: 19 KiB |
@@ -1,17 +0,0 @@
|
||||
# slnt based on https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_slnt
|
||||
tag: "slnt"
|
||||
display_name: "Slant"
|
||||
min_value: -90
|
||||
max_value: 90
|
||||
default_value: 0
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Default"
|
||||
value: 0
|
||||
}
|
||||
fallback_only: false
|
||||
illustration_url: "slant.svg"
|
||||
description:
|
||||
"Adjust the style from upright to slanted, also known to typographers"
|
||||
" as an 'oblique' style. Rarely, slant can work in the other direction,"
|
||||
" called a 'backslanted' or 'reverse oblique' style."
|
||||
|
Before Width: | Height: | Size: 20 KiB |
@@ -1,22 +0,0 @@
|
||||
# SOFT based on https://github.com/undercasetype/Fraunces#variable-axes
|
||||
tag: "SOFT"
|
||||
display_name: "Softness"
|
||||
min_value: 0
|
||||
max_value: 100
|
||||
default_value: 0
|
||||
precision: -1
|
||||
fallback {
|
||||
name: "Sharp"
|
||||
value: 0
|
||||
}
|
||||
fallback {
|
||||
name: "Soft"
|
||||
value: 50
|
||||
}
|
||||
fallback {
|
||||
name: "SuperSoft"
|
||||
value: 100
|
||||
}
|
||||
fallback_only: false
|
||||
illustration_url: "softness.svg"
|
||||
description: "Letterforms become more soft and rounded."
|
||||
@@ -1,18 +0,0 @@
|
||||
tag: "VOLM"
|
||||
display_name: "Volume"
|
||||
min_value: 0.0
|
||||
default_value: 0.0
|
||||
max_value: 100.0
|
||||
precision: 1
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 0.0
|
||||
}
|
||||
fallback {
|
||||
name: "Loud"
|
||||
value: 100.0
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Transforms serifs from glyphic to wedge shapes,"
|
||||
" and adds a little more edge to other details."
|
||||
|
Before Width: | Height: | Size: 14 KiB |
@@ -1,50 +0,0 @@
|
||||
# wght based on https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_wght
|
||||
tag: "wght"
|
||||
display_name: "Weight"
|
||||
min_value: 1
|
||||
max_value: 1000
|
||||
default_value: 400
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Thin"
|
||||
value: 100
|
||||
}
|
||||
fallback {
|
||||
name: "ExtraLight"
|
||||
value: 200
|
||||
}
|
||||
fallback {
|
||||
name: "Light"
|
||||
value: 300
|
||||
}
|
||||
fallback {
|
||||
name: "Regular"
|
||||
value: 400
|
||||
}
|
||||
fallback {
|
||||
name: "Medium"
|
||||
value: 500
|
||||
}
|
||||
fallback {
|
||||
name: "SemiBold"
|
||||
value: 600
|
||||
}
|
||||
fallback {
|
||||
name: "Bold"
|
||||
value: 700
|
||||
}
|
||||
fallback {
|
||||
name: "ExtraBold"
|
||||
value: 800
|
||||
}
|
||||
fallback {
|
||||
name: "Black"
|
||||
value: 900
|
||||
}
|
||||
fallback_only: false
|
||||
illustration_url: "weight.svg"
|
||||
description:
|
||||
"Adjust the style from lighter to bolder in typographic color, by varying"
|
||||
" stroke thicknesses or other forms. This typically changes overall width,"
|
||||
" and so may be used in conjunction with axes for Width and Grade (if"
|
||||
" present)."
|
||||
|
Before Width: | Height: | Size: 13 KiB |
@@ -1,56 +0,0 @@
|
||||
# wdth based on https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_wdth
|
||||
tag: "wdth"
|
||||
display_name: "Width"
|
||||
min_value: 25
|
||||
max_value: 200
|
||||
default_value: 100
|
||||
precision: -1
|
||||
# Instance values based on https://docs.microsoft.com/en-us/typography/opentype/spec/os2#uswidthclass
|
||||
fallback {
|
||||
name: "SuperCondensed"
|
||||
value: 25
|
||||
}
|
||||
fallback {
|
||||
name: "UltraCondensed"
|
||||
value: 50
|
||||
}
|
||||
fallback {
|
||||
name: "ExtraCondensed"
|
||||
value: 62.5
|
||||
}
|
||||
fallback {
|
||||
name: "Condensed"
|
||||
value: 75
|
||||
}
|
||||
fallback {
|
||||
name: "SemiCondensed"
|
||||
value: 87.5
|
||||
}
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 100
|
||||
}
|
||||
fallback {
|
||||
name: "SemiExpanded"
|
||||
value: 112.5
|
||||
}
|
||||
fallback {
|
||||
name: "Expanded"
|
||||
value: 125
|
||||
}
|
||||
fallback {
|
||||
name: "ExtraExpanded"
|
||||
value: 150
|
||||
}
|
||||
fallback {
|
||||
name: "UltraExpanded"
|
||||
value: 200
|
||||
}
|
||||
fallback_only: false
|
||||
illustration_url: "width.svg"
|
||||
description:
|
||||
"Adjust the style from narrower to wider, by varying the proportions of"
|
||||
" counters, stems, and other forms including overall spacing and kerning."
|
||||
" This typically changes the apparent weight (what typographers call"
|
||||
" 'typographic color') in a subtle way, and so may be used in conjunction"
|
||||
" with axes for Width and Grade (if present)."
|
||||
|
Before Width: | Height: | Size: 33 KiB |
@@ -1,23 +0,0 @@
|
||||
# WONK based on https://github.com/undercasetype/Fraunces#variable-axes
|
||||
tag: "WONK"
|
||||
display_name: "Wonky"
|
||||
min_value: 0
|
||||
max_value: 1
|
||||
default_value: 0
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "NonWonky"
|
||||
value: 0
|
||||
}
|
||||
fallback {
|
||||
name: "Wonky"
|
||||
value: 1
|
||||
}
|
||||
fallback_only: true
|
||||
illustration_url: "wonky.svg"
|
||||
description:
|
||||
"Binary axis to control the subsitution of wonky forms along the"
|
||||
" optical size axis. 'Off' (0) maintains more normalized letterforms,"
|
||||
" such as the leaning n/m/h in roman, or the bulbous flags in the"
|
||||
" b/d/h/k/l of the italic."
|
||||
" In static fonts, this is also available as an OpenType Stylistic Set."
|
||||
@@ -1,14 +0,0 @@
|
||||
# XOPQ based on https://variationsguide.typenetwork.com/#xopq
|
||||
tag: "XOPQ"
|
||||
display_name: "X opaque"
|
||||
min_value: -1000
|
||||
max_value: 2000
|
||||
default_value: 88
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 88
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Assigns a 'black' per mille value to each instance of the design space."
|
||||
@@ -1,14 +0,0 @@
|
||||
# XTRA based on https://variationsguide.typenetwork.com/#xtra
|
||||
tag: "XTRA"
|
||||
display_name: "X transparent"
|
||||
min_value: -1000
|
||||
max_value: 2000
|
||||
default_value: 400
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 400
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Assigns a 'white'”' per mille value to each instance of the design space."
|
||||
@@ -1,14 +0,0 @@
|
||||
# XTFI based on https://variationsguide.typenetwork.com/#xtfi
|
||||
tag: "XTFI"
|
||||
display_name: "X transparent figures"
|
||||
min_value: -1000
|
||||
max_value: 2000
|
||||
default_value: 400
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 400
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Assigns a 'white' per mille value to each instance of the design space."
|
||||
@@ -1,14 +0,0 @@
|
||||
# YOPQ based on https://variationsguide.typenetwork.com/#yopq
|
||||
tag: "YOPQ"
|
||||
display_name: "Y opaque"
|
||||
min_value: -1000
|
||||
max_value: 2000
|
||||
default_value: 116
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 116
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Assigns a 'black' per mille value to each instance of the design space."
|
||||
@@ -1,14 +0,0 @@
|
||||
# YTAS based on https://variationsguide.typenetwork.com/#ytas
|
||||
tag: "YTAS"
|
||||
display_name: "Y transparent ascender"
|
||||
min_value: 0
|
||||
max_value: 1000
|
||||
default_value: 750
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 750
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Assigns a 'white' per mille value to each instance of the design space."
|
||||
@@ -1,14 +0,0 @@
|
||||
# YTDE based on https://variationsguide.typenetwork.com/#ytde
|
||||
tag: "YTDE"
|
||||
display_name: "Y transparent descender"
|
||||
min_value: -1000
|
||||
max_value: 0
|
||||
default_value: -250
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: -250
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Assigns a 'white' per mille value to each instance of the design space."
|
||||
@@ -1,14 +0,0 @@
|
||||
# YTFI based on https://variationsguide.typenetwork.com/#ytfi
|
||||
tag: "YTFI"
|
||||
display_name: "Y transparent figures"
|
||||
min_value: -1000
|
||||
max_value: 2000
|
||||
default_value: 600 # this is NOT what TN defined, it's just a value that fits for Roboto Flex
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 600
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Assigns a 'white' per mille value to each instance of the design space."
|
||||
@@ -1,14 +0,0 @@
|
||||
# YTLC based on https://variationsguide.typenetwork.com/#ytlc
|
||||
tag: "YTLC"
|
||||
display_name: "Y transparent lowercase"
|
||||
min_value: 0
|
||||
max_value: 1000
|
||||
default_value: 500
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 500
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Assigns a 'white' per mille value to each instance of the design space."
|
||||
@@ -1,14 +0,0 @@
|
||||
# YTUC based on https://variationsguide.typenetwork.com/#ytuc
|
||||
tag: "YTUC"
|
||||
display_name: "Y transparent uppercase"
|
||||
min_value: 0
|
||||
max_value: 1000
|
||||
default_value: 725
|
||||
precision: 0
|
||||
fallback {
|
||||
name: "Normal"
|
||||
value: 725
|
||||
}
|
||||
fallback_only: false
|
||||
description:
|
||||
"Assigns a 'white' per mille value to each instance of the design space."
|
||||
@@ -1,49 +0,0 @@
|
||||
# AxisRegistry Python Module
|
||||
|
||||
This repository contains a python package providing easy access to the GF Axis Registry. Data was copied (and is kept is sync with) its original location at the `axisregistry` directory on the [`google/fonts`](https://github.com/google/fonts) git repo.
|
||||
|
||||
As of March 4th, 2022, there's an ongoing plan to soon make this module the central place for updates on the data-set.
|
||||
|
||||
## GF Axis Registry
|
||||
|
||||
This package contains a collection of metadata source files that collectively form the Google Fonts Axis Registry.
|
||||
|
||||
The live Axis Registry is at [fonts.google.com/variablefonts](https://fonts.google.com/variablefonts), and axis definitions are only final when they appear on that page.
|
||||
|
||||
When the registry is updated here, a line like `axisregistry/axis_name.textproto` should be added to the `to_sandbox.txt` file.
|
||||
|
||||
## Axis Metadata Fields
|
||||
|
||||
* `tag`
|
||||
* Tag for the axis used to specify an axis in `font-variation-settings` and CSS API requests.
|
||||
* `display_name`
|
||||
* Readable name for the axis, generally the expanded form of `tag`.
|
||||
* `min_value`
|
||||
* Lower bound of the axis. Inclusive.
|
||||
* `max_value`
|
||||
* Upper bound of the axis. Inclusive.
|
||||
* `default_value`
|
||||
* Default position of the aixs.
|
||||
* `precision`
|
||||
* Describes the specificity at which an axis position can be specified.
|
||||
For example, `0` means values must be specified as whole numbers while `-1` means values can be as precise as one decimal place.
|
||||
* `fallback` (repeated)
|
||||
* Instance positions along the axis, such as wght 100,200,300,400,500,600,700,800,900.
|
||||
* A cross-product of fallback positions along all supported axes is created to support legacy browsers that lack variable font support.
|
||||
For axes with CSS3 properties (such as [font-weight](https://drafts.csswg.org/css-fonts-3/#font-weight-prop)), the positions accessible
|
||||
to CSS3 should be specified. For axes lacking CSS3 properties a legacy browser is limited to a single position and that position must
|
||||
be at a fallback.
|
||||
* `fallback_only`
|
||||
* Describes whether to only use fallback values when presenting to users.
|
||||
* `description`
|
||||
* A description of the axis.
|
||||
|
||||
## Why does Google Fonts have its own Axis Registry?
|
||||
|
||||
We support a superset of the [OpenType axis registry](https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg) axis set, and use additional metadata for each axis.
|
||||
Axes present in a font file but not in this registry will not function via our API.
|
||||
No variable font is expected to support all of the axes here.
|
||||
|
||||
Any font foundry or distributor library that offers variable fonts has a implicit, latent, de-facto axis registry, which can be extracted by scanning the library for axes' tags, labels, and min/def/max values.
|
||||
While in 2016 Microsoft originally offered to include more axes in the OpenType 1.8 specification ([github.com/microsoft/OpenTypeDesignVariationAxisTags](https://github.com/microsoft/OpenTypeDesignVariationAxisTags)), as of August 2020, this effort has stalled.
|
||||
We hope more foundries and distributors will publish documents like this that make their axes explicit, to encourage of adoption of variable fonts throughout the industry, and provide source material for a future update to the OpenType specification's axis registry.
|
||||
@@ -1,3 +0,0 @@
|
||||
--index-url https://pypi.python.org/simple/
|
||||
protobuf==3.19.4
|
||||
-e .
|
||||
@@ -1,52 +0,0 @@
|
||||
# coding: utf-8
|
||||
#
|
||||
# Copyright 2022 Google LLC 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.
|
||||
#
|
||||
# See AUTHORS.txt for the list of Authors and LICENSE.txt for the License.
|
||||
from setuptools import setup
|
||||
|
||||
# Read the contents of the README file
|
||||
with open('README.md') as f:
|
||||
long_description = f.read()
|
||||
|
||||
setup(
|
||||
name="axisregistry",
|
||||
use_scm_version={"write_to": "Lib/axisregistry/_version.py"},
|
||||
url='https://github.com/googlefonts/axisregistry/',
|
||||
description='A python API to access data from the Google Fonts variable fonts axis registry.',
|
||||
long_description=long_description,
|
||||
long_description_content_type='text/markdown', # This is important!
|
||||
author=('Felipe Sanches'),
|
||||
author_email='juca@members.fsf.org',
|
||||
package_dir={'': 'Lib'},
|
||||
packages=['axisregistry'],
|
||||
package_data={'axisregistry': [
|
||||
"data/*.textproto"
|
||||
]
|
||||
},
|
||||
zip_safe=False,
|
||||
classifiers=[
|
||||
'Intended Audience :: Developers',
|
||||
'Topic :: Text Processing :: Fonts',
|
||||
'License :: OSI Approved :: Apache Software License',
|
||||
'Operating System :: OS Independent',
|
||||
'Programming Language :: Python :: 3'
|
||||
],
|
||||
python_requires=">=3.7",
|
||||
setup_requires=['setuptools_scm>=4,<6.1'],
|
||||
install_requires=[
|
||||
'protobuf'
|
||||
]
|
||||
)
|
||||
@@ -1,14 +0,0 @@
|
||||
from axisregistry import AxisRegistry
|
||||
|
||||
|
||||
def test_AxisRegistry():
|
||||
registry = AxisRegistry()
|
||||
assert 'GRAD' in registry.keys()
|
||||
for axis_tag in registry.keys():
|
||||
assert len(axis_tag) == 4
|
||||
for f in range(len(registry[axis_tag].fallback)):
|
||||
fallback = registry[axis_tag].fallback[f]
|
||||
|
||||
# fallback names should not be space-separated.
|
||||
# (see: https://github.com/googlefonts/axisregistry/issues/7)
|
||||
assert ' ' not in fallback.name
|
||||
@@ -1,53 +0,0 @@
|
||||
[tox]
|
||||
envlist = py37, py38, py39, coverage, flake8, pylint
|
||||
|
||||
[gh-actions]
|
||||
python =
|
||||
3.7: py37, coverage, flake8, pylint
|
||||
3.8: py38, coverage, flake8, pylint
|
||||
3.9: py39, coverage, flake8, pylint
|
||||
|
||||
[testenv]
|
||||
deps =
|
||||
pytest
|
||||
coverage
|
||||
-rrequirements.txt
|
||||
commands = coverage run -m pytest {posargs}
|
||||
|
||||
[testenv:coverage]
|
||||
deps = coverage
|
||||
skip_install = true
|
||||
commands =
|
||||
coverage report
|
||||
coverage html
|
||||
|
||||
[testenv:flake8]
|
||||
deps =
|
||||
flake8
|
||||
commands = flake8 --count --show-source --statistics
|
||||
|
||||
[testenv:pylint]
|
||||
deps =
|
||||
pylint
|
||||
wont_fix = invalid-name,protected-access,too-many-lines
|
||||
maybe_someday = fixme,missing-docstring,line-too-long
|
||||
commands = pylint --disable={[testenv:pylint]wont_fix},{[testenv:pylint]maybe_someday} --ignore=axes_pb2.py Lib/axisregistry
|
||||
|
||||
[flake8]
|
||||
select = E,F,W
|
||||
|
||||
exclude =
|
||||
# Exclude the entire build directory:
|
||||
build
|
||||
# Exclude these auto-generated files that should not be hand-edited:
|
||||
Lib/axisregistry/*_pb2.py,
|
||||
# No need to traverse hidden directories such as .git, .tox
|
||||
.*,
|
||||
# Exclude virtual environment directory:
|
||||
venv*,
|
||||
# There's no value in checking cache directories
|
||||
__pycache__,
|
||||
|
||||
max-line-length=100
|
||||
ignore =
|
||||
E126, # continuation line over-indented for hanging indent
|
||||