Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] v0.1.0 #5

Open
wants to merge 26 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c9b377d
Adding gitignore file
pathumego Dec 17, 2018
ddad9ee
Housecleaning
pathumego Dec 17, 2018
b66a9b6
Adding the basic files
pathumego Dec 17, 2018
6c47907
Drafted the initial manifest file
pathumego Dec 17, 2018
6629086
Update to include broader set of data
pathumego Dec 18, 2018
c3d5019
More changes and updates
pathumego Dec 18, 2018
0322f57
Updating README; Basic approach to versions, Goals
pathumego Dec 18, 2018
e44965d
Minor update
pathumego Dec 18, 2018
2376d41
Minor update and cleanup
pathumego Dec 18, 2018
f3dc5d0
Merge pull request #1 from pathumego/typeworld-subs
pathumego Jan 3, 2019
f72ab77
Update README.md
pathumego Jan 3, 2019
6704b7e
Streamlining and cleaning up
pathumego Jan 3, 2019
1ef5f9e
Merge pull request #2 from pathumego/pathumego/readme-update
pathumego Jan 3, 2019
e3d5e75
Updates and fixing typos
pathumego Jan 16, 2019
35eb328
Housekeeping
pathumego Jan 16, 2019
913f080
Adding the basics from UFR
pathumego Jan 16, 2019
458942a
Updatign README with explanation of the manifest
pathumego Jan 16, 2019
765b6c2
[README]Housekeeping
pathumego Jan 25, 2019
2e8be9e
[MANIFEST] Breaking into four blocks; changes to some keys
pathumego Jan 25, 2019
ef1b252
Removing UFR structure files and directories
pathumego Jan 25, 2019
07d9f03
Adding the index.css reference and woff2 placeholder files
pathumego Jan 25, 2019
0033da6
Fix typo
pathumego Jan 25, 2019
b169ccc
Rearrange sections, Adding more explicit sections
pathumego Jan 25, 2019
8697623
Update README.md
pathumego Feb 7, 2019
a6c319f
Minor edits and rewrite the repo layout section
pathumego Feb 7, 2019
73a8bdd
Updates;
pathumego Feb 7, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.DS_Store
9 changes: 9 additions & 0 deletions FONTLOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Fontlog of MyFont

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).


##
674 changes: 0 additions & 674 deletions LICENSE

Large diffs are not rendered by default.

102 changes: 101 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,101 @@
# fontmanpkg-spec
> Fontpackage is the standard for packaging and distributing font projects. The Fontpackage format is a container for a font family's font files and extended metadata. Its purpose is to contain all necessary working files for a font family, as well as its meta-information.

# Fontpackage specification

[TODO: Introduction and background]


## Fontpackage file Structure

While the Fontpackage standard aims to standard is simple and requires only minimum dataset to validate. The core of the standard is the higely custmisable manifest file `fontpackage.toml` which sits at the root of the respository. The reccomended repository layout for Fontpackage is Unified Font Respository (UFR) layout, which defines a standard for orgnising all source files and documentation of a font project. However, Fontpackage only requiers the following files to validate.

```
fontpackage.toml
LICENSE
FONTLOG.md
▾ fonts #This is compatible with UFR and the defult location for binaries.
▾ otf/
*.otf
▾ otf/
*.otf
▾ webfonts/
*.woff
*.woff2
index.css
```

_NOTE:_ Package authours who choose not to use the UFR may point to font binaries and other files from the manifest file with URI relative to root. The minimum requierment for validating as a fontpackage is a `fontpackage.toml` at the root of the reposiotry, pointing to the font binaries.

[TODO: Include complete layout]


## fontpackage.toml: the manifest file

The manifest file `fontpackage.toml` on the root of the repo contains a superset of data provided in the 'METADATA.yml' of the UFR. `fontpackage.toml` provides the information, metadata and classification data.

There are four main blocks in `fontpackage.toml`
- Package metadata (required)
- Display and classification data (optional)
- (classification, display strings and image urls)
- App specific blocks (Other metadata or config relating to specific apps)


## Versions


## Authoring
[TODO]

_NOTE:_ [TODO: Explanation] Why we commit binaries to the git repo?


### Git repositories and Fontpackage
[TODO]

_Unified Font Repository:_ UFR is a standard repository layout to organize font project sources; covering all files including documentation, tests, source files and etc. Fontpackage is a standard for distributing font binaries and metadata. Fontpackage is fully compatible with UFR structure.
There are data duplication in the `METADATA.yml` and the `fontpackage.toml` This is something we have to

### Standalone archive (.fontpkg)
[TODO]


## Distributing

This specification aim to work with git artifacts and develop the standard to be provider-agnostic. Implementation will require working with APIs from respective Git service provider, in this case Github REST API.

### Type.World Git subscription (Github)
[TODO: Intro]

### Fontlet package
[TODO]

### Fontpackage to npm
[TODO]


## FAQ
[TODO]


## About

### Goals
- Develop a standard for font project repositories treating font project as a ‘font package’
- Develop an universal standard for the font package, providing metadata for direct distribution from the repository and consumption by conforming package managers or sync clients (primarily Type.World)
- Provide tooling and workflow to easily packages fonts for other platforms (ie; npm, Appstream specification)
- Optionally use the same manifest file to include build and testing configurations for other tools (fontmake, fontbakery)

### Existing related projects and standards
- [Unified Font Repository (UFR)](https://github.com/unified-font-repository/Unified-Font-Repository)
- [Google Fonts repositories](https://github.com/googlefonts/Inconsolata) Standard followed by the most of Google Fonts repositories
- [Google Fonts METADATA.pb files ](https://github.com/googlefonts/Inconsolata/blob/master/METADATA.pb): Metadata files in Google Fonts repositories by Google Fonts
- [Appstream specification metadata](https://github.com/unified-font-repository/Unified-Font-Repository/issues/25)
- [Foundry in a Box](https://gitlab.com/foundry-in-a-box/fib)
- [typefaces](https://github.com/KyleAMathews/typefaces): NPM packages for Open Source typefaces.
- [fontctrl](https://fontctrl.org): A package manager for fonts

### Credits
[TODO]

### License
[TODO]
112 changes: 112 additions & 0 deletions fontpackage.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
[fontpackage]
########################################################################
# PACKAGE METADATA #####################################################
########################################################################

name = "My Font Family" #REQUIERD: Package name (same as the postscript family name)
type = "family" #REQUIERD: Package type [family, collection]
version = "" #REQUIERD: SemVer
status = "" #REQUIERD: [BETA, ALPHA, STABLE]
authors = ["", ""] #REQUIERD: Authors of the package
license = "" #REQUIERD: https://spdx.org/licenses/
copyright = "" #REQUIERD
category = "" #REQUIERD: #serif, sans, display, monospace, script, dingbat
license-file = "" #OPTIONAL: URL to licence file or EULA
description = "" #OPTIONAL
repository = { url = "", type = "git"} #REQUIERD
homepage_url = "" #OPTIONAL
issues_url = "" #OPTIONAL
date_published = "" #OPTIONAL: Date first published
fontlog = "" #OPTIONAL: Defults to ROOT (./FONTLOG.md ./FONTLOG.txt ./CHANGELOG.txt) Defult format Markdown .md
foundry = { name = "", email = "", url = "", vendor_id = "" } #OPTIONAL:
designers = [ #OPTIONAL: Desiners from the nameID
{ name = "", email = "", url = "" },
{ name = "", email = "", url = "" },
{ name = "", email = "", url = "" } ]

private = "" #REQUIERD: Boolean, When set to true, conforming
maintenance = { status = "", comment = "" } #OPTIONAL: # `actively-developed`, `passively-maintained`, `as-is`, `experimental`, `looking-for-maintainer`, `deprecated`, and the default `none`,}
versions_provider = "" #REQUIERD: How is the font versions provided. When set to 'tags' the versions will be fetched from the git tags.

tools = "" #OPTIONAL: Details realted to font development and build. Similar to tools key in UFR METADATA.yml

########################################################################
# DISPLAY AND CLASSIFCATION DATA #######################################
########################################################################

tags = [ #OPTIONAL: Pakage specific display strings for display and testing purposes
{ style = "" }, # Blackletter, Calligraphic, Condensed, Decorative, Display, Handdrawn, Monospaced, Rounded, Sans-serif, Script, Serif, Slab, Stencil, Symbols"
{ contrast = "" },
{ width = "" },
{ body_height = "" },
{ intended_useage = ""}, # large, medium, text, body, branding
{ figures = ""},
{ languages = "" },
{ related_fonts = "" }, ]

display_texts = [ #OPTIONAL: Pakage specific display strings for display and testing purposes
{ en_US = ""},
{ si_LK= ""},
{ dv_IN= ""}]

# Maps to Type.World billboards
display_images = [ #OPTIONAL Display images and promotional banners
{ banner = ""},
{ small= ""},
{ thumbnail= ""},
{ medium = ""},
{ small= ""},
{ large = ""} ]


links = [ #OPTIONAL: External links and release channels
{ font_in_use = "" },
{ googlefonts = "" },
{ fontlibrary_org = "" },
{ typekit = "" } ]

########################################################################
# FONT BINARIES AND METADATA ###########################################
########################################################################

[[fonts]]
name = "" #REQUIERD
path = "" #OPTIONAL DEFUALTS to ./fonts/otf .fonts
style = "" #REQUIERD
weight = "" #REQUIERD
full_name = "" #OPTIONAL
preview_image = "" #OPTIONAL
protected = "" #OPTIONAL
purpose = "" #OPTIONAL
variable_font = "" #OPTIONAL
format = "" #REQUIERD
free = "" #REQUIERD

[[fonts]]
# ...

########################################################################
# APP OR PLATFOROM SPECIFIC CONFIGS AND DATA ###########################
########################################################################

# Additional metadata and configuration for Type.World protocol
[fontpackage.typeworld]
foundry = [
{ name = "" },
{ description = "" },
{ url = "" },
{ email = "" },
{ backgroundColor = "" },
{ support_email = "" },
{ skype = "" },
{ twitter = "" },
{ facebook = "" },
{ instagram = "" }]

# Additional metadata to generate NPM packages
[fontpackage.npm]
# …

# Additional metadata to generate Appstram metadata files
[fontpackage.appstream]
# …
Empty file added fonts/otf/Demo-italic.otf
Empty file.
Empty file added fonts/otf/Demo-regular.otf
Empty file.
Empty file added fonts/ttf/Demo-italic.ttf
Empty file.
Empty file added fonts/ttf/Demo-regular.ttf
Empty file.
Empty file.
Empty file.
Empty file added fonts/webfonts/Demo-italic.woff
Empty file.
Empty file.
17 changes: 17 additions & 0 deletions fonts/webfonts/index.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*!
* Demo font family webfonts
*/

@font-face {
font-family: 'Demo';
src: url('webfonts/Demo-Regular.woff2') format('woff2'), url('webfonts/Demo-Regular.woff2'') format('woff');
font-weight: 400;
font-style: normal;
}

@font-face {
font-family: 'Demo';
src: url('webfonts/Demo-Regular.woff2') format('woff2'), url('webfonts/Demo-Regular.woff2'') format('woff');
font-weight: 400;
font-style: italic;
}
55 changes: 0 additions & 55 deletions metadata-file-samples/npm_package.json

This file was deleted.

25 changes: 0 additions & 25 deletions metadata-file-samples/ufr_METADATA.yaml

This file was deleted.