diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dd46eef --- /dev/null +++ b/Makefile @@ -0,0 +1,47 @@ +################################################################################ +# Copyright 2025, Trusted Computing Group (TCG). # +# All rights reserved. # +# ---------------------------------------------------------------------------- # +# Makefile for locally building TCG Typst documents. # +# ---------------------------------------------------------------------------- # +# Author: Michael Eckel # +# Date Modified: 2025-06-10T08:22:42+02:00 # +# Date Created: 2025-06-10T08:22:42+02:00 # +################################################################################ + + +SHELL := /bin/sh +TYPST := typst +RM := rm + +EXTRA_BUILD_OPTS = --font-path='./fonts/' + +TYPST_FILES := $(wildcard *.typ) +PDF_FILES := $(patsubst %.typ, %.pdf, $(TYPST_FILES)) +HTML_FILES := $(patsubst %.typ, %.html, $(TYPST_FILES)) + +.PHONY: all pdf html clean + +all: pdf + +pdf: $(PDF_FILES) +html: $(HTML_FILES) + +%.pdf: %.typ + $(TYPST) compile \ + $(EXTRA_BUILD_OPTS) \ + --format='pdf' \ + --pdf-standard='a-2b' \ + $< \ + $@ + +%.html: %.typ + $(TYPST) compile \ + $(EXTRA_BUILD_OPTS) \ + --features='html' \ + --format='html' \ + $< \ + $@ + +clean: + $(RM) $(PDF_FILES) $(HTML_FILES) diff --git a/acronyms/acronyms.typ b/acronyms/acronyms.typ new file mode 100644 index 0000000..c6e6070 --- /dev/null +++ b/acronyms/acronyms.typ @@ -0,0 +1,56 @@ +#import "@preview/acrostiche:0.5.2": * + +/* +URL: https://typst.app/universe/package/acrostiche/ + +Functions Summary: + #init-acronyms(…) Initializes the acronyms by defining them in a dictionary where the keys are acronyms and the values are definitions. + #acr(…) Prints the acronym with its definition on the first call, then just the acronym in subsequent calls. + #acrpl(…) Prints the plural version of the acronym. Uses plural definition if available, otherwise adds an ‘s’ to the acronym. + #acrfull(…) Displays the full (long) version of the acronym without affecting the state or tracking its usage. + #acrfullpl(…) Displays the full plural version of the acronym without affecting the state or tracking its usage. + #reset-acronym(…) Resets a single acronym so the next usage will include its definition again. + #reset-all-acronyms() Resets all acronyms so the next usage will include their definitions again. + #print-index(…) Prints an index of all acronyms used, with customizable heading level, order, and display parameters. + #display-def(…) Displays the definition of an acronym. Use plural: true to display the plural version of the definition. + racr, raacr, acrf, acrfpl Shortcuts names for respectively reset-acronym, reset-all-acronyms, acrfull, and acrfullpl. + +Shortcut names inspired by the acronym package for LaTeX by Tobias Oetiker: + #ac(…) Same as acr, display an acronym. + #acf(…) Same as acrfull, display the long version of an acronym. + #acfp(…) Same as acf but plural. + #acs(…) Display the short version of the acronym, does not update the acronym state. + #acsp(…) Same as acs but plural. + #acused(…) Mark an acronym as used without printing anything. + #acresetall(…) Reset all acronyms. +*/ + + +#init-acronyms(( + // "CBOR": ( + // short: "CBOR", + // long: "Concise Binary Object Representation", + // short-pl: "CBORs", + // long-pl: "Concise Binary Object Representations", + // ), + "CBOR": "Concise Binary Object Representation", + "CDDL": "Concise Data Definition Language", + "CEL": "Canonical Event Log", + "CoT": "Chain of Trust", + "CHARRA": "Challenge-Response based Remote Attestation with TPM 2.0", + "DICE": "Device Identifier Composition Engine", + "IETF": "Internet Engineering Task Force", + "IIoT": "Industrial Internet of Things", + "IoMT": "Internet of Medical Things", + "IoT": "Internet of Things", + "JSON": "JavaScript Object Notation", + "PoC": "proof-of-concept", + "PUF": "Physical(ly) Unclonable Function", + "PQC": "post-quantum cryptography", + "RATS": "Remote Attestation Procedures", + "SE": "Secure Element", + "TCG": "Trusted Computing Group", + "TEE": "Trusted Execution Environment", + "TPM": "Trusted Platform Module", + "UID": "unique identifier", +)) diff --git a/eckelmeckel-playground-02.typ b/eckelmeckel-playground-02.typ new file mode 100644 index 0000000..5bf92fc --- /dev/null +++ b/eckelmeckel-playground-02.typ @@ -0,0 +1,536 @@ +#import "@preview/acrostiche:0.5.2": * +#import "templates/eckelmeckel-04.tpl.typ": * +// During development of a template, set the above line to whatever you want. +// The build script will use sed to edit this line to import each template. +#show: tcg-doc.with( + title: "Root Credential Platform Identifier", + subtitle: "A TCG Ipsum Specification", + doctype: "Specification", + status: "Published", + version: "Version 184", + date: datetime.today().display("[month repr:long] [day padding:none], [year]"), + year: datetime.today().display("[year]"), +) + +/* acronyms */ +#include "acronyms/acronyms.typ" + +#pagebreak() + +#heading("Disclaimers, Notices, and License Terms", level: 1, numbering: none, outlined: false) + +THIS SPECIFICATION IS PROVIDED “AS IS” WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. + +Without limitation, TCG disclaims all liability, including liability for infringement of any proprietary rights, relating to use of information in this specification and to the implementation of this specification, and TCG disclaims all liability for cost of procurement of substitute goods or services, lost profits, loss of use, loss of data or any incidental, consequential, direct, indirect, or special damages, whether under contract, tort, warranty or otherwise, arising in any way out of use or reliance upon this specification or any information herein. + +This document is copyrighted by Trusted Computing Group (TCG), and no license, express or implied, is granted herein other than as follows: You may not copy or reproduce the document or distribute it to others without written permission from TCG, except that you may freely do so for the purposes of (a) examining or implementing TCG specifications or (b) developing, testing, or promoting information technology standards and best practices, so long as you distribute the document with these disclaimers, notices, and license terms. +Contact the Trusted Computing Group at #link("https://www.trustedcomputinggroup.org/")[www.trustedcomputinggroup.org] for information on specification licensing through membership agreements. +Any marks and brands contained herein are the property of their respective owners. + +#heading("Statement Types", level: 1, numbering: none, outlined: false) + +Please note an important distinction between different sections of text +throughout this document. There are two distinctive kinds of text: *informative + comments* and *normative statements*. + +Whether a statement is normative or informative is typically +clear from context. In cases where the context does not +provide sufficient clarity, the following rules apply: + +1. A statement with a capitalized RFC key word ("MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL NOT," "SHOULD," + "SHOULD NOT," "RECOMMENDED," "MAY," and "OPTIONAL") as in RFC 8174 is always normative. + +2. Text that is delimited by horizontal rules and labeled as an informative statement, note, example, etc. is always informative. + +#informative-eckelmeckel-01( + kind: "Note", + [Reach out to #link("mailto:admin@trustedcomputinggroup.org") with any questions about this document. + ], +) + +#informative-eckelmeckel-02( + kind: "Note", + [Reach out to #link("mailto:admin@trustedcomputinggroup.org") with any questions about this document. + ], +) + +#informative-eckelmeckel-03( + kind: "Note", + [Reach out to #link("mailto:admin@trustedcomputinggroup.org") with any questions about this document. + ], +) + +#pagebreak() + +#outline() +#outline(title: "Figures", target: figure.where(kind: image)) +#outline(title: "Tables", target: figure.where(kind: table)) +#outline(title: "Listings", target: figure.where(kind: raw)) + +#pagebreak() + += Introduction +Critical dolor `text` sit amet systems have an occasional need to verify the consecteturs. +One typical technique _for_ this is *called* consectetur _*attestation*_. This document provides definitions and requirements for consectetur attestation in the PC Client and Datacenter environments. + += Scope + +== In Scope + +Consecteturs that form part of a computer network or enterprise environment. + +== Out of Scope + +Air-gapped consecteturs, non-consectutor amets. + +== Trusted Computing Group + +Trusted Computing Group (TCG)'s logo is _not_ depicted in the below figure (@fig:not-the-tcg-logo): + +#figure( + image("architecture.drawio.png", width: 60%), + caption: [ + Consectetur Attestation + ], +) + +=== Lorem Ipsum Workgroup + +The Lorem Ipsum workgroup defines the consectutor and other ipsum attestation scenarios at their bimonthly tea parties. + +#informative-eckelmeckel-01( + kind: "Note", + [ + By "bimonthly" we mean that the workgroup meets every other month. + ], +) + += A Lot of Text + +Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. Excepteur sint verified boot cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id PCR laborum. + +When providing evidence about a consectutor, the Attesting Environment SHALL furnish the dolor. + +#informative-eckelmeckel-01([ + This section contains a long informative comment. It is so long, it's more + of an informative section, really. This section breaks across pages. + + == It contains sub-headings + + Which is pretty neat if you think about it. Duis aute irure dolor in repudiation in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Exception sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore _magna_ aliqua (cf. @tab:informative-table as well as #ref() and @tab:planets on #ref(, form: "page"). + + #figure( + table( + columns: (0.5fr, 0.5fr), + inset: 10pt, + align: horizon, + table.header([*Can you*], [*Believe It*]), + + [ It ], [ Even ], + [ Has ], [ A Table ], + ), + caption: [ + An Informative Table + ], + ) +]) + +Stuff after the big informative. + +== Math + +In case you forgot: + +$ sum_(k=1)^n k = (n(n+1)) / 2 $ + + + +== Tables Again + +Look at this awsome @tab:planets (alternatively: #ref()). + +#figure( + caption: [The Planets of the Solar System and Their Average Distance from the Sun], + placement: top, + table( + // Table styling is not mandated by the IEEE. Feel free to adjust these + // settings and potentially move them into a set rule. + columns: (6em, auto), + align: (left, right), + inset: (x: 8pt, y: 4pt), + stroke: (x, y) => if y <= 1 { (top: 0.5pt) }, + fill: (x, y) => if y > 0 and calc.rem(y, 2) == 0 { rgb(color-table-row-even) }, + + table.header[#table-header-text([Planet])][#table-header-text([Distance (million km)])], + [Mercury], [57.9], + [Venus], [108.2], + [Earth], [149.6], + [Mars], [227.9], + [Jupiter], [778.6], + [Saturn], [1,433.5], + [Uranus], [2,872.5], + [Neptune], [4,495.1], + ), +) + +#figure( + table( + columns: (auto, auto), + align: (left, left), + stroke: none, + table-toprule, + table.header( + repeat: true, + table-header-text("Date"), + table-header-text( + [Event -- may include symbols and special characters: #sym.suit #sym.copyleft #sym.copyright #sym.lambda], + ), + ), + table-midrule, + + // 2021 + [2022-04-09], [Kickoff (virtual)], + [2022-04-14 -- 2021-04-15], [Conference Trustworthy Systems], + [2022-11-11], [Workshop Threat and Risk Assessment], + [2022-12-02], [Preparation for Conference Talk], + + // 2023 + table-midrule, + // + [2023-01-14], [Internal Workshop ML], + [2023-04-03], [Talk from Jane Doe], + [2023-05-08 -- 2023-05-09], [Hackathon Attestation], + [2023-11-13 -- 2023-11-14], [Team Event], + + // 2024 + table-midrule, + // + [2024-02-21], [4th Digitaler Cooperation Workshop], + [2024-04-09 -- 2024-04-11], [Embedded World 2024], + [2024-06-04 -- 2024-06-05], [Trustworthy Electronics Days 2024], + [2024-06-17 -- 2024-06-18], [Project Meeting (Alaska)], + [2025-01-15], [Final Workshop: Theory of Everything], + table-bottomrule, + ), + caption: [Project-related events], +) + + + +#pagebreak() + +== Informative Text + +=== Style 1 + +Intro text. + +#informative-eckelmeckel-01([This text fits into a single line.]) + +Some text. + +#informative-eckelmeckel-01([ + This text fits into multiple lines. + + ==== It even has a subheading + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + #horizontalrule + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + ==== And another one + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + scenarios + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. +]) + + +=== Style 2 + +Intro text. + +#informative-eckelmeckel-02([This text fits into a single line.]) + +#informative-eckelmeckel-02([ + This text fits into multiple lines. + + ==== It even has a subheading + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + #horizontalrule + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + ==== And another one + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + scenarios + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. +]) + +=== Style 3 + +Intro text. + +#informative-eckelmeckel-03([This text fits into a single line.]) + +#informative-eckelmeckel-03([ + This text fits into multiple lines. + + ==== It even has a subheading + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + #horizontalrule + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + ==== And another one + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + scenarios + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. +]) + + + += Code + +Here is some Rust code, no caption, no number, no label: + +```rs +fn main() {} +``` + +Now with caption, number, and label (see #ref() on #ref(, form: "page")). + +#figure( + ```c + int myfun(void) { + printf("%s", "Hello, world!"); + } + ```, + caption: [ + The most awesome code in the world. The best. + ], +) + + +And finally, we include a bigger chunk of sourcecode (this code was boldly stolen from GitHub (#link("https://github.com/Fraunhofer-SIT/paper-towards-practical-hardware-fingerprinting-for-remote-attestation/blob/main/analog-measurement-log-format/analog-log-format.cddl")). +Unfortunately, Typst does not yet support numbering and captions for code that spans accross pages. +The following code is CDDL, using a custom syntax theme. + +```cddl +; SPDX-License-Identifier: BSD-3-Clause +; ------------------------------------------------------------------------------ +; BSD 3-Clause "New" or "Revised" License +; ------------------------------------------------------------------------------ +; Copyright 2024, Fraunhofer Institute for Secure Information Technology SIT. +; All rights reserved. +; ------------------------------------------------------------------------------ +; Log format for analog hardware measurements. +; ------------------------------------------------------------------------------ +; Author: Michael Eckel +; Date Modified: 2024-06-10T10:47:28+00:00 +; Date Created: 2024-06-10T10:47:28+00:00 +; ------------------------------------------------------------------------------ + +AnalogMeasurement = [ + version-tag: uint, ; version of the format specification + start-time: Time, + measurements: [ * MeasurementSeries ] +] + +MeasurementSeries = ( + target: Target, + ?env-params: [ * NameValuePair ], + ?start-time: Time, + unit: Unit, + unit-multiple: UnitMultiple, + measurements: RegularMeasurementSeries + // IrregularMeasurementSeries, +) + +Target = [ + id: tstr, + ?config-params: [ * NameValuePair ], +] + +NameValuePair = ( + name: text, + value: any, +) + +RegularMeasurementSeries = { + values => [ * NumericalValue ], + interval-frequency-duration, +} + +interval-frequency-duration //= (interval => Time) +interval-frequency-duration //= (frequency => Frequency) +interval-frequency-duration //= (duration => Time) +values = 0 +interval = 1 +frequency = 2 +duration = 3 + +IrregularMeasurementSeries = [ * ( + current-time: Time, + NumericalValue, + ), +] + +Time = [ + seconds: uint / float, + unit-mult: UnitMultipleSi, +] + +Frequency = [ + hertz: uint / float, + unit-multiple: UnitMultipleSi, +] + +NumericalValue = ( + value: int / float, +) + +Unit = &( + UNIT_UNDEFINED : 0, + UnitElectricalSi, +) ; EXTENSION POINT for future units + +UnitElectricalSi = &( + UNIT_ELECTRICAL_SI_NONE : 1, ; none (raw ADC) + UNIT_ELECTRICAL_SI_VOLTAGE : 2, ; Volt (V or E) + UNIT_ELECTRICAL_SI_CURRENT : 3, ; Ampere (I or i) + UNIT_ELECTRICAL_SI_RESISTANCE : 4, ; Ohm (R) + UNIT_ELECTRICAL_SI_CONDUCTANCE : 5, ; Siemens (G) + UNIT_ELECTRICAL_SI_CAPACITANCE : 6, ; Farad (C) + UNIT_ELECTRICAL_SI_CHARGE : 7, ; Coulomb (Q) + UNIT_ELECTRICAL_SI_INDUCTANCE : 8, ; Henry (L or H) + UNIT_ELECTRICAL_SI_POWER : 9, ; Watts (W) + UNIT_ELECTRICAL_SI_IMPEDANCE : 10, ; Ohm (Z) + UNIT_ELECTRICAL_SI_FREQUENCY : 11, ; Hertz (Hz) +) + +UnitMultiple = &( + UnitMultipleSi, +) ; EXTENSION POINT for future unit multiples + +UnitMultipleSi = &( + UNIT_MULTIPLE_SI_YOCTO : -24, ; y (10^-24) + UNIT_MULTIPLE_SI_ZEPTO : -21, ; z (10^-21) + UNIT_MULTIPLE_SI_ATTO : -18, ; a (10^-18) + UNIT_MULTIPLE_SI_FEMTO : -15, ; f (10^-15) + UNIT_MULTIPLE_SI_PICO : -12, ; p (10^-12) + UNIT_MULTIPLE_SI_NANO : -9, ; n (10^-9) + UNIT_MULTIPLE_SI_MICRO : -6, ; u (10^-6) + UNIT_MULTIPLE_SI_MILLI : -3, ; m (10^-3) + UNIT_MULTIPLE_SI_CENTI : -2, ; c (10^-2) + UNIT_MULTIPLE_SI_DECI : -1, ; d (10^-1) + UNIT_MULTIPLE_SI_BASE : 0, ; base (10^0) + UNIT_MULTIPLE_SI_DECA : 1, ; da (10^1) + UNIT_MULTIPLE_SI_HECTO : 2, ; h (10^2) + UNIT_MULTIPLE_SI_KILO : 3, ; k (10^3) + UNIT_MULTIPLE_SI_MEGA : 6, ; M (10^6) + UNIT_MULTIPLE_SI_GIGA : 9, ; G (10^9) + UNIT_MULTIPLE_SI_TERA : 12, ; T (10^12) + UNIT_MULTIPLE_SI_PETA : 15, ; P (10^15) + UNIT_MULTIPLE_SI_EXA : 18, ; E (10^18) + UNIT_MULTIPLE_SI_ZETTA : 21, ; Z (10^21) + UNIT_MULTIPLE_SI_YOTTA : 24, ; Y (10^24) +) +``` + + += Miscellaneous + +Now, let us use some abbreviations, such as #acr("DICE") and #acr("TPM"). +If we use it again, like so: #acr("TPM"), it only displays the short version #cite(). +Let's have some more citations @rfc9334@harry. +And some TCG specifications, too @tcg:cel-v1r041 @tcg:pclient:pfp, @tcg-key-dev-id. +And let's intermix some code, just `because` we ```c can```. + + + + +#pagebreak() + +#print-index( + row-gutter: 0.5em, + sorted: "up", + outlined: true, + title: "Abbreviations", +) + + +#pagebreak() + +#bibliography( + ( + "references/references.bib", + "references/references.yml", + "references/other-refs.bib", + ), + style: "ieee", + title: "References", +) + diff --git a/fonts/Alegreya-Black.ttf b/fonts/Alegreya-Black.ttf new file mode 100644 index 0000000..846ec96 Binary files /dev/null and b/fonts/Alegreya-Black.ttf differ diff --git a/fonts/Alegreya-BlackItalic.ttf b/fonts/Alegreya-BlackItalic.ttf new file mode 100644 index 0000000..ea26069 Binary files /dev/null and b/fonts/Alegreya-BlackItalic.ttf differ diff --git a/fonts/Alegreya-Bold.ttf b/fonts/Alegreya-Bold.ttf new file mode 100644 index 0000000..fe6306a Binary files /dev/null and b/fonts/Alegreya-Bold.ttf differ diff --git a/fonts/Alegreya-BoldItalic.ttf b/fonts/Alegreya-BoldItalic.ttf new file mode 100644 index 0000000..1876276 Binary files /dev/null and b/fonts/Alegreya-BoldItalic.ttf differ diff --git a/fonts/Alegreya-ExtraBold.ttf b/fonts/Alegreya-ExtraBold.ttf new file mode 100644 index 0000000..8efdcd0 Binary files /dev/null and b/fonts/Alegreya-ExtraBold.ttf differ diff --git a/fonts/Alegreya-ExtraBoldItalic.ttf b/fonts/Alegreya-ExtraBoldItalic.ttf new file mode 100644 index 0000000..7c9d661 Binary files /dev/null and b/fonts/Alegreya-ExtraBoldItalic.ttf differ diff --git a/fonts/Alegreya-Italic-VariableFont_wght.ttf b/fonts/Alegreya-Italic-VariableFont_wght.ttf new file mode 100644 index 0000000..89a4218 Binary files /dev/null and b/fonts/Alegreya-Italic-VariableFont_wght.ttf differ diff --git a/fonts/Alegreya-Italic.ttf b/fonts/Alegreya-Italic.ttf new file mode 100644 index 0000000..20ea1d7 Binary files /dev/null and b/fonts/Alegreya-Italic.ttf differ diff --git a/fonts/Alegreya-Medium.ttf b/fonts/Alegreya-Medium.ttf new file mode 100644 index 0000000..d04ac69 Binary files /dev/null and b/fonts/Alegreya-Medium.ttf differ diff --git a/fonts/Alegreya-MediumItalic.ttf b/fonts/Alegreya-MediumItalic.ttf new file mode 100644 index 0000000..1425d18 Binary files /dev/null and b/fonts/Alegreya-MediumItalic.ttf differ diff --git a/fonts/Alegreya-Regular.ttf b/fonts/Alegreya-Regular.ttf new file mode 100644 index 0000000..3270a9f Binary files /dev/null and b/fonts/Alegreya-Regular.ttf differ diff --git a/fonts/Alegreya-SemiBold.ttf b/fonts/Alegreya-SemiBold.ttf new file mode 100644 index 0000000..b941c35 Binary files /dev/null and b/fonts/Alegreya-SemiBold.ttf differ diff --git a/fonts/Alegreya-SemiBoldItalic.ttf b/fonts/Alegreya-SemiBoldItalic.ttf new file mode 100644 index 0000000..cc93f0c Binary files /dev/null and b/fonts/Alegreya-SemiBoldItalic.ttf differ diff --git a/fonts/Alegreya-VariableFont_wght.ttf b/fonts/Alegreya-VariableFont_wght.ttf new file mode 100644 index 0000000..dcb20c0 Binary files /dev/null and b/fonts/Alegreya-VariableFont_wght.ttf differ diff --git a/fonts/AndadaPro-Bold.ttf b/fonts/AndadaPro-Bold.ttf new file mode 100644 index 0000000..2995be1 Binary files /dev/null and b/fonts/AndadaPro-Bold.ttf differ diff --git a/fonts/AndadaPro-BoldItalic.ttf b/fonts/AndadaPro-BoldItalic.ttf new file mode 100644 index 0000000..1d11318 Binary files /dev/null and b/fonts/AndadaPro-BoldItalic.ttf differ diff --git a/fonts/AndadaPro-ExtraBold.ttf b/fonts/AndadaPro-ExtraBold.ttf new file mode 100644 index 0000000..4b01581 Binary files /dev/null and b/fonts/AndadaPro-ExtraBold.ttf differ diff --git a/fonts/AndadaPro-ExtraBoldItalic.ttf b/fonts/AndadaPro-ExtraBoldItalic.ttf new file mode 100644 index 0000000..fceed56 Binary files /dev/null and b/fonts/AndadaPro-ExtraBoldItalic.ttf differ diff --git a/fonts/AndadaPro-Italic-VariableFont_wght.ttf b/fonts/AndadaPro-Italic-VariableFont_wght.ttf new file mode 100644 index 0000000..654ec33 Binary files /dev/null and b/fonts/AndadaPro-Italic-VariableFont_wght.ttf differ diff --git a/fonts/AndadaPro-Italic.ttf b/fonts/AndadaPro-Italic.ttf new file mode 100644 index 0000000..a872ef0 Binary files /dev/null and b/fonts/AndadaPro-Italic.ttf differ diff --git a/fonts/AndadaPro-Medium.ttf b/fonts/AndadaPro-Medium.ttf new file mode 100644 index 0000000..6d70db7 Binary files /dev/null and b/fonts/AndadaPro-Medium.ttf differ diff --git a/fonts/AndadaPro-MediumItalic.ttf b/fonts/AndadaPro-MediumItalic.ttf new file mode 100644 index 0000000..2cf4ae5 Binary files /dev/null and b/fonts/AndadaPro-MediumItalic.ttf differ diff --git a/fonts/AndadaPro-Regular.ttf b/fonts/AndadaPro-Regular.ttf new file mode 100644 index 0000000..7dd5f46 Binary files /dev/null and b/fonts/AndadaPro-Regular.ttf differ diff --git a/fonts/AndadaPro-SemiBold.ttf b/fonts/AndadaPro-SemiBold.ttf new file mode 100644 index 0000000..4437dcc Binary files /dev/null and b/fonts/AndadaPro-SemiBold.ttf differ diff --git a/fonts/AndadaPro-SemiBoldItalic.ttf b/fonts/AndadaPro-SemiBoldItalic.ttf new file mode 100644 index 0000000..c40213d Binary files /dev/null and b/fonts/AndadaPro-SemiBoldItalic.ttf differ diff --git a/fonts/AndadaPro-VariableFont_wght.ttf b/fonts/AndadaPro-VariableFont_wght.ttf new file mode 100644 index 0000000..b75074c Binary files /dev/null and b/fonts/AndadaPro-VariableFont_wght.ttf differ diff --git a/fonts/Fira Mono-Bold Italic.ttf b/fonts/Fira Mono-Bold Italic.ttf new file mode 100644 index 0000000..9d3d470 Binary files /dev/null and b/fonts/Fira Mono-Bold Italic.ttf differ diff --git a/fonts/Fira Mono-Bold.ttf b/fonts/Fira Mono-Bold.ttf new file mode 100644 index 0000000..c9ceb01 Binary files /dev/null and b/fonts/Fira Mono-Bold.ttf differ diff --git a/fonts/Fira Mono-Regular Italic.ttf b/fonts/Fira Mono-Regular Italic.ttf new file mode 100644 index 0000000..0591645 Binary files /dev/null and b/fonts/Fira Mono-Regular Italic.ttf differ diff --git a/fonts/Fira Mono-Regular.ttf b/fonts/Fira Mono-Regular.ttf new file mode 100644 index 0000000..e579a00 Binary files /dev/null and b/fonts/Fira Mono-Regular.ttf differ diff --git a/fonts/Gentium-Bold.ttf b/fonts/Gentium-Bold.ttf new file mode 100644 index 0000000..8d4323e Binary files /dev/null and b/fonts/Gentium-Bold.ttf differ diff --git a/fonts/Gentium-BoldItalic.ttf b/fonts/Gentium-BoldItalic.ttf new file mode 100644 index 0000000..9391b43 Binary files /dev/null and b/fonts/Gentium-BoldItalic.ttf differ diff --git a/fonts/Gentium-ExtraBold.ttf b/fonts/Gentium-ExtraBold.ttf new file mode 100644 index 0000000..7daa27d Binary files /dev/null and b/fonts/Gentium-ExtraBold.ttf differ diff --git a/fonts/Gentium-ExtraBoldItalic.ttf b/fonts/Gentium-ExtraBoldItalic.ttf new file mode 100644 index 0000000..54bd576 Binary files /dev/null and b/fonts/Gentium-ExtraBoldItalic.ttf differ diff --git a/fonts/Gentium-Italic.ttf b/fonts/Gentium-Italic.ttf new file mode 100644 index 0000000..2e12523 Binary files /dev/null and b/fonts/Gentium-Italic.ttf differ diff --git a/fonts/Gentium-Medium.ttf b/fonts/Gentium-Medium.ttf new file mode 100644 index 0000000..02ca2ec Binary files /dev/null and b/fonts/Gentium-Medium.ttf differ diff --git a/fonts/Gentium-MediumItalic.ttf b/fonts/Gentium-MediumItalic.ttf new file mode 100644 index 0000000..a00a0c3 Binary files /dev/null and b/fonts/Gentium-MediumItalic.ttf differ diff --git a/fonts/Gentium-Regular.ttf b/fonts/Gentium-Regular.ttf new file mode 100644 index 0000000..64e1d88 Binary files /dev/null and b/fonts/Gentium-Regular.ttf differ diff --git a/fonts/Gentium-SemiBold.ttf b/fonts/Gentium-SemiBold.ttf new file mode 100644 index 0000000..25f5690 Binary files /dev/null and b/fonts/Gentium-SemiBold.ttf differ diff --git a/fonts/Gentium-SemiBoldItalic.ttf b/fonts/Gentium-SemiBoldItalic.ttf new file mode 100644 index 0000000..bc0bfc4 Binary files /dev/null and b/fonts/Gentium-SemiBoldItalic.ttf differ diff --git a/fonts/Gentium.FONTLOG.txt b/fonts/Gentium.FONTLOG.txt new file mode 100644 index 0000000..1b84ede --- /dev/null +++ b/fonts/Gentium.FONTLOG.txt @@ -0,0 +1,860 @@ +FONTLOG +Gentium +============ + +This file provides detailed information on the Gentium family of fonts. +This information should be distributed along with the Gentium fonts and +any derivative works. + +## About this project + +Gentium ("belonging to the nations" in Latin) is a Unicode typeface family +designed to enable the many diverse ethnic groups around the world who use +the Latin script to produce readable, high-quality publications. The +design is intended to be highly readable, reasonably compact, and visually +attractive. Gentium has won a "Certificate of Excellence in Typeface +Design" in two major international typeface design competitions: +bukva:raz! (2001), TDC2003 (2003). The Gentium font family is based on +this original design. + +This project is intended to provide a free and open font family for all +current languages and writing systems that use Latin and Cyrillic scripts. +It supports almost the complete range of Unicode characters for these scripts, +including a comprehensive range of diacritics and a large set of symbols +useful for linguistics and literacy work. Smart font routines automatically +adjust the position of diacritics to support and optimize arbitrary +base+diacritic combinations. + +## A Note Regarding the Open Font License and TypeTuner + +The OFL prohibits the use of Reserved Font Names "Gentium" and "SIL" in +the name of any font that is derived from the Original Version of Gentium. +However, SIL Global (the Copyright Holder) grants through +this separate written agreement the right to use the Reserved Font Names +in any Modified Version of this font created by using TypeTuner as long +as the feature information contained in the Original Version is used, +unmodified, as the source for TypeTuner feature information, and +"Gentium", "Gentium Plus", or "Gentium Basic" is not the resulting font +family name. + +TypeTuner-produced fonts created in this manner are still bound by the +terms of the OFL. Specifically, the use of Reserved Font Names is +prohibited when making derivatives of a TypeTuner-produced font. Anyone +making a derivative of a TypeTuner font will need to find a different +name. For example a TypeTuner-produced font may be named +"Gentium Literacy SomeFarAwayPlace" but a derivative of that font made +with other tools would not be allowed to use the "Gentium" and "SIL" +Reserved Font Names and would have to be named something like "Grace Foo". + +## ChangeLog + +(This should list both major and minor changes, most recent first.) + +### 2 Jun 2025 (SIL WSTech Team) Gentium version 7.000 + +***Note that this is a major upgrade with significant changes to family structure, line spacing, and glyph metrics. Please read the following carefully to understand how the changes may affect you.*** + +#### Font names, family structure, and line metrics + +- Font family names have changed. It is possible to have both this release (v7) and the previous one (v6.2) installed at the same time. This is a permanent change intended to help with the transition from v6.2 to v7. + - *Gentium Plus* is now *Gentium* + - *Gentium Book Plus* is now *Gentium Book* + +- Gentium and Gentium Book families now have additional intermediate weights, with the previous Book family weights integrated into the main Gentium family. Previously existing weights in both families have not changed. Here is a comparison, with retained weights in **bold** and new weights in *italic*. The CSS values for the weights within each family are in parentheses. Italic faces follow a similar structure and correspondence. + +Gentium family | Gentium Book family +------------------ | ----------------------- +**Gentium Regular** (400) | +*Gentium Medium* (500) | **Gentium Book Regular** (400) +*Gentium SemiBold* (600) | *Gentium Book Medium* (500) +**Gentium Bold** (700) | *Gentium Book SemiBold* (600) +*Gentium ExtraBold* (800) | **Gentium Book Bold** (700) + +- The Gentium Book family is now a separate download and is no longer included in the main Gentium package. + +- The default line spacing has been significantly decreased to be more similar to other common text fonts. + +- There are no *Compact* variants. These are less needed since the default line spacing has been decreased. *Compact* versions of the v6.2 fonts remain available from https://software.sil.org/lcgfonts/download/ + +- TypeTuner Web no longer offers line spacing alternatives for the v7 fonts (Normal, Tight, Loose). If you need Tight or Loose variants the v6.2 fonts remain available and support line spacing alternatives. + +- There are no ‘pre-tuned’ regional or *Literacy* special-purpose modified variants. The v6.2 variants, including *Literacy* versions, remain available from https://software.sil.org/lcgfonts/download/. You can still manually create v7 variants with TypeTuner Web that include literacy forms and other alternatives. + +#### New features and enhancements + +- Kerning has now been expanded to cover the full range of alphabetic symbols except for small caps (which will be included in a future update). **Warning: Because of the addition of extensive kerning, line, paragraph, and page lengths may be different from v6.2.** + +- Greek OpenType support is significantly more robust, with better handling of both combining and non-combining diacritics. Macron + diacritic combinations are now supported, as well as some rare epsilon and omicron diacritic combinations. Small caps (both `smcp` and `c2sc`) are supported, with diacritics bring removed. + +- Proportional Oldstyle figures are now supported through the standard OpenType feature (`onum`). These only apply to the main numerals, not fractions, superscripts, or numeral-based symbols. + +- The default form for capital N with left hook has been changed to the lowercase style to match the capital Eng. The related feature (`cv44`) has been changed to substitute the uppercase style form. + - U+019D LATIN CAPITAL LETTER N WITH LEFT HOOK + +- Additions to Modifier Apostrophe feature (`cv70`) + - U+02BB MODIFIER LETTER TURNED COMMA + - U+02BD MODIFIER LETTER REVERSED COMMA + - U+0312 COMBINING TURNED COMMA ABOVE + - U+0314 COMBINING REVERSED COMMA ABOVE + +- Addition to Rams Horn feature (`cv25`) + - U+10791 MODIFIER LETTER SMALL RAMS HORN + +- Small caps added for these parentheses and brackets + - U+0028 LEFT PARENTHESIS + - U+0029 RIGHT PARENTHESIS + - U+005B LEFT SQUARE BRACKET + - U+005D RIGHT SQUARE BRACKET + - U+007B LEFT CURLY BRACKET + - U+007D RIGHT CURLY BRACKET + +#### New character support + +- Unicode 16 additions + - U+1C89 CYRILLIC CAPITAL LETTER TJE + - U+1C8A CYRILLIC SMALL LETTER TJE + - U+A7CB LATIN CAPITAL LETTER RAMS HORN + - This was previously in the SIL PUA (U+F26E) + - U+A7CC LATIN CAPITAL LETTER S WITH DIAGONAL STROKE + - U+A7CD LATIN SMALL LETTER S WITH DIAGONAL STROKE + - U+A7DA LATIN CAPITAL LETTER LAMBDA + - U+A7DB LATIN SMALL LETTER LAMBDA + - U+A7DC LATIN CAPITAL LETTER LAMBDA WITH STROKE + +- Orthographic at signs + - U+24B6 CIRCLED LATIN CAPITAL LETTER A + - U+24D0 CIRCLED LATIN SMALL LETTER A + +- Additional Cyrillic modifiers + - U+A69C MODIFIER LETTER CYRILLIC HARD SIGN + - U+A69D MODIFIER LETTER CYRILLIC SOFT SIGN + +- Case mapping for Coptic eie + - U+2C89 COPTIC SMALL LETTER EIE + +- Upwards ancora (and revised downwards form) + - U+2E14 DOWNWARDS ANCORA + - U+2E15 UPWARDS ANCORA + +- Prosodic symbols + - U+23D1 METRICAL BREVE + - U+23D2 METRICAL LONG OVER SHORT + - U+23D3 METRICAL SHORT OVER LONG + - U+23D4 METRICAL LONG OVER TWO SHORTS + - U+23D5 METRICAL TWO SHORTS OVER LONG + - U+23D6 METRICAL TWO SHORTS JOINED + - U+2E3D VERTICAL SIX DOTS + +- Doubled brackets and parentheses + - U+27EA MATHEMATICAL LEFT DOUBLE ANGLE BRACKET + - U+27EB MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET + - U+2E28 LEFT DOUBLE PARENTHESIS + - U+2E29 RIGHT DOUBLE PARENTHESIS + +- Logical symbols + - U+21AE LEFT RIGHT ARROW WITH STROKE + - U+22BB XOR + - U+22BC NAND + - U+22BD NOR + +#### Improvements and fixes + +- Support added for complex positioning of bridging double diacritics and nearby marks. Correct rendering requires a very specific encoding sequence - see https://software.sil.org/fonts/bridging-diacritics/ + - U+035C COMBINING DOUBLE BREVE BELOW + - U+035D COMBINING DOUBLE BREVE + - U+035E COMBINING DOUBLE MACRON + - U+035F COMBINING DOUBLE MACRON BELOW + - U+0360 COMBINING DOUBLE TILDE + - U+0361 COMBINING DOUBLE INVERTED BREVE + - U+0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW + - U+1DCD COMBINING DOUBLE CIRCUMFLEX ABOVE + - U+1DFC COMBINING DOUBLE INVERTED BREVE BELOW + - U+F17A COMBINING DOUBLE DIAERESIS (in SIL PUA) + +- Redesigned Central European carons + - U+010F LATIN SMALL LETTER D WITH CARON + - U+013D LATIN CAPITAL LETTER L WITH CARON + - U+013E LATIN SMALL LETTER L WITH CARON + - U+0165 LATIN SMALL LETTER T WITH CARON + +- Revised hooked letters to improve spacing (including kerning) and reduce collisions. Some collisions have been retained to reduce unwanted whitespace within words (e.g. ƴk). + - U+0188 LATIN SMALL LETTER C WITH HOOK + - U+01A5 LATIN SMALL LETTER P WITH HOOK + - U+01AD LATIN SMALL LETTER T WITH HOOK + - U+01B3 LATIN CAPITAL LETTER Y WITH HOOK + - U+01B4 LATIN SMALL LETTER Y WITH HOOK + - U+0260 LATIN SMALL LETTER G WITH HOOK + - U+02A0 LATIN SMALL LETTER Q WITH HOOK + - U+2C71 LATIN SMALL LETTER V WITH RIGHT HOOK + - U+2C72 LATIN CAPITAL LETTER W WITH HOOK + - U+2C73 LATIN SMALL LETTER W WITH HOOK + - U+1DF09 LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK + +- Fixed position of + - U+1D09 LATIN SMALL LETTER TURNED I + - U+1D4E MODIFIER LETTER SMALL TURNED I + +- Made Greek spacing letters non-combining + - U+037A GREEK YPOGEGRAMMENI + - U+0384 GREEK TONOS + - U+0385 GREEK DIALYTIKA TONOS + +- Fixed dotless form of + - U+1DF1A LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK + +- Revised design of + - U+A720 MODIFIER LETTER STRESS AND HIGH TONE + - U+A721 MODIFIER LETTER STRESS AND LOW TONE + +- Based design on Greek form: + - U+1D61 MODIFIER LETTER SMALL CHI + +- Improved design of some combining diacritics + - U+032B COMBINING INVERTED DOUBLE ARCH BELOW + - U+033C COMBINING SEAGULL BELOW + - U+1AB7 COMBINING OPEN MARK BELOW + - U+1AB8 COMBINING DOUBLE OPEN MARK BELOW + - U+1AC7 COMBINING INVERTED DOUBLE ARCH ABOVE + +- Revised anchors on many letters to improve diacritic positioning, including these and related letters + - U+004A LATIN CAPITAL LETTER J + - U+0051 LATIN CAPITAL LETTER Q + - U+0059 LATIN CAPITAL LETTER Y + - U+0066 LATIN SMALL LETTER F + - U+0069 LATIN SMALL LETTER I + - U+006A LATIN SMALL LETTER J + - U+0079 LATIN SMALL LETTER Y + - U+0434 CYRILLIC SMALL LETTER DE + +- Added anchors to support use of diacritics on + - U+03C8 GREEK SMALL LETTER PSI + - U+03D1 GREEK THETA SYMBOL + +- Reviewed anchors on spacing acutes and graves + - U+0060 GRAVE ACCENT + - U+00B4 ACUTE ACCENT + - U+02CA MODIFIER LETTER ACUTE ACCENT + - U+02CB MODIFIER LETTER GRAVE ACCENT + - U+02CE MODIFIER LETTER LOW GRAVE ACCENT + - U+02CF MODIFIER LETTER LOW ACUTE ACCENT + +- Low-profile diacritics are used for capitals for Cyrillic as well as Latin. + +- Autohinting is more consistent across the font family + +### 1 Feb 2023 (SIL WSTech Team) Gentium Plus version 6.200 + +This release is focused on adding features and glyphs, including support for over 180 additional characters mostly from Unicode 14 and 15. It does not include significant changes to line spacing, glyph widths, or kerning that might cause document reflow or layout changes - except for minor improvements to the size and weight of superscript, subscript, and modifier letters. + +#### New features, including *TypeTuner Web* support + +- Feature to display alternate design of clicks that sit on baseline + - Baseline clicks (cv69) + +- Standard 'subs' and 'sups' features for numerals. These are not supported by *TypeTuner Web*. + - Subscript numerals (subs) + - Superscript numerals (sups) + +- Feature to automatically construct fractions when using U+002F SOLIDUS or U+2044 FRACTION SLASH. This is not supported by *TypeTuner Web*. + - Automatic fractions (frac) + +#### New character support + +- Additional click (also supported by new baseline clicks feature) + - U+2980 TRIPLE VERTICAL BAR DELIMITER + +- Letters used for legacy Malayalam transliteration + - U+1DF25 LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK + - U+1DF26 LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK + - U+1DF27 LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK + - U+1DF28 LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK + - U+1DF29 LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK + - U+1DF2A LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK + +- Letters used for Egyptological transliteration + - U+A7BA LATIN CAPITAL LETTER GLOTTAL A + - U+A7BB LATIN SMALL LETTER GLOTTAL A + - U+A7BC LATIN CAPITAL LETTER GLOTTAL I + - U+A7BD LATIN SMALL LETTER GLOTTAL I + - U+A7BE LATIN CAPITAL LETTER GLOTTAL U + - U+A7BF LATIN SMALL LETTER GLOTTAL U + +- Greek editorial combining marks + - U+1DC0 COMBINING DOTTED GRAVE ACCENT + - U+1DC1 COMBINING DOTTED ACUTE ACCENT + +- Combining marks + - U+1ABF COMBINING LATIN SMALL LETTER W BELOW + - U+1AC0 COMBINING LATIN SMALL LETTER TURNED W BELOW + - U+1AC6 COMBINING NUMBER SIGN ABOVE + - U+1AC7 COMBINING INVERTED DOUBLE ARCH ABOVE + - U+1AC8 COMBINING PLUS SIGN ABOVE + - U+1AC9 COMBINING DOUBLE PLUS SIGN ABOVE + - U+1ACA COMBINING DOUBLE PLUS SIGN BELOW + - U+1ACB COMBINING TRIPLE ACUTE ACCENT + - U+1ACC COMBINING LATIN SMALL LETTER INSULAR G + - U+1ACD COMBINING LATIN SMALL LETTER INSULAR R + - U+1ACE COMBINING LATIN SMALL LETTER INSULAR T + - U+1DDA COMBINING LATIN SMALL LETTER G + - U+1DDC COMBINING LATIN SMALL LETTER K + - U+1DFC COMBINING DOUBLE INVERTED BREVE BELOW + +- Combining marks that are not recommended for normal use and may not combine well with letters. Precomposed characters that include the hook should be used instead except in rare cases. + - U+0321 COMBINING PALATALIZED HOOK BELOW + - U+0322 COMBINING RETROFLEX HOOK BELOW + +- Modifier letters and symbols + - U+A7F2 MODIFIER LETTER CAPITAL C + - U+A7F3 MODIFIER LETTER CAPITAL F + - U+A7F4 MODIFIER LETTER CAPITAL Q + - U+AB69 MODIFIER LETTER SMALL TURNED W + - U+AB6A MODIFIER LETTER LEFT TACK + - U+AB6B MODIFIER LETTER RIGHT TACK + - U+10780 MODIFIER LETTER SMALL CAPITAL AA + - U+10781 MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON + - U+10782 MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON + - U+10784 MODIFIER LETTER SMALL CAPITAL B + - U+10785 MODIFIER LETTER SMALL B WITH HOOK + - U+10787 MODIFIER LETTER SMALL DZ DIGRAPH + - U+10788 MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK + - U+10789 MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL + - U+1078A MODIFIER LETTER SMALL DEZH DIGRAPH + - U+1078B MODIFIER LETTER SMALL D WITH TAIL + - U+1078C MODIFIER LETTER SMALL D WITH HOOK + - U+1078D MODIFIER LETTER SMALL D WITH HOOK AND TAIL + - U+10790 MODIFIER LETTER SMALL FENG DIGRAPH + - U+10792 MODIFIER LETTER SMALL CAPITAL G + - U+10793 MODIFIER LETTER SMALL G WITH HOOK + - U+10794 MODIFIER LETTER SMALL CAPITAL G WITH HOOK + - U+10796 MODIFIER LETTER SMALL CAPITAL H + - U+10797 MODIFIER LETTER SMALL HENG WITH HOOK + - U+10798 MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK + - U+10799 MODIFIER LETTER SMALL LS DIGRAPH + - U+1079A MODIFIER LETTER SMALL LZ DIGRAPH + - U+1079B MODIFIER LETTER SMALL L WITH BELT + - U+1079C MODIFIER LETTER SMALL CAPITAL L WITH BELT + - U+1079D MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT + - U+1079E MODIFIER LETTER SMALL LEZH + - U+1079F MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK + - U+107A1 MODIFIER LETTER SMALL TURNED Y WITH BELT + - U+107A4 MODIFIER LETTER SMALL CLOSED OMEGA + - U+107A5 MODIFIER LETTER SMALL Q + - U+107A6 MODIFIER LETTER SMALL TURNED R WITH LONG LEG + - U+107A7 MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK + - U+107A8 MODIFIER LETTER SMALL R WITH TAIL + - U+107A9 MODIFIER LETTER SMALL R WITH FISHHOOK + - U+107AA MODIFIER LETTER SMALL CAPITAL R + - U+107AB MODIFIER LETTER SMALL TC DIGRAPH WITH CURL + - U+107AC MODIFIER LETTER SMALL TS DIGRAPH + - U+107AD MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK + - U+107AE MODIFIER LETTER SMALL TESH DIGRAPH + - U+107AF MODIFIER LETTER SMALL T WITH RETROFLEX HOOK + - U+107B0 MODIFIER LETTER SMALL V WITH RIGHT HOOK + - U+107B3 MODIFIER LETTER GLOTTAL STOP WITH STROKE + - U+107B4 MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE + - U+107B5 MODIFIER LETTER BILABIAL CLICK + - U+107B6 MODIFIER LETTER DENTAL CLICK + - U+107B7 MODIFIER LETTER LATERAL CLICK + - U+107B8 MODIFIER LETTER ALVEOLAR CLICK + - U+107B9 MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK + - U+107BA MODIFIER LETTER SMALL S WITH CURL + +- Cyrillic modifier letters, subscripts, and combining marks + - U+1E030 MODIFIER LETTER CYRILLIC SMALL A + - U+1E031 MODIFIER LETTER CYRILLIC SMALL BE + - U+1E032 MODIFIER LETTER CYRILLIC SMALL VE + - U+1E033 MODIFIER LETTER CYRILLIC SMALL GHE + - U+1E034 MODIFIER LETTER CYRILLIC SMALL DE + - U+1E035 MODIFIER LETTER CYRILLIC SMALL IE + - U+1E036 MODIFIER LETTER CYRILLIC SMALL ZHE + - U+1E037 MODIFIER LETTER CYRILLIC SMALL ZE + - U+1E038 MODIFIER LETTER CYRILLIC SMALL I + - U+1E039 MODIFIER LETTER CYRILLIC SMALL KA + - U+1E03A MODIFIER LETTER CYRILLIC SMALL EL + - U+1E03B MODIFIER LETTER CYRILLIC SMALL EM + - U+1E03C MODIFIER LETTER CYRILLIC SMALL O + - U+1E03D MODIFIER LETTER CYRILLIC SMALL PE + - U+1E03E MODIFIER LETTER CYRILLIC SMALL ER + - U+1E03F MODIFIER LETTER CYRILLIC SMALL ES + - U+1E040 MODIFIER LETTER CYRILLIC SMALL TE + - U+1E041 MODIFIER LETTER CYRILLIC SMALL U + - U+1E042 MODIFIER LETTER CYRILLIC SMALL EF + - U+1E043 MODIFIER LETTER CYRILLIC SMALL HA + - U+1E044 MODIFIER LETTER CYRILLIC SMALL TSE + - U+1E045 MODIFIER LETTER CYRILLIC SMALL CHE + - U+1E046 MODIFIER LETTER CYRILLIC SMALL SHA + - U+1E047 MODIFIER LETTER CYRILLIC SMALL YERU + - U+1E048 MODIFIER LETTER CYRILLIC SMALL E + - U+1E049 MODIFIER LETTER CYRILLIC SMALL YU + - U+1E04B MODIFIER LETTER CYRILLIC SMALL SCHWA + - U+1E04C MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I + - U+1E04D MODIFIER LETTER CYRILLIC SMALL JE + - U+1E04E MODIFIER LETTER CYRILLIC SMALL BARRED O + - U+1E04F MODIFIER LETTER CYRILLIC SMALL STRAIGHT U + - U+1E050 MODIFIER LETTER CYRILLIC SMALL PALOCHKA + - U+1E051 CYRILLIC SUBSCRIPT SMALL LETTER A + - U+1E052 CYRILLIC SUBSCRIPT SMALL LETTER BE + - U+1E053 CYRILLIC SUBSCRIPT SMALL LETTER VE + - U+1E054 CYRILLIC SUBSCRIPT SMALL LETTER GHE + - U+1E055 CYRILLIC SUBSCRIPT SMALL LETTER DE + - U+1E056 CYRILLIC SUBSCRIPT SMALL LETTER IE + - U+1E057 CYRILLIC SUBSCRIPT SMALL LETTER ZHE + - U+1E058 CYRILLIC SUBSCRIPT SMALL LETTER ZE + - U+1E059 CYRILLIC SUBSCRIPT SMALL LETTER I + - U+1E05A CYRILLIC SUBSCRIPT SMALL LETTER KA + - U+1E05B CYRILLIC SUBSCRIPT SMALL LETTER EL + - U+1E05C CYRILLIC SUBSCRIPT SMALL LETTER O + - U+1E05D CYRILLIC SUBSCRIPT SMALL LETTER PE + - U+1E05E CYRILLIC SUBSCRIPT SMALL LETTER ES + - U+1E05F CYRILLIC SUBSCRIPT SMALL LETTER U + - U+1E060 CYRILLIC SUBSCRIPT SMALL LETTER EF + - U+1E061 CYRILLIC SUBSCRIPT SMALL LETTER HA + - U+1E062 CYRILLIC SUBSCRIPT SMALL LETTER TSE + - U+1E063 CYRILLIC SUBSCRIPT SMALL LETTER CHE + - U+1E064 CYRILLIC SUBSCRIPT SMALL LETTER SHA + - U+1E065 CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN + - U+1E066 CYRILLIC SUBSCRIPT SMALL LETTER YERU + - U+1E067 CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN + - U+1E068 CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I + - U+1E069 CYRILLIC SUBSCRIPT SMALL LETTER DZE + - U+1E06A CYRILLIC SUBSCRIPT SMALL LETTER DZHE + - U+1E06B MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER + - U+1E06D MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE + - U+1E08F COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + +- Miscellaneous letters + - U+A7C7 LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY + - U+A7C8 LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY + - U+A7C9 LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY + - U+A7CA LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY + - U+AB66 LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK + - U+AB67 LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK + - U+AB68 LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE + +- Symbols + - U+2031 PER TEN THOUSAND SIGN + - U+203D INTERROBANG + - U+203E OVERLINE + - U+2042 ASTERISM + - U+204A TIRONIAN SIGN ET + - U+20C0 SOM SIGN + - U+218A TURNED DIGIT TWO + - U+218B TURNED DIGIT THREE + - U+21B6 ANTICLOCKWISE TOP SEMICIRCLE ARROW + - U+21B7 CLOCKWISE TOP SEMICIRCLE ARROW + - U+21BA ANTICLOCKWISE OPEN CIRCLE ARROW + - U+21BB CLOCKWISE OPEN CIRCLE ARROW + - U+2215 DIVISION SLASH + - U+2221 MEASURED ANGLE + - U+2227 LOGICAL AND + - U+2228 LOGICAL OR + - U+226E NOT LESS-THAN + - U+226F NOT GREATER-THAN + - U+2318 PLACE OF INTEREST SIGN + - U+25C9 FISHEYE + - U+25CB WHITE CIRCLE + - U+2610 BALLOT BOX + - U+2611 BALLOT BOX WITH CHECK + - U+2612 BALLOT BOX WITH X + - U+2639 WHITE FROWNING FACE + - U+263A WHITE SMILING FACE + - U+2713 CHECK MARK + - U+2717 BALLOT X + - U+27C2 PERPENDICULAR + - U+2AFD DOUBLE SOLIDUS OPERATOR + - U+2E3E WIGGLY VERTICAL LINE + - U+1F12F COPYLEFT SYMBOL + - U+1F610 NEUTRAL FACE + +#### Improvements and fixes + +- Kayan diacritics feature (cv79) now supported by TypeTuner Web + +- Combining letters, modifier letters, superscripts, and subscripts have been made more consistent in size and weight + +- Superscript and subscript metrics in OS/2 table are synchronized with the height of precomposed letters + +- Encoding fixed for U+1078E MODIFIER LETTER SMALL REVERSED E + +- Size increased for: + - U+02BE MODIFIER LETTER RIGHT HALF RING + - U+02BF MODIFIER LETTER LEFT HALF RING + - U+02D2 MODIFIER LETTER CENTRED RIGHT HALF RING + - U+02D3 MODIFIER LETTER CENTRED LEFT HALF RING + +- U+00AA FEMININE ORDINAL INDICATOR is now included in single-story/double-story features + +- The combination of U+0079 LATIN SMALL LETTER Y and U+0328 COMBINING OGONEK forms a ligature + +- Small cap form corrected for U+A78D LATIN CAPITAL LETTER TURNED H / U+0265 LATIN SMALL LETTER TURNED H + +- U+0328 COMBINING OGONEK repositioned to middle leg of U+006D LATIN SMALL LETTER M + +- Diacritic positioning improved for U+2183 ROMAN NUMERAL REVERSED ONE HUNDRED + +- Position of dot changed for U+1E23 LATIN SMALL LETTER H WITH DOT ABOVE + +#### Notes + +- The next major version (7) will address some complex pending issues and features and may include substantial changes to line spacing, glyph metrics, kerning, and even font family structure. If you have any requests for future versions, please contact us as soon as possible. + +### 9 Feb 2022 (SIL WSTech Team) Gentium Plus version 6.101 + +This is a maintenance release primarily focused on making the v6 fonts available on *TypeTuner Web*. + +#### New + +- The fonts now support SIL *TypeTuner*. Customized fonts can be created at *TypeTuner Web* (https://scripts.sil.org/ttw/fonts2go.cgi) + +- New `locl` OpenType feature that supports Macedonian (MKD/mk) Cyrillic alternates + +- Serbian and Macedonian alternates are also available through a new OpenType feature (cv84) for applications that do not support language-specific `locl` features + +- Characters have been added to support Unicode versions up to 14.0.0 (more to be added in future releases): + - U+A7C4 LATIN CAPITAL LETTER C WITH PALATAL HOOK + - U+A7C5 LATIN CAPITAL LETTER S WITH HOOK + - U+1DF00 LATIN SMALL LETTER FENG DIGRAPH WITH TRILL + - U+1DF01 LATIN SMALL LETTER REVERSED SCRIPT G + - U+1DF02 LATIN LETTER SMALL CAPITAL TURNED G + - U+1DF03 LATIN SMALL LETTER REVERSED K + - U+1DF05 LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK + - U+1DF07 LATIN SMALL LETTER REVERSED ENG + - U+1DF09 LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK + - U+1DF0A LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK + - U+1DF0B LATIN SMALL LETTER ESH WITH DOUBLE BAR + - U+1DF0C LATIN SMALL LETTER ESH WITH DOUBLE BAR AND CURL + - U+1DF0D LATIN SMALL LETTER TURNED T WITH CURL + - U+1DF0E LATIN LETTER INVERTED GLOTTAL STOP WITH CURL + - U+1DF0F LATIN LETTER STRETCHED C WITH CURL + - U+1DF10 LATIN LETTER SMALL CAPITAL TURNED K + - U+1DF11 LATIN SMALL LETTER L WITH FISHHOOK + - U+1DF12 LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK + - U+1DF13 LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK + - U+1DF14 LATIN SMALL LETTER ENG WITH PALATAL HOOK + - U+1DF15 LATIN SMALL LETTER TURNED R WITH PALATAL HOOK + - U+1DF16 LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK + - U+1DF17 LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK + - U+1DF19 LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK + - U+1DF1A LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK + - U+1DF1B LATIN SMALL LETTER O WITH RETROFLEX HOOK + - U+1DF1C LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK + - U+1DF1D LATIN SMALL LETTER C WITH RETROFLEX HOOK + - U+1DF1E LATIN SMALL LETTER S WITH CURL + +#### Improved + +- The special-purpose modified fonts have been updated to be based on the current version. These are available at https://software.sil.org/lcgfonts/download/ and include *Literacy* and *Compact* versions. + +- The Low-profile diacritics feature (ss07) is working properly again + +- U+1FBD GREEK KORONIS has been corrected to be a spacing character + +- U+02DE MODIFIER LETTER RHOTIC HOOK position improved with modifier vowels: + - U+02B8 MODIFIER LETTER SMALL Y + - U+1D53 MODIFIER LETTER SMALL OPEN O + - U+1D5A MODIFIER LETTER SMALL TURNED M + - U+1DBA MODIFIER LETTER SMALL TURNED V + +- Design improved for these characters: + - U+0184 LATIN CAPITAL LETTER TONE SIX + - U+0185 LATIN SMALL LETTER TONE SIX + +- The small caps feature (smcp) now supports more characters + +#### Changed encoding + +- The following characters were in the SIL PUA but have now been given Unicode assignments. The SIL PUA characters are now deprecated: + - U+A7C6 LATIN CAPITAL LETTER Z WITH PALATAL HOOK (was U+F234) + - U+10783 MODIFIER LETTER SMALL AE (was U+F1A1) + - U+1078F MODIFIER LETTER SMALL CLOSED REVERSED OPEN E (was U+F1A4) + - U+10791 MODIFIER LETTER SMALL RAMS HORN (was U+F1B5) + - U+10795 MODIFIER LETTER SMALL H WITH STROKE (was U+F1BC) + - U+107A0 MODIFIER LETTER SMALL TURNED Y (was U+F1CE) + - U+107A2 MODIFIER LETTER SMALL O WITH STROKE (was U+F1AB) + - U+107A3 MODIFIER LETTER SMALL CAPITAL OE (was U+F1AE) + - U+107B2 MODIFIER LETTER SMALL CAPITAL Y (was U+F1B4) + - U+1088E NABATAEAN LETTER FINAL KAPH (was U+F1A3) + - U+1DF04 LATIN LETTER SMALL CAPITAL L WITH BELT (was U+F268) + - U+1DF06 LATIN SMALL LETTER TURNED Y WITH BELT (was U+F267) + - U+1DF08 LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK (was U+F269) + - U+1DF18 LATIN SMALL LETTER EZH WITH PALATAL HOOK (was U+F235) + +### 2 July 2021 (SIL WSTech Team) Gentium Plus version 6.001 + +- Reverted font Postscript name to that used in v5 and earlier to avoid problems with unrecognized fonts when opening older documents. + +### 29 Jun 2021 (SIL WSTech Team) Gentium Plus version 6.000 + +***Note that this is a major upgrade that may cause document reflow as some glyphs widths have changed and some features have been removed.*** + +#### Removed + +- **Removed DSIGs added in version 5.000.** These have now been removed to reflect current best practice font development guidance. Adobe InDesign will complain that fonts cannot be found if a document last saved with version 5.000 is opened with version 5.960 or later installed. It will be necessary to find/replace the fonts in the document using the command in the Type menu. Please also look over the document carefully to note any places where changes in the fonts have affected letterforms or spacing. + +- **Graphite has been removed.** Application and OS support for OpenType has greatly improved, so the need for Graphite in this font family is greatly reduced. *If this affects you, and you find that OpenType does not provide sufficient support for your needs, please contact us right away.* + +- Removed the *Show Invisibles* feature. + +- Removed support for nine-level pitch contours. These will be replaced by a standalone pitch contours font in the future. + +#### Added + +Characters added to support Unicode versions 7.0-13.0, including feature support (e.g. small caps) where appropriate: + +- U+1AB0 COMBINING DOUBLED CIRCUMFLEX ACCENT +- U+1AB1 COMBINING DIAERESIS-RING +- U+1AB2 COMBINING INFINITY +- U+1AB3 COMBINING DOWNWARDS ARROW +- U+1AB4 COMBINING TRIPLE DOT +- U+1AB5 COMBINING X-X BELOW +- U+1AB6 COMBINING WIGGLY LINE BELOW +- U+1AB7 COMBINING OPEN MARK BELOW +- U+1AB8 COMBINING DOUBLE OPEN MARK BELOW +- U+1AB9 COMBINING LIGHT CENTRALIZATION STROKE BELOW +- U+1ABA COMBINING STRONG CENTRALIZATION STROKE BELOW +- U+1DF5 COMBINING UP TACK ABOVE +- U+203B REFERENCE MARK +- U+20BE LARI SIGN +- U+20BF BITCOIN SIGN +- U+27E8 MATHEMATICAL LEFT ANGLE BRACKET +- U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET +- U+2E13 DOTTED OBELOS +- U+2E14 DOWNWARDS ANCORA +- U+2E17 DOUBLE OBLIQUE HYPHEN +- U+2E22 TOP LEFT HALF BRACKET +- U+2E23 TOP RIGHT HALF BRACKET +- U+2E24 BOTTOM LEFT HALF BRACKET +- U+2E25 BOTTOM RIGHT HALF BRACKET +- U+A78F LATIN LETTER SINOLOGICAL DOT +- U+A7AE LATIN CAPITAL LETTER SMALL CAPITAL I +- U+A7AF LATIN LETTER SMALL CAPITAL Q +- U+A7B3 LATIN CAPITAL LETTER CHI +- U+A7B4 LATIN CAPITAL LETTER BETA +- U+A7B5 LATIN SMALL LETTER BETA +- U+A7B6 LATIN CAPITAL LETTER OMEGA +- U+A7B7 LATIN SMALL LETTER OMEGA +- U+A7B8 LATIN CAPITAL LETTER U WITH STROKE +- U+A7B9 LATIN SMALL LETTER U WITH STROKE +- U+AB30 LATIN SMALL LETTER BARRED ALPHA +- U+AB53 LATIN SMALL LETTER CHI +- U+AB5C MODIFIER LETTER SMALL HENG +- U+AB5E MODIFIER LETTER SMALL L WITH MIDDLE TILDE +- U+F26E CAPITAL RAMS HORN (in SIL PUA) + +#### New + +- First release that uses a UFO-based design and production workflow + - All sources are in open formats + - Build toolkit and workflow is completely open-source + - See https://silnrsi.github.io/silfontdev/en-US/Introduction.html + +- New weights previously only available in the Gentium Basic fonts. The new weights may not be identical in metrics or form to the Basic fonts, though care has been taken to minimize differences. + +- Web fonts are provided in both WOFF and WOFF2 formats + +- Applied new hinting techniques to try to improve screen rendering on Windows + +- All-new documentation in HTML and PDF formats + +- Features for controlling literacy forms of a and g separately + - Literacy a alternates (ss02) + - Literacy g alternates (ss03) + +- Feature to support side-by-side rendering of U+0300 plus U+0301 + - Kayan diacritics (cv79) + +- Tone letter features (cv91 & cv92) now supported through OpenType + +- Reduced size of the Greek prosgegrammeni (adscript iota) used with capital forms, and added a new feature to display it as a subscript (ypogegrammeni) under capitals (cv83) + +#### Fixes + +- Fixed some small capital correspondences, including added support for clicks + +- Fixed problems with spacing of tone letters + +- Improved miscellaneous anchor positions, including the position of diacritics +below glyphs with macrons below (e.g. U+1E0F LATIN SMALL LETTER D WITH LINE BELOW) + +- Improved position of diacritics for superscripts and modifier letters +(including cedilla, ogonek, rhotic hook) + +- Fixes and improvements to various glyphs: + - U+01E5 LATIN SMALL LETTER G WITH STROKE (bar position on single-story variant) + - U+02D6 MODIFIER LETTER PLUS SIGN (size) + - U+0315 COMBINING COMMA ABOVE RIGHT (made spacing) + - U+033B COMBINING SQUARE BELOW (more rectangular) + - U+1D02 LATIN SMALL LETTER TURNED AE (made double-story in italic) + - U+1D15 LATIN LETTER SMALL CAPITAL OU (form) + - U+1D46 MODIFIER LETTER SMALL TURNED AE (made double-story in italic) + - U+1D77 LATIN SMALL LETTER TURNED G (position) + - U+1D78 MODIFIER LETTER CYRILLIC EN (form) + - U+2053 SWUNG DASH + - U+A75B LATIN SMALL LETTER R ROTUNDA (spacing) + - U+A76A LATIN CAPITAL LETTER ET + - U+A76B LATIN SMALL LETTER ET + - U+A76C LATIN CAPITAL LETTER IS + - U+A76D LATIN SMALL LETTER IS + - U+A77F LATIN SMALL LETTER TURNED INSULAR G (position) + - U+A7F8 MODIFIER LETTER CAPITAL H WITH STROKE (form) + - U+A7FA LATIN LETTER SMALL CAPITAL TURNED M (italic) + +#### Known issues + +- The low-profile diacritics feature (ss07) is present but not working properly in some cases. + +- There is no support for TypeTuner or TypeTuner Web. We hope to add that support soon. + +- There are no regional subsets. Please contact us if these are a priority for you and describe how you use them. We are reassessing whether to provide these subsets. With current web technology and WOFF2 compression most uses can be met equally well with the full fonts. + +### 27 Oct 2014 (SIL NRSI team) Gentium Plus version 5.000 +- Added Stylistic Sets to the font for OpenType support + of previously Graphite-only features +- Added Character Variants to the font for OpenType support + of previously Graphite-only features +- Added Serbian feature when Serbian language is turned on +- Added hook D variant feature (for U+018A/U+0257) +- Removed "Show deprecated PUA" feature +- Removed "Romanian-style diacritics" feature + (because glyphs are now encoded) +- Removed "Diacritic selection" feature +- Added U+039E, U+03BC, U+03C6 and U+03C9 in the Greek and Coptic block +- Added U+0528..U+052F in the Cyrillic Supplement block +- Added U+2041 in the General Punctuation block +- Added U+2095..U+209C in the Superscripts and Subscripts block +- Added U+20B6..U+20BD in the Currency Symbols block +- Added U+210C, U+2113, U+2117, U+212D, U+2135, U+214F in the + Letterlike Symbols block +- Added U+2150..U+2152 and U+2189 in the Number Forms block +- Added U+2226, U+2234..U+2235, U+2262, U+2282..U+2287 in the + Mathematical Operators block +- Added U+2640, U+2642, U+266D, U+266F in the Miscellaneous Symbols block +- Added U+27E8..U+27E9 in the Miscellaneous Mathematical Symbols-A block +- Added U+2C7E..U+2C7F in the Latin Extended-C block +- Added U+2C88 in the Coptic block +- Added U+2E00..U+2E0D, U+2E3A..U+2E3B in the Supplemental + Punctuation block +- Added U+A736..U+A73F, U+A742..U+A74D, U+A750..U+A787, U+A790..U+A7AD, + U+A7B0..U+A7B1, U+A7F7..U+A7FA in the Latin Extended-D block. + These were also added to relevant features. +- Added U+A92E in the Kayah Li block (to support the Kayah Li language + when using the Roman script) +- Added U+AB64..U+AB65 in the Latin Extended-E block +- Added U+1D40C, U+1D504..U+1D505, U+1D50A, U+1D50E..U+1D50F, U+1D514, + U+1D516..U+1D517, U+1D519 in the Mathematical Alphanumeric Symbols block +- Added PUA characters U+F26C (curl J) and U+F26D (left-hook b) +- Characters in our PUA that were added to Unicode have had their + codepoints updated: + F1AD>A7F9, F266>A78E, F26B>A78D, F32C>0526, F32D>0527, F17B>1DFD, F209>2C70 +- These PUA characters were deprecated (now white on black glyphs): + U+F17B, U+F1AD, U+F209, U+F247, U+F248, U+F266, U+F26B, U+F32C, U+F32D +- Deleted U+0149 as it is officially deprecated in Unicode +- Added support for shorter macrons under narrow letters (i,l,r,t). + (This only works for Graphite or using precomposed characters in OpenType.) +- Made it possible for saltillo characters (U+A78B and U+A78C) to "carry" + diacritics +- Improved design of U+A722..U+A725 and U+A78D +- Refactored all cedilla positioning +- Removal of unneeded duplicate glyphs (because of improvements in smart + font code) +- Bug fix in Graphite code to allow for simultaneous selection of Vietnamese + alternates and Small Caps +- Bug fix in Graphite code to allow for simultaneous selection of Ogonek + alternates and Small Caps +- Subscript and Superscript parentheses, minus, plus and equals were raised. + Metrics were not changed. +- Adjusted tails on U+2C6B, U+2C6C +- Arrowhead design of U+21A8 modified to match the other arrows +- Placement of Ogonek revisited +- Improved hinting +- Version number bumped up to match other SIL Roman fonts +- Slight modification to positioning of U+0361 and U+035C +- Narrow No-Break Space (U+202F) adjusted to be narrower + than the No-Break Space (U+00A0) +- Changed the strongly curved hooks on Cyrillic U+04C3..U+04C4, U+04C7..U+04C8, + U+04FC..U+04FD, U+0512..U+0513 to be more consistent with other hooks and also + reshaped U+0402, U+0452, U+0494, U+0495, U+04A6, U+04A7, U+0520..U+0523 to match +- Modified Cyrillic italic versions of U+04AF, U+04B1 +- Changed postscript names for U+0218 and U+0219 +- Changed postscript names for U+2203, U+232A and U+2329 +- "Hide tone contour staves" feature now works with single tonebar +- Fixed outline for U+1DBF +- Allowed combining marks to render properly with U+02D0 +- Added U+037F in the Greek and Coptic block +- Adjusted U+1FBD so that it is a spacing mark in Graphite +- Improved design of U+2C72 and U+2C73 (hook w) for collision avoidance +- Adjusted width of U+005F +- Adjusted design of U+0264 + +### 1 Aug 2012 (SIL NRSI team) Gentium Plus version 1.510 +- Changed Graphite feature identifiers from integers to 4-character + alphanumeric tags (no other changes) + +### 12 Sep 2011 (SIL NRSI team) Gentium Plus version 1.508 +- Removed the VDMX table +- Changed version number (using ttfsetver) + +### 25 Aug 2011 (SIL NRSI team) Gentium Plus version 1.506 +- Double-encoded the SIL PUA characters which were added to Unicode 5.2 and 6.0 + (using ttfremap) +- Corrected problem with coverage tables (using ttfsortcover) +- Changed version number (using ttfsetver) +- Added device metric tables +- Added an empty dsig table + +### 16 Nov 2010 (SIL NRSI team) Gentium Plus version 1.504 +- Added codepage bits for 1251 (Cyrillic), 1257 (Windows Baltic), 1258 + (Vietnamese) + +### 1 Nov 2010 (SIL NRSI team) Gentium Plus version 1.502 +- Regular and Italic weights only +- New OpenType and Graphite support +- Converted kerning to OpenType (but not Graphite) +- New extended Cyrillic script support, inc. Serbian alternates +- Character set and features up to same level as Charis SIL 4.106 +- Support for more historic Greek characters and alternate seriffed beta +- No separate GentiumAlt fonts (replaced by font features) +- Added WOFF versions and examples + +### 28 Nov 2005 (Victor Gaultney) Gentium version 1.02 +- Changed licensing to the SIL Open Font License +- Included FontLab source files +- Fixed some duplicate PostScript glyph names +- Fixed italic angle + +### 19 Sep 2003 (Victor Gaultney) Gentium version 1.01 +- Maintenance release focused on changing internal font +- Information to reflect the changeover to an SIL project +- There is only one bug fix - the Greek mu PS name was changed to try and fix +a display/printing problem. There is still no manual hinting. + +### 16 Sep 2002 (Victor Gaultney) Gentium version 1.00 +- First public release +- No manual hinting is included in this version. Some has been done - with +good results - but is not yet complete enough. + + +## Acknowledgements + +(Here is where contributors can be acknowledged. If you make modifications be +sure to add your name (N), email (E), web-address (W) and description (D). +This list is sorted by last name in alphabetical order.) + +N: Jon Coblentz, Sharon Correll, Lorna Evans, Bob Hallissy, +Martin Hosken, Annie Olsen, David Raymond, Iska Routamaa, Becca Spalinger, +Alan Ward +E: https://software.sil.org/gentium/about/contact/ +W: https://software.sil.org/gentium/ +D: SIL designers and font engineers + +N: Victor Gaultney +E: https://software.sil.org/gentium/about/contact/ +W: https://gaultney.org/jvgtype/ +D: Original Designer + +The Gentium fonts are maintained by SIL Global, a global, +faith-based nonprofit that works with local communities around the world +to develop language solutions that expand possibilities for a better life. + +For more information or support please visit: +https://software.sil.org/gentium/ diff --git a/fonts/Gentium.OFL-FAQ.txt b/fonts/Gentium.OFL-FAQ.txt new file mode 100644 index 0000000..51e5a13 --- /dev/null +++ b/fonts/Gentium.OFL-FAQ.txt @@ -0,0 +1,451 @@ +OFL FAQ - Frequently Asked Questions about the SIL Open Font License (OFL) +Version 1.1-update7 - November 2023 +The OFL FAQ is Copyright (c) 2005-2023, SIL International (https://www.sil.org) +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. +(See https://openfontlicense.org/ofl-faq for updates) + + +CONTENTS OF THIS FAQ +1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL +2 USING OFL FONTS FOR WEBPAGES AND ONLINE WEBFONT SERVICES +3 MODIFYING OFL-LICENSED FONTS +4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL +5 CHOOSING RESERVED FONT NAMES +6 ABOUT THE FONTLOG +7 MAKING CONTRIBUTIONS TO OFL PROJECTS +8 ABOUT THE LICENSE ITSELF +9 ABOUT SIL INTERNATIONAL +APPENDIX A - FONTLOG EXAMPLE + +1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL +1.1 Can I use the fonts for a book or other print publication, to create logos or other graphics, or even to manufacture objects based on their outlines? +Yes. You are very welcome to do so. Authors of fonts released under the OFL allow you to use their font software as such for any kind of design work. No additional license or permission is required, unlike with some other licenses. Some examples of these uses are: logos, posters, business cards, stationery, video titling, signage, t-shirts, personalised fabric, 3D-printed/laser-cut shapes, sculptures, rubber stamps, cookie cutters and lead type. + +1.1.1 Does that restrict the license or distribution of that artwork? +No. You remain the author and copyright holder of that newly derived graphic or object. You are simply using an open font in the design process. It is only when you redistribute, bundle or modify the font itself that other conditions of the license have to be respected (see below for more details). + +1.1.2 Is any kind of acknowledgement required? +No. Font authors may appreciate being mentioned in your artwork's acknowledgements alongside the name of the font, possibly with a link to their website, but that is not required. + +1.2 Can the fonts be included with Free/Libre and Open Source Software collections such as GNU/Linux and BSD distributions and repositories? +Yes! Fonts licensed under the OFL can be freely included alongside other software under FLOSS (Free/Libre and Open Source Software) licenses. Since fonts are typically aggregated with, not merged into, existing software, there is little need to be concerned about incompatibility with existing software licenses. You may also repackage the fonts and the accompanying components in a .rpm or .deb package (or other similar package formats or installers) and include them in distribution CD/DVDs and online repositories. (Also see entry 5.9 about rebuilding from source.) + +1.3 I want to distribute the fonts with my program, does this mean my program also has to be Free/Libre and Open Source Software? +No. Only the portions based on the Font Software are required to be released under the OFL. The intent of the license is to allow aggregation or bundling with software under restricted licensing as well. + +1.4 Can I sell a software package that includes these fonts? +Yes, you can do this with both the Original Version and a Modified Version of the fonts. Examples of bundling made possible by the OFL would include: text editors, word processors, design and publishing applications, training and educational software, games and entertainment software, mobile device applications, etc. + +1.5 Can I include the fonts on a CD of freeware or commercial fonts? +Yes, as long some other font or software is also on the disk, so the OFL font is not sold by itself. + +1.6 Why won't the OFL let me sell the fonts alone? +The intent is to keep people from making money by simply redistributing the fonts. The only people who ought to profit directly from the fonts should be the original authors, and those authors have kindly given up potential direct income to distribute their fonts under the OFL. Please honour and respect their contribution! + +1.7 What about sharing OFL fonts with friends on a CD, DVD or USB stick? +You are very welcome to share open fonts with friends, family and colleagues through removable media. Just remember to include the full font package, including any copyright notices and licensing information as available in OFL.txt. In the case where you sell the font, it has to come bundled with software. + +1.8 Can I host the fonts on a website for others to use? +Yes, as long as you make the full font package available. In most cases it may be best to point users to the main site that distributes the Original Version so they always get the most recent stable and complete version. See also discussion of webfonts in Section 2. + +1.9 Can I host the fonts on a server for use over our internal network? +Yes. If the fonts are transferred from the server to the client computer by means that allow them to be used even if the computer is no longer attached to the network, the full package (copyright notices, licensing information, etc.) should be included. + +1.10 Does the full OFL license text always need to accompany the font? +The only situation in which an OFL font can be distributed without the text of the OFL (either in a separate file or in font metadata), is when a font is embedded in a document or bundled within a program. In the case of metadata included within a font, it is legally sufficient to include only a link to the text of the OFL on https://openfontlicense.org, but we strongly recommend against this. Most modern font formats include metadata fields that will accept the full OFL text, and full inclusion increases the likelihood that users will understand and properly apply the license. + +1.11 What do you mean by 'embedding'? How does that differ from other means of distribution? +By 'embedding' we mean inclusion of the font in a document or file in a way that makes extraction (and redistribution) difficult or clearly discouraged. In many cases the names of embedded fonts might also not be obvious to those reading the document, the font data format might be altered, and only a subset of the font - only the glyphs required for the text - might be included. Any other means of delivering a font to another person is considered 'distribution', and needs to be accompanied by any copyright notices and licensing information available in OFL.txt. + +1.12 So can I embed OFL fonts in my document? +Yes, either in full or a subset. The restrictions regarding font modification and redistribution do not apply, as the font is not intended for use outside the document. + +1.13 Does embedding alter the license of the document itself? +No. Referencing or embedding an OFL font in any document does not change the license of the document itself. The requirement for fonts to remain under the OFL does not apply to any document created using the fonts and their derivatives. Similarly, creating any kind of graphic using a font under the OFL does not make the resulting artwork subject to the OFL. + +1.14 If OFL fonts are extracted from a document in which they are embedded (such as a PDF file), what can be done with them? Is this a risk to author(s)? +The few utilities that can extract fonts embedded in a PDF will typically output limited amounts of outlines - not a complete font. To create a working font from this method is much more difficult and time consuming than finding the source of the original OFL font. So there is little chance that an OFL font would be extracted and redistributed inappropriately through this method. Even so, copyright laws address any misrepresentation of authorship. All Font Software released under the OFL and marked as such by the author(s) is intended to remain under this license regardless of the distribution method, and cannot be redistributed under any other license. We strongly discourage any font extraction - we recommend directly using the font sources instead - but if you extract font outlines from a document, please be considerate: respect the work of the author(s) and the licensing model. + +1.15 What about distributing fonts with a document? Within a compressed folder structure? Is it distribution, bundling or embedding? +Certain document formats may allow the inclusion of an unmodified font within their file structure which may consist of a compressed folder containing the various resources forming the document (such as pictures and thumbnails). Including fonts within such a structure is understood as being different from embedding but rather similar to bundling (or mere aggregation) which the license explicitly allows. In this case the font is conveyed unchanged whereas embedding a font usually transforms it from the original format. The OFL does not allow anyone to extract the font from such a structure to then redistribute it under another license. The explicit permission to redistribute and embed does not cancel the requirement for the Font Software to remain under the license chosen by its author(s). Even if the font travels inside the document as one of its assets, it should not lose its authorship information and licensing. + +1.16 What about ebooks shipping with open fonts? +The requirements differ depending on whether the fonts are linked, embedded or distributed (bundled or aggregated). Some ebook formats use web technologies to do font linking via @font-face, others are designed for font embedding, some use fonts distributed with the document or reading software, and a few rely solely on the fonts already present on the target system. The license requirements depend on the type of inclusion as discussed in 1.15. + +1.17 Can Font Software released under the OFL be subject to URL-based access restrictions methods or DRM (Digital Rights Management) mechanisms? +Yes, but these issues are out of scope for the OFL. The license itself neither encourages their use nor prohibits them since such mechanisms are not implemented in the components of the Font Software but through external software. Such restrictions are put in place for many different purposes corresponding to various usage scenarios. One common example is to limit potentially dangerous cross-site scripting attacks. However, in the spirit of libre/open fonts and unrestricted writing systems, we strongly encourage open sharing and reuse of OFL fonts, and the establishment of an environment where such restrictions are unnecessary. Note that whether you wish to use such mechanisms or you prefer not to, you must still abide by the rules set forth by the OFL when using fonts released by their authors under this license. Derivative fonts must be licensed under the OFL, even if they are part of a service for which you charge fees and/or for which access to source code is restricted. You may not sell the fonts on their own - they must be part of a larger software package, bundle or subscription plan. For example, even if the OFL font is distributed in a software package or via an online service using a DRM mechanism, the user would still have the right to extract that font, use, study, modify and redistribute it under the OFL. + +1.18 I've come across a font released under the OFL. How can I easily get more information about the Original Version? How can I know where it stands compared to the Original Version or other Modified Versions? +Consult the copyright statement(s) in the license for ways to contact the original authors. Consult the FONTLOG (see section 6 for more details and examples) for information on how the font differs from the Original Version, and get in touch with the various contributors via the information in the acknowledgement section. Please consider using the Original Versions of the fonts whenever possible. + +1.19 What do you mean in condition 4 of the OFL's permissions and conditions? Can you provide examples of abusive promotion / endorsement / advertisement vs. normal acknowledgement? +The intent is that the goodwill and reputation of the author(s) should not be used in a way that makes it sound like the original author(s) endorse or approve of a specific Modified Version or software bundle. For example, it would not be right to advertise a word processor by naming the author(s) in a listing of software features, or to promote a Modified Version on a website by saying "designed by ...". However, it would be appropriate to acknowledge the author(s) if your software package has a list of people who deserve thanks. We realize that this can seem to be a grey area, but the standard used to judge an acknowledgement is that if the acknowledgement benefits the author(s) it is allowed, but if it primarily benefits other parties, or could reflect poorly on the author(s), then it is not. + +1.20 I'm writing a small app for mobile platforms, do I need to include the whole package? +If you bundle a font under the OFL with your mobile app you must comply with the terms of the license. At a minimum you must include the copyright statement, the license notice and the license text. A mention of this information in your About box or Changelog, with a link to where the font package is from, is good practice, and the extra space needed to carry these items is very small. You do not, however, need to include the full contents of the font package - only the fonts you use and the copyright and license that apply to them. For example, if you only use the regular weight in your app, you do not need to include the italic and bold versions. + +1.21 What about including OFL fonts by default in my firmware or dedicated operating system? +Many such systems are restricted and turned into appliances so that users cannot study or modify them. Using open fonts to increase quality and language coverage is a great idea, but you need to be aware that if there is a way for users to extract fonts you cannot legally prevent them from doing that. The fonts themselves, including any changes you make to them, must be distributed under the OFL even if your firmware has a more restrictive license. If you do transform the fonts and change their formats when you include them in your firmware you must respect any names reserved by the font authors via the RFN mechanism and pick your own font name. Alternatively if you directly add a font under the OFL to the font folder of your firmware without modifying or optimizing it you are simply bundling the font like with any other software collection, and do not need to make any further changes. + +1.22 Can I make and publish CMS themes or templates that use OFL fonts? Can I include the fonts themselves in the themes or templates? Can I sell the whole package? +Yes, you are very welcome to integrate open fonts into themes and templates for your preferred CMS and make them more widely available. Remember that you can only sell the fonts and your CMS add-on as part of a software bundle. (See entry 1.4 for details and examples about selling bundles). + +1.23 Can OFL fonts be included in services that deliver fonts to the desktop from remote repositories? Even if they contain both OFL and non-OFL fonts? +Yes. Some foundries have set up services to deliver fonts to subscribers directly to desktops from their online repositories; similarly, plugins are available to preview and use fonts directly in your design tool or publishing suite. These services may mix open and restricted fonts in the same channel, however they should make a clear distinction between them to users. These services should also not hinder users (such as through DRM or obfuscation mechanisms) from extracting and using the OFL fonts in other environments, or continuing to use OFL fonts after subscription terms have ended, as those uses are specifically allowed by the OFL. + +1.24 Can services that provide or distribute OFL fonts restrict my use of them? +No. The terms of use of such services cannot replace or restrict the terms of the OFL, as that would be the same as distributing the fonts under a different license, which is not allowed. You are still entitled to use, modify and redistribute them as the original authors have intended outside of the sole control of that particular distribution channel. Note, however, that the fonts provided by these services may differ from the Original Versions. + +1.25 Can a font released under the OFL be used as a source by an AI (Artificial Intelligence), an ML (Machine Learning) model, a NN (neural network), or similar system to create a new font and release it under a different license? +No. Any font produced from such systems whose input or training data contains any source file from a font project licensed under the OFL should be considered a derivative work. All Font Software released under the OFL and marked as such by the author(s) must remain under the OFL regardless of the way the sources might have been transformed, in whole or in part. If you would like to use font sources to produce a font to be released under a different license, then you need to contact the corresponding authors directly to ask for their explicit permission. + +1.26 Can OFL fonts be used by AI-based design tools? +Yes, as long as the resulting work is not intended to be a font. Using such automated systems to produce graphical output - something that is not a font - is considered similar to normal usage. It is equivalent to using an OFL font in the graphic design process as discussed in question 1.1. + + +2 USING OFL FONTS FOR WEBPAGES AND ONLINE WEBFONT SERVICES + +NOTE: This section often refers to a separate paper on 'Webfonts and Reserved Font Names'. This is available at https://openfontlicense.org/webfonts-and-reserved-font-names + +2.1 Can I make webpages using OFL fonts? +Yes! Go ahead! You could ask visitors to download and install the fonts, but loading the fonts dynamically as webfonts through CSS @font-face declarations is a much better method. The referenced fonts can be hosted on the same server as other site assets and content, or loaded from a separate webfont service. This is recommended and explicitly allowed by the licensing model because it is distribution. + +2.2 Can I make and use WOFF (Web Open Font Format) versions of OFL fonts? +Yes, but you need to be careful. A change in font format normally is considered modification, and Reserved Font Names (RFNs) cannot be used. Because of the design of the WOFF and WOFF2 formats, however, it is possible to create a WOFF/WOFF2 version that is not considered modification, and so would not require a name change. + +2.2.1 How can I make sure that a WOFF/WOFF2 version is not considered modification? +You are allowed to create, use and distribute a WOFF version of an OFL font without changing the font name, but only if the original font data remains unchanged except for WOFF compression, and WOFF-specific metadata is either omitted altogether or present and includes, unaltered, the contents of all equivalent metadata in the original font. + +2.2.2 Do WOFF conversion tools and services automatically meet these requirements? +No. Some WOFF conversion tools and online services do not meet the two requirements listed above, and so their output must be considered a Modified Version. So be very careful and check to be sure that the tool or service you're using is compressing unchanged data and completely and accurately reflecting the original font metadata. + +2.3 What about other webfont formats such as EOT/EOTLite/CWT/etc.? +In most cases these formats alter the original font data more than WOFF, and do not completely support appropriate metadata, so their use must be considered modification and RFNs may not be used. However, there may be certain formats or usage scenarios that may allow the use of RFNs. See https://openfontlicense.org/webfonts-and-reserved-font-names + +2.4 Can I make OFL fonts available through webfont online services? +Yes, you are welcome to include OFL fonts in online webfont services as long as you properly meet all the conditions of the license. The origin and open status of the font should be clear among the other fonts you are hosting. Authorship, copyright notices and license information must be sufficiently visible to your users or subscribers so they know where the font comes from and the rights granted by the author(s). Make sure the font file contains the needed copyright notice(s) and licensing information in its metadata. Please double-check the accuracy of every field to prevent contradictory information. Other font formats, including EOT/EOTLite/CWT and superior alternatives like WOFF, already provide fields for this information. Remember that if you modify the font within your library or convert it to another format for any reason the OFL restrictions apply and you need to change the names accordingly. Please respect the author's wishes as expressed in the OFL and do not misrepresent original designers and their work. Don't lump quality open fonts together with dubious freeware or public domain fonts. Consider how you can best work with the original designers and foundries, support their efforts and generate goodwill that will benefit your service. (See entry 1.17 for details related to URL-based access restrictions methods or DRM mechanisms). + +2.5 Some webfont formats and services provide ways of 'optimizing' the font for a particular website or web application; is that allowed? +Yes, it is permitted, but remember that these optimized versions are Modified Versions and so must follow OFL requirements like appropriate renaming. Also you need to bear in mind the other important parameters beyond compression, speed and responsiveness: you need to consider the audience of your particular website or web application, as choosing some optimization parameters may turn out to be less than ideal for them. Subsetting by removing certain glyphs or features may seriously limit functionality of the font in various languages that your users expect. It may also introduce degradation of quality in the rendering or specific bugs on the various target platforms compared to the original font from upstream. In other words, remember that one person's optimized font may be another person's missing feature. Various advanced typographic features (OpenType, Graphite or AAT) are also available through CSS and may provide the desired effects without the need to modify the font. + +2.6 Is subsetting a webfont considered modification? +Yes. Removing any parts of the font when delivering a webfont to a browser, including unused glyphs and smart font code, is considered modification. This is permitted by the OFL but would not normally allow the use of RFNs. Some newer subsetting technologies may be able to subset in a way that allows users to effectively have access to the complete font, including smart font behaviour. See entry 2.8 and https://openfontlicense.org/webfonts-and-reserved-font-names + +2.7 Are there any situations in which a modified webfont could use RFNs? +Yes. If a webfont is optimized only in ways that preserve Functional Equivalence (see entry 2.8), then it may use RFNs, as it reasonably represents the Original Version and respects the intentions of the author(s) and the main purposes of the RFN mechanism (avoids collisions, protects authors, minimizes support, encourages derivatives). However this is technically very difficult and often impractical, so a much better scenario is for the webfont service or provider to sign a separate agreement with the author(s) that allows the use of RFNs for Modified Versions. + +2.8 How do you know if an optimization to a webfont preserves Functional Equivalence? +Functional Equivalence is described in full in the 'Webfonts and Reserved Font Names' paper at https://openfontlicense.org/webfonts-and-reserved-font-names, in general, an optimized font is deemed to be Functionally Equivalent (FE) to the Original Version if it: + +- Supports the same full character inventory. If a character can be properly displayed using the Original Version, then that same character, encoded correctly on a webpage, will display properly. +- Provides the same smart font behavior. Any dynamic shaping behavior that works with the Original Version should work when optimized, unless the browser or environment does not support it. There does not need to be guaranteed support in the client, but there should be no forced degradation of smart font or shaping behavior, such as the removal or obfuscation of OpenType, Graphite or AAT tables. +- Presents text with no obvious degradation in visual quality. The lettershapes should be equally (or more) readable, within limits of the rendering platform. +- Preserves original author, project and license metadata. At a minimum, this should include: Copyright and authorship; The license as stated in the Original Version, whether that is the full text of the OFL or a link to the web version; Any RFN declarations; Information already present in the font or documentation that points back to the Original Version, such as a link to the project or the author's website. + +If an optimized font meets these requirements, and so is considered to be FE, then it's very likely that the original author would feel that the optimized font is a good and reasonable equivalent. If it falls short of any of these requirements, the optimized font does not reasonably represent the Original Version, and so should be considered to be a Modified Version. Like other Modified Versions, it would not be allowed to use any RFNs and you simply need to pick your own font name. + +2.9 Can fonts released under the OFL be used with Incremental Font Transfer (IFT) or similar on-the-fly subsetting and compression technologies? +Yes, if they provide a sufficient level of Functional Equivalence. Extra care should be taken to make sure that such processes - both on the server and on the client - do not break glyph coverage and smart features especially for lesser-known and lesser-resourced languages in the resulting document or app. See the 'Webfonts and Reserved Font Names' paper on https://openfontlicense.org/webfonts-and-reserved-font-names for more about the goals and the rationale. + +2.10 Isn't use of webfonts another form of embedding? +No. Unlike embedded fonts in a PDF, webfonts are not an integrated part of the document itself. They are not specific to a single document and are often applied to thousands of documents around the world. The font data is not stored alongside the document data and often originates from a different location. The ease by which the webfonts used by a document may be identified and downloaded for desktop use demonstrates that they are philosophically and technically separate from the webpages that specify them. See https://openfontlicense.org/webfonts-and-reserved-font-names + +2.11 So would it be better to not use RFNs at all if you want your font to be distributed by a webfont service? +No. Although the OFL does not require authors to use RFNs, the RFN mechanism is an important part of the OFL model and completely compatible with webfont services. If that webfont service modifies the fonts, then the best solution is to sign a separate agreement for the use of any RFNs. It is perfectly valid for an author to not declare any RFNs, but before they do so they need to fully understand the benefits they are giving up, and the overall negative effect of allowing many different versions bearing the same name to be widely distributed. As a result, we don't generally recommend it. + +2.12 What should an agreement for the use of RFNs say? Are there any examples? +There is no prescribed format for this agreement, as legal systems vary, and no recommended examples. Authors may wish to add specific clauses to further restrict use, require author review of Modified Versions, establish user support mechanisms or provide terms for ending the agreement. Such agreements are usually not public, and apply only to the main parties. However, it would be very beneficial for webfont services to clearly state when they have established such agreements, so that the public understands clearly that their service is operating appropriately. + +See the separate paper on 'Webfonts and Reserved Font Names' for in-depth discussion of issues related to the use of RFNs for webfonts. This is available at https://openfontlicense.org/webfonts-and-reserved-font-names + + +3 MODIFYING OFL-LICENSED FONTS + +3.1 Can I change the fonts? Are there any limitations to what things I can and cannot change? +You are allowed to change anything, as long as such changes do not violate the terms of the license. In other words, you are not allowed to remove the copyright statement(s) from the font, but you could put additional information into it that covers your contribution. See the placeholders in the OFL header template for recommendations on where to add your own statements. (Remember that, when authors have reserved names via the RFN mechanism, you need to change the internal names of the font to your own font name when making your modified version even if it is just a small change.) + +3.2 I have a font that needs a few extra glyphs - can I take them from an OFL licensed font and copy them into mine? +Yes, but if you distribute that font to others it must be under the OFL, and include the information mentioned in condition 2 of the license. + +3.3 Can I charge people for my additional work? In other words, if I add a bunch of special glyphs or OpenType/Graphite/AAT code, can I sell the enhanced font? +Not by itself. Derivative fonts must be released under the OFL and cannot be sold by themselves. It is permitted, however, to include them in a larger software package (such as text editors, office suites or operating systems), even if the larger package is sold. In that case, you are strongly encouraged, but not required, to also make that derived font easily and freely available outside of the larger package. + +3.4 Can I pay someone to enhance the fonts for my use and distribution? +Yes. This is a good way to fund the further development of the fonts. Keep in mind, however, that if the font is distributed to others it must be under the OFL. You won't be able to recover your investment by exclusively selling the font, but you will be making a valuable contribution to the community. Please remember how you have benefited from the contributions of others. + +3.5 I need to make substantial revisions to the font to make it work with my program. It will be a lot of work, and a big investment, and I want to be sure that it can only be distributed with my program. Can I restrict its use? +No. If you redistribute a Modified Version of the font it must be under the OFL. You may not restrict it in any way beyond what the OFL permits and requires. This is intended to ensure that all released improvements to the fonts become available to everyone. But you will likely get an edge over competitors by being the first to distribute a bundle with the enhancements. Again, please remember how you have benefited from the contributions of others. + +3.6 Do I have to make any derivative fonts (including extended source files, build scripts, documentation, etc.) publicly available? +No, but please consider sharing your improvements with others. You may find that you receive in return more than what you gave. + +3.7 If a trademark is claimed in the OFL font, does that trademark need to remain in modified fonts? +Yes. Any trademark notices must remain in any derivative fonts to respect trademark laws, but you may add any additional trademarks you claim, officially registered or not. For example if an OFL font called "Foo" contains a notice that "Foo is a trademark of Acme", then if you rename the font to "Bar" when creating a Modified Version, the new trademark notice could say "Foo is a trademark of Acme Inc. - Bar is a trademark of Roadrunner Technologies Ltd.". Trademarks work alongside the OFL and are not subject to the terms of the licensing agreement. The OFL does not grant any rights under trademark law. Bear in mind that trademark law varies from country to country and that there are no international trademark conventions as there are for copyright. You may need to significantly invest in registering and defending a trademark for it to remain valid in the countries you are interested in. This may be costly for an individual independent designer. + +3.8 If I commit changes to a font (or publish a branch in a DVCS) as part of a public open source software project, do I have to change the internal font names? +Only if there are declared RFNs. Making a public commit or publishing a public branch is effectively redistributing your modifications, so any change to the font will require that you do not use the RFNs. Even if there are no RFNs, it may be useful to change the name or add a suffix indicating that a particular version of the font is still in development and not released yet. This will clearly indicate to users and fellow designers that this particular font is not ready for release yet. See section 5 for more details. + + +4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL + +4.1 Can I use the SIL OFL for my own fonts? +Yes! We heartily encourage everyone to use the OFL to distribute their own original fonts. It is a carefully constructed license that allows great freedom along with enough artistic integrity protection for the work of the authors as well as clear rules for other contributors and those who redistribute the fonts. The licensing model is used successfully by various organisations, both for-profit and not-for-profit, to release fonts of varying levels of scope and complexity. + +4.2 What do I have to do to apply the OFL to my font? +If you want to release your fonts under the OFL, we recommend you do the following: + +4.2.1 Put your copyright and Reserved Font Names information at the beginning of the main OFL.txt file in place of the dedicated placeholders (marked with the <> characters). Include this file in your release package. + +4.2.2 Put your copyright and the OFL text with your chosen Reserved Font Name(s) into your font files (the copyright and license fields). A link to the OFL text on the OFL website is an acceptable (but not recommended) alternative. Also add this information to any other components (build scripts, glyph databases, documentation, test files, etc). Accurate metadata in your font files is beneficial to you as an increasing number of applications are exposing this information to the user. For example, clickable links can bring users back to your website and let them know about other work you have done or services you provide. Depending on the format of your fonts and sources, you can use template human-readable headers or machine-readable metadata. You should also double-check that there is no conflicting metadata in the font itself contradicting the license, such as the fstype bits in the os2 table or fields in the name table. + +4.2.3 Write an initial FONTLOG.txt for your font and include it in the release package (see Section 6 and Appendix A for details including a template). + +4.2.4 Include the relevant practical documentation on the license by adding the current OFL-FAQ.txt file in your package. + +4.2.5 If you wish you can use the OFL graphics (https://openfontlicense.org/promotion) on your website. + +4.3 Will you make my font OFL for me? +We won't do the work for you. We can, however, try to answer your questions. Unfortunately we do not have the resources to review and check your font packages for correct use of the OFL. We recommend you turn to designers, foundries or consulting companies with experience in doing open font design to provide this service to you. + +4.4 Will you distribute my OFL font for me? +No. The easiest way for users to always get the most current version of the font is for you to distribute it through your own website. You can also distribute your own font source files, or host them on services such as GitHub or GitLab. You can use various channels, including social media, to promote and get attention to your project. If you want someone else to distribute the font, consider services and sites that already distribute OFL fonts. Some of those are listed on the OFL website (https://openfontlicense.org/ofl-fonts). Contact them to find out how to submit fonts to them. We do not endorse any particular catalog or hosting service. It is your responsibility to determine if the service is right for you and if it treats authors with fairness. + +4.5 Why should I use the OFL for my fonts? +Here are a few of the many good reasons: + +- to meet needs for fonts that can be modified to support lesser-known languages +- to provide a legal and clear way for people to respect your work but still use it (and reduce piracy) +- to involve others in your font project +- to enable your fonts to be expanded with new weights and improved writing system/language support +- to allow more technical font developers to add features to your design (such as OpenType, Graphite or AAT support) +- to renew the life of an old font lying on your hard drive with no business model +- to allow your font to be included in Libre Software operating systems like Ubuntu +- to give your font world status and wide, unrestricted distribution +- to educate students about quality typeface and font design +- to expand your test base and get more useful feedback +- to extend your reach to new markets when users see your metadata and go to your website +- to get your font more easily into one of the webfont online services +- to attract attention for your commercial fonts +- to make money through webfont services +- to make money by bundling fonts with applications +- to make money adjusting and extending existing open fonts +- to get a better chance that foundations, NGOs, charities, or companies who commission fonts will pick you +- to be part of a sharing design and development community +- to give back and contribute to a growing body of font sources + +4.6 Can I cancel or undo the OFL license for a font that I've already released under it? +No, as an author, you cannot cancel or undo the permissions you have granted earlier by releasing a font under the OFL. But as an original author of that specific font you can always re-release it separately under another license of your own choosing. Of course, you cannot re-license a font for which you are not the author. If there are multiple authors they need to be all in official written agreement with the re-licensing. For practical reasons, a different name than an existing and publicly available open font should be chosen. + +4.7 Should I apply the OFL early in the design process, even before the font is complete, or wait until I want to release a completed version? +It is really up to you and the circumstances of your project. But in any case, we would recommend you place appropriate warning messages in your public repository or website to say something like "Please wait for a finished release before using and redistributing this font". We recommend you have a clear versioning scheme and repository tagging to make it as easy as possible to see if the font is a released version or still under development. You can also consider choosing a separate name (or suffix) for the development version, and only give the final name to a released version. + + +5 CHOOSING RESERVED FONT NAMES + +5.1 What are Reserved Font Names? +These are font names, or portions of font names, that the author has chosen to reserve for use only with the Original Version of the font, or for Modified Version(s) created by the original author. + +5.2 Why can't I use the Reserved Font Names in my derivative font names? I'd like people to know where the design came from. +The best way to acknowledge the source of the design is to thank the original authors and any other contributors in the files that are distributed with your revised font (although no acknowledgement is required). The FONTLOG is a natural place to do this. Reserved Font Names ensure that the only fonts that have the original names are the unmodified Original Versions. This allows designers to maintain artistic integrity while allowing collaboration to happen. It eliminates potential confusion and name conflicts. When choosing a name, be creative and avoid names that reuse almost all the same letters in the same order or sound like the original. It will help everyone if Original Versions and Modified Versions can easily be distinguished from one another and from other derivatives. Any substitution and matching mechanism is outside the scope of the license. + +5.3 What do you mean by "primary name as presented to the user"? Are you referring to the font menu name? +Yes, this applies to the font menu name and other mechanisms that specify a font in a document. It would be fine, however, to keep a text reference to the original fonts in the description field, in your modified source file or in documentation provided alongside your derivative as long as no one could be confused that your modified source is the original. But you cannot use the Reserved Font Names in any way to identify the font to the user (unless the Copyright Holder(s) allow(s) it through a separate agreement). Users who install derivatives (Modified Versions) on their systems should not see any of the original Reserved Font Names in their font menus, for example. Again, this is to ensure that users are not confused and do not mistake one font for another and so expect features only another derivative or the Original Version can actually offer. + +5.4 Am I not allowed to use any part of the Reserved Font Names? +You may not use individual words from the Reserved Font Names, but you would be allowed to use parts of words, as long as you do not use any word from the Reserved Font Names entirely. We do not recommend using parts of words because of potential confusion, but it is allowed. For example, if "Foobar" was a Reserved Font Name, you would be allowed to use "Foo" or "bar", although we would not recommend it. Such an unfortunate choice would confuse the users of your fonts as well as make it harder for other designers to contribute. + +5.5 So what should I, as an author, identify as Reserved Font Names? +Original authors are encouraged to name their fonts using clear, distinct names, and only declare the unique parts of the name as Reserved Font Names. For example, the author of a font called "Foobar Sans" would declare "Foobar" as a Reserved Font Name, but not "Sans", as that is a common typographical term, and may be a useful word to use in a derivative font name. Reserved Font Names should also be single words for simplicity and legibility. A font called "Flowing River" should have Reserved Font Names "Flowing" and "River", not "Flowing River". You also need to be very careful about reserving font names which are already linked to trademarks (whether registered or not) which you do not own. + +5.6 Do I, as an author, have to identify any Reserved Font Names? +No. RFNs are optional and not required, but we encourage you to use them. This is primarily to avoid confusion between your work and Modified Versions. As an author you can release a font under the OFL and not declare any Reserved Font Names. There may be situations where you find that using no RFNs and letting your font be changed and modified - including any kind of modification - without having to change the original name is desirable. However you need to be fully aware of the consequences. There will be no direct way for end-users and other designers to distinguish your Original Version from many Modified Versions that may be created. You have to trust whoever is making the changes and the optimizations to not introduce problematic changes. The RFNs you choose for your own creation have value to you as an author because they allow you to maintain artistic integrity and keep some control over the distribution channel to your end-users. For discussion of RFNs and webfonts see section 2. + +5.7 Are any names (such as the main font name) reserved by default? +No. That is a change to the license as of version 1.1. If you want any names to be Reserved Font Names, they must be specified after the copyright statement(s). + +5.8 Is there any situation in which I can use Reserved Font Names for a Modified Version? +The Copyright Holder(s) can give certain trusted parties the right to use any of the Reserved Font Names through separate written agreements. For example, even if "Foobar" is an RFN, you could write up an agreement to give company "XYZ" the right to distribute a modified version with a name that includes "Foobar". This allows for freedom without confusion. The existence of such an agreement should be made as clear as possible to downstream users and designers in the distribution package and the relevant documentation. They need to know if they are a party to the agreement or not and what they are practically allowed to do or not even if all the details of the agreement are not public. + +5.9 Do font rebuilds require a name change? Do I have to change the name of the font when my packaging workflow includes a full rebuild from source? +Yes, all rebuilds which change the font data and the smart code are Modified Versions and the requirements of the OFL apply: you need to respect what the Author(s) have chosen in terms of Reserved Font Names. However if a package (or installer) is simply a wrapper or a compressed structure around the final font - leaving them intact on the inside - then no name change is required. Please get in touch with the author(s) and copyright holder(s) to inquire about the presence of font sources beyond the final font file(s) and the recommended build path. That build path may very well be non-trivial and hard to reproduce accurately by the maintainer. If a full font build path is made available by the upstream author(s) please be aware that any regressions and changes you may introduce when doing a rebuild for packaging purposes is your own responsibility as a package maintainer since you are effectively creating a separate branch. You should make it very clear to your users that your rebuilt version is not the canonical one from upstream. + +5.10 Can I add other Reserved Font Names when making a derivative font? +Yes. List your additional Reserved Font Names after your additional copyright statement, as indicated with example placeholders at the top of the OFL.txt file. Be sure you do not remove any existing RFNs but only add your own. RFN statements should be placed next to the copyright statement of the relevant author as indicated in the OFL.txt template to make them visible to designers wishing to make their separate version. + + +6 ABOUT THE FONTLOG + +6.1 What is this FONTLOG thing exactly? +It has three purposes: 1) to provide basic information on the font to users and other designers and developers, 2) to document changes that have been made to the font or accompanying files, either by the original authors or others, and 3) to provide a place to acknowledge authors and other contributors. Please use it! + +6.2 Is the FONTLOG required? +It is not a requirement of the license, but we strongly recommend you have one. + +6.3 Am I required to update the FONTLOG when making Modified Versions? +No, but users, designers and other developers might get very frustrated with you if you don't. People need to know how derivative fonts differ from the original, and how to take advantage of the changes, or build on them. There are utilities that can help create and maintain a FONTLOG. + +6.4 What should the FONTLOG look like? +It is typically a separate text file (FONTLOG.txt), but can take other formats. It commonly includes these four sections: + +- brief header describing the FONTLOG itself and name of the font family +- Basic Font Information - description of the font family, purpose and breadth +- ChangeLog - chronological listing of changes +- Acknowledgements - list of authors and contributors with contact information + +It could also include other sections, such as: where to find documentation, how to make contributions, information on contributing organizations, source code details, and a short design guide. See Appendix A for an example FONTLOG. + + +7 MAKING CONTRIBUTIONS TO OFL PROJECTS + +7.1 Can I contribute work to OFL projects? +In many cases, yes. It is common for OFL fonts to be developed by a team of people who welcome contributions from the wider community. Contact the original authors for specific information on how to participate in their projects. + +7.2 Why should I contribute my changes back to the original authors? +It would benefit many people if you contributed back in response to what you've received. Your contributions and improvements to the fonts and other components could be a tremendous help and would encourage others to contribute as well and 'give back'. You will then benefit from other people's contributions as well. Sometimes maintaining your own separate version takes more effort than merging back with the original. Be aware that any contributions, however, must be either your own original creation or work that you own, and you may be asked to affirm that clearly when you contribute. + +7.3 I've made some very nice improvements to the font. Will you consider adopting them and putting them into future Original Versions? +Most authors would be very happy to receive such contributions. Keep in mind that it is unlikely that they would want to incorporate major changes that would require additional work on their end. Any contributions would likely need to be made for all the fonts in a family and match the overall design and style. Authors are encouraged to include a guide to the design with the fonts. It would also help to have contributions submitted as patches or clearly marked changes - the use of smart source revision control systems like subversion, mercurial, git or bzr is a good idea. Please follow the recommendations given by the author(s) in terms of preferred source formats and configuration parameters for sending contributions. If this is not indicated in a FONTLOG or other documentation of the font, consider asking them directly. Examples of useful contributions are bug fixes, additional glyphs, stylistic alternates (and the smart font code to access them) or improved hinting. Keep in mind that some kinds of changes (esp. hinting) may be technically difficult to integrate. + +7.4 How can I financially support the development of OFL fonts? +It is likely that most authors of OFL fonts would accept financial contributions - contact them for instructions on how to do this. Such contributions would support future development. You can also pay for others to enhance the fonts and contribute the results back to the original authors for inclusion in the Original Version. + + +8 ABOUT THE LICENSE ITSELF + +8.1 I see that this is version 1.1 of the license. Will there be later changes? +Version 1.1 is the first minor revision of the OFL. We are confident that version 1.1 will meet most needs, but are open to future improvements. Any revisions would be for future font releases, and previously existing licenses would remain in effect. No retroactive changes are possible, although the Copyright Holder(s) can re-release the font under a revised OFL. All versions will be available on our website: https://openfontlicense.org. + +8.2 Does this license restrict the rights of the Copyright Holder(s)? +No. The Copyright Holder(s) still retain(s) all the rights to their creation; they are only releasing a portion of it for use in a specific way. For example, the Copyright Holder(s) may choose to release a 'basic' version of their font under the OFL, but sell a restricted 'enhanced' version under a different license. They may also choose to release the same font under both the OFL and some other license. Only the Copyright Holder(s) can do this, and doing so does not change the terms of the OFL as it applies to that font. + +8.3 Is the OFL a contract or a license? +The OFL is a worldwide license based on international copyright agreements and conventions. It is not a contract and so does not require you to sign it to have legal validity. By using, modifying and redistributing components under the OFL you indicate that you accept the license. + +8.4 I really like the terms of the OFL, but want to change it a little. Am I allowed to take ideas and actual wording from the OFL and put them into my own custom license for distributing my fonts? +We strongly recommend against creating your very own unique open licensing model. Using a modified or derivative license will likely cut you off - along with the font(s) under that license - from the community of designers using the OFL, potentially expose you and your users to legal liabilities, and possibly put your work and rights at risk. The OFL went though a community and legal review process that took years of effort, and that review is only applicable to an unmodified OFL. The text of the OFL has been written by SIL (with review and consultation from the community) and is copyright (c) 2005-2023 SIL International. You may re-use the ideas and wording (in part, not in whole) in another non-proprietary license provided that you call your license by another unambiguous name, that you do not use the preamble, that you do not mention SIL and that you clearly present your license as different from the OFL so as not to cause confusion by being too similar to the original. If you feel the OFL does not meet your needs for an open license, please contact us. + +8.5 Can I quote from the OFL FAQ? +Yes, SIL gives permission to quote from the OFL FAQ (OFL-FAQ.txt), in whole or in part, provided that the quoted text is: + +- unmodified, +- used to help explain the intent of the OFL, rather than cause misunderstanding, and +- accompanied with the following attribution: "From the OFL FAQ (OFL-FAQ.txt), copyright (c) 2005-2023 SIL International. Used by permission. https://openfontlicense.org/OFL-FAQ". + +8.6 Can I translate the license and the FAQ into other languages? +SIL certainly recognises the need for people who are not familiar with English to be able to understand the OFL and its use. Making the license very clear and readable has been a key goal for the OFL, but we know that people understand their own language best. + +If you are an experienced translator, you are very welcome to translate the OFL and OFL-FAQ so that designers and users in your language community can understand the license better. But only the original English version of the license has legal value and has been approved by the community. Translations do not count as legal substitutes and should only serve as a way to explain the original license. SIL - as the author and steward of the license for the community at large - does not approve any translation of the OFL as legally valid because even small translation ambiguities could be abused and create problems. + +SIL gives permission to publish unofficial translations into other languages provided that they comply with the following guidelines: + +Put the following disclaimer in both English and the target language stating clearly that the translation is unofficial: "This is an unofficial translation of the SIL Open Font License into . It was not published by SIL International, and does not legally state the distribution terms for fonts that use the OFL. A release under the OFL is only valid when using the original English text. However, we recognize that this unofficial translation will help users and designers not familiar with English to better understand and use the OFL. We encourage designers who consider releasing their creation under the OFL to read the OFL-FAQ in their own language if it is available. Please go to https://openfontlicense.org for the official version of the license and the accompanying OFL-FAQ." + +Keep your unofficial translation current and update it at our request if needed, for example if there is any ambiguity which could lead to confusion. If you start such an unofficial translation effort of the OFL and OFL-FAQ please let us know. + +8.7 Does the OFL have an explicit expiration term? +No, the implicit intent of the OFL is that the permissions granted are perpetual and irrevocable. + +8.8 Why is there no automatic upgrade clause, a 'version 1.1 or later' like in the GPL? +This is by design, with the goals of establishing clear trust and of preventing any situation where the actual terms could be changed from underneath any user of the license. That would introduce uncertainty and confusion. Any perceived benefits of automatic incremental licensing under newer versions is strongly outweighed by the inherent risks and confusion it would cause. If a new version becomes officially available, Copyright Holder(s) can review the new version and decide whether to re-release their fonts under it. Derivative fonts could not be re-licensed unless the original versions were re-released first. + +8.9 How do you pronounce the name of the license? +The OFL is pronounced as three individual letters /ˈɑː.əf.əl/ or OH-EFF-ELL. + + +9 ABOUT SIL INTERNATIONAL + +9.1 Who is SIL International and what do they do? +SIL is a global, faith-based nonprofit that works with local communities around the world to develop language solutions that expand possibilities for a better life. SIL serves language communities worldwide, building their capacity for sustainable language development, by means of research, translation, training and materials development. SIL makes its services available to all without regard to religious belief, political ideology, gender, race, or ethnic background. SIL's members and volunteers share a Christian commitment. + +9.2 What does this have to do with font licensing? +The ability to read, write, type and publish in one's own language is one of the most critical needs for millions of people around the world. This requires fonts that are widely available and support lesser-known languages. SIL develops - and encourages others to develop - a complete stack of writing systems implementation components available under open licenses. This open stack includes input methods, smart fonts, smart rendering libraries and smart applications. There has been a need for a common open license that is specifically applicable to fonts and related software (a crucial component of this stack), so SIL developed the SIL Open Font License with the help of the Free/Libre and Open Source Software community. + +9.3 How can I contact SIL? +Our main website is: https://www.sil.org/ +Our main site about fonts and software is: https://software.sil.org/ +Our site about complex scripts is: https://scriptsource.org/ +Information about this license (and contact information) is at: https://openfontlicense.org + + +APPENDIX A - FONTLOG EXAMPLE + +Here is an example of the recommended format for a FONTLOG, although other formats are allowed. + +----- +FONTLOG for the GlobalFontFamily fonts + +This file provides detailed information on the GlobalFontFamily Font Software. This information should be distributed along with the GlobalFontFamily fonts and any derivative works. + +Basic Font Information + +GlobalFontFamily is a Unicode typeface family that supports all languages that use the Latin script and its variants, and could be expanded to support other scripts. + +NewWorldFontFamily is based on the GlobalFontFamily and also supports Greek, Hebrew, Cyrillic and Armenian. + +More specifically, this release supports the following Unicode ranges... +This release contains... +Documentation can be found at... +To contribute to the project... + +ChangeLog + +10 December 2010 (Fred Foobar) GlobalFontFamily-devel version 1.4 +- fix new build and testing system (bug #123456) + +1 August 2008 (Tom Parker) GlobalFontFamily version 1.2.1 +- Tweaked the smart font code (Branch merged with main) +- Provided improved build and debugging environment for smart behaviours + +7 February 2007 (Pat Johnson) NewWorldFontFamily Version 1.3 +- Added Greek and Cyrillic glyphs + +7 March 2006 (Fred Foobar) NewWorldFontFamily Version 1.2 +- Tweaked contextual behaviours + +1 Feb 2005 (Jane Doe) NewWorldFontFamily Version 1.1 +- Improved build script performance and verbosity +- Extended the smart code documentation +- Corrected minor typos in the documentation +- Fixed position of combining inverted breve below (U+032F) +- Added OpenType/Graphite smart code for Armenian +- Added Armenian glyphs (U+0531 -> U+0587) +- Released as "NewWorldFontFamily" + +1 Jan 2005 (Joe Smith) GlobalFontFamily Version 1.0 +- Initial release + +Acknowledgements + +If you make modifications be sure to add your name (N), email (E), web-address (if you have one) (W) and description (D). This list is in alphabetical order. + +N: Jane Doe +E: jane@university.edu +W: https://art.university.edu/projects/fonts +D: Contributor - Armenian glyphs and code + +N: Fred Foobar +E: fred@foobar.org +W: https://foobar.org +D: Contributor - misc Graphite fixes + +N: Pat Johnson +E: pat@fontstudio.org +W: https://pat.fontstudio.org +D: Designer - Greek & Cyrillic glyphs based on Roman design + +N: Tom Parker +E: tom@company.com +W: https://www.company.com/tom/projects/fonts +D: Engineer - original smart font code + +N: Joe Smith +E: joe@fontstudio.org +W: https://joe.fontstudio.org +D: Designer - original Roman glyphs + +Fontstudio.org is an not-for-profit design group whose purpose is... +Foobar.org is a distributed community of developers... +Company.com is a small business who likes to support community designers... +University.edu is a renowned educational institution with a strong design department... +----- + diff --git a/fonts/Gentium.OFL.txt b/fonts/Gentium.OFL.txt new file mode 100644 index 0000000..d6a0df8 --- /dev/null +++ b/fonts/Gentium.OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2003-2025 SIL Global (https://www.sil.org/), +with Reserved Font Names "Gentium" and "SIL". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/fonts/Gentium.README.txt b/fonts/Gentium.README.txt new file mode 100644 index 0000000..dcd17f4 --- /dev/null +++ b/fonts/Gentium.README.txt @@ -0,0 +1,19 @@ +README +Gentium +============ + +This project is intended to provide a free and open font family for all current languages and writing systems that use Latin, Cyrillic, and Greek scripts. It supports almost the complete range of Unicode characters for these scripts, including a comprehensive range of diacritics and a large set of symbols useful for linguistics and literacy work. Smart font routines automatically adjust the position of diacritics to support and optimize arbitrary base+diacritic combinations. This project uses a UFO-based design and production workflow, with all sources in open formats and a completely open-source build toolkit. + +To download the fonts visit the [Gentium downloads page](https://software.sil.org/gentium/download/) or the [Github releases page](https://github.com/silnrsi/font-gentium/releases). + +For more information on using and developing the fonts see the full project documentation. This is available in three forms: + +- *local HTML* - Download the release package and open the file `documentation/index.html` in a browser +- *local PDF* - Download the release or source package and open the file `documentation/pdf/index.pdf` +- *Web site* - Visit the [Gentium web site](https://software.sil.org/gentium) + +For a complete list of changes in this version see the [FONTLOG.txt](FONTLOG.txt). + +For copyright and licensing information - including any Reserved Font Names - see [OFL.txt](OFL.txt). + +For practical information about using, modifying and redistributing this font see [OFL-FAQ.txt](OFL-FAQ.txt). diff --git a/fonts/Gentium.fontmanifest.json b/fonts/Gentium.fontmanifest.json new file mode 100644 index 0000000..18a807d --- /dev/null +++ b/fonts/Gentium.fontmanifest.json @@ -0,0 +1,43 @@ +{ +"gentium": { + "defaults": { + "ttf": "Gentium-Regular.ttf", + "woff": "Gentium-Regular.woff", + "woff2": "Gentium-Regular.woff2" + }, + "family": "Gentium", + "files": { + "Gentium-Bold.ttf": { "axes": { "ital": 0, "wght": 700.0 }, "packagepath": "Gentium-Bold.ttf" }, + "Gentium-Bold.woff": { "axes": { "ital": 0, "wght": 700.0 }, "packagepath": "web/Gentium-Bold.woff" }, + "Gentium-Bold.woff2": { "axes": { "ital": 0, "wght": 700.0 }, "packagepath": "web/Gentium-Bold.woff2" }, + "Gentium-BoldItalic.ttf": { "axes": { "ital": 1, "wght": 700.0 }, "packagepath": "Gentium-BoldItalic.ttf" }, + "Gentium-BoldItalic.woff": { "axes": { "ital": 1, "wght": 700.0 }, "packagepath": "web/Gentium-BoldItalic.woff" }, + "Gentium-BoldItalic.woff2": { "axes": { "ital": 1, "wght": 700.0 }, "packagepath": "web/Gentium-BoldItalic.woff2" }, + "Gentium-ExtraBold.ttf": { "altfamily": "Gentium ExtraBold", "axes": { "ital": 0, "wght": 800.0 }, "packagepath": "Gentium-ExtraBold.ttf" }, + "Gentium-ExtraBold.woff": { "altfamily": "Gentium ExtraBold", "axes": { "ital": 0, "wght": 800.0 }, "packagepath": "web/Gentium-ExtraBold.woff" }, + "Gentium-ExtraBold.woff2": { "altfamily": "Gentium ExtraBold", "axes": { "ital": 0, "wght": 800.0 }, "packagepath": "web/Gentium-ExtraBold.woff2" }, + "Gentium-ExtraBoldItalic.ttf": { "altfamily": "Gentium ExtraBold", "axes": { "ital": 1, "wght": 800.0 }, "packagepath": "Gentium-ExtraBoldItalic.ttf" }, + "Gentium-ExtraBoldItalic.woff": { "altfamily": "Gentium ExtraBold", "axes": { "ital": 1, "wght": 800.0 }, "packagepath": "web/Gentium-ExtraBoldItalic.woff" }, + "Gentium-ExtraBoldItalic.woff2": { "altfamily": "Gentium ExtraBold", "axes": { "ital": 1, "wght": 800.0 }, "packagepath": "web/Gentium-ExtraBoldItalic.woff2" }, + "Gentium-Italic.ttf": { "axes": { "ital": 1, "wght": 400.0 }, "packagepath": "Gentium-Italic.ttf" }, + "Gentium-Italic.woff": { "axes": { "ital": 1, "wght": 400.0 }, "packagepath": "web/Gentium-Italic.woff" }, + "Gentium-Italic.woff2": { "axes": { "ital": 1, "wght": 400.0 }, "packagepath": "web/Gentium-Italic.woff2" }, + "Gentium-Medium.ttf": { "altfamily": "Gentium Medium", "axes": { "ital": 0, "wght": 500.0 }, "packagepath": "Gentium-Medium.ttf" }, + "Gentium-Medium.woff": { "altfamily": "Gentium Medium", "axes": { "ital": 0, "wght": 500.0 }, "packagepath": "web/Gentium-Medium.woff" }, + "Gentium-Medium.woff2": { "altfamily": "Gentium Medium", "axes": { "ital": 0, "wght": 500.0 }, "packagepath": "web/Gentium-Medium.woff2" }, + "Gentium-MediumItalic.ttf": { "altfamily": "Gentium Medium", "axes": { "ital": 1, "wght": 500.0 }, "packagepath": "Gentium-MediumItalic.ttf" }, + "Gentium-MediumItalic.woff": { "altfamily": "Gentium Medium", "axes": { "ital": 1, "wght": 500.0 }, "packagepath": "web/Gentium-MediumItalic.woff" }, + "Gentium-MediumItalic.woff2": { "altfamily": "Gentium Medium", "axes": { "ital": 1, "wght": 500.0 }, "packagepath": "web/Gentium-MediumItalic.woff2" }, + "Gentium-Regular.ttf": { "axes": { "ital": 0, "wght": 400.0 }, "packagepath": "Gentium-Regular.ttf" }, + "Gentium-Regular.woff": { "axes": { "ital": 0, "wght": 400.0 }, "packagepath": "web/Gentium-Regular.woff" }, + "Gentium-Regular.woff2": { "axes": { "ital": 0, "wght": 400.0 }, "packagepath": "web/Gentium-Regular.woff2" }, + "Gentium-SemiBold.ttf": { "altfamily": "Gentium SemiBold", "axes": { "ital": 0, "wght": 600.0 }, "packagepath": "Gentium-SemiBold.ttf" }, + "Gentium-SemiBold.woff": { "altfamily": "Gentium SemiBold", "axes": { "ital": 0, "wght": 600.0 }, "packagepath": "web/Gentium-SemiBold.woff" }, + "Gentium-SemiBold.woff2": { "altfamily": "Gentium SemiBold", "axes": { "ital": 0, "wght": 600.0 }, "packagepath": "web/Gentium-SemiBold.woff2" }, + "Gentium-SemiBoldItalic.ttf": { "altfamily": "Gentium SemiBold", "axes": { "ital": 1, "wght": 600.0 }, "packagepath": "Gentium-SemiBoldItalic.ttf" }, + "Gentium-SemiBoldItalic.woff": { "altfamily": "Gentium SemiBold", "axes": { "ital": 1, "wght": 600.0 }, "packagepath": "web/Gentium-SemiBoldItalic.woff" }, + "Gentium-SemiBoldItalic.woff2": { "altfamily": "Gentium SemiBold", "axes": { "ital": 1, "wght": 600.0 }, "packagepath": "web/Gentium-SemiBoldItalic.woff2" } + }, + "version": "7.000" +} +} diff --git a/fonts/GentiumBook-Bold.ttf b/fonts/GentiumBook-Bold.ttf new file mode 100644 index 0000000..d7910d4 Binary files /dev/null and b/fonts/GentiumBook-Bold.ttf differ diff --git a/fonts/GentiumBook-BoldItalic.ttf b/fonts/GentiumBook-BoldItalic.ttf new file mode 100644 index 0000000..8ba8854 Binary files /dev/null and b/fonts/GentiumBook-BoldItalic.ttf differ diff --git a/fonts/GentiumBook-Italic.ttf b/fonts/GentiumBook-Italic.ttf new file mode 100644 index 0000000..ed5ac79 Binary files /dev/null and b/fonts/GentiumBook-Italic.ttf differ diff --git a/fonts/GentiumBook-Medium.ttf b/fonts/GentiumBook-Medium.ttf new file mode 100644 index 0000000..5120657 Binary files /dev/null and b/fonts/GentiumBook-Medium.ttf differ diff --git a/fonts/GentiumBook-MediumItalic.ttf b/fonts/GentiumBook-MediumItalic.ttf new file mode 100644 index 0000000..a75e64c Binary files /dev/null and b/fonts/GentiumBook-MediumItalic.ttf differ diff --git a/fonts/GentiumBook-Regular.ttf b/fonts/GentiumBook-Regular.ttf new file mode 100644 index 0000000..9a95d2f Binary files /dev/null and b/fonts/GentiumBook-Regular.ttf differ diff --git a/fonts/GentiumBook-SemiBold.ttf b/fonts/GentiumBook-SemiBold.ttf new file mode 100644 index 0000000..88d40bb Binary files /dev/null and b/fonts/GentiumBook-SemiBold.ttf differ diff --git a/fonts/GentiumBook-SemiBoldItalic.ttf b/fonts/GentiumBook-SemiBoldItalic.ttf new file mode 100644 index 0000000..3994edf Binary files /dev/null and b/fonts/GentiumBook-SemiBoldItalic.ttf differ diff --git a/fonts/GentiumBook.FONTLOG.txt b/fonts/GentiumBook.FONTLOG.txt new file mode 100644 index 0000000..1b84ede --- /dev/null +++ b/fonts/GentiumBook.FONTLOG.txt @@ -0,0 +1,860 @@ +FONTLOG +Gentium +============ + +This file provides detailed information on the Gentium family of fonts. +This information should be distributed along with the Gentium fonts and +any derivative works. + +## About this project + +Gentium ("belonging to the nations" in Latin) is a Unicode typeface family +designed to enable the many diverse ethnic groups around the world who use +the Latin script to produce readable, high-quality publications. The +design is intended to be highly readable, reasonably compact, and visually +attractive. Gentium has won a "Certificate of Excellence in Typeface +Design" in two major international typeface design competitions: +bukva:raz! (2001), TDC2003 (2003). The Gentium font family is based on +this original design. + +This project is intended to provide a free and open font family for all +current languages and writing systems that use Latin and Cyrillic scripts. +It supports almost the complete range of Unicode characters for these scripts, +including a comprehensive range of diacritics and a large set of symbols +useful for linguistics and literacy work. Smart font routines automatically +adjust the position of diacritics to support and optimize arbitrary +base+diacritic combinations. + +## A Note Regarding the Open Font License and TypeTuner + +The OFL prohibits the use of Reserved Font Names "Gentium" and "SIL" in +the name of any font that is derived from the Original Version of Gentium. +However, SIL Global (the Copyright Holder) grants through +this separate written agreement the right to use the Reserved Font Names +in any Modified Version of this font created by using TypeTuner as long +as the feature information contained in the Original Version is used, +unmodified, as the source for TypeTuner feature information, and +"Gentium", "Gentium Plus", or "Gentium Basic" is not the resulting font +family name. + +TypeTuner-produced fonts created in this manner are still bound by the +terms of the OFL. Specifically, the use of Reserved Font Names is +prohibited when making derivatives of a TypeTuner-produced font. Anyone +making a derivative of a TypeTuner font will need to find a different +name. For example a TypeTuner-produced font may be named +"Gentium Literacy SomeFarAwayPlace" but a derivative of that font made +with other tools would not be allowed to use the "Gentium" and "SIL" +Reserved Font Names and would have to be named something like "Grace Foo". + +## ChangeLog + +(This should list both major and minor changes, most recent first.) + +### 2 Jun 2025 (SIL WSTech Team) Gentium version 7.000 + +***Note that this is a major upgrade with significant changes to family structure, line spacing, and glyph metrics. Please read the following carefully to understand how the changes may affect you.*** + +#### Font names, family structure, and line metrics + +- Font family names have changed. It is possible to have both this release (v7) and the previous one (v6.2) installed at the same time. This is a permanent change intended to help with the transition from v6.2 to v7. + - *Gentium Plus* is now *Gentium* + - *Gentium Book Plus* is now *Gentium Book* + +- Gentium and Gentium Book families now have additional intermediate weights, with the previous Book family weights integrated into the main Gentium family. Previously existing weights in both families have not changed. Here is a comparison, with retained weights in **bold** and new weights in *italic*. The CSS values for the weights within each family are in parentheses. Italic faces follow a similar structure and correspondence. + +Gentium family | Gentium Book family +------------------ | ----------------------- +**Gentium Regular** (400) | +*Gentium Medium* (500) | **Gentium Book Regular** (400) +*Gentium SemiBold* (600) | *Gentium Book Medium* (500) +**Gentium Bold** (700) | *Gentium Book SemiBold* (600) +*Gentium ExtraBold* (800) | **Gentium Book Bold** (700) + +- The Gentium Book family is now a separate download and is no longer included in the main Gentium package. + +- The default line spacing has been significantly decreased to be more similar to other common text fonts. + +- There are no *Compact* variants. These are less needed since the default line spacing has been decreased. *Compact* versions of the v6.2 fonts remain available from https://software.sil.org/lcgfonts/download/ + +- TypeTuner Web no longer offers line spacing alternatives for the v7 fonts (Normal, Tight, Loose). If you need Tight or Loose variants the v6.2 fonts remain available and support line spacing alternatives. + +- There are no ‘pre-tuned’ regional or *Literacy* special-purpose modified variants. The v6.2 variants, including *Literacy* versions, remain available from https://software.sil.org/lcgfonts/download/. You can still manually create v7 variants with TypeTuner Web that include literacy forms and other alternatives. + +#### New features and enhancements + +- Kerning has now been expanded to cover the full range of alphabetic symbols except for small caps (which will be included in a future update). **Warning: Because of the addition of extensive kerning, line, paragraph, and page lengths may be different from v6.2.** + +- Greek OpenType support is significantly more robust, with better handling of both combining and non-combining diacritics. Macron + diacritic combinations are now supported, as well as some rare epsilon and omicron diacritic combinations. Small caps (both `smcp` and `c2sc`) are supported, with diacritics bring removed. + +- Proportional Oldstyle figures are now supported through the standard OpenType feature (`onum`). These only apply to the main numerals, not fractions, superscripts, or numeral-based symbols. + +- The default form for capital N with left hook has been changed to the lowercase style to match the capital Eng. The related feature (`cv44`) has been changed to substitute the uppercase style form. + - U+019D LATIN CAPITAL LETTER N WITH LEFT HOOK + +- Additions to Modifier Apostrophe feature (`cv70`) + - U+02BB MODIFIER LETTER TURNED COMMA + - U+02BD MODIFIER LETTER REVERSED COMMA + - U+0312 COMBINING TURNED COMMA ABOVE + - U+0314 COMBINING REVERSED COMMA ABOVE + +- Addition to Rams Horn feature (`cv25`) + - U+10791 MODIFIER LETTER SMALL RAMS HORN + +- Small caps added for these parentheses and brackets + - U+0028 LEFT PARENTHESIS + - U+0029 RIGHT PARENTHESIS + - U+005B LEFT SQUARE BRACKET + - U+005D RIGHT SQUARE BRACKET + - U+007B LEFT CURLY BRACKET + - U+007D RIGHT CURLY BRACKET + +#### New character support + +- Unicode 16 additions + - U+1C89 CYRILLIC CAPITAL LETTER TJE + - U+1C8A CYRILLIC SMALL LETTER TJE + - U+A7CB LATIN CAPITAL LETTER RAMS HORN + - This was previously in the SIL PUA (U+F26E) + - U+A7CC LATIN CAPITAL LETTER S WITH DIAGONAL STROKE + - U+A7CD LATIN SMALL LETTER S WITH DIAGONAL STROKE + - U+A7DA LATIN CAPITAL LETTER LAMBDA + - U+A7DB LATIN SMALL LETTER LAMBDA + - U+A7DC LATIN CAPITAL LETTER LAMBDA WITH STROKE + +- Orthographic at signs + - U+24B6 CIRCLED LATIN CAPITAL LETTER A + - U+24D0 CIRCLED LATIN SMALL LETTER A + +- Additional Cyrillic modifiers + - U+A69C MODIFIER LETTER CYRILLIC HARD SIGN + - U+A69D MODIFIER LETTER CYRILLIC SOFT SIGN + +- Case mapping for Coptic eie + - U+2C89 COPTIC SMALL LETTER EIE + +- Upwards ancora (and revised downwards form) + - U+2E14 DOWNWARDS ANCORA + - U+2E15 UPWARDS ANCORA + +- Prosodic symbols + - U+23D1 METRICAL BREVE + - U+23D2 METRICAL LONG OVER SHORT + - U+23D3 METRICAL SHORT OVER LONG + - U+23D4 METRICAL LONG OVER TWO SHORTS + - U+23D5 METRICAL TWO SHORTS OVER LONG + - U+23D6 METRICAL TWO SHORTS JOINED + - U+2E3D VERTICAL SIX DOTS + +- Doubled brackets and parentheses + - U+27EA MATHEMATICAL LEFT DOUBLE ANGLE BRACKET + - U+27EB MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET + - U+2E28 LEFT DOUBLE PARENTHESIS + - U+2E29 RIGHT DOUBLE PARENTHESIS + +- Logical symbols + - U+21AE LEFT RIGHT ARROW WITH STROKE + - U+22BB XOR + - U+22BC NAND + - U+22BD NOR + +#### Improvements and fixes + +- Support added for complex positioning of bridging double diacritics and nearby marks. Correct rendering requires a very specific encoding sequence - see https://software.sil.org/fonts/bridging-diacritics/ + - U+035C COMBINING DOUBLE BREVE BELOW + - U+035D COMBINING DOUBLE BREVE + - U+035E COMBINING DOUBLE MACRON + - U+035F COMBINING DOUBLE MACRON BELOW + - U+0360 COMBINING DOUBLE TILDE + - U+0361 COMBINING DOUBLE INVERTED BREVE + - U+0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW + - U+1DCD COMBINING DOUBLE CIRCUMFLEX ABOVE + - U+1DFC COMBINING DOUBLE INVERTED BREVE BELOW + - U+F17A COMBINING DOUBLE DIAERESIS (in SIL PUA) + +- Redesigned Central European carons + - U+010F LATIN SMALL LETTER D WITH CARON + - U+013D LATIN CAPITAL LETTER L WITH CARON + - U+013E LATIN SMALL LETTER L WITH CARON + - U+0165 LATIN SMALL LETTER T WITH CARON + +- Revised hooked letters to improve spacing (including kerning) and reduce collisions. Some collisions have been retained to reduce unwanted whitespace within words (e.g. ƴk). + - U+0188 LATIN SMALL LETTER C WITH HOOK + - U+01A5 LATIN SMALL LETTER P WITH HOOK + - U+01AD LATIN SMALL LETTER T WITH HOOK + - U+01B3 LATIN CAPITAL LETTER Y WITH HOOK + - U+01B4 LATIN SMALL LETTER Y WITH HOOK + - U+0260 LATIN SMALL LETTER G WITH HOOK + - U+02A0 LATIN SMALL LETTER Q WITH HOOK + - U+2C71 LATIN SMALL LETTER V WITH RIGHT HOOK + - U+2C72 LATIN CAPITAL LETTER W WITH HOOK + - U+2C73 LATIN SMALL LETTER W WITH HOOK + - U+1DF09 LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK + +- Fixed position of + - U+1D09 LATIN SMALL LETTER TURNED I + - U+1D4E MODIFIER LETTER SMALL TURNED I + +- Made Greek spacing letters non-combining + - U+037A GREEK YPOGEGRAMMENI + - U+0384 GREEK TONOS + - U+0385 GREEK DIALYTIKA TONOS + +- Fixed dotless form of + - U+1DF1A LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK + +- Revised design of + - U+A720 MODIFIER LETTER STRESS AND HIGH TONE + - U+A721 MODIFIER LETTER STRESS AND LOW TONE + +- Based design on Greek form: + - U+1D61 MODIFIER LETTER SMALL CHI + +- Improved design of some combining diacritics + - U+032B COMBINING INVERTED DOUBLE ARCH BELOW + - U+033C COMBINING SEAGULL BELOW + - U+1AB7 COMBINING OPEN MARK BELOW + - U+1AB8 COMBINING DOUBLE OPEN MARK BELOW + - U+1AC7 COMBINING INVERTED DOUBLE ARCH ABOVE + +- Revised anchors on many letters to improve diacritic positioning, including these and related letters + - U+004A LATIN CAPITAL LETTER J + - U+0051 LATIN CAPITAL LETTER Q + - U+0059 LATIN CAPITAL LETTER Y + - U+0066 LATIN SMALL LETTER F + - U+0069 LATIN SMALL LETTER I + - U+006A LATIN SMALL LETTER J + - U+0079 LATIN SMALL LETTER Y + - U+0434 CYRILLIC SMALL LETTER DE + +- Added anchors to support use of diacritics on + - U+03C8 GREEK SMALL LETTER PSI + - U+03D1 GREEK THETA SYMBOL + +- Reviewed anchors on spacing acutes and graves + - U+0060 GRAVE ACCENT + - U+00B4 ACUTE ACCENT + - U+02CA MODIFIER LETTER ACUTE ACCENT + - U+02CB MODIFIER LETTER GRAVE ACCENT + - U+02CE MODIFIER LETTER LOW GRAVE ACCENT + - U+02CF MODIFIER LETTER LOW ACUTE ACCENT + +- Low-profile diacritics are used for capitals for Cyrillic as well as Latin. + +- Autohinting is more consistent across the font family + +### 1 Feb 2023 (SIL WSTech Team) Gentium Plus version 6.200 + +This release is focused on adding features and glyphs, including support for over 180 additional characters mostly from Unicode 14 and 15. It does not include significant changes to line spacing, glyph widths, or kerning that might cause document reflow or layout changes - except for minor improvements to the size and weight of superscript, subscript, and modifier letters. + +#### New features, including *TypeTuner Web* support + +- Feature to display alternate design of clicks that sit on baseline + - Baseline clicks (cv69) + +- Standard 'subs' and 'sups' features for numerals. These are not supported by *TypeTuner Web*. + - Subscript numerals (subs) + - Superscript numerals (sups) + +- Feature to automatically construct fractions when using U+002F SOLIDUS or U+2044 FRACTION SLASH. This is not supported by *TypeTuner Web*. + - Automatic fractions (frac) + +#### New character support + +- Additional click (also supported by new baseline clicks feature) + - U+2980 TRIPLE VERTICAL BAR DELIMITER + +- Letters used for legacy Malayalam transliteration + - U+1DF25 LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK + - U+1DF26 LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK + - U+1DF27 LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK + - U+1DF28 LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK + - U+1DF29 LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK + - U+1DF2A LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK + +- Letters used for Egyptological transliteration + - U+A7BA LATIN CAPITAL LETTER GLOTTAL A + - U+A7BB LATIN SMALL LETTER GLOTTAL A + - U+A7BC LATIN CAPITAL LETTER GLOTTAL I + - U+A7BD LATIN SMALL LETTER GLOTTAL I + - U+A7BE LATIN CAPITAL LETTER GLOTTAL U + - U+A7BF LATIN SMALL LETTER GLOTTAL U + +- Greek editorial combining marks + - U+1DC0 COMBINING DOTTED GRAVE ACCENT + - U+1DC1 COMBINING DOTTED ACUTE ACCENT + +- Combining marks + - U+1ABF COMBINING LATIN SMALL LETTER W BELOW + - U+1AC0 COMBINING LATIN SMALL LETTER TURNED W BELOW + - U+1AC6 COMBINING NUMBER SIGN ABOVE + - U+1AC7 COMBINING INVERTED DOUBLE ARCH ABOVE + - U+1AC8 COMBINING PLUS SIGN ABOVE + - U+1AC9 COMBINING DOUBLE PLUS SIGN ABOVE + - U+1ACA COMBINING DOUBLE PLUS SIGN BELOW + - U+1ACB COMBINING TRIPLE ACUTE ACCENT + - U+1ACC COMBINING LATIN SMALL LETTER INSULAR G + - U+1ACD COMBINING LATIN SMALL LETTER INSULAR R + - U+1ACE COMBINING LATIN SMALL LETTER INSULAR T + - U+1DDA COMBINING LATIN SMALL LETTER G + - U+1DDC COMBINING LATIN SMALL LETTER K + - U+1DFC COMBINING DOUBLE INVERTED BREVE BELOW + +- Combining marks that are not recommended for normal use and may not combine well with letters. Precomposed characters that include the hook should be used instead except in rare cases. + - U+0321 COMBINING PALATALIZED HOOK BELOW + - U+0322 COMBINING RETROFLEX HOOK BELOW + +- Modifier letters and symbols + - U+A7F2 MODIFIER LETTER CAPITAL C + - U+A7F3 MODIFIER LETTER CAPITAL F + - U+A7F4 MODIFIER LETTER CAPITAL Q + - U+AB69 MODIFIER LETTER SMALL TURNED W + - U+AB6A MODIFIER LETTER LEFT TACK + - U+AB6B MODIFIER LETTER RIGHT TACK + - U+10780 MODIFIER LETTER SMALL CAPITAL AA + - U+10781 MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON + - U+10782 MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON + - U+10784 MODIFIER LETTER SMALL CAPITAL B + - U+10785 MODIFIER LETTER SMALL B WITH HOOK + - U+10787 MODIFIER LETTER SMALL DZ DIGRAPH + - U+10788 MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK + - U+10789 MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL + - U+1078A MODIFIER LETTER SMALL DEZH DIGRAPH + - U+1078B MODIFIER LETTER SMALL D WITH TAIL + - U+1078C MODIFIER LETTER SMALL D WITH HOOK + - U+1078D MODIFIER LETTER SMALL D WITH HOOK AND TAIL + - U+10790 MODIFIER LETTER SMALL FENG DIGRAPH + - U+10792 MODIFIER LETTER SMALL CAPITAL G + - U+10793 MODIFIER LETTER SMALL G WITH HOOK + - U+10794 MODIFIER LETTER SMALL CAPITAL G WITH HOOK + - U+10796 MODIFIER LETTER SMALL CAPITAL H + - U+10797 MODIFIER LETTER SMALL HENG WITH HOOK + - U+10798 MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK + - U+10799 MODIFIER LETTER SMALL LS DIGRAPH + - U+1079A MODIFIER LETTER SMALL LZ DIGRAPH + - U+1079B MODIFIER LETTER SMALL L WITH BELT + - U+1079C MODIFIER LETTER SMALL CAPITAL L WITH BELT + - U+1079D MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT + - U+1079E MODIFIER LETTER SMALL LEZH + - U+1079F MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK + - U+107A1 MODIFIER LETTER SMALL TURNED Y WITH BELT + - U+107A4 MODIFIER LETTER SMALL CLOSED OMEGA + - U+107A5 MODIFIER LETTER SMALL Q + - U+107A6 MODIFIER LETTER SMALL TURNED R WITH LONG LEG + - U+107A7 MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK + - U+107A8 MODIFIER LETTER SMALL R WITH TAIL + - U+107A9 MODIFIER LETTER SMALL R WITH FISHHOOK + - U+107AA MODIFIER LETTER SMALL CAPITAL R + - U+107AB MODIFIER LETTER SMALL TC DIGRAPH WITH CURL + - U+107AC MODIFIER LETTER SMALL TS DIGRAPH + - U+107AD MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK + - U+107AE MODIFIER LETTER SMALL TESH DIGRAPH + - U+107AF MODIFIER LETTER SMALL T WITH RETROFLEX HOOK + - U+107B0 MODIFIER LETTER SMALL V WITH RIGHT HOOK + - U+107B3 MODIFIER LETTER GLOTTAL STOP WITH STROKE + - U+107B4 MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE + - U+107B5 MODIFIER LETTER BILABIAL CLICK + - U+107B6 MODIFIER LETTER DENTAL CLICK + - U+107B7 MODIFIER LETTER LATERAL CLICK + - U+107B8 MODIFIER LETTER ALVEOLAR CLICK + - U+107B9 MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK + - U+107BA MODIFIER LETTER SMALL S WITH CURL + +- Cyrillic modifier letters, subscripts, and combining marks + - U+1E030 MODIFIER LETTER CYRILLIC SMALL A + - U+1E031 MODIFIER LETTER CYRILLIC SMALL BE + - U+1E032 MODIFIER LETTER CYRILLIC SMALL VE + - U+1E033 MODIFIER LETTER CYRILLIC SMALL GHE + - U+1E034 MODIFIER LETTER CYRILLIC SMALL DE + - U+1E035 MODIFIER LETTER CYRILLIC SMALL IE + - U+1E036 MODIFIER LETTER CYRILLIC SMALL ZHE + - U+1E037 MODIFIER LETTER CYRILLIC SMALL ZE + - U+1E038 MODIFIER LETTER CYRILLIC SMALL I + - U+1E039 MODIFIER LETTER CYRILLIC SMALL KA + - U+1E03A MODIFIER LETTER CYRILLIC SMALL EL + - U+1E03B MODIFIER LETTER CYRILLIC SMALL EM + - U+1E03C MODIFIER LETTER CYRILLIC SMALL O + - U+1E03D MODIFIER LETTER CYRILLIC SMALL PE + - U+1E03E MODIFIER LETTER CYRILLIC SMALL ER + - U+1E03F MODIFIER LETTER CYRILLIC SMALL ES + - U+1E040 MODIFIER LETTER CYRILLIC SMALL TE + - U+1E041 MODIFIER LETTER CYRILLIC SMALL U + - U+1E042 MODIFIER LETTER CYRILLIC SMALL EF + - U+1E043 MODIFIER LETTER CYRILLIC SMALL HA + - U+1E044 MODIFIER LETTER CYRILLIC SMALL TSE + - U+1E045 MODIFIER LETTER CYRILLIC SMALL CHE + - U+1E046 MODIFIER LETTER CYRILLIC SMALL SHA + - U+1E047 MODIFIER LETTER CYRILLIC SMALL YERU + - U+1E048 MODIFIER LETTER CYRILLIC SMALL E + - U+1E049 MODIFIER LETTER CYRILLIC SMALL YU + - U+1E04B MODIFIER LETTER CYRILLIC SMALL SCHWA + - U+1E04C MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I + - U+1E04D MODIFIER LETTER CYRILLIC SMALL JE + - U+1E04E MODIFIER LETTER CYRILLIC SMALL BARRED O + - U+1E04F MODIFIER LETTER CYRILLIC SMALL STRAIGHT U + - U+1E050 MODIFIER LETTER CYRILLIC SMALL PALOCHKA + - U+1E051 CYRILLIC SUBSCRIPT SMALL LETTER A + - U+1E052 CYRILLIC SUBSCRIPT SMALL LETTER BE + - U+1E053 CYRILLIC SUBSCRIPT SMALL LETTER VE + - U+1E054 CYRILLIC SUBSCRIPT SMALL LETTER GHE + - U+1E055 CYRILLIC SUBSCRIPT SMALL LETTER DE + - U+1E056 CYRILLIC SUBSCRIPT SMALL LETTER IE + - U+1E057 CYRILLIC SUBSCRIPT SMALL LETTER ZHE + - U+1E058 CYRILLIC SUBSCRIPT SMALL LETTER ZE + - U+1E059 CYRILLIC SUBSCRIPT SMALL LETTER I + - U+1E05A CYRILLIC SUBSCRIPT SMALL LETTER KA + - U+1E05B CYRILLIC SUBSCRIPT SMALL LETTER EL + - U+1E05C CYRILLIC SUBSCRIPT SMALL LETTER O + - U+1E05D CYRILLIC SUBSCRIPT SMALL LETTER PE + - U+1E05E CYRILLIC SUBSCRIPT SMALL LETTER ES + - U+1E05F CYRILLIC SUBSCRIPT SMALL LETTER U + - U+1E060 CYRILLIC SUBSCRIPT SMALL LETTER EF + - U+1E061 CYRILLIC SUBSCRIPT SMALL LETTER HA + - U+1E062 CYRILLIC SUBSCRIPT SMALL LETTER TSE + - U+1E063 CYRILLIC SUBSCRIPT SMALL LETTER CHE + - U+1E064 CYRILLIC SUBSCRIPT SMALL LETTER SHA + - U+1E065 CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN + - U+1E066 CYRILLIC SUBSCRIPT SMALL LETTER YERU + - U+1E067 CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN + - U+1E068 CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I + - U+1E069 CYRILLIC SUBSCRIPT SMALL LETTER DZE + - U+1E06A CYRILLIC SUBSCRIPT SMALL LETTER DZHE + - U+1E06B MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER + - U+1E06D MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE + - U+1E08F COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + +- Miscellaneous letters + - U+A7C7 LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY + - U+A7C8 LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY + - U+A7C9 LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY + - U+A7CA LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY + - U+AB66 LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK + - U+AB67 LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK + - U+AB68 LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE + +- Symbols + - U+2031 PER TEN THOUSAND SIGN + - U+203D INTERROBANG + - U+203E OVERLINE + - U+2042 ASTERISM + - U+204A TIRONIAN SIGN ET + - U+20C0 SOM SIGN + - U+218A TURNED DIGIT TWO + - U+218B TURNED DIGIT THREE + - U+21B6 ANTICLOCKWISE TOP SEMICIRCLE ARROW + - U+21B7 CLOCKWISE TOP SEMICIRCLE ARROW + - U+21BA ANTICLOCKWISE OPEN CIRCLE ARROW + - U+21BB CLOCKWISE OPEN CIRCLE ARROW + - U+2215 DIVISION SLASH + - U+2221 MEASURED ANGLE + - U+2227 LOGICAL AND + - U+2228 LOGICAL OR + - U+226E NOT LESS-THAN + - U+226F NOT GREATER-THAN + - U+2318 PLACE OF INTEREST SIGN + - U+25C9 FISHEYE + - U+25CB WHITE CIRCLE + - U+2610 BALLOT BOX + - U+2611 BALLOT BOX WITH CHECK + - U+2612 BALLOT BOX WITH X + - U+2639 WHITE FROWNING FACE + - U+263A WHITE SMILING FACE + - U+2713 CHECK MARK + - U+2717 BALLOT X + - U+27C2 PERPENDICULAR + - U+2AFD DOUBLE SOLIDUS OPERATOR + - U+2E3E WIGGLY VERTICAL LINE + - U+1F12F COPYLEFT SYMBOL + - U+1F610 NEUTRAL FACE + +#### Improvements and fixes + +- Kayan diacritics feature (cv79) now supported by TypeTuner Web + +- Combining letters, modifier letters, superscripts, and subscripts have been made more consistent in size and weight + +- Superscript and subscript metrics in OS/2 table are synchronized with the height of precomposed letters + +- Encoding fixed for U+1078E MODIFIER LETTER SMALL REVERSED E + +- Size increased for: + - U+02BE MODIFIER LETTER RIGHT HALF RING + - U+02BF MODIFIER LETTER LEFT HALF RING + - U+02D2 MODIFIER LETTER CENTRED RIGHT HALF RING + - U+02D3 MODIFIER LETTER CENTRED LEFT HALF RING + +- U+00AA FEMININE ORDINAL INDICATOR is now included in single-story/double-story features + +- The combination of U+0079 LATIN SMALL LETTER Y and U+0328 COMBINING OGONEK forms a ligature + +- Small cap form corrected for U+A78D LATIN CAPITAL LETTER TURNED H / U+0265 LATIN SMALL LETTER TURNED H + +- U+0328 COMBINING OGONEK repositioned to middle leg of U+006D LATIN SMALL LETTER M + +- Diacritic positioning improved for U+2183 ROMAN NUMERAL REVERSED ONE HUNDRED + +- Position of dot changed for U+1E23 LATIN SMALL LETTER H WITH DOT ABOVE + +#### Notes + +- The next major version (7) will address some complex pending issues and features and may include substantial changes to line spacing, glyph metrics, kerning, and even font family structure. If you have any requests for future versions, please contact us as soon as possible. + +### 9 Feb 2022 (SIL WSTech Team) Gentium Plus version 6.101 + +This is a maintenance release primarily focused on making the v6 fonts available on *TypeTuner Web*. + +#### New + +- The fonts now support SIL *TypeTuner*. Customized fonts can be created at *TypeTuner Web* (https://scripts.sil.org/ttw/fonts2go.cgi) + +- New `locl` OpenType feature that supports Macedonian (MKD/mk) Cyrillic alternates + +- Serbian and Macedonian alternates are also available through a new OpenType feature (cv84) for applications that do not support language-specific `locl` features + +- Characters have been added to support Unicode versions up to 14.0.0 (more to be added in future releases): + - U+A7C4 LATIN CAPITAL LETTER C WITH PALATAL HOOK + - U+A7C5 LATIN CAPITAL LETTER S WITH HOOK + - U+1DF00 LATIN SMALL LETTER FENG DIGRAPH WITH TRILL + - U+1DF01 LATIN SMALL LETTER REVERSED SCRIPT G + - U+1DF02 LATIN LETTER SMALL CAPITAL TURNED G + - U+1DF03 LATIN SMALL LETTER REVERSED K + - U+1DF05 LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK + - U+1DF07 LATIN SMALL LETTER REVERSED ENG + - U+1DF09 LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK + - U+1DF0A LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK + - U+1DF0B LATIN SMALL LETTER ESH WITH DOUBLE BAR + - U+1DF0C LATIN SMALL LETTER ESH WITH DOUBLE BAR AND CURL + - U+1DF0D LATIN SMALL LETTER TURNED T WITH CURL + - U+1DF0E LATIN LETTER INVERTED GLOTTAL STOP WITH CURL + - U+1DF0F LATIN LETTER STRETCHED C WITH CURL + - U+1DF10 LATIN LETTER SMALL CAPITAL TURNED K + - U+1DF11 LATIN SMALL LETTER L WITH FISHHOOK + - U+1DF12 LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK + - U+1DF13 LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK + - U+1DF14 LATIN SMALL LETTER ENG WITH PALATAL HOOK + - U+1DF15 LATIN SMALL LETTER TURNED R WITH PALATAL HOOK + - U+1DF16 LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK + - U+1DF17 LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK + - U+1DF19 LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK + - U+1DF1A LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK + - U+1DF1B LATIN SMALL LETTER O WITH RETROFLEX HOOK + - U+1DF1C LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK + - U+1DF1D LATIN SMALL LETTER C WITH RETROFLEX HOOK + - U+1DF1E LATIN SMALL LETTER S WITH CURL + +#### Improved + +- The special-purpose modified fonts have been updated to be based on the current version. These are available at https://software.sil.org/lcgfonts/download/ and include *Literacy* and *Compact* versions. + +- The Low-profile diacritics feature (ss07) is working properly again + +- U+1FBD GREEK KORONIS has been corrected to be a spacing character + +- U+02DE MODIFIER LETTER RHOTIC HOOK position improved with modifier vowels: + - U+02B8 MODIFIER LETTER SMALL Y + - U+1D53 MODIFIER LETTER SMALL OPEN O + - U+1D5A MODIFIER LETTER SMALL TURNED M + - U+1DBA MODIFIER LETTER SMALL TURNED V + +- Design improved for these characters: + - U+0184 LATIN CAPITAL LETTER TONE SIX + - U+0185 LATIN SMALL LETTER TONE SIX + +- The small caps feature (smcp) now supports more characters + +#### Changed encoding + +- The following characters were in the SIL PUA but have now been given Unicode assignments. The SIL PUA characters are now deprecated: + - U+A7C6 LATIN CAPITAL LETTER Z WITH PALATAL HOOK (was U+F234) + - U+10783 MODIFIER LETTER SMALL AE (was U+F1A1) + - U+1078F MODIFIER LETTER SMALL CLOSED REVERSED OPEN E (was U+F1A4) + - U+10791 MODIFIER LETTER SMALL RAMS HORN (was U+F1B5) + - U+10795 MODIFIER LETTER SMALL H WITH STROKE (was U+F1BC) + - U+107A0 MODIFIER LETTER SMALL TURNED Y (was U+F1CE) + - U+107A2 MODIFIER LETTER SMALL O WITH STROKE (was U+F1AB) + - U+107A3 MODIFIER LETTER SMALL CAPITAL OE (was U+F1AE) + - U+107B2 MODIFIER LETTER SMALL CAPITAL Y (was U+F1B4) + - U+1088E NABATAEAN LETTER FINAL KAPH (was U+F1A3) + - U+1DF04 LATIN LETTER SMALL CAPITAL L WITH BELT (was U+F268) + - U+1DF06 LATIN SMALL LETTER TURNED Y WITH BELT (was U+F267) + - U+1DF08 LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK (was U+F269) + - U+1DF18 LATIN SMALL LETTER EZH WITH PALATAL HOOK (was U+F235) + +### 2 July 2021 (SIL WSTech Team) Gentium Plus version 6.001 + +- Reverted font Postscript name to that used in v5 and earlier to avoid problems with unrecognized fonts when opening older documents. + +### 29 Jun 2021 (SIL WSTech Team) Gentium Plus version 6.000 + +***Note that this is a major upgrade that may cause document reflow as some glyphs widths have changed and some features have been removed.*** + +#### Removed + +- **Removed DSIGs added in version 5.000.** These have now been removed to reflect current best practice font development guidance. Adobe InDesign will complain that fonts cannot be found if a document last saved with version 5.000 is opened with version 5.960 or later installed. It will be necessary to find/replace the fonts in the document using the command in the Type menu. Please also look over the document carefully to note any places where changes in the fonts have affected letterforms or spacing. + +- **Graphite has been removed.** Application and OS support for OpenType has greatly improved, so the need for Graphite in this font family is greatly reduced. *If this affects you, and you find that OpenType does not provide sufficient support for your needs, please contact us right away.* + +- Removed the *Show Invisibles* feature. + +- Removed support for nine-level pitch contours. These will be replaced by a standalone pitch contours font in the future. + +#### Added + +Characters added to support Unicode versions 7.0-13.0, including feature support (e.g. small caps) where appropriate: + +- U+1AB0 COMBINING DOUBLED CIRCUMFLEX ACCENT +- U+1AB1 COMBINING DIAERESIS-RING +- U+1AB2 COMBINING INFINITY +- U+1AB3 COMBINING DOWNWARDS ARROW +- U+1AB4 COMBINING TRIPLE DOT +- U+1AB5 COMBINING X-X BELOW +- U+1AB6 COMBINING WIGGLY LINE BELOW +- U+1AB7 COMBINING OPEN MARK BELOW +- U+1AB8 COMBINING DOUBLE OPEN MARK BELOW +- U+1AB9 COMBINING LIGHT CENTRALIZATION STROKE BELOW +- U+1ABA COMBINING STRONG CENTRALIZATION STROKE BELOW +- U+1DF5 COMBINING UP TACK ABOVE +- U+203B REFERENCE MARK +- U+20BE LARI SIGN +- U+20BF BITCOIN SIGN +- U+27E8 MATHEMATICAL LEFT ANGLE BRACKET +- U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET +- U+2E13 DOTTED OBELOS +- U+2E14 DOWNWARDS ANCORA +- U+2E17 DOUBLE OBLIQUE HYPHEN +- U+2E22 TOP LEFT HALF BRACKET +- U+2E23 TOP RIGHT HALF BRACKET +- U+2E24 BOTTOM LEFT HALF BRACKET +- U+2E25 BOTTOM RIGHT HALF BRACKET +- U+A78F LATIN LETTER SINOLOGICAL DOT +- U+A7AE LATIN CAPITAL LETTER SMALL CAPITAL I +- U+A7AF LATIN LETTER SMALL CAPITAL Q +- U+A7B3 LATIN CAPITAL LETTER CHI +- U+A7B4 LATIN CAPITAL LETTER BETA +- U+A7B5 LATIN SMALL LETTER BETA +- U+A7B6 LATIN CAPITAL LETTER OMEGA +- U+A7B7 LATIN SMALL LETTER OMEGA +- U+A7B8 LATIN CAPITAL LETTER U WITH STROKE +- U+A7B9 LATIN SMALL LETTER U WITH STROKE +- U+AB30 LATIN SMALL LETTER BARRED ALPHA +- U+AB53 LATIN SMALL LETTER CHI +- U+AB5C MODIFIER LETTER SMALL HENG +- U+AB5E MODIFIER LETTER SMALL L WITH MIDDLE TILDE +- U+F26E CAPITAL RAMS HORN (in SIL PUA) + +#### New + +- First release that uses a UFO-based design and production workflow + - All sources are in open formats + - Build toolkit and workflow is completely open-source + - See https://silnrsi.github.io/silfontdev/en-US/Introduction.html + +- New weights previously only available in the Gentium Basic fonts. The new weights may not be identical in metrics or form to the Basic fonts, though care has been taken to minimize differences. + +- Web fonts are provided in both WOFF and WOFF2 formats + +- Applied new hinting techniques to try to improve screen rendering on Windows + +- All-new documentation in HTML and PDF formats + +- Features for controlling literacy forms of a and g separately + - Literacy a alternates (ss02) + - Literacy g alternates (ss03) + +- Feature to support side-by-side rendering of U+0300 plus U+0301 + - Kayan diacritics (cv79) + +- Tone letter features (cv91 & cv92) now supported through OpenType + +- Reduced size of the Greek prosgegrammeni (adscript iota) used with capital forms, and added a new feature to display it as a subscript (ypogegrammeni) under capitals (cv83) + +#### Fixes + +- Fixed some small capital correspondences, including added support for clicks + +- Fixed problems with spacing of tone letters + +- Improved miscellaneous anchor positions, including the position of diacritics +below glyphs with macrons below (e.g. U+1E0F LATIN SMALL LETTER D WITH LINE BELOW) + +- Improved position of diacritics for superscripts and modifier letters +(including cedilla, ogonek, rhotic hook) + +- Fixes and improvements to various glyphs: + - U+01E5 LATIN SMALL LETTER G WITH STROKE (bar position on single-story variant) + - U+02D6 MODIFIER LETTER PLUS SIGN (size) + - U+0315 COMBINING COMMA ABOVE RIGHT (made spacing) + - U+033B COMBINING SQUARE BELOW (more rectangular) + - U+1D02 LATIN SMALL LETTER TURNED AE (made double-story in italic) + - U+1D15 LATIN LETTER SMALL CAPITAL OU (form) + - U+1D46 MODIFIER LETTER SMALL TURNED AE (made double-story in italic) + - U+1D77 LATIN SMALL LETTER TURNED G (position) + - U+1D78 MODIFIER LETTER CYRILLIC EN (form) + - U+2053 SWUNG DASH + - U+A75B LATIN SMALL LETTER R ROTUNDA (spacing) + - U+A76A LATIN CAPITAL LETTER ET + - U+A76B LATIN SMALL LETTER ET + - U+A76C LATIN CAPITAL LETTER IS + - U+A76D LATIN SMALL LETTER IS + - U+A77F LATIN SMALL LETTER TURNED INSULAR G (position) + - U+A7F8 MODIFIER LETTER CAPITAL H WITH STROKE (form) + - U+A7FA LATIN LETTER SMALL CAPITAL TURNED M (italic) + +#### Known issues + +- The low-profile diacritics feature (ss07) is present but not working properly in some cases. + +- There is no support for TypeTuner or TypeTuner Web. We hope to add that support soon. + +- There are no regional subsets. Please contact us if these are a priority for you and describe how you use them. We are reassessing whether to provide these subsets. With current web technology and WOFF2 compression most uses can be met equally well with the full fonts. + +### 27 Oct 2014 (SIL NRSI team) Gentium Plus version 5.000 +- Added Stylistic Sets to the font for OpenType support + of previously Graphite-only features +- Added Character Variants to the font for OpenType support + of previously Graphite-only features +- Added Serbian feature when Serbian language is turned on +- Added hook D variant feature (for U+018A/U+0257) +- Removed "Show deprecated PUA" feature +- Removed "Romanian-style diacritics" feature + (because glyphs are now encoded) +- Removed "Diacritic selection" feature +- Added U+039E, U+03BC, U+03C6 and U+03C9 in the Greek and Coptic block +- Added U+0528..U+052F in the Cyrillic Supplement block +- Added U+2041 in the General Punctuation block +- Added U+2095..U+209C in the Superscripts and Subscripts block +- Added U+20B6..U+20BD in the Currency Symbols block +- Added U+210C, U+2113, U+2117, U+212D, U+2135, U+214F in the + Letterlike Symbols block +- Added U+2150..U+2152 and U+2189 in the Number Forms block +- Added U+2226, U+2234..U+2235, U+2262, U+2282..U+2287 in the + Mathematical Operators block +- Added U+2640, U+2642, U+266D, U+266F in the Miscellaneous Symbols block +- Added U+27E8..U+27E9 in the Miscellaneous Mathematical Symbols-A block +- Added U+2C7E..U+2C7F in the Latin Extended-C block +- Added U+2C88 in the Coptic block +- Added U+2E00..U+2E0D, U+2E3A..U+2E3B in the Supplemental + Punctuation block +- Added U+A736..U+A73F, U+A742..U+A74D, U+A750..U+A787, U+A790..U+A7AD, + U+A7B0..U+A7B1, U+A7F7..U+A7FA in the Latin Extended-D block. + These were also added to relevant features. +- Added U+A92E in the Kayah Li block (to support the Kayah Li language + when using the Roman script) +- Added U+AB64..U+AB65 in the Latin Extended-E block +- Added U+1D40C, U+1D504..U+1D505, U+1D50A, U+1D50E..U+1D50F, U+1D514, + U+1D516..U+1D517, U+1D519 in the Mathematical Alphanumeric Symbols block +- Added PUA characters U+F26C (curl J) and U+F26D (left-hook b) +- Characters in our PUA that were added to Unicode have had their + codepoints updated: + F1AD>A7F9, F266>A78E, F26B>A78D, F32C>0526, F32D>0527, F17B>1DFD, F209>2C70 +- These PUA characters were deprecated (now white on black glyphs): + U+F17B, U+F1AD, U+F209, U+F247, U+F248, U+F266, U+F26B, U+F32C, U+F32D +- Deleted U+0149 as it is officially deprecated in Unicode +- Added support for shorter macrons under narrow letters (i,l,r,t). + (This only works for Graphite or using precomposed characters in OpenType.) +- Made it possible for saltillo characters (U+A78B and U+A78C) to "carry" + diacritics +- Improved design of U+A722..U+A725 and U+A78D +- Refactored all cedilla positioning +- Removal of unneeded duplicate glyphs (because of improvements in smart + font code) +- Bug fix in Graphite code to allow for simultaneous selection of Vietnamese + alternates and Small Caps +- Bug fix in Graphite code to allow for simultaneous selection of Ogonek + alternates and Small Caps +- Subscript and Superscript parentheses, minus, plus and equals were raised. + Metrics were not changed. +- Adjusted tails on U+2C6B, U+2C6C +- Arrowhead design of U+21A8 modified to match the other arrows +- Placement of Ogonek revisited +- Improved hinting +- Version number bumped up to match other SIL Roman fonts +- Slight modification to positioning of U+0361 and U+035C +- Narrow No-Break Space (U+202F) adjusted to be narrower + than the No-Break Space (U+00A0) +- Changed the strongly curved hooks on Cyrillic U+04C3..U+04C4, U+04C7..U+04C8, + U+04FC..U+04FD, U+0512..U+0513 to be more consistent with other hooks and also + reshaped U+0402, U+0452, U+0494, U+0495, U+04A6, U+04A7, U+0520..U+0523 to match +- Modified Cyrillic italic versions of U+04AF, U+04B1 +- Changed postscript names for U+0218 and U+0219 +- Changed postscript names for U+2203, U+232A and U+2329 +- "Hide tone contour staves" feature now works with single tonebar +- Fixed outline for U+1DBF +- Allowed combining marks to render properly with U+02D0 +- Added U+037F in the Greek and Coptic block +- Adjusted U+1FBD so that it is a spacing mark in Graphite +- Improved design of U+2C72 and U+2C73 (hook w) for collision avoidance +- Adjusted width of U+005F +- Adjusted design of U+0264 + +### 1 Aug 2012 (SIL NRSI team) Gentium Plus version 1.510 +- Changed Graphite feature identifiers from integers to 4-character + alphanumeric tags (no other changes) + +### 12 Sep 2011 (SIL NRSI team) Gentium Plus version 1.508 +- Removed the VDMX table +- Changed version number (using ttfsetver) + +### 25 Aug 2011 (SIL NRSI team) Gentium Plus version 1.506 +- Double-encoded the SIL PUA characters which were added to Unicode 5.2 and 6.0 + (using ttfremap) +- Corrected problem with coverage tables (using ttfsortcover) +- Changed version number (using ttfsetver) +- Added device metric tables +- Added an empty dsig table + +### 16 Nov 2010 (SIL NRSI team) Gentium Plus version 1.504 +- Added codepage bits for 1251 (Cyrillic), 1257 (Windows Baltic), 1258 + (Vietnamese) + +### 1 Nov 2010 (SIL NRSI team) Gentium Plus version 1.502 +- Regular and Italic weights only +- New OpenType and Graphite support +- Converted kerning to OpenType (but not Graphite) +- New extended Cyrillic script support, inc. Serbian alternates +- Character set and features up to same level as Charis SIL 4.106 +- Support for more historic Greek characters and alternate seriffed beta +- No separate GentiumAlt fonts (replaced by font features) +- Added WOFF versions and examples + +### 28 Nov 2005 (Victor Gaultney) Gentium version 1.02 +- Changed licensing to the SIL Open Font License +- Included FontLab source files +- Fixed some duplicate PostScript glyph names +- Fixed italic angle + +### 19 Sep 2003 (Victor Gaultney) Gentium version 1.01 +- Maintenance release focused on changing internal font +- Information to reflect the changeover to an SIL project +- There is only one bug fix - the Greek mu PS name was changed to try and fix +a display/printing problem. There is still no manual hinting. + +### 16 Sep 2002 (Victor Gaultney) Gentium version 1.00 +- First public release +- No manual hinting is included in this version. Some has been done - with +good results - but is not yet complete enough. + + +## Acknowledgements + +(Here is where contributors can be acknowledged. If you make modifications be +sure to add your name (N), email (E), web-address (W) and description (D). +This list is sorted by last name in alphabetical order.) + +N: Jon Coblentz, Sharon Correll, Lorna Evans, Bob Hallissy, +Martin Hosken, Annie Olsen, David Raymond, Iska Routamaa, Becca Spalinger, +Alan Ward +E: https://software.sil.org/gentium/about/contact/ +W: https://software.sil.org/gentium/ +D: SIL designers and font engineers + +N: Victor Gaultney +E: https://software.sil.org/gentium/about/contact/ +W: https://gaultney.org/jvgtype/ +D: Original Designer + +The Gentium fonts are maintained by SIL Global, a global, +faith-based nonprofit that works with local communities around the world +to develop language solutions that expand possibilities for a better life. + +For more information or support please visit: +https://software.sil.org/gentium/ diff --git a/fonts/GentiumBook.OFL-FAQ.txt b/fonts/GentiumBook.OFL-FAQ.txt new file mode 100644 index 0000000..51e5a13 --- /dev/null +++ b/fonts/GentiumBook.OFL-FAQ.txt @@ -0,0 +1,451 @@ +OFL FAQ - Frequently Asked Questions about the SIL Open Font License (OFL) +Version 1.1-update7 - November 2023 +The OFL FAQ is Copyright (c) 2005-2023, SIL International (https://www.sil.org) +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. +(See https://openfontlicense.org/ofl-faq for updates) + + +CONTENTS OF THIS FAQ +1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL +2 USING OFL FONTS FOR WEBPAGES AND ONLINE WEBFONT SERVICES +3 MODIFYING OFL-LICENSED FONTS +4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL +5 CHOOSING RESERVED FONT NAMES +6 ABOUT THE FONTLOG +7 MAKING CONTRIBUTIONS TO OFL PROJECTS +8 ABOUT THE LICENSE ITSELF +9 ABOUT SIL INTERNATIONAL +APPENDIX A - FONTLOG EXAMPLE + +1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL +1.1 Can I use the fonts for a book or other print publication, to create logos or other graphics, or even to manufacture objects based on their outlines? +Yes. You are very welcome to do so. Authors of fonts released under the OFL allow you to use their font software as such for any kind of design work. No additional license or permission is required, unlike with some other licenses. Some examples of these uses are: logos, posters, business cards, stationery, video titling, signage, t-shirts, personalised fabric, 3D-printed/laser-cut shapes, sculptures, rubber stamps, cookie cutters and lead type. + +1.1.1 Does that restrict the license or distribution of that artwork? +No. You remain the author and copyright holder of that newly derived graphic or object. You are simply using an open font in the design process. It is only when you redistribute, bundle or modify the font itself that other conditions of the license have to be respected (see below for more details). + +1.1.2 Is any kind of acknowledgement required? +No. Font authors may appreciate being mentioned in your artwork's acknowledgements alongside the name of the font, possibly with a link to their website, but that is not required. + +1.2 Can the fonts be included with Free/Libre and Open Source Software collections such as GNU/Linux and BSD distributions and repositories? +Yes! Fonts licensed under the OFL can be freely included alongside other software under FLOSS (Free/Libre and Open Source Software) licenses. Since fonts are typically aggregated with, not merged into, existing software, there is little need to be concerned about incompatibility with existing software licenses. You may also repackage the fonts and the accompanying components in a .rpm or .deb package (or other similar package formats or installers) and include them in distribution CD/DVDs and online repositories. (Also see entry 5.9 about rebuilding from source.) + +1.3 I want to distribute the fonts with my program, does this mean my program also has to be Free/Libre and Open Source Software? +No. Only the portions based on the Font Software are required to be released under the OFL. The intent of the license is to allow aggregation or bundling with software under restricted licensing as well. + +1.4 Can I sell a software package that includes these fonts? +Yes, you can do this with both the Original Version and a Modified Version of the fonts. Examples of bundling made possible by the OFL would include: text editors, word processors, design and publishing applications, training and educational software, games and entertainment software, mobile device applications, etc. + +1.5 Can I include the fonts on a CD of freeware or commercial fonts? +Yes, as long some other font or software is also on the disk, so the OFL font is not sold by itself. + +1.6 Why won't the OFL let me sell the fonts alone? +The intent is to keep people from making money by simply redistributing the fonts. The only people who ought to profit directly from the fonts should be the original authors, and those authors have kindly given up potential direct income to distribute their fonts under the OFL. Please honour and respect their contribution! + +1.7 What about sharing OFL fonts with friends on a CD, DVD or USB stick? +You are very welcome to share open fonts with friends, family and colleagues through removable media. Just remember to include the full font package, including any copyright notices and licensing information as available in OFL.txt. In the case where you sell the font, it has to come bundled with software. + +1.8 Can I host the fonts on a website for others to use? +Yes, as long as you make the full font package available. In most cases it may be best to point users to the main site that distributes the Original Version so they always get the most recent stable and complete version. See also discussion of webfonts in Section 2. + +1.9 Can I host the fonts on a server for use over our internal network? +Yes. If the fonts are transferred from the server to the client computer by means that allow them to be used even if the computer is no longer attached to the network, the full package (copyright notices, licensing information, etc.) should be included. + +1.10 Does the full OFL license text always need to accompany the font? +The only situation in which an OFL font can be distributed without the text of the OFL (either in a separate file or in font metadata), is when a font is embedded in a document or bundled within a program. In the case of metadata included within a font, it is legally sufficient to include only a link to the text of the OFL on https://openfontlicense.org, but we strongly recommend against this. Most modern font formats include metadata fields that will accept the full OFL text, and full inclusion increases the likelihood that users will understand and properly apply the license. + +1.11 What do you mean by 'embedding'? How does that differ from other means of distribution? +By 'embedding' we mean inclusion of the font in a document or file in a way that makes extraction (and redistribution) difficult or clearly discouraged. In many cases the names of embedded fonts might also not be obvious to those reading the document, the font data format might be altered, and only a subset of the font - only the glyphs required for the text - might be included. Any other means of delivering a font to another person is considered 'distribution', and needs to be accompanied by any copyright notices and licensing information available in OFL.txt. + +1.12 So can I embed OFL fonts in my document? +Yes, either in full or a subset. The restrictions regarding font modification and redistribution do not apply, as the font is not intended for use outside the document. + +1.13 Does embedding alter the license of the document itself? +No. Referencing or embedding an OFL font in any document does not change the license of the document itself. The requirement for fonts to remain under the OFL does not apply to any document created using the fonts and their derivatives. Similarly, creating any kind of graphic using a font under the OFL does not make the resulting artwork subject to the OFL. + +1.14 If OFL fonts are extracted from a document in which they are embedded (such as a PDF file), what can be done with them? Is this a risk to author(s)? +The few utilities that can extract fonts embedded in a PDF will typically output limited amounts of outlines - not a complete font. To create a working font from this method is much more difficult and time consuming than finding the source of the original OFL font. So there is little chance that an OFL font would be extracted and redistributed inappropriately through this method. Even so, copyright laws address any misrepresentation of authorship. All Font Software released under the OFL and marked as such by the author(s) is intended to remain under this license regardless of the distribution method, and cannot be redistributed under any other license. We strongly discourage any font extraction - we recommend directly using the font sources instead - but if you extract font outlines from a document, please be considerate: respect the work of the author(s) and the licensing model. + +1.15 What about distributing fonts with a document? Within a compressed folder structure? Is it distribution, bundling or embedding? +Certain document formats may allow the inclusion of an unmodified font within their file structure which may consist of a compressed folder containing the various resources forming the document (such as pictures and thumbnails). Including fonts within such a structure is understood as being different from embedding but rather similar to bundling (or mere aggregation) which the license explicitly allows. In this case the font is conveyed unchanged whereas embedding a font usually transforms it from the original format. The OFL does not allow anyone to extract the font from such a structure to then redistribute it under another license. The explicit permission to redistribute and embed does not cancel the requirement for the Font Software to remain under the license chosen by its author(s). Even if the font travels inside the document as one of its assets, it should not lose its authorship information and licensing. + +1.16 What about ebooks shipping with open fonts? +The requirements differ depending on whether the fonts are linked, embedded or distributed (bundled or aggregated). Some ebook formats use web technologies to do font linking via @font-face, others are designed for font embedding, some use fonts distributed with the document or reading software, and a few rely solely on the fonts already present on the target system. The license requirements depend on the type of inclusion as discussed in 1.15. + +1.17 Can Font Software released under the OFL be subject to URL-based access restrictions methods or DRM (Digital Rights Management) mechanisms? +Yes, but these issues are out of scope for the OFL. The license itself neither encourages their use nor prohibits them since such mechanisms are not implemented in the components of the Font Software but through external software. Such restrictions are put in place for many different purposes corresponding to various usage scenarios. One common example is to limit potentially dangerous cross-site scripting attacks. However, in the spirit of libre/open fonts and unrestricted writing systems, we strongly encourage open sharing and reuse of OFL fonts, and the establishment of an environment where such restrictions are unnecessary. Note that whether you wish to use such mechanisms or you prefer not to, you must still abide by the rules set forth by the OFL when using fonts released by their authors under this license. Derivative fonts must be licensed under the OFL, even if they are part of a service for which you charge fees and/or for which access to source code is restricted. You may not sell the fonts on their own - they must be part of a larger software package, bundle or subscription plan. For example, even if the OFL font is distributed in a software package or via an online service using a DRM mechanism, the user would still have the right to extract that font, use, study, modify and redistribute it under the OFL. + +1.18 I've come across a font released under the OFL. How can I easily get more information about the Original Version? How can I know where it stands compared to the Original Version or other Modified Versions? +Consult the copyright statement(s) in the license for ways to contact the original authors. Consult the FONTLOG (see section 6 for more details and examples) for information on how the font differs from the Original Version, and get in touch with the various contributors via the information in the acknowledgement section. Please consider using the Original Versions of the fonts whenever possible. + +1.19 What do you mean in condition 4 of the OFL's permissions and conditions? Can you provide examples of abusive promotion / endorsement / advertisement vs. normal acknowledgement? +The intent is that the goodwill and reputation of the author(s) should not be used in a way that makes it sound like the original author(s) endorse or approve of a specific Modified Version or software bundle. For example, it would not be right to advertise a word processor by naming the author(s) in a listing of software features, or to promote a Modified Version on a website by saying "designed by ...". However, it would be appropriate to acknowledge the author(s) if your software package has a list of people who deserve thanks. We realize that this can seem to be a grey area, but the standard used to judge an acknowledgement is that if the acknowledgement benefits the author(s) it is allowed, but if it primarily benefits other parties, or could reflect poorly on the author(s), then it is not. + +1.20 I'm writing a small app for mobile platforms, do I need to include the whole package? +If you bundle a font under the OFL with your mobile app you must comply with the terms of the license. At a minimum you must include the copyright statement, the license notice and the license text. A mention of this information in your About box or Changelog, with a link to where the font package is from, is good practice, and the extra space needed to carry these items is very small. You do not, however, need to include the full contents of the font package - only the fonts you use and the copyright and license that apply to them. For example, if you only use the regular weight in your app, you do not need to include the italic and bold versions. + +1.21 What about including OFL fonts by default in my firmware or dedicated operating system? +Many such systems are restricted and turned into appliances so that users cannot study or modify them. Using open fonts to increase quality and language coverage is a great idea, but you need to be aware that if there is a way for users to extract fonts you cannot legally prevent them from doing that. The fonts themselves, including any changes you make to them, must be distributed under the OFL even if your firmware has a more restrictive license. If you do transform the fonts and change their formats when you include them in your firmware you must respect any names reserved by the font authors via the RFN mechanism and pick your own font name. Alternatively if you directly add a font under the OFL to the font folder of your firmware without modifying or optimizing it you are simply bundling the font like with any other software collection, and do not need to make any further changes. + +1.22 Can I make and publish CMS themes or templates that use OFL fonts? Can I include the fonts themselves in the themes or templates? Can I sell the whole package? +Yes, you are very welcome to integrate open fonts into themes and templates for your preferred CMS and make them more widely available. Remember that you can only sell the fonts and your CMS add-on as part of a software bundle. (See entry 1.4 for details and examples about selling bundles). + +1.23 Can OFL fonts be included in services that deliver fonts to the desktop from remote repositories? Even if they contain both OFL and non-OFL fonts? +Yes. Some foundries have set up services to deliver fonts to subscribers directly to desktops from their online repositories; similarly, plugins are available to preview and use fonts directly in your design tool or publishing suite. These services may mix open and restricted fonts in the same channel, however they should make a clear distinction between them to users. These services should also not hinder users (such as through DRM or obfuscation mechanisms) from extracting and using the OFL fonts in other environments, or continuing to use OFL fonts after subscription terms have ended, as those uses are specifically allowed by the OFL. + +1.24 Can services that provide or distribute OFL fonts restrict my use of them? +No. The terms of use of such services cannot replace or restrict the terms of the OFL, as that would be the same as distributing the fonts under a different license, which is not allowed. You are still entitled to use, modify and redistribute them as the original authors have intended outside of the sole control of that particular distribution channel. Note, however, that the fonts provided by these services may differ from the Original Versions. + +1.25 Can a font released under the OFL be used as a source by an AI (Artificial Intelligence), an ML (Machine Learning) model, a NN (neural network), or similar system to create a new font and release it under a different license? +No. Any font produced from such systems whose input or training data contains any source file from a font project licensed under the OFL should be considered a derivative work. All Font Software released under the OFL and marked as such by the author(s) must remain under the OFL regardless of the way the sources might have been transformed, in whole or in part. If you would like to use font sources to produce a font to be released under a different license, then you need to contact the corresponding authors directly to ask for their explicit permission. + +1.26 Can OFL fonts be used by AI-based design tools? +Yes, as long as the resulting work is not intended to be a font. Using such automated systems to produce graphical output - something that is not a font - is considered similar to normal usage. It is equivalent to using an OFL font in the graphic design process as discussed in question 1.1. + + +2 USING OFL FONTS FOR WEBPAGES AND ONLINE WEBFONT SERVICES + +NOTE: This section often refers to a separate paper on 'Webfonts and Reserved Font Names'. This is available at https://openfontlicense.org/webfonts-and-reserved-font-names + +2.1 Can I make webpages using OFL fonts? +Yes! Go ahead! You could ask visitors to download and install the fonts, but loading the fonts dynamically as webfonts through CSS @font-face declarations is a much better method. The referenced fonts can be hosted on the same server as other site assets and content, or loaded from a separate webfont service. This is recommended and explicitly allowed by the licensing model because it is distribution. + +2.2 Can I make and use WOFF (Web Open Font Format) versions of OFL fonts? +Yes, but you need to be careful. A change in font format normally is considered modification, and Reserved Font Names (RFNs) cannot be used. Because of the design of the WOFF and WOFF2 formats, however, it is possible to create a WOFF/WOFF2 version that is not considered modification, and so would not require a name change. + +2.2.1 How can I make sure that a WOFF/WOFF2 version is not considered modification? +You are allowed to create, use and distribute a WOFF version of an OFL font without changing the font name, but only if the original font data remains unchanged except for WOFF compression, and WOFF-specific metadata is either omitted altogether or present and includes, unaltered, the contents of all equivalent metadata in the original font. + +2.2.2 Do WOFF conversion tools and services automatically meet these requirements? +No. Some WOFF conversion tools and online services do not meet the two requirements listed above, and so their output must be considered a Modified Version. So be very careful and check to be sure that the tool or service you're using is compressing unchanged data and completely and accurately reflecting the original font metadata. + +2.3 What about other webfont formats such as EOT/EOTLite/CWT/etc.? +In most cases these formats alter the original font data more than WOFF, and do not completely support appropriate metadata, so their use must be considered modification and RFNs may not be used. However, there may be certain formats or usage scenarios that may allow the use of RFNs. See https://openfontlicense.org/webfonts-and-reserved-font-names + +2.4 Can I make OFL fonts available through webfont online services? +Yes, you are welcome to include OFL fonts in online webfont services as long as you properly meet all the conditions of the license. The origin and open status of the font should be clear among the other fonts you are hosting. Authorship, copyright notices and license information must be sufficiently visible to your users or subscribers so they know where the font comes from and the rights granted by the author(s). Make sure the font file contains the needed copyright notice(s) and licensing information in its metadata. Please double-check the accuracy of every field to prevent contradictory information. Other font formats, including EOT/EOTLite/CWT and superior alternatives like WOFF, already provide fields for this information. Remember that if you modify the font within your library or convert it to another format for any reason the OFL restrictions apply and you need to change the names accordingly. Please respect the author's wishes as expressed in the OFL and do not misrepresent original designers and their work. Don't lump quality open fonts together with dubious freeware or public domain fonts. Consider how you can best work with the original designers and foundries, support their efforts and generate goodwill that will benefit your service. (See entry 1.17 for details related to URL-based access restrictions methods or DRM mechanisms). + +2.5 Some webfont formats and services provide ways of 'optimizing' the font for a particular website or web application; is that allowed? +Yes, it is permitted, but remember that these optimized versions are Modified Versions and so must follow OFL requirements like appropriate renaming. Also you need to bear in mind the other important parameters beyond compression, speed and responsiveness: you need to consider the audience of your particular website or web application, as choosing some optimization parameters may turn out to be less than ideal for them. Subsetting by removing certain glyphs or features may seriously limit functionality of the font in various languages that your users expect. It may also introduce degradation of quality in the rendering or specific bugs on the various target platforms compared to the original font from upstream. In other words, remember that one person's optimized font may be another person's missing feature. Various advanced typographic features (OpenType, Graphite or AAT) are also available through CSS and may provide the desired effects without the need to modify the font. + +2.6 Is subsetting a webfont considered modification? +Yes. Removing any parts of the font when delivering a webfont to a browser, including unused glyphs and smart font code, is considered modification. This is permitted by the OFL but would not normally allow the use of RFNs. Some newer subsetting technologies may be able to subset in a way that allows users to effectively have access to the complete font, including smart font behaviour. See entry 2.8 and https://openfontlicense.org/webfonts-and-reserved-font-names + +2.7 Are there any situations in which a modified webfont could use RFNs? +Yes. If a webfont is optimized only in ways that preserve Functional Equivalence (see entry 2.8), then it may use RFNs, as it reasonably represents the Original Version and respects the intentions of the author(s) and the main purposes of the RFN mechanism (avoids collisions, protects authors, minimizes support, encourages derivatives). However this is technically very difficult and often impractical, so a much better scenario is for the webfont service or provider to sign a separate agreement with the author(s) that allows the use of RFNs for Modified Versions. + +2.8 How do you know if an optimization to a webfont preserves Functional Equivalence? +Functional Equivalence is described in full in the 'Webfonts and Reserved Font Names' paper at https://openfontlicense.org/webfonts-and-reserved-font-names, in general, an optimized font is deemed to be Functionally Equivalent (FE) to the Original Version if it: + +- Supports the same full character inventory. If a character can be properly displayed using the Original Version, then that same character, encoded correctly on a webpage, will display properly. +- Provides the same smart font behavior. Any dynamic shaping behavior that works with the Original Version should work when optimized, unless the browser or environment does not support it. There does not need to be guaranteed support in the client, but there should be no forced degradation of smart font or shaping behavior, such as the removal or obfuscation of OpenType, Graphite or AAT tables. +- Presents text with no obvious degradation in visual quality. The lettershapes should be equally (or more) readable, within limits of the rendering platform. +- Preserves original author, project and license metadata. At a minimum, this should include: Copyright and authorship; The license as stated in the Original Version, whether that is the full text of the OFL or a link to the web version; Any RFN declarations; Information already present in the font or documentation that points back to the Original Version, such as a link to the project or the author's website. + +If an optimized font meets these requirements, and so is considered to be FE, then it's very likely that the original author would feel that the optimized font is a good and reasonable equivalent. If it falls short of any of these requirements, the optimized font does not reasonably represent the Original Version, and so should be considered to be a Modified Version. Like other Modified Versions, it would not be allowed to use any RFNs and you simply need to pick your own font name. + +2.9 Can fonts released under the OFL be used with Incremental Font Transfer (IFT) or similar on-the-fly subsetting and compression technologies? +Yes, if they provide a sufficient level of Functional Equivalence. Extra care should be taken to make sure that such processes - both on the server and on the client - do not break glyph coverage and smart features especially for lesser-known and lesser-resourced languages in the resulting document or app. See the 'Webfonts and Reserved Font Names' paper on https://openfontlicense.org/webfonts-and-reserved-font-names for more about the goals and the rationale. + +2.10 Isn't use of webfonts another form of embedding? +No. Unlike embedded fonts in a PDF, webfonts are not an integrated part of the document itself. They are not specific to a single document and are often applied to thousands of documents around the world. The font data is not stored alongside the document data and often originates from a different location. The ease by which the webfonts used by a document may be identified and downloaded for desktop use demonstrates that they are philosophically and technically separate from the webpages that specify them. See https://openfontlicense.org/webfonts-and-reserved-font-names + +2.11 So would it be better to not use RFNs at all if you want your font to be distributed by a webfont service? +No. Although the OFL does not require authors to use RFNs, the RFN mechanism is an important part of the OFL model and completely compatible with webfont services. If that webfont service modifies the fonts, then the best solution is to sign a separate agreement for the use of any RFNs. It is perfectly valid for an author to not declare any RFNs, but before they do so they need to fully understand the benefits they are giving up, and the overall negative effect of allowing many different versions bearing the same name to be widely distributed. As a result, we don't generally recommend it. + +2.12 What should an agreement for the use of RFNs say? Are there any examples? +There is no prescribed format for this agreement, as legal systems vary, and no recommended examples. Authors may wish to add specific clauses to further restrict use, require author review of Modified Versions, establish user support mechanisms or provide terms for ending the agreement. Such agreements are usually not public, and apply only to the main parties. However, it would be very beneficial for webfont services to clearly state when they have established such agreements, so that the public understands clearly that their service is operating appropriately. + +See the separate paper on 'Webfonts and Reserved Font Names' for in-depth discussion of issues related to the use of RFNs for webfonts. This is available at https://openfontlicense.org/webfonts-and-reserved-font-names + + +3 MODIFYING OFL-LICENSED FONTS + +3.1 Can I change the fonts? Are there any limitations to what things I can and cannot change? +You are allowed to change anything, as long as such changes do not violate the terms of the license. In other words, you are not allowed to remove the copyright statement(s) from the font, but you could put additional information into it that covers your contribution. See the placeholders in the OFL header template for recommendations on where to add your own statements. (Remember that, when authors have reserved names via the RFN mechanism, you need to change the internal names of the font to your own font name when making your modified version even if it is just a small change.) + +3.2 I have a font that needs a few extra glyphs - can I take them from an OFL licensed font and copy them into mine? +Yes, but if you distribute that font to others it must be under the OFL, and include the information mentioned in condition 2 of the license. + +3.3 Can I charge people for my additional work? In other words, if I add a bunch of special glyphs or OpenType/Graphite/AAT code, can I sell the enhanced font? +Not by itself. Derivative fonts must be released under the OFL and cannot be sold by themselves. It is permitted, however, to include them in a larger software package (such as text editors, office suites or operating systems), even if the larger package is sold. In that case, you are strongly encouraged, but not required, to also make that derived font easily and freely available outside of the larger package. + +3.4 Can I pay someone to enhance the fonts for my use and distribution? +Yes. This is a good way to fund the further development of the fonts. Keep in mind, however, that if the font is distributed to others it must be under the OFL. You won't be able to recover your investment by exclusively selling the font, but you will be making a valuable contribution to the community. Please remember how you have benefited from the contributions of others. + +3.5 I need to make substantial revisions to the font to make it work with my program. It will be a lot of work, and a big investment, and I want to be sure that it can only be distributed with my program. Can I restrict its use? +No. If you redistribute a Modified Version of the font it must be under the OFL. You may not restrict it in any way beyond what the OFL permits and requires. This is intended to ensure that all released improvements to the fonts become available to everyone. But you will likely get an edge over competitors by being the first to distribute a bundle with the enhancements. Again, please remember how you have benefited from the contributions of others. + +3.6 Do I have to make any derivative fonts (including extended source files, build scripts, documentation, etc.) publicly available? +No, but please consider sharing your improvements with others. You may find that you receive in return more than what you gave. + +3.7 If a trademark is claimed in the OFL font, does that trademark need to remain in modified fonts? +Yes. Any trademark notices must remain in any derivative fonts to respect trademark laws, but you may add any additional trademarks you claim, officially registered or not. For example if an OFL font called "Foo" contains a notice that "Foo is a trademark of Acme", then if you rename the font to "Bar" when creating a Modified Version, the new trademark notice could say "Foo is a trademark of Acme Inc. - Bar is a trademark of Roadrunner Technologies Ltd.". Trademarks work alongside the OFL and are not subject to the terms of the licensing agreement. The OFL does not grant any rights under trademark law. Bear in mind that trademark law varies from country to country and that there are no international trademark conventions as there are for copyright. You may need to significantly invest in registering and defending a trademark for it to remain valid in the countries you are interested in. This may be costly for an individual independent designer. + +3.8 If I commit changes to a font (or publish a branch in a DVCS) as part of a public open source software project, do I have to change the internal font names? +Only if there are declared RFNs. Making a public commit or publishing a public branch is effectively redistributing your modifications, so any change to the font will require that you do not use the RFNs. Even if there are no RFNs, it may be useful to change the name or add a suffix indicating that a particular version of the font is still in development and not released yet. This will clearly indicate to users and fellow designers that this particular font is not ready for release yet. See section 5 for more details. + + +4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL + +4.1 Can I use the SIL OFL for my own fonts? +Yes! We heartily encourage everyone to use the OFL to distribute their own original fonts. It is a carefully constructed license that allows great freedom along with enough artistic integrity protection for the work of the authors as well as clear rules for other contributors and those who redistribute the fonts. The licensing model is used successfully by various organisations, both for-profit and not-for-profit, to release fonts of varying levels of scope and complexity. + +4.2 What do I have to do to apply the OFL to my font? +If you want to release your fonts under the OFL, we recommend you do the following: + +4.2.1 Put your copyright and Reserved Font Names information at the beginning of the main OFL.txt file in place of the dedicated placeholders (marked with the <> characters). Include this file in your release package. + +4.2.2 Put your copyright and the OFL text with your chosen Reserved Font Name(s) into your font files (the copyright and license fields). A link to the OFL text on the OFL website is an acceptable (but not recommended) alternative. Also add this information to any other components (build scripts, glyph databases, documentation, test files, etc). Accurate metadata in your font files is beneficial to you as an increasing number of applications are exposing this information to the user. For example, clickable links can bring users back to your website and let them know about other work you have done or services you provide. Depending on the format of your fonts and sources, you can use template human-readable headers or machine-readable metadata. You should also double-check that there is no conflicting metadata in the font itself contradicting the license, such as the fstype bits in the os2 table or fields in the name table. + +4.2.3 Write an initial FONTLOG.txt for your font and include it in the release package (see Section 6 and Appendix A for details including a template). + +4.2.4 Include the relevant practical documentation on the license by adding the current OFL-FAQ.txt file in your package. + +4.2.5 If you wish you can use the OFL graphics (https://openfontlicense.org/promotion) on your website. + +4.3 Will you make my font OFL for me? +We won't do the work for you. We can, however, try to answer your questions. Unfortunately we do not have the resources to review and check your font packages for correct use of the OFL. We recommend you turn to designers, foundries or consulting companies with experience in doing open font design to provide this service to you. + +4.4 Will you distribute my OFL font for me? +No. The easiest way for users to always get the most current version of the font is for you to distribute it through your own website. You can also distribute your own font source files, or host them on services such as GitHub or GitLab. You can use various channels, including social media, to promote and get attention to your project. If you want someone else to distribute the font, consider services and sites that already distribute OFL fonts. Some of those are listed on the OFL website (https://openfontlicense.org/ofl-fonts). Contact them to find out how to submit fonts to them. We do not endorse any particular catalog or hosting service. It is your responsibility to determine if the service is right for you and if it treats authors with fairness. + +4.5 Why should I use the OFL for my fonts? +Here are a few of the many good reasons: + +- to meet needs for fonts that can be modified to support lesser-known languages +- to provide a legal and clear way for people to respect your work but still use it (and reduce piracy) +- to involve others in your font project +- to enable your fonts to be expanded with new weights and improved writing system/language support +- to allow more technical font developers to add features to your design (such as OpenType, Graphite or AAT support) +- to renew the life of an old font lying on your hard drive with no business model +- to allow your font to be included in Libre Software operating systems like Ubuntu +- to give your font world status and wide, unrestricted distribution +- to educate students about quality typeface and font design +- to expand your test base and get more useful feedback +- to extend your reach to new markets when users see your metadata and go to your website +- to get your font more easily into one of the webfont online services +- to attract attention for your commercial fonts +- to make money through webfont services +- to make money by bundling fonts with applications +- to make money adjusting and extending existing open fonts +- to get a better chance that foundations, NGOs, charities, or companies who commission fonts will pick you +- to be part of a sharing design and development community +- to give back and contribute to a growing body of font sources + +4.6 Can I cancel or undo the OFL license for a font that I've already released under it? +No, as an author, you cannot cancel or undo the permissions you have granted earlier by releasing a font under the OFL. But as an original author of that specific font you can always re-release it separately under another license of your own choosing. Of course, you cannot re-license a font for which you are not the author. If there are multiple authors they need to be all in official written agreement with the re-licensing. For practical reasons, a different name than an existing and publicly available open font should be chosen. + +4.7 Should I apply the OFL early in the design process, even before the font is complete, or wait until I want to release a completed version? +It is really up to you and the circumstances of your project. But in any case, we would recommend you place appropriate warning messages in your public repository or website to say something like "Please wait for a finished release before using and redistributing this font". We recommend you have a clear versioning scheme and repository tagging to make it as easy as possible to see if the font is a released version or still under development. You can also consider choosing a separate name (or suffix) for the development version, and only give the final name to a released version. + + +5 CHOOSING RESERVED FONT NAMES + +5.1 What are Reserved Font Names? +These are font names, or portions of font names, that the author has chosen to reserve for use only with the Original Version of the font, or for Modified Version(s) created by the original author. + +5.2 Why can't I use the Reserved Font Names in my derivative font names? I'd like people to know where the design came from. +The best way to acknowledge the source of the design is to thank the original authors and any other contributors in the files that are distributed with your revised font (although no acknowledgement is required). The FONTLOG is a natural place to do this. Reserved Font Names ensure that the only fonts that have the original names are the unmodified Original Versions. This allows designers to maintain artistic integrity while allowing collaboration to happen. It eliminates potential confusion and name conflicts. When choosing a name, be creative and avoid names that reuse almost all the same letters in the same order or sound like the original. It will help everyone if Original Versions and Modified Versions can easily be distinguished from one another and from other derivatives. Any substitution and matching mechanism is outside the scope of the license. + +5.3 What do you mean by "primary name as presented to the user"? Are you referring to the font menu name? +Yes, this applies to the font menu name and other mechanisms that specify a font in a document. It would be fine, however, to keep a text reference to the original fonts in the description field, in your modified source file or in documentation provided alongside your derivative as long as no one could be confused that your modified source is the original. But you cannot use the Reserved Font Names in any way to identify the font to the user (unless the Copyright Holder(s) allow(s) it through a separate agreement). Users who install derivatives (Modified Versions) on their systems should not see any of the original Reserved Font Names in their font menus, for example. Again, this is to ensure that users are not confused and do not mistake one font for another and so expect features only another derivative or the Original Version can actually offer. + +5.4 Am I not allowed to use any part of the Reserved Font Names? +You may not use individual words from the Reserved Font Names, but you would be allowed to use parts of words, as long as you do not use any word from the Reserved Font Names entirely. We do not recommend using parts of words because of potential confusion, but it is allowed. For example, if "Foobar" was a Reserved Font Name, you would be allowed to use "Foo" or "bar", although we would not recommend it. Such an unfortunate choice would confuse the users of your fonts as well as make it harder for other designers to contribute. + +5.5 So what should I, as an author, identify as Reserved Font Names? +Original authors are encouraged to name their fonts using clear, distinct names, and only declare the unique parts of the name as Reserved Font Names. For example, the author of a font called "Foobar Sans" would declare "Foobar" as a Reserved Font Name, but not "Sans", as that is a common typographical term, and may be a useful word to use in a derivative font name. Reserved Font Names should also be single words for simplicity and legibility. A font called "Flowing River" should have Reserved Font Names "Flowing" and "River", not "Flowing River". You also need to be very careful about reserving font names which are already linked to trademarks (whether registered or not) which you do not own. + +5.6 Do I, as an author, have to identify any Reserved Font Names? +No. RFNs are optional and not required, but we encourage you to use them. This is primarily to avoid confusion between your work and Modified Versions. As an author you can release a font under the OFL and not declare any Reserved Font Names. There may be situations where you find that using no RFNs and letting your font be changed and modified - including any kind of modification - without having to change the original name is desirable. However you need to be fully aware of the consequences. There will be no direct way for end-users and other designers to distinguish your Original Version from many Modified Versions that may be created. You have to trust whoever is making the changes and the optimizations to not introduce problematic changes. The RFNs you choose for your own creation have value to you as an author because they allow you to maintain artistic integrity and keep some control over the distribution channel to your end-users. For discussion of RFNs and webfonts see section 2. + +5.7 Are any names (such as the main font name) reserved by default? +No. That is a change to the license as of version 1.1. If you want any names to be Reserved Font Names, they must be specified after the copyright statement(s). + +5.8 Is there any situation in which I can use Reserved Font Names for a Modified Version? +The Copyright Holder(s) can give certain trusted parties the right to use any of the Reserved Font Names through separate written agreements. For example, even if "Foobar" is an RFN, you could write up an agreement to give company "XYZ" the right to distribute a modified version with a name that includes "Foobar". This allows for freedom without confusion. The existence of such an agreement should be made as clear as possible to downstream users and designers in the distribution package and the relevant documentation. They need to know if they are a party to the agreement or not and what they are practically allowed to do or not even if all the details of the agreement are not public. + +5.9 Do font rebuilds require a name change? Do I have to change the name of the font when my packaging workflow includes a full rebuild from source? +Yes, all rebuilds which change the font data and the smart code are Modified Versions and the requirements of the OFL apply: you need to respect what the Author(s) have chosen in terms of Reserved Font Names. However if a package (or installer) is simply a wrapper or a compressed structure around the final font - leaving them intact on the inside - then no name change is required. Please get in touch with the author(s) and copyright holder(s) to inquire about the presence of font sources beyond the final font file(s) and the recommended build path. That build path may very well be non-trivial and hard to reproduce accurately by the maintainer. If a full font build path is made available by the upstream author(s) please be aware that any regressions and changes you may introduce when doing a rebuild for packaging purposes is your own responsibility as a package maintainer since you are effectively creating a separate branch. You should make it very clear to your users that your rebuilt version is not the canonical one from upstream. + +5.10 Can I add other Reserved Font Names when making a derivative font? +Yes. List your additional Reserved Font Names after your additional copyright statement, as indicated with example placeholders at the top of the OFL.txt file. Be sure you do not remove any existing RFNs but only add your own. RFN statements should be placed next to the copyright statement of the relevant author as indicated in the OFL.txt template to make them visible to designers wishing to make their separate version. + + +6 ABOUT THE FONTLOG + +6.1 What is this FONTLOG thing exactly? +It has three purposes: 1) to provide basic information on the font to users and other designers and developers, 2) to document changes that have been made to the font or accompanying files, either by the original authors or others, and 3) to provide a place to acknowledge authors and other contributors. Please use it! + +6.2 Is the FONTLOG required? +It is not a requirement of the license, but we strongly recommend you have one. + +6.3 Am I required to update the FONTLOG when making Modified Versions? +No, but users, designers and other developers might get very frustrated with you if you don't. People need to know how derivative fonts differ from the original, and how to take advantage of the changes, or build on them. There are utilities that can help create and maintain a FONTLOG. + +6.4 What should the FONTLOG look like? +It is typically a separate text file (FONTLOG.txt), but can take other formats. It commonly includes these four sections: + +- brief header describing the FONTLOG itself and name of the font family +- Basic Font Information - description of the font family, purpose and breadth +- ChangeLog - chronological listing of changes +- Acknowledgements - list of authors and contributors with contact information + +It could also include other sections, such as: where to find documentation, how to make contributions, information on contributing organizations, source code details, and a short design guide. See Appendix A for an example FONTLOG. + + +7 MAKING CONTRIBUTIONS TO OFL PROJECTS + +7.1 Can I contribute work to OFL projects? +In many cases, yes. It is common for OFL fonts to be developed by a team of people who welcome contributions from the wider community. Contact the original authors for specific information on how to participate in their projects. + +7.2 Why should I contribute my changes back to the original authors? +It would benefit many people if you contributed back in response to what you've received. Your contributions and improvements to the fonts and other components could be a tremendous help and would encourage others to contribute as well and 'give back'. You will then benefit from other people's contributions as well. Sometimes maintaining your own separate version takes more effort than merging back with the original. Be aware that any contributions, however, must be either your own original creation or work that you own, and you may be asked to affirm that clearly when you contribute. + +7.3 I've made some very nice improvements to the font. Will you consider adopting them and putting them into future Original Versions? +Most authors would be very happy to receive such contributions. Keep in mind that it is unlikely that they would want to incorporate major changes that would require additional work on their end. Any contributions would likely need to be made for all the fonts in a family and match the overall design and style. Authors are encouraged to include a guide to the design with the fonts. It would also help to have contributions submitted as patches or clearly marked changes - the use of smart source revision control systems like subversion, mercurial, git or bzr is a good idea. Please follow the recommendations given by the author(s) in terms of preferred source formats and configuration parameters for sending contributions. If this is not indicated in a FONTLOG or other documentation of the font, consider asking them directly. Examples of useful contributions are bug fixes, additional glyphs, stylistic alternates (and the smart font code to access them) or improved hinting. Keep in mind that some kinds of changes (esp. hinting) may be technically difficult to integrate. + +7.4 How can I financially support the development of OFL fonts? +It is likely that most authors of OFL fonts would accept financial contributions - contact them for instructions on how to do this. Such contributions would support future development. You can also pay for others to enhance the fonts and contribute the results back to the original authors for inclusion in the Original Version. + + +8 ABOUT THE LICENSE ITSELF + +8.1 I see that this is version 1.1 of the license. Will there be later changes? +Version 1.1 is the first minor revision of the OFL. We are confident that version 1.1 will meet most needs, but are open to future improvements. Any revisions would be for future font releases, and previously existing licenses would remain in effect. No retroactive changes are possible, although the Copyright Holder(s) can re-release the font under a revised OFL. All versions will be available on our website: https://openfontlicense.org. + +8.2 Does this license restrict the rights of the Copyright Holder(s)? +No. The Copyright Holder(s) still retain(s) all the rights to their creation; they are only releasing a portion of it for use in a specific way. For example, the Copyright Holder(s) may choose to release a 'basic' version of their font under the OFL, but sell a restricted 'enhanced' version under a different license. They may also choose to release the same font under both the OFL and some other license. Only the Copyright Holder(s) can do this, and doing so does not change the terms of the OFL as it applies to that font. + +8.3 Is the OFL a contract or a license? +The OFL is a worldwide license based on international copyright agreements and conventions. It is not a contract and so does not require you to sign it to have legal validity. By using, modifying and redistributing components under the OFL you indicate that you accept the license. + +8.4 I really like the terms of the OFL, but want to change it a little. Am I allowed to take ideas and actual wording from the OFL and put them into my own custom license for distributing my fonts? +We strongly recommend against creating your very own unique open licensing model. Using a modified or derivative license will likely cut you off - along with the font(s) under that license - from the community of designers using the OFL, potentially expose you and your users to legal liabilities, and possibly put your work and rights at risk. The OFL went though a community and legal review process that took years of effort, and that review is only applicable to an unmodified OFL. The text of the OFL has been written by SIL (with review and consultation from the community) and is copyright (c) 2005-2023 SIL International. You may re-use the ideas and wording (in part, not in whole) in another non-proprietary license provided that you call your license by another unambiguous name, that you do not use the preamble, that you do not mention SIL and that you clearly present your license as different from the OFL so as not to cause confusion by being too similar to the original. If you feel the OFL does not meet your needs for an open license, please contact us. + +8.5 Can I quote from the OFL FAQ? +Yes, SIL gives permission to quote from the OFL FAQ (OFL-FAQ.txt), in whole or in part, provided that the quoted text is: + +- unmodified, +- used to help explain the intent of the OFL, rather than cause misunderstanding, and +- accompanied with the following attribution: "From the OFL FAQ (OFL-FAQ.txt), copyright (c) 2005-2023 SIL International. Used by permission. https://openfontlicense.org/OFL-FAQ". + +8.6 Can I translate the license and the FAQ into other languages? +SIL certainly recognises the need for people who are not familiar with English to be able to understand the OFL and its use. Making the license very clear and readable has been a key goal for the OFL, but we know that people understand their own language best. + +If you are an experienced translator, you are very welcome to translate the OFL and OFL-FAQ so that designers and users in your language community can understand the license better. But only the original English version of the license has legal value and has been approved by the community. Translations do not count as legal substitutes and should only serve as a way to explain the original license. SIL - as the author and steward of the license for the community at large - does not approve any translation of the OFL as legally valid because even small translation ambiguities could be abused and create problems. + +SIL gives permission to publish unofficial translations into other languages provided that they comply with the following guidelines: + +Put the following disclaimer in both English and the target language stating clearly that the translation is unofficial: "This is an unofficial translation of the SIL Open Font License into . It was not published by SIL International, and does not legally state the distribution terms for fonts that use the OFL. A release under the OFL is only valid when using the original English text. However, we recognize that this unofficial translation will help users and designers not familiar with English to better understand and use the OFL. We encourage designers who consider releasing their creation under the OFL to read the OFL-FAQ in their own language if it is available. Please go to https://openfontlicense.org for the official version of the license and the accompanying OFL-FAQ." + +Keep your unofficial translation current and update it at our request if needed, for example if there is any ambiguity which could lead to confusion. If you start such an unofficial translation effort of the OFL and OFL-FAQ please let us know. + +8.7 Does the OFL have an explicit expiration term? +No, the implicit intent of the OFL is that the permissions granted are perpetual and irrevocable. + +8.8 Why is there no automatic upgrade clause, a 'version 1.1 or later' like in the GPL? +This is by design, with the goals of establishing clear trust and of preventing any situation where the actual terms could be changed from underneath any user of the license. That would introduce uncertainty and confusion. Any perceived benefits of automatic incremental licensing under newer versions is strongly outweighed by the inherent risks and confusion it would cause. If a new version becomes officially available, Copyright Holder(s) can review the new version and decide whether to re-release their fonts under it. Derivative fonts could not be re-licensed unless the original versions were re-released first. + +8.9 How do you pronounce the name of the license? +The OFL is pronounced as three individual letters /ˈɑː.əf.əl/ or OH-EFF-ELL. + + +9 ABOUT SIL INTERNATIONAL + +9.1 Who is SIL International and what do they do? +SIL is a global, faith-based nonprofit that works with local communities around the world to develop language solutions that expand possibilities for a better life. SIL serves language communities worldwide, building their capacity for sustainable language development, by means of research, translation, training and materials development. SIL makes its services available to all without regard to religious belief, political ideology, gender, race, or ethnic background. SIL's members and volunteers share a Christian commitment. + +9.2 What does this have to do with font licensing? +The ability to read, write, type and publish in one's own language is one of the most critical needs for millions of people around the world. This requires fonts that are widely available and support lesser-known languages. SIL develops - and encourages others to develop - a complete stack of writing systems implementation components available under open licenses. This open stack includes input methods, smart fonts, smart rendering libraries and smart applications. There has been a need for a common open license that is specifically applicable to fonts and related software (a crucial component of this stack), so SIL developed the SIL Open Font License with the help of the Free/Libre and Open Source Software community. + +9.3 How can I contact SIL? +Our main website is: https://www.sil.org/ +Our main site about fonts and software is: https://software.sil.org/ +Our site about complex scripts is: https://scriptsource.org/ +Information about this license (and contact information) is at: https://openfontlicense.org + + +APPENDIX A - FONTLOG EXAMPLE + +Here is an example of the recommended format for a FONTLOG, although other formats are allowed. + +----- +FONTLOG for the GlobalFontFamily fonts + +This file provides detailed information on the GlobalFontFamily Font Software. This information should be distributed along with the GlobalFontFamily fonts and any derivative works. + +Basic Font Information + +GlobalFontFamily is a Unicode typeface family that supports all languages that use the Latin script and its variants, and could be expanded to support other scripts. + +NewWorldFontFamily is based on the GlobalFontFamily and also supports Greek, Hebrew, Cyrillic and Armenian. + +More specifically, this release supports the following Unicode ranges... +This release contains... +Documentation can be found at... +To contribute to the project... + +ChangeLog + +10 December 2010 (Fred Foobar) GlobalFontFamily-devel version 1.4 +- fix new build and testing system (bug #123456) + +1 August 2008 (Tom Parker) GlobalFontFamily version 1.2.1 +- Tweaked the smart font code (Branch merged with main) +- Provided improved build and debugging environment for smart behaviours + +7 February 2007 (Pat Johnson) NewWorldFontFamily Version 1.3 +- Added Greek and Cyrillic glyphs + +7 March 2006 (Fred Foobar) NewWorldFontFamily Version 1.2 +- Tweaked contextual behaviours + +1 Feb 2005 (Jane Doe) NewWorldFontFamily Version 1.1 +- Improved build script performance and verbosity +- Extended the smart code documentation +- Corrected minor typos in the documentation +- Fixed position of combining inverted breve below (U+032F) +- Added OpenType/Graphite smart code for Armenian +- Added Armenian glyphs (U+0531 -> U+0587) +- Released as "NewWorldFontFamily" + +1 Jan 2005 (Joe Smith) GlobalFontFamily Version 1.0 +- Initial release + +Acknowledgements + +If you make modifications be sure to add your name (N), email (E), web-address (if you have one) (W) and description (D). This list is in alphabetical order. + +N: Jane Doe +E: jane@university.edu +W: https://art.university.edu/projects/fonts +D: Contributor - Armenian glyphs and code + +N: Fred Foobar +E: fred@foobar.org +W: https://foobar.org +D: Contributor - misc Graphite fixes + +N: Pat Johnson +E: pat@fontstudio.org +W: https://pat.fontstudio.org +D: Designer - Greek & Cyrillic glyphs based on Roman design + +N: Tom Parker +E: tom@company.com +W: https://www.company.com/tom/projects/fonts +D: Engineer - original smart font code + +N: Joe Smith +E: joe@fontstudio.org +W: https://joe.fontstudio.org +D: Designer - original Roman glyphs + +Fontstudio.org is an not-for-profit design group whose purpose is... +Foobar.org is a distributed community of developers... +Company.com is a small business who likes to support community designers... +University.edu is a renowned educational institution with a strong design department... +----- + diff --git a/fonts/GentiumBook.OFL.txt b/fonts/GentiumBook.OFL.txt new file mode 100644 index 0000000..d6a0df8 --- /dev/null +++ b/fonts/GentiumBook.OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2003-2025 SIL Global (https://www.sil.org/), +with Reserved Font Names "Gentium" and "SIL". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/fonts/GentiumBook.README.txt b/fonts/GentiumBook.README.txt new file mode 100644 index 0000000..dcd17f4 --- /dev/null +++ b/fonts/GentiumBook.README.txt @@ -0,0 +1,19 @@ +README +Gentium +============ + +This project is intended to provide a free and open font family for all current languages and writing systems that use Latin, Cyrillic, and Greek scripts. It supports almost the complete range of Unicode characters for these scripts, including a comprehensive range of diacritics and a large set of symbols useful for linguistics and literacy work. Smart font routines automatically adjust the position of diacritics to support and optimize arbitrary base+diacritic combinations. This project uses a UFO-based design and production workflow, with all sources in open formats and a completely open-source build toolkit. + +To download the fonts visit the [Gentium downloads page](https://software.sil.org/gentium/download/) or the [Github releases page](https://github.com/silnrsi/font-gentium/releases). + +For more information on using and developing the fonts see the full project documentation. This is available in three forms: + +- *local HTML* - Download the release package and open the file `documentation/index.html` in a browser +- *local PDF* - Download the release or source package and open the file `documentation/pdf/index.pdf` +- *Web site* - Visit the [Gentium web site](https://software.sil.org/gentium) + +For a complete list of changes in this version see the [FONTLOG.txt](FONTLOG.txt). + +For copyright and licensing information - including any Reserved Font Names - see [OFL.txt](OFL.txt). + +For practical information about using, modifying and redistributing this font see [OFL-FAQ.txt](OFL-FAQ.txt). diff --git a/fonts/GentiumBook.fontmanifest.json b/fonts/GentiumBook.fontmanifest.json new file mode 100644 index 0000000..d3f6fa8 --- /dev/null +++ b/fonts/GentiumBook.fontmanifest.json @@ -0,0 +1,37 @@ +{ +"gentiumbook": { + "defaults": { + "ttf": "GentiumBook-Regular.ttf", + "woff": "GentiumBook-Regular.woff", + "woff2": "GentiumBook-Regular.woff2" + }, + "family": "Gentium Book", + "files": { + "GentiumBook-Bold.ttf": { "axes": { "ital": 0, "wght": 700.0 }, "packagepath": "GentiumBook-Bold.ttf" }, + "GentiumBook-Bold.woff": { "axes": { "ital": 0, "wght": 700.0 }, "packagepath": "web_book/GentiumBook-Bold.woff" }, + "GentiumBook-Bold.woff2": { "axes": { "ital": 0, "wght": 700.0 }, "packagepath": "web_book/GentiumBook-Bold.woff2" }, + "GentiumBook-BoldItalic.ttf": { "axes": { "ital": 1, "wght": 700.0 }, "packagepath": "GentiumBook-BoldItalic.ttf" }, + "GentiumBook-BoldItalic.woff": { "axes": { "ital": 1, "wght": 700.0 }, "packagepath": "web_book/GentiumBook-BoldItalic.woff" }, + "GentiumBook-BoldItalic.woff2": { "axes": { "ital": 1, "wght": 700.0 }, "packagepath": "web_book/GentiumBook-BoldItalic.woff2" }, + "GentiumBook-Italic.ttf": { "axes": { "ital": 1, "wght": 400.0 }, "packagepath": "GentiumBook-Italic.ttf" }, + "GentiumBook-Italic.woff": { "axes": { "ital": 1, "wght": 400.0 }, "packagepath": "web_book/GentiumBook-Italic.woff" }, + "GentiumBook-Italic.woff2": { "axes": { "ital": 1, "wght": 400.0 }, "packagepath": "web_book/GentiumBook-Italic.woff2" }, + "GentiumBook-Medium.ttf": { "altfamily": "Gentium Book Medium", "axes": { "ital": 0, "wght": 500.0 }, "packagepath": "GentiumBook-Medium.ttf" }, + "GentiumBook-Medium.woff": { "altfamily": "Gentium Book Medium", "axes": { "ital": 0, "wght": 500.0 }, "packagepath": "web_book/GentiumBook-Medium.woff" }, + "GentiumBook-Medium.woff2": { "altfamily": "Gentium Book Medium", "axes": { "ital": 0, "wght": 500.0 }, "packagepath": "web_book/GentiumBook-Medium.woff2" }, + "GentiumBook-MediumItalic.ttf": { "altfamily": "Gentium Book Medium", "axes": { "ital": 1, "wght": 500.0 }, "packagepath": "GentiumBook-MediumItalic.ttf" }, + "GentiumBook-MediumItalic.woff": { "altfamily": "Gentium Book Medium", "axes": { "ital": 1, "wght": 500.0 }, "packagepath": "web_book/GentiumBook-MediumItalic.woff" }, + "GentiumBook-MediumItalic.woff2": { "altfamily": "Gentium Book Medium", "axes": { "ital": 1, "wght": 500.0 }, "packagepath": "web_book/GentiumBook-MediumItalic.woff2" }, + "GentiumBook-Regular.ttf": { "axes": { "ital": 0, "wght": 400.0 }, "packagepath": "GentiumBook-Regular.ttf" }, + "GentiumBook-Regular.woff": { "axes": { "ital": 0, "wght": 400.0 }, "packagepath": "web_book/GentiumBook-Regular.woff" }, + "GentiumBook-Regular.woff2": { "axes": { "ital": 0, "wght": 400.0 }, "packagepath": "web_book/GentiumBook-Regular.woff2" }, + "GentiumBook-SemiBold.ttf": { "altfamily": "Gentium Book SemiBold", "axes": { "ital": 0, "wght": 600.0 }, "packagepath": "GentiumBook-SemiBold.ttf" }, + "GentiumBook-SemiBold.woff": { "altfamily": "Gentium Book SemiBold", "axes": { "ital": 0, "wght": 600.0 }, "packagepath": "web_book/GentiumBook-SemiBold.woff" }, + "GentiumBook-SemiBold.woff2": { "altfamily": "Gentium Book SemiBold", "axes": { "ital": 0, "wght": 600.0 }, "packagepath": "web_book/GentiumBook-SemiBold.woff2" }, + "GentiumBook-SemiBoldItalic.ttf": { "altfamily": "Gentium Book SemiBold", "axes": { "ital": 1, "wght": 600.0 }, "packagepath": "GentiumBook-SemiBoldItalic.ttf" }, + "GentiumBook-SemiBoldItalic.woff": { "altfamily": "Gentium Book SemiBold", "axes": { "ital": 1, "wght": 600.0 }, "packagepath": "web_book/GentiumBook-SemiBoldItalic.woff" }, + "GentiumBook-SemiBoldItalic.woff2": { "altfamily": "Gentium Book SemiBold", "axes": { "ital": 1, "wght": 600.0 }, "packagepath": "web_book/GentiumBook-SemiBoldItalic.woff2" } + }, + "version": "7.000" +} +} diff --git a/fonts/LibreBaskerville-Bold.ttf b/fonts/LibreBaskerville-Bold.ttf new file mode 100644 index 0000000..4fdfc70 Binary files /dev/null and b/fonts/LibreBaskerville-Bold.ttf differ diff --git a/fonts/LibreBaskerville-Italic.ttf b/fonts/LibreBaskerville-Italic.ttf new file mode 100644 index 0000000..c3098ab Binary files /dev/null and b/fonts/LibreBaskerville-Italic.ttf differ diff --git a/fonts/LibreBaskerville-Regular.ttf b/fonts/LibreBaskerville-Regular.ttf new file mode 100644 index 0000000..c1abc26 Binary files /dev/null and b/fonts/LibreBaskerville-Regular.ttf differ diff --git a/fonts/Literata-Italic-VariableFont_opsz,wght.ttf b/fonts/Literata-Italic-VariableFont_opsz,wght.ttf new file mode 100644 index 0000000..3a0644b Binary files /dev/null and b/fonts/Literata-Italic-VariableFont_opsz,wght.ttf differ diff --git a/fonts/Literata-VariableFont_opsz,wght.ttf b/fonts/Literata-VariableFont_opsz,wght.ttf new file mode 100644 index 0000000..1cd5bc5 Binary files /dev/null and b/fonts/Literata-VariableFont_opsz,wght.ttf differ diff --git a/fonts/NotoSansMath-Regular.ttf b/fonts/NotoSansMath-Regular.ttf new file mode 100644 index 0000000..9dcc261 Binary files /dev/null and b/fonts/NotoSansMath-Regular.ttf differ diff --git a/fonts/RobotoSerif-Black.ttf b/fonts/RobotoSerif-Black.ttf new file mode 100644 index 0000000..7e2c7f2 Binary files /dev/null and b/fonts/RobotoSerif-Black.ttf differ diff --git a/fonts/RobotoSerif-BlackItalic.ttf b/fonts/RobotoSerif-BlackItalic.ttf new file mode 100644 index 0000000..6174788 Binary files /dev/null and b/fonts/RobotoSerif-BlackItalic.ttf differ diff --git a/fonts/RobotoSerif-Bold.ttf b/fonts/RobotoSerif-Bold.ttf new file mode 100644 index 0000000..862bd51 Binary files /dev/null and b/fonts/RobotoSerif-Bold.ttf differ diff --git a/fonts/RobotoSerif-BoldItalic.ttf b/fonts/RobotoSerif-BoldItalic.ttf new file mode 100644 index 0000000..025df03 Binary files /dev/null and b/fonts/RobotoSerif-BoldItalic.ttf differ diff --git a/fonts/RobotoSerif-ExtraBold.ttf b/fonts/RobotoSerif-ExtraBold.ttf new file mode 100644 index 0000000..0247e89 Binary files /dev/null and b/fonts/RobotoSerif-ExtraBold.ttf differ diff --git a/fonts/RobotoSerif-ExtraBoldItalic.ttf b/fonts/RobotoSerif-ExtraBoldItalic.ttf new file mode 100644 index 0000000..3160f72 Binary files /dev/null and b/fonts/RobotoSerif-ExtraBoldItalic.ttf differ diff --git a/fonts/RobotoSerif-ExtraLight.ttf b/fonts/RobotoSerif-ExtraLight.ttf new file mode 100644 index 0000000..8c0035e Binary files /dev/null and b/fonts/RobotoSerif-ExtraLight.ttf differ diff --git a/fonts/RobotoSerif-ExtraLightItalic.ttf b/fonts/RobotoSerif-ExtraLightItalic.ttf new file mode 100644 index 0000000..3e6e186 Binary files /dev/null and b/fonts/RobotoSerif-ExtraLightItalic.ttf differ diff --git a/fonts/RobotoSerif-Italic-VariableFont_GRAD,opsz,wdth,wght.ttf b/fonts/RobotoSerif-Italic-VariableFont_GRAD,opsz,wdth,wght.ttf new file mode 100644 index 0000000..86d11b7 Binary files /dev/null and b/fonts/RobotoSerif-Italic-VariableFont_GRAD,opsz,wdth,wght.ttf differ diff --git a/fonts/RobotoSerif-Italic.ttf b/fonts/RobotoSerif-Italic.ttf new file mode 100644 index 0000000..f5c68c7 Binary files /dev/null and b/fonts/RobotoSerif-Italic.ttf differ diff --git a/fonts/RobotoSerif-Light.ttf b/fonts/RobotoSerif-Light.ttf new file mode 100644 index 0000000..0d29231 Binary files /dev/null and b/fonts/RobotoSerif-Light.ttf differ diff --git a/fonts/RobotoSerif-LightItalic.ttf b/fonts/RobotoSerif-LightItalic.ttf new file mode 100644 index 0000000..beb643a Binary files /dev/null and b/fonts/RobotoSerif-LightItalic.ttf differ diff --git a/fonts/RobotoSerif-Medium.ttf b/fonts/RobotoSerif-Medium.ttf new file mode 100644 index 0000000..119187c Binary files /dev/null and b/fonts/RobotoSerif-Medium.ttf differ diff --git a/fonts/RobotoSerif-MediumItalic.ttf b/fonts/RobotoSerif-MediumItalic.ttf new file mode 100644 index 0000000..96066b4 Binary files /dev/null and b/fonts/RobotoSerif-MediumItalic.ttf differ diff --git a/fonts/RobotoSerif-Regular.ttf b/fonts/RobotoSerif-Regular.ttf new file mode 100644 index 0000000..509e4fd Binary files /dev/null and b/fonts/RobotoSerif-Regular.ttf differ diff --git a/fonts/RobotoSerif-SemiBold.ttf b/fonts/RobotoSerif-SemiBold.ttf new file mode 100644 index 0000000..eee7007 Binary files /dev/null and b/fonts/RobotoSerif-SemiBold.ttf differ diff --git a/fonts/RobotoSerif-SemiBoldItalic.ttf b/fonts/RobotoSerif-SemiBoldItalic.ttf new file mode 100644 index 0000000..3738c7d Binary files /dev/null and b/fonts/RobotoSerif-SemiBoldItalic.ttf differ diff --git a/fonts/RobotoSerif-Thin.ttf b/fonts/RobotoSerif-Thin.ttf new file mode 100644 index 0000000..7048e9d Binary files /dev/null and b/fonts/RobotoSerif-Thin.ttf differ diff --git a/fonts/RobotoSerif-ThinItalic.ttf b/fonts/RobotoSerif-ThinItalic.ttf new file mode 100644 index 0000000..26eafbe Binary files /dev/null and b/fonts/RobotoSerif-ThinItalic.ttf differ diff --git a/fonts/RobotoSerif-VariableFont_GRAD,opsz,wdth,wght.ttf b/fonts/RobotoSerif-VariableFont_GRAD,opsz,wdth,wght.ttf new file mode 100644 index 0000000..2ae12da Binary files /dev/null and b/fonts/RobotoSerif-VariableFont_GRAD,opsz,wdth,wght.ttf differ diff --git a/fonts/RobotoSerif_120pt-Black.ttf b/fonts/RobotoSerif_120pt-Black.ttf new file mode 100644 index 0000000..94e4e56 Binary files /dev/null and b/fonts/RobotoSerif_120pt-Black.ttf differ diff --git a/fonts/RobotoSerif_120pt-BlackItalic.ttf b/fonts/RobotoSerif_120pt-BlackItalic.ttf new file mode 100644 index 0000000..2277127 Binary files /dev/null and b/fonts/RobotoSerif_120pt-BlackItalic.ttf differ diff --git a/fonts/RobotoSerif_120pt-Bold.ttf b/fonts/RobotoSerif_120pt-Bold.ttf new file mode 100644 index 0000000..a5eba38 Binary files /dev/null and b/fonts/RobotoSerif_120pt-Bold.ttf differ diff --git a/fonts/RobotoSerif_120pt-BoldItalic.ttf b/fonts/RobotoSerif_120pt-BoldItalic.ttf new file mode 100644 index 0000000..591dd26 Binary files /dev/null and b/fonts/RobotoSerif_120pt-BoldItalic.ttf differ diff --git a/fonts/RobotoSerif_120pt-ExtraBold.ttf b/fonts/RobotoSerif_120pt-ExtraBold.ttf new file mode 100644 index 0000000..645f2f5 Binary files /dev/null and b/fonts/RobotoSerif_120pt-ExtraBold.ttf differ diff --git a/fonts/RobotoSerif_120pt-ExtraBoldItalic.ttf b/fonts/RobotoSerif_120pt-ExtraBoldItalic.ttf new file mode 100644 index 0000000..9ec3f79 Binary files /dev/null and b/fonts/RobotoSerif_120pt-ExtraBoldItalic.ttf differ diff --git a/fonts/RobotoSerif_120pt-ExtraLight.ttf b/fonts/RobotoSerif_120pt-ExtraLight.ttf new file mode 100644 index 0000000..95ae96a Binary files /dev/null and b/fonts/RobotoSerif_120pt-ExtraLight.ttf differ diff --git a/fonts/RobotoSerif_120pt-ExtraLightItalic.ttf b/fonts/RobotoSerif_120pt-ExtraLightItalic.ttf new file mode 100644 index 0000000..f2cceae Binary files /dev/null and b/fonts/RobotoSerif_120pt-ExtraLightItalic.ttf differ diff --git a/fonts/RobotoSerif_120pt-Italic.ttf b/fonts/RobotoSerif_120pt-Italic.ttf new file mode 100644 index 0000000..bbc64c1 Binary files /dev/null and b/fonts/RobotoSerif_120pt-Italic.ttf differ diff --git a/fonts/RobotoSerif_120pt-Light.ttf b/fonts/RobotoSerif_120pt-Light.ttf new file mode 100644 index 0000000..55970eb Binary files /dev/null and b/fonts/RobotoSerif_120pt-Light.ttf differ diff --git a/fonts/RobotoSerif_120pt-LightItalic.ttf b/fonts/RobotoSerif_120pt-LightItalic.ttf new file mode 100644 index 0000000..f2e8663 Binary files /dev/null and b/fonts/RobotoSerif_120pt-LightItalic.ttf differ diff --git a/fonts/RobotoSerif_120pt-Medium.ttf b/fonts/RobotoSerif_120pt-Medium.ttf new file mode 100644 index 0000000..6076b47 Binary files /dev/null and b/fonts/RobotoSerif_120pt-Medium.ttf differ diff --git a/fonts/RobotoSerif_120pt-MediumItalic.ttf b/fonts/RobotoSerif_120pt-MediumItalic.ttf new file mode 100644 index 0000000..16eb13d Binary files /dev/null and b/fonts/RobotoSerif_120pt-MediumItalic.ttf differ diff --git a/fonts/RobotoSerif_120pt-Regular.ttf b/fonts/RobotoSerif_120pt-Regular.ttf new file mode 100644 index 0000000..d5dbfa6 Binary files /dev/null and b/fonts/RobotoSerif_120pt-Regular.ttf differ diff --git a/fonts/RobotoSerif_120pt-SemiBold.ttf b/fonts/RobotoSerif_120pt-SemiBold.ttf new file mode 100644 index 0000000..e7618c0 Binary files /dev/null and b/fonts/RobotoSerif_120pt-SemiBold.ttf differ diff --git a/fonts/RobotoSerif_120pt-SemiBoldItalic.ttf b/fonts/RobotoSerif_120pt-SemiBoldItalic.ttf new file mode 100644 index 0000000..adb8c37 Binary files /dev/null and b/fonts/RobotoSerif_120pt-SemiBoldItalic.ttf differ diff --git a/fonts/RobotoSerif_120pt-Thin.ttf b/fonts/RobotoSerif_120pt-Thin.ttf new file mode 100644 index 0000000..1757a7c Binary files /dev/null and b/fonts/RobotoSerif_120pt-Thin.ttf differ diff --git a/fonts/RobotoSerif_120pt-ThinItalic.ttf b/fonts/RobotoSerif_120pt-ThinItalic.ttf new file mode 100644 index 0000000..e9e0b8d Binary files /dev/null and b/fonts/RobotoSerif_120pt-ThinItalic.ttf differ diff --git a/fonts/RobotoSerif_28pt-Black.ttf b/fonts/RobotoSerif_28pt-Black.ttf new file mode 100644 index 0000000..62bf6d9 Binary files /dev/null and b/fonts/RobotoSerif_28pt-Black.ttf differ diff --git a/fonts/RobotoSerif_28pt-BlackItalic.ttf b/fonts/RobotoSerif_28pt-BlackItalic.ttf new file mode 100644 index 0000000..f50d9a5 Binary files /dev/null and b/fonts/RobotoSerif_28pt-BlackItalic.ttf differ diff --git a/fonts/RobotoSerif_28pt-Bold.ttf b/fonts/RobotoSerif_28pt-Bold.ttf new file mode 100644 index 0000000..75c1de6 Binary files /dev/null and b/fonts/RobotoSerif_28pt-Bold.ttf differ diff --git a/fonts/RobotoSerif_28pt-BoldItalic.ttf b/fonts/RobotoSerif_28pt-BoldItalic.ttf new file mode 100644 index 0000000..22ae859 Binary files /dev/null and b/fonts/RobotoSerif_28pt-BoldItalic.ttf differ diff --git a/fonts/RobotoSerif_28pt-ExtraBold.ttf b/fonts/RobotoSerif_28pt-ExtraBold.ttf new file mode 100644 index 0000000..fb855ad Binary files /dev/null and b/fonts/RobotoSerif_28pt-ExtraBold.ttf differ diff --git a/fonts/RobotoSerif_28pt-ExtraBoldItalic.ttf b/fonts/RobotoSerif_28pt-ExtraBoldItalic.ttf new file mode 100644 index 0000000..540a2bd Binary files /dev/null and b/fonts/RobotoSerif_28pt-ExtraBoldItalic.ttf differ diff --git a/fonts/RobotoSerif_28pt-ExtraLight.ttf b/fonts/RobotoSerif_28pt-ExtraLight.ttf new file mode 100644 index 0000000..48aef56 Binary files /dev/null and b/fonts/RobotoSerif_28pt-ExtraLight.ttf differ diff --git a/fonts/RobotoSerif_28pt-ExtraLightItalic.ttf b/fonts/RobotoSerif_28pt-ExtraLightItalic.ttf new file mode 100644 index 0000000..c04bf96 Binary files /dev/null and b/fonts/RobotoSerif_28pt-ExtraLightItalic.ttf differ diff --git a/fonts/RobotoSerif_28pt-Italic.ttf b/fonts/RobotoSerif_28pt-Italic.ttf new file mode 100644 index 0000000..3d3f79f Binary files /dev/null and b/fonts/RobotoSerif_28pt-Italic.ttf differ diff --git a/fonts/RobotoSerif_28pt-Light.ttf b/fonts/RobotoSerif_28pt-Light.ttf new file mode 100644 index 0000000..221952f Binary files /dev/null and b/fonts/RobotoSerif_28pt-Light.ttf differ diff --git a/fonts/RobotoSerif_28pt-LightItalic.ttf b/fonts/RobotoSerif_28pt-LightItalic.ttf new file mode 100644 index 0000000..8e99b5d Binary files /dev/null and b/fonts/RobotoSerif_28pt-LightItalic.ttf differ diff --git a/fonts/RobotoSerif_28pt-Medium.ttf b/fonts/RobotoSerif_28pt-Medium.ttf new file mode 100644 index 0000000..b6d182b Binary files /dev/null and b/fonts/RobotoSerif_28pt-Medium.ttf differ diff --git a/fonts/RobotoSerif_28pt-MediumItalic.ttf b/fonts/RobotoSerif_28pt-MediumItalic.ttf new file mode 100644 index 0000000..7e0c61a Binary files /dev/null and b/fonts/RobotoSerif_28pt-MediumItalic.ttf differ diff --git a/fonts/RobotoSerif_28pt-Regular.ttf b/fonts/RobotoSerif_28pt-Regular.ttf new file mode 100644 index 0000000..905a2ad Binary files /dev/null and b/fonts/RobotoSerif_28pt-Regular.ttf differ diff --git a/fonts/RobotoSerif_28pt-SemiBold.ttf b/fonts/RobotoSerif_28pt-SemiBold.ttf new file mode 100644 index 0000000..1fbcc00 Binary files /dev/null and b/fonts/RobotoSerif_28pt-SemiBold.ttf differ diff --git a/fonts/RobotoSerif_28pt-SemiBoldItalic.ttf b/fonts/RobotoSerif_28pt-SemiBoldItalic.ttf new file mode 100644 index 0000000..8a7bde9 Binary files /dev/null and b/fonts/RobotoSerif_28pt-SemiBoldItalic.ttf differ diff --git a/fonts/RobotoSerif_28pt-Thin.ttf b/fonts/RobotoSerif_28pt-Thin.ttf new file mode 100644 index 0000000..417f1da Binary files /dev/null and b/fonts/RobotoSerif_28pt-Thin.ttf differ diff --git a/fonts/RobotoSerif_28pt-ThinItalic.ttf b/fonts/RobotoSerif_28pt-ThinItalic.ttf new file mode 100644 index 0000000..af40da2 Binary files /dev/null and b/fonts/RobotoSerif_28pt-ThinItalic.ttf differ diff --git a/fonts/RobotoSerif_36pt-Black.ttf b/fonts/RobotoSerif_36pt-Black.ttf new file mode 100644 index 0000000..9ec4c0a Binary files /dev/null and b/fonts/RobotoSerif_36pt-Black.ttf differ diff --git a/fonts/RobotoSerif_36pt-BlackItalic.ttf b/fonts/RobotoSerif_36pt-BlackItalic.ttf new file mode 100644 index 0000000..28e386f Binary files /dev/null and b/fonts/RobotoSerif_36pt-BlackItalic.ttf differ diff --git a/fonts/RobotoSerif_36pt-Bold.ttf b/fonts/RobotoSerif_36pt-Bold.ttf new file mode 100644 index 0000000..3f2ed3b Binary files /dev/null and b/fonts/RobotoSerif_36pt-Bold.ttf differ diff --git a/fonts/RobotoSerif_36pt-BoldItalic.ttf b/fonts/RobotoSerif_36pt-BoldItalic.ttf new file mode 100644 index 0000000..2026e1f Binary files /dev/null and b/fonts/RobotoSerif_36pt-BoldItalic.ttf differ diff --git a/fonts/RobotoSerif_36pt-ExtraBold.ttf b/fonts/RobotoSerif_36pt-ExtraBold.ttf new file mode 100644 index 0000000..fadef13 Binary files /dev/null and b/fonts/RobotoSerif_36pt-ExtraBold.ttf differ diff --git a/fonts/RobotoSerif_36pt-ExtraBoldItalic.ttf b/fonts/RobotoSerif_36pt-ExtraBoldItalic.ttf new file mode 100644 index 0000000..d8cd850 Binary files /dev/null and b/fonts/RobotoSerif_36pt-ExtraBoldItalic.ttf differ diff --git a/fonts/RobotoSerif_36pt-ExtraLight.ttf b/fonts/RobotoSerif_36pt-ExtraLight.ttf new file mode 100644 index 0000000..d147dee Binary files /dev/null and b/fonts/RobotoSerif_36pt-ExtraLight.ttf differ diff --git a/fonts/RobotoSerif_36pt-ExtraLightItalic.ttf b/fonts/RobotoSerif_36pt-ExtraLightItalic.ttf new file mode 100644 index 0000000..0e64aac Binary files /dev/null and b/fonts/RobotoSerif_36pt-ExtraLightItalic.ttf differ diff --git a/fonts/RobotoSerif_36pt-Italic.ttf b/fonts/RobotoSerif_36pt-Italic.ttf new file mode 100644 index 0000000..523a6c1 Binary files /dev/null and b/fonts/RobotoSerif_36pt-Italic.ttf differ diff --git a/fonts/RobotoSerif_36pt-Light.ttf b/fonts/RobotoSerif_36pt-Light.ttf new file mode 100644 index 0000000..f6527b2 Binary files /dev/null and b/fonts/RobotoSerif_36pt-Light.ttf differ diff --git a/fonts/RobotoSerif_36pt-LightItalic.ttf b/fonts/RobotoSerif_36pt-LightItalic.ttf new file mode 100644 index 0000000..f09d28f Binary files /dev/null and b/fonts/RobotoSerif_36pt-LightItalic.ttf differ diff --git a/fonts/RobotoSerif_36pt-Medium.ttf b/fonts/RobotoSerif_36pt-Medium.ttf new file mode 100644 index 0000000..f24c2c0 Binary files /dev/null and b/fonts/RobotoSerif_36pt-Medium.ttf differ diff --git a/fonts/RobotoSerif_36pt-MediumItalic.ttf b/fonts/RobotoSerif_36pt-MediumItalic.ttf new file mode 100644 index 0000000..882e6e6 Binary files /dev/null and b/fonts/RobotoSerif_36pt-MediumItalic.ttf differ diff --git a/fonts/RobotoSerif_36pt-Regular.ttf b/fonts/RobotoSerif_36pt-Regular.ttf new file mode 100644 index 0000000..c5fb364 Binary files /dev/null and b/fonts/RobotoSerif_36pt-Regular.ttf differ diff --git a/fonts/RobotoSerif_36pt-SemiBold.ttf b/fonts/RobotoSerif_36pt-SemiBold.ttf new file mode 100644 index 0000000..28891a9 Binary files /dev/null and b/fonts/RobotoSerif_36pt-SemiBold.ttf differ diff --git a/fonts/RobotoSerif_36pt-SemiBoldItalic.ttf b/fonts/RobotoSerif_36pt-SemiBoldItalic.ttf new file mode 100644 index 0000000..e29379e Binary files /dev/null and b/fonts/RobotoSerif_36pt-SemiBoldItalic.ttf differ diff --git a/fonts/RobotoSerif_36pt-Thin.ttf b/fonts/RobotoSerif_36pt-Thin.ttf new file mode 100644 index 0000000..c5a9295 Binary files /dev/null and b/fonts/RobotoSerif_36pt-Thin.ttf differ diff --git a/fonts/RobotoSerif_36pt-ThinItalic.ttf b/fonts/RobotoSerif_36pt-ThinItalic.ttf new file mode 100644 index 0000000..7febe47 Binary files /dev/null and b/fonts/RobotoSerif_36pt-ThinItalic.ttf differ diff --git a/fonts/RobotoSerif_72pt-Black.ttf b/fonts/RobotoSerif_72pt-Black.ttf new file mode 100644 index 0000000..a3bf899 Binary files /dev/null and b/fonts/RobotoSerif_72pt-Black.ttf differ diff --git a/fonts/RobotoSerif_72pt-BlackItalic.ttf b/fonts/RobotoSerif_72pt-BlackItalic.ttf new file mode 100644 index 0000000..97549eb Binary files /dev/null and b/fonts/RobotoSerif_72pt-BlackItalic.ttf differ diff --git a/fonts/RobotoSerif_72pt-Bold.ttf b/fonts/RobotoSerif_72pt-Bold.ttf new file mode 100644 index 0000000..2bbd638 Binary files /dev/null and b/fonts/RobotoSerif_72pt-Bold.ttf differ diff --git a/fonts/RobotoSerif_72pt-BoldItalic.ttf b/fonts/RobotoSerif_72pt-BoldItalic.ttf new file mode 100644 index 0000000..57520dd Binary files /dev/null and b/fonts/RobotoSerif_72pt-BoldItalic.ttf differ diff --git a/fonts/RobotoSerif_72pt-ExtraBold.ttf b/fonts/RobotoSerif_72pt-ExtraBold.ttf new file mode 100644 index 0000000..fe00fd1 Binary files /dev/null and b/fonts/RobotoSerif_72pt-ExtraBold.ttf differ diff --git a/fonts/RobotoSerif_72pt-ExtraBoldItalic.ttf b/fonts/RobotoSerif_72pt-ExtraBoldItalic.ttf new file mode 100644 index 0000000..da8b88b Binary files /dev/null and b/fonts/RobotoSerif_72pt-ExtraBoldItalic.ttf differ diff --git a/fonts/RobotoSerif_72pt-ExtraLight.ttf b/fonts/RobotoSerif_72pt-ExtraLight.ttf new file mode 100644 index 0000000..9e954ad Binary files /dev/null and b/fonts/RobotoSerif_72pt-ExtraLight.ttf differ diff --git a/fonts/RobotoSerif_72pt-ExtraLightItalic.ttf b/fonts/RobotoSerif_72pt-ExtraLightItalic.ttf new file mode 100644 index 0000000..e7bcf4c Binary files /dev/null and b/fonts/RobotoSerif_72pt-ExtraLightItalic.ttf differ diff --git a/fonts/RobotoSerif_72pt-Italic.ttf b/fonts/RobotoSerif_72pt-Italic.ttf new file mode 100644 index 0000000..dcbdf08 Binary files /dev/null and b/fonts/RobotoSerif_72pt-Italic.ttf differ diff --git a/fonts/RobotoSerif_72pt-Light.ttf b/fonts/RobotoSerif_72pt-Light.ttf new file mode 100644 index 0000000..df61672 Binary files /dev/null and b/fonts/RobotoSerif_72pt-Light.ttf differ diff --git a/fonts/RobotoSerif_72pt-LightItalic.ttf b/fonts/RobotoSerif_72pt-LightItalic.ttf new file mode 100644 index 0000000..9948ece Binary files /dev/null and b/fonts/RobotoSerif_72pt-LightItalic.ttf differ diff --git a/fonts/RobotoSerif_72pt-Medium.ttf b/fonts/RobotoSerif_72pt-Medium.ttf new file mode 100644 index 0000000..8f5489c Binary files /dev/null and b/fonts/RobotoSerif_72pt-Medium.ttf differ diff --git a/fonts/RobotoSerif_72pt-MediumItalic.ttf b/fonts/RobotoSerif_72pt-MediumItalic.ttf new file mode 100644 index 0000000..66ae5f9 Binary files /dev/null and b/fonts/RobotoSerif_72pt-MediumItalic.ttf differ diff --git a/fonts/RobotoSerif_72pt-Regular.ttf b/fonts/RobotoSerif_72pt-Regular.ttf new file mode 100644 index 0000000..297158f Binary files /dev/null and b/fonts/RobotoSerif_72pt-Regular.ttf differ diff --git a/fonts/RobotoSerif_72pt-SemiBold.ttf b/fonts/RobotoSerif_72pt-SemiBold.ttf new file mode 100644 index 0000000..3654926 Binary files /dev/null and b/fonts/RobotoSerif_72pt-SemiBold.ttf differ diff --git a/fonts/RobotoSerif_72pt-SemiBoldItalic.ttf b/fonts/RobotoSerif_72pt-SemiBoldItalic.ttf new file mode 100644 index 0000000..27bb876 Binary files /dev/null and b/fonts/RobotoSerif_72pt-SemiBoldItalic.ttf differ diff --git a/fonts/RobotoSerif_72pt-Thin.ttf b/fonts/RobotoSerif_72pt-Thin.ttf new file mode 100644 index 0000000..6fb7cd1 Binary files /dev/null and b/fonts/RobotoSerif_72pt-Thin.ttf differ diff --git a/fonts/RobotoSerif_72pt-ThinItalic.ttf b/fonts/RobotoSerif_72pt-ThinItalic.ttf new file mode 100644 index 0000000..23f4b6d Binary files /dev/null and b/fonts/RobotoSerif_72pt-ThinItalic.ttf differ diff --git a/fonts/STIXTwoMath-Regular.ttf b/fonts/STIXTwoMath-Regular.ttf new file mode 100755 index 0000000..ff3f865 Binary files /dev/null and b/fonts/STIXTwoMath-Regular.ttf differ diff --git a/fonts/STIXTwoText-Italic-VariableFont_wght.ttf b/fonts/STIXTwoText-Italic-VariableFont_wght.ttf new file mode 100644 index 0000000..2571efc Binary files /dev/null and b/fonts/STIXTwoText-Italic-VariableFont_wght.ttf differ diff --git a/fonts/STIXTwoText-VariableFont_wght.ttf b/fonts/STIXTwoText-VariableFont_wght.ttf new file mode 100644 index 0000000..088918f Binary files /dev/null and b/fonts/STIXTwoText-VariableFont_wght.ttf differ diff --git a/fonts/Signika-Bold.ttf b/fonts/Signika-Bold.ttf new file mode 100644 index 0000000..d6dc1b9 Binary files /dev/null and b/fonts/Signika-Bold.ttf differ diff --git a/fonts/Signika-Light.ttf b/fonts/Signika-Light.ttf new file mode 100644 index 0000000..6b976cc Binary files /dev/null and b/fonts/Signika-Light.ttf differ diff --git a/fonts/Signika-Medium.ttf b/fonts/Signika-Medium.ttf new file mode 100644 index 0000000..30f31d0 Binary files /dev/null and b/fonts/Signika-Medium.ttf differ diff --git a/fonts/Signika-Regular.ttf b/fonts/Signika-Regular.ttf new file mode 100644 index 0000000..5a27976 Binary files /dev/null and b/fonts/Signika-Regular.ttf differ diff --git a/fonts/Signika-SemiBold.ttf b/fonts/Signika-SemiBold.ttf new file mode 100644 index 0000000..93ed774 Binary files /dev/null and b/fonts/Signika-SemiBold.ttf differ diff --git a/fonts/Signika-VariableFont_GRAD,wght.ttf b/fonts/Signika-VariableFont_GRAD,wght.ttf new file mode 100644 index 0000000..979d57f Binary files /dev/null and b/fonts/Signika-VariableFont_GRAD,wght.ttf differ diff --git a/fonts/SignikaNegative-Bold.ttf b/fonts/SignikaNegative-Bold.ttf new file mode 100644 index 0000000..56c7af3 Binary files /dev/null and b/fonts/SignikaNegative-Bold.ttf differ diff --git a/fonts/SignikaNegative-Light.ttf b/fonts/SignikaNegative-Light.ttf new file mode 100644 index 0000000..975e1e9 Binary files /dev/null and b/fonts/SignikaNegative-Light.ttf differ diff --git a/fonts/SignikaNegative-Medium.ttf b/fonts/SignikaNegative-Medium.ttf new file mode 100644 index 0000000..37df976 Binary files /dev/null and b/fonts/SignikaNegative-Medium.ttf differ diff --git a/fonts/SignikaNegative-Regular.ttf b/fonts/SignikaNegative-Regular.ttf new file mode 100644 index 0000000..5eb4a5d Binary files /dev/null and b/fonts/SignikaNegative-Regular.ttf differ diff --git a/fonts/SignikaNegative-SemiBold.ttf b/fonts/SignikaNegative-SemiBold.ttf new file mode 100644 index 0000000..469a333 Binary files /dev/null and b/fonts/SignikaNegative-SemiBold.ttf differ diff --git a/fonts/SignikaNegative-VariableFont_wght.ttf b/fonts/SignikaNegative-VariableFont_wght.ttf new file mode 100644 index 0000000..28c055c Binary files /dev/null and b/fonts/SignikaNegative-VariableFont_wght.ttf differ diff --git a/fonts/Yrsa-Bold.ttf b/fonts/Yrsa-Bold.ttf new file mode 100644 index 0000000..37738b2 Binary files /dev/null and b/fonts/Yrsa-Bold.ttf differ diff --git a/fonts/Yrsa-BoldItalic.ttf b/fonts/Yrsa-BoldItalic.ttf new file mode 100644 index 0000000..a0f5cd1 Binary files /dev/null and b/fonts/Yrsa-BoldItalic.ttf differ diff --git a/fonts/Yrsa-Italic-VariableFont_wght.ttf b/fonts/Yrsa-Italic-VariableFont_wght.ttf new file mode 100644 index 0000000..3714715 Binary files /dev/null and b/fonts/Yrsa-Italic-VariableFont_wght.ttf differ diff --git a/fonts/Yrsa-Italic.ttf b/fonts/Yrsa-Italic.ttf new file mode 100644 index 0000000..b5a65d4 Binary files /dev/null and b/fonts/Yrsa-Italic.ttf differ diff --git a/fonts/Yrsa-Light.ttf b/fonts/Yrsa-Light.ttf new file mode 100644 index 0000000..1bb2d95 Binary files /dev/null and b/fonts/Yrsa-Light.ttf differ diff --git a/fonts/Yrsa-LightItalic.ttf b/fonts/Yrsa-LightItalic.ttf new file mode 100644 index 0000000..41a9df5 Binary files /dev/null and b/fonts/Yrsa-LightItalic.ttf differ diff --git a/fonts/Yrsa-Medium.ttf b/fonts/Yrsa-Medium.ttf new file mode 100644 index 0000000..e4e8fe3 Binary files /dev/null and b/fonts/Yrsa-Medium.ttf differ diff --git a/fonts/Yrsa-MediumItalic.ttf b/fonts/Yrsa-MediumItalic.ttf new file mode 100644 index 0000000..cd86163 Binary files /dev/null and b/fonts/Yrsa-MediumItalic.ttf differ diff --git a/fonts/Yrsa-OFL.txt b/fonts/Yrsa-OFL.txt new file mode 100644 index 0000000..6fbe5b3 --- /dev/null +++ b/fonts/Yrsa-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2015 The Yrsa-Rasa Project Authors (https://github.com/rosettatype/yrsa-rasa/) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/fonts/Yrsa-README.txt b/fonts/Yrsa-README.txt new file mode 100644 index 0000000..e96a8c4 --- /dev/null +++ b/fonts/Yrsa-README.txt @@ -0,0 +1,73 @@ +Yrsa Variable Font +================== + +This download contains Yrsa as both variable fonts and static fonts. + +Yrsa is a variable font with this axis: + wght + +This means all the styles are contained in these files: + Yrsa-VariableFont_wght.ttf + Yrsa-Italic-VariableFont_wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Yrsa: + static/Yrsa-Light.ttf + static/Yrsa-Regular.ttf + static/Yrsa-Medium.ttf + static/Yrsa-SemiBold.ttf + static/Yrsa-Bold.ttf + static/Yrsa-LightItalic.ttf + static/Yrsa-Italic.ttf + static/Yrsa-MediumItalic.ttf + static/Yrsa-SemiBoldItalic.ttf + static/Yrsa-BoldItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/fonts/Yrsa-Regular.ttf b/fonts/Yrsa-Regular.ttf new file mode 100644 index 0000000..f538767 Binary files /dev/null and b/fonts/Yrsa-Regular.ttf differ diff --git a/fonts/Yrsa-SemiBold.ttf b/fonts/Yrsa-SemiBold.ttf new file mode 100644 index 0000000..f1fd499 Binary files /dev/null and b/fonts/Yrsa-SemiBold.ttf differ diff --git a/fonts/Yrsa-SemiBoldItalic.ttf b/fonts/Yrsa-SemiBoldItalic.ttf new file mode 100644 index 0000000..7723fee Binary files /dev/null and b/fonts/Yrsa-SemiBoldItalic.ttf differ diff --git a/fonts/Yrsa-VariableFont_wght.ttf b/fonts/Yrsa-VariableFont_wght.ttf new file mode 100644 index 0000000..d15c1cb Binary files /dev/null and b/fonts/Yrsa-VariableFont_wght.ttf differ diff --git a/img/architecture.drawio.png b/img/architecture.drawio.png new file mode 100644 index 0000000..cafd958 Binary files /dev/null and b/img/architecture.drawio.png differ diff --git a/old+bak/eckelmeckel-playground-01.typ b/old+bak/eckelmeckel-playground-01.typ new file mode 100644 index 0000000..691920a --- /dev/null +++ b/old+bak/eckelmeckel-playground-01.typ @@ -0,0 +1,504 @@ +#import "templates/eckelmeckel-04.tpl.typ": * +// During development of a template, set the above line to whatever you want. +// The build script will use sed to edit this line to import each template. +#show: tcg-doc.with( + title: "Root Credential Platform Identifier", + subtitle: "A TCG Ipsum Specification", + doctype: "Specification", + status: "Published", + version: "Version 184", + date: datetime.today().display("[month repr:long] [day padding:none], [year]"), + year: datetime.today().display("[year]"), +) + +#pagebreak() + +#heading("Disclaimers, Notices, and License Terms", level: 1, numbering: none, outlined: false) + +THIS SPECIFICATION IS PROVIDED “AS IS” WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. + +Without limitation, TCG disclaims all liability, including liability for infringement of any proprietary rights, relating to use of information in this specification and to the implementation of this specification, and TCG disclaims all liability for cost of procurement of substitute goods or services, lost profits, loss of use, loss of data or any incidental, consequential, direct, indirect, or special damages, whether under contract, tort, warranty or otherwise, arising in any way out of use or reliance upon this specification or any information herein. + +This document is copyrighted by Trusted Computing Group (TCG), and no license, express or implied, is granted herein other than as follows: You may not copy or reproduce the document or distribute it to others without written permission from TCG, except that you may freely do so for the purposes of (a) examining or implementing TCG specifications or (b) developing, testing, or promoting information technology standards and best practices, so long as you distribute the document with these disclaimers, notices, and license terms. +Contact the Trusted Computing Group at #link("https://www.trustedcomputinggroup.org/")[www.trustedcomputinggroup.org] for information on specification licensing through membership agreements. +Any marks and brands contained herein are the property of their respective owners. + +#heading("Statement Types", level: 1, numbering: none, outlined: false) + +Please note an important distinction between different sections of text +throughout this document. There are two distinctive kinds of text: *informative + comments* and *normative statements*. + +Whether a statement is normative or informative is typically +clear from context. In cases where the context does not +provide sufficient clarity, the following rules apply: + +1. A statement with a capitalized RFC key word ("MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL NOT," "SHOULD," + "SHOULD NOT," "RECOMMENDED," "MAY," and "OPTIONAL") as in RFC 8174 is always normative. + +2. Text that is delimited by horizontal rules and labeled as an informative statement, note, example, etc. is always informative. + +#informative-eckelmeckel-01( + kind: "Note", + [Reach out to #link("mailto:admin@trustedcomputinggroup.org") with any questions about this document. + ], +) + +#pagebreak() + +#outline() +#outline(title: "Figures", target: figure.where(kind: image)) +#outline(title: "Tables", target: figure.where(kind: table)) + +#pagebreak() + += Introduction +Critical dolor sit amet systems have an occasional need to verify the consecteturs. One typical technique for this is called consectetur attestation. This document provides definitions and requirements for consectetur attestation in the PC Client and Datacenter environments. + += Scope + +== In Scope + +Consecteturs that form part of a computer network or enterprise environment. + +== Out of Scope + +Air-gapped consecteturs, non-consectutor amets. + +== Trusted Computing Group + +Trusted Computing Group (TCG)'s logo is _not_ depicted in the below figure (@fig:not-the-tcg-logo): + +#figure( + image("architecture.drawio.png", width: 60%), + caption: [ + Consectetur Attestation + ], +) + +=== Lorem Ipsum Workgroup + +The Lorem Ipsum workgroup defines the consectutor and other ipsum attestation scenarios at their bimonthly tea parties. + +#informative-eckelmeckel-01( + kind: "Note", + [ + By "bimonthly" we mean that the workgroup meets every other month. + ], +) + += A Lot of Text + +Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. Excepteur sint verified boot cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id PCR laborum. + +When providing evidence about a consectutor, the Attesting Environment SHALL furnish the dolor. + +#informative-eckelmeckel-01([ + This section contains a long informative comment. It is so long, it's more + of an informative section, really. This section breaks across pages. + + == It contains sub-headings + + Which is pretty neat if you think about it. Duis aute irure dolor in repudiation in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Exception sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore _magna_ aliqua (cf. @tab:informative-table as well as #ref() and @tab:planets on #ref(, form: "page"). + + #figure( + table( + columns: (0.5fr, 0.5fr), + inset: 10pt, + align: horizon, + table.header([*Can you*], [*Believe It*]), + + [ It ], [ Even ], + [ Has ], [ A Table ], + ), + caption: [ + An Informative Table + ], + ) +]) + +Stuff after the big informative. + +== Math + +In case you forgot: + +$ sum_(k=1)^n k = (n(n+1)) / 2 $ + + + +== Tables Again + +Look at this awsome @tab:planets (alternatively: #ref()). + +#figure( + caption: [The Planets of the Solar System and Their Average Distance from the Sun], + placement: top, + table( + // Table styling is not mandated by the IEEE. Feel free to adjust these + // settings and potentially move them into a set rule. + columns: (6em, auto), + align: (left, right), + inset: (x: 8pt, y: 4pt), + stroke: (x, y) => if y <= 1 { (top: 0.5pt) }, + fill: (x, y) => if y > 0 and calc.rem(y, 2) == 0 { rgb(color-table-row-even) }, + + table.header[#table-header-text([Planet])][#table-header-text([Distance (million km)])], + [Mercury], [57.9], + [Venus], [108.2], + [Earth], [149.6], + [Mars], [227.9], + [Jupiter], [778.6], + [Saturn], [1,433.5], + [Uranus], [2,872.5], + [Neptune], [4,495.1], + ), +) + +#figure( + table( + columns: (auto, auto), + align: (left, left), + stroke: none, + table-toprule, + table.header( + repeat: true, + table-header-text("Date"), + table-header-text( + [Event -- may include symbols and special characters: #sym.suit #sym.copyleft #sym.copyright #sym.lambda], + ), + ), + table-midrule, + + // 2021 + [2022-04-09], [Kickoff (virtual)], + [2022-04-14 -- 2021-04-15], [Conference Trustworthy Systems], + [2022-11-11], [Workshop Threat and Risk Assessment], + [2022-12-02], [Preparation for Conference Talk], + + // 2023 + table-midrule, + // + [2023-01-14], [Internal Workshop ML], + [2023-04-03], [Talk from Jane Doe], + [2023-05-08 -- 2023-05-09], [Hackathon Attestation], + [2023-11-13 -- 2023-11-14], [Team Event], + + // 2024 + table-midrule, + // + [2024-02-21], [4th Digitaler Cooperation Workshop], + [2024-04-09 -- 2024-04-11], [Embedded World 2024], + [2024-06-04 -- 2024-06-05], [Trustworthy Electronics Days 2024], + [2024-06-17 -- 2024-06-18], [Project Meeting (Alaska)], + [2025-01-15], [Final Workshop: Theory of Everything], + table-bottomrule, + ), + caption: [Project-related events], +) + + + +#pagebreak() + +== Informative Text + +=== Style 1 + +#informative-eckelmeckel-01([This text fits into a single line.]) + +Some text. + +#informative-eckelmeckel-01([ + This text fits into multiple lines. + + ==== It even has a subheading + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + #horizontalrule + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + ==== And another one + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + scenarios + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. +]) + + +=== Style 2 +// #captioned-rule( +// text([\u{1f6c8} ~ ] + "Start of Informative Text ", font: font-head-face, weight: "bold", baseline: -0.1em), +// solid: false, +// stroke: 1.5pt, +// box-radius: 1em, +// box-inset: 0.3em, +// box-align: left, +// box-left-margin: 1em, +// ) + +// #captioned-rule( +// text([\u{1f6c8} ~ ] + "Start of Informative Text ", font: font-head-face, weight: "bold", baseline: -0.1em), +// solid: false, +// stroke: 0.2em, +// box-radius: 1em, +// box-inset: 0.3em, +// box-align: left, +// box-left-margin: 1em, +// ) + +// #captioned-rule( +// text([#text(baseline: -0.00em, [\u{1f6c8}]) ~ ] + "Start of Informative Text", font: font-head-face, weight: "bold"), +// solid: false, +// stroke: 0.2em, +// box-radius: 1em, +// box-align: left, +// box-left-margin: 1em, +// ) + +// #captioned-rule( +// align(horizon, [#text([\u{24d8} ~ Start of Informative Text (Test)], font: font-head-face, weight: "bold")]), +// solid: false, +// stroke: 0.2em, +// box-radius: 1em, +// box-align: left, +// box-left-margin: 1em, +// ) + +// #captioned-rule( +// align(horizon, [#text([\u{1f6c8} \u{24d8} ~ Start of Informative Text (Test)], font: font-head-face, weight: "bold")]), +// solid: false, +// stroke: 0.2em, +// box-radius: 1em, +// box-align: left, +// box-left-margin: 1em, +// ) + +#informative-eckelmeckel-02([This text fits into a single line.]) + +Test + +#rule-rounded(invert-curve-direction: true) + +Test + +#informative-eckelmeckel-02([ + #curve( + fill: none, + stroke: (paint: tcg-color-black, thickness: 1pt, cap: "round"), + curve.move((0%, 0%)), + curve.line((100%, 0%)), + ) + + #curve( + fill: none, + stroke: (paint: tcg-color-black, thickness: 1pt, cap: "round"), + curve.move((0%, 5pt)), + curve.cubic(none, (0%, 0%), (1%, 0%)), + // curve.move((1%, 0%)), + curve.line((99%, 0pt)), + curve.cubic(none, (100%, 0pt), (100%, 5pt)), + // curve.line((100pt, 50pt)), + // curve.cubic(none, (90pt, 0pt), (50pt, 0pt)), + // curve.close(), + ) + + // #curve( + // fill: none, + // stroke: (paint: tcg-color-black, thickness: 1pt, cap: "round"), + // curve.move((0pt, 5pt)), + // curve.cubic(none, (0pt, 0pt), (1%, 0pt)), + // curve.line((99%, 0pt)), + // curve.cubic(none, (99%, 0pt), (100%, 5pt)), + // curve.close() + + // // curve.line((100pt, 50pt)), + // // curve.cubic(none, (90pt, 0pt), (50pt, 0pt)), + // // curve.close(), + // ) + + + This text fits into multiple lines. + + ==== It even has a subheading + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + #horizontalrule + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + ==== And another one + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + scenarios + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. + + Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id laborum. +]) + + + += Code + +Here is some code. + + + +```cddl +; SPDX-License-Identifier: BSD-3-Clause +; ------------------------------------------------------------------------------ +; BSD 3-Clause "New" or "Revised" License +; ------------------------------------------------------------------------------ +; Copyright 2024, Fraunhofer Institute for Secure Information Technology SIT. +; All rights reserved. +; ------------------------------------------------------------------------------ +; Log format for analog hardware measurements. +; ------------------------------------------------------------------------------ +; Author: Michael Eckel +; Date Modified: 2024-06-10T10:47:28+00:00 +; Date Created: 2024-06-10T10:47:28+00:00 +; ------------------------------------------------------------------------------ + +AnalogMeasurement = [ + version-tag: uint, ; version of the format specification + start-time: Time, + measurements: [ * MeasurementSeries ] +] + +MeasurementSeries = ( + target: Target, + ?env-params: [ * NameValuePair ], + ?start-time: Time, + unit: Unit, + unit-multiple: UnitMultiple, + measurements: RegularMeasurementSeries + // IrregularMeasurementSeries, +) + +Target = [ + id: tstr, + ?config-params: [ * NameValuePair ], +] + +NameValuePair = ( + name: text, + value: any, +) + +RegularMeasurementSeries = { + values => [ * NumericalValue ], + interval-frequency-duration, +} + +interval-frequency-duration //= (interval => Time) +interval-frequency-duration //= (frequency => Frequency) +interval-frequency-duration //= (duration => Time) +values = 0 +interval = 1 +frequency = 2 +duration = 3 + +IrregularMeasurementSeries = [ * ( + current-time: Time, + NumericalValue, + ), +] + +Time = [ + seconds: uint / float, + unit-mult: UnitMultipleSi, +] + +Frequency = [ + hertz: uint / float, + unit-multiple: UnitMultipleSi, +] + +NumericalValue = ( + value: int / float, +) + +Unit = &( + UNIT_UNDEFINED : 0, + UnitElectricalSi, +) ; EXTENSION POINT for future units + +UnitElectricalSi = &( + UNIT_ELECTRICAL_SI_NONE : 1, ; none (raw ADC) + UNIT_ELECTRICAL_SI_VOLTAGE : 2, ; Volt (V or E) + UNIT_ELECTRICAL_SI_CURRENT : 3, ; Ampere (I or i) + UNIT_ELECTRICAL_SI_RESISTANCE : 4, ; Ohm (R) + UNIT_ELECTRICAL_SI_CONDUCTANCE : 5, ; Siemens (G) + UNIT_ELECTRICAL_SI_CAPACITANCE : 6, ; Farad (C) + UNIT_ELECTRICAL_SI_CHARGE : 7, ; Coulomb (Q) + UNIT_ELECTRICAL_SI_INDUCTANCE : 8, ; Henry (L or H) + UNIT_ELECTRICAL_SI_POWER : 9, ; Watts (W) + UNIT_ELECTRICAL_SI_IMPEDANCE : 10, ; Ohm (Z) + UNIT_ELECTRICAL_SI_FREQUENCY : 11, ; Hertz (Hz) +) + +UnitMultiple = &( + UnitMultipleSi, +) ; EXTENSION POINT for future unit multiples + +UnitMultipleSi = &( + UNIT_MULTIPLE_SI_YOCTO : -24, ; y (10^-24) + UNIT_MULTIPLE_SI_ZEPTO : -21, ; z (10^-21) + UNIT_MULTIPLE_SI_ATTO : -18, ; a (10^-18) + UNIT_MULTIPLE_SI_FEMTO : -15, ; f (10^-15) + UNIT_MULTIPLE_SI_PICO : -12, ; p (10^-12) + UNIT_MULTIPLE_SI_NANO : -9, ; n (10^-9) + UNIT_MULTIPLE_SI_MICRO : -6, ; u (10^-6) + UNIT_MULTIPLE_SI_MILLI : -3, ; m (10^-3) + UNIT_MULTIPLE_SI_CENTI : -2, ; c (10^-2) + UNIT_MULTIPLE_SI_DECI : -1, ; d (10^-1) + UNIT_MULTIPLE_SI_BASE : 0, ; base (10^0) + UNIT_MULTIPLE_SI_DECA : 1, ; da (10^1) + UNIT_MULTIPLE_SI_HECTO : 2, ; h (10^2) + UNIT_MULTIPLE_SI_KILO : 3, ; k (10^3) + UNIT_MULTIPLE_SI_MEGA : 6, ; M (10^6) + UNIT_MULTIPLE_SI_GIGA : 9, ; G (10^9) + UNIT_MULTIPLE_SI_TERA : 12, ; T (10^12) + UNIT_MULTIPLE_SI_PETA : 15, ; P (10^15) + UNIT_MULTIPLE_SI_EXA : 18, ; E (10^18) + UNIT_MULTIPLE_SI_ZETTA : 21, ; Z (10^21) + UNIT_MULTIPLE_SI_YOTTA : 24, ; Y (10^24) +) +``` diff --git a/references/other-refs.bib b/references/other-refs.bib new file mode 100644 index 0000000..7479edb --- /dev/null +++ b/references/other-refs.bib @@ -0,0 +1,174 @@ + +@techreport{rfc9124, + series = {Request for Comments}, + number = 9124, + howpublished = {RFC 9124}, + publisher = {RFC Editor}, + doi = {10.17487/RFC9124}, + url = {https://www.rfc-editor.org/info/rfc9124}, + author = {Brendan Moran and Hannes Tschofenig and Henk Birkholz}, + title = {{A Manifest Information Model for Firmware Updates in Internet of Things (IoT) Devices}}, + pagetotal = 40, + year = 2022, + month = jan, + abstract = {Vulnerabilities with Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism that is also suitable for constrained devices. Ensuring that devices function and remain secure over their service lifetime requires such an update mechanism to fix vulnerabilities, update configuration settings, and add new functionality. One component of such a firmware update is a concise and machine-processable metadata document, or manifest, that describes the firmware image(s) and offers appropriate protection. This document describes the information that must be present in the manifest.} +} + + +@techreport{rfc9334, + title = {{Remote ATtestation procedureS (RATS) Architecture}}, + author = {Henk Birkholz and Dave Thaler and Michael Richardson and Ned Smith and Wei Pan}, + series = {Request for Comments}, + number = 9334, + howpublished = {{RFC} 9334}, + publisher = {{RFC} Editor}, + doi = {10.17487/RFC9334}, + url = {https://rfc-editor.org/rfc/rfc9334}, + pagetotal = 46, + year = 2023, + month = jan, + abstract = {In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.} +} + + +@techreport{rfc9393, + series = {Request for Comments}, + number = 9393, + howpublished = {RFC 9393}, + publisher = {RFC Editor}, + doi = {10.17487/RFC9393}, + url = {https://www.rfc-editor.org/info/rfc9393}, + author = {Henk Birkholz and Jessica Fitzgerald-McKay and Charles Schmidt and David Waltermire}, + title = {{Concise Software Identification Tags}}, + pagetotal = 61, + year = 2023, + month = jun, + abstract = {ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an extensible XML-based structure to identify and describe individual software components, patches, and installation bundles. SWID tag representations can be too large for devices with network and storage constraints. This document defines a concise representation of SWID tags: Concise SWID (CoSWID) tags. CoSWID supports a set of semantics and features that are similar to those for SWID tags, as well as new semantics that allow CoSWIDs to describe additional types of information, all in a more memory-efficient format.} +} + + +@techreport{rfc9581, + title = {{Concise Binary Object Representation (CBOR) Tags for Time, Duration, and Period}}, + author = {Carsten Bormann and Ben Gamari and Henk Birkholz}, + series = {Request for Comments}, + number = 9581, + howpublished = {{RFC} 9581}, + publisher = {{RFC} Editor}, + doi = {10.17487/RFC9581}, + url = {https://rfc-editor.org/rfc/rfc9581}, + pagetotal = 21, + year = 2024, + month = aug, + abstract = {The Concise Binary Object Representation (CBOR, RFC 8949) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. In CBOR, one point of extensibility is the definition of CBOR tags. RFC 8949 defines two tags for time: CBOR tag 0 (RFC 3339 time as a string) and tag 1 (POSIX time as int or float). Since then, additional requirements have become known. The present document defines a CBOR tag for time that allows a more elaborate representation of time, as well as related CBOR tags for duration and time period. This document is intended as the reference document for the IANA registration of the CBOR tags defined.} +} + + +@techreport{rfc9683, + title = {{Remote Integrity Verification of Network Devices Containing Trusted Platform Modules}}, + author = {Guy Fedorkow and Eric Voit and Jessica Fitzgerald-McKay}, + series = {Request for Comments}, + number = 9683, + howpublished = {{RFC} 9683}, + publisher = {{RFC} Editor}, + doi = {10.17487/RFC9683}, + url = {https://rfc-editor.org/rfc/rfc9683}, + pagetotal = 36, + year = 2024, + month = dec, + abstract = {This document describes a workflow for remote attestation of the integrity of firmware and software installed on network devices that contain Trusted Platform Modules (TPMs), as defined by the Trusted Computing Group (TCG), or equivalent hardware implementations that include the protected capabilities, as provided by TPMs.} +} + + +@techreport{rfc9684, + title = {{A YANG Data Model for Challenge-Response-Based Remote Attestation (CHARRA) Procedures Using Trusted Platform Modules (TPMs)}}, + author = {Henk Birkholz and Michael Eckel and Shwetha Bhandari and Eric Voit and Bill Sulzen and Liang Xia and Tom Laffey and Guy Fedorkow}, + series = {Request for Comments}, + number = 9684, + howpublished = {{RFC} 9684}, + publisher = {{RFC} Editor}, + doi = {10.17487/RFC9684}, + url = {https://rfc-editor.org/rfc/rfc9684}, + pagetotal = 53, + year = 2024, + month = dec, + abstract = {This document defines the YANG Remote Procedure Calls (RPCs) and configuration nodes that are required to retrieve attestation evidence about integrity measurements from a device, following the operational context defined in RFC 9683 "TPM-based Network Device Remote Integrity Verification". Complementary measurement logs originating from one or more Roots of Trust for Measurement (RTMs) are also provided by the YANG RPCs. The defined module requires the inclusion of the following in the device components of the composite device on which the YANG server is running: at least one Trusted Platform Module (TPM) of either version 1.2 or 2.0 as well as a corresponding TPM Software Stack (TSS), or an equivalent hardware implementation that includes the protected capabilities as provided by TPMs as well as a corresponding software stack.} +} + + +@techreport{tcg:cel-v1r041, + title = {{Canonical Event Log Format}}, + edition = {Version 1.0 Revision 0.41}, + organization = {{Trusted Computing Group (TCG)}}, + publisher = {{Trusted Computing Group (TCG)}}, + series = {{TCG Specification}}, + year = 2022, + month = feb, + day = 25, + url = {https://trustedcomputinggroup.org/resource/canonical-event-log-format/} +} + + +@techreport{tcg:pclient:rim-spec, + title = {{TCG PC Client Reference Integrity Manifest Specification}}, + edition = {Version 1.1, Revision 11, April 26, 2024}, + organization = {{Trusted Computing Group (TCG)}}, + publisher = {{Trusted Computing Group (TCG)}}, + series = {{TCG Specification}}, + year = 2024, + month = apr, + day = 26, + url = {https://trustedcomputinggroup.org/resource/tcg-pc-client-reference-integrity-manifest-specification/} +} + + +@techreport{tcg:pclient:pfp, + title = {{TCG PC Client Specific Platform Firmware Profile Specification}}, + edition = {Level 00 Version 1.06, Revision 52}, + organization = {{Trusted Computing Group (TCG)}}, + publisher = {{Trusted Computing Group (TCG)}}, + series = {{TCG Specification}}, + year = 2023, + month = dec, + day = 4, + url = {https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/} +} + + +@techreport{tcg:rim-im-v11r10, + title = {{TCG Reference Integrity Manifest (RIM) Information Model}}, + edition = {Version 1.1 Revision 1.0}, + organization = {{Trusted Computing Group (TCG)}}, + publisher = {{Trusted Computing Group (TCG)}}, + series = {{TCG Specification}}, + year = 2024, + month = apr, + day = 26, + url = {https://trustedcomputinggroup.org/resource/tcg-reference-integrity-manifest-rim-information-model/} +} + + +@techreport{tcg:snmp-mib-tpm-attest-r7, + title = {{TCG SNMP MIB for TPM-Based Attestation}}, + edition = {Version 1.00 Revision 7.0}, + organization = {{Trusted Computing Group (TCG)}}, + publisher = {{Trusted Computing Group (TCG)}}, + series = {{TCG Specification}}, + year = 2022, + month = jan, + day = 6, + url = {https://trustedcomputinggroup.org/resource/tcg-snmp-mib-for-tpm-based-attestation/} +} + + +@techreport{tcg-key-dev-id, + title = {{TCG TPM 2.0 Keys for Device Identity and Attestation}}, + edition = {Version 1.1}, + organization = {{Trusted Computing Group (TCG)}}, + publisher = {{Trusted Computing Group (TCG)}}, + series = {{TCG Specification}}, + year = 2025, + month = apr, + day = 23, + url = {https://trustedcomputinggroup.org/resource/tpm-2-0-keys-for-device-identity-and-attestation/} +} + diff --git a/references/references.bib b/references/references.bib new file mode 100644 index 0000000..4d1c4a0 --- /dev/null +++ b/references/references.bib @@ -0,0 +1,17 @@ +@online{fraunhofer-sit-charra-github, + author = {{Fraunhofer Institute for Secure Information Technology SIT}}, + title = {CHARRA: CHAllenge-Response based Remote Attestation with TPM 2.0}, + year = {2019}, + month = sep, + day = 19, + url = {https://github.com/Fraunhofer-SIT/charra} +} + +@online{github:hw-fingerprinting, + title = {{Towards Practical Hardware Fingerprinting for Remote Attestation -- GitHub Repository}}, + author = {Eckel, Michael and Fenzl, Florian and Anselm Angert and J{\"a}ger, Lukas}, + year = {2024}, + month = sep, + day = 19, + url = {https://github.com/Fraunhofer-SIT/paper-towards-practical-hardware-fingerprinting-for-remote-attestation} +} diff --git a/references/references.yml b/references/references.yml new file mode 100644 index 0000000..32f0caf --- /dev/null +++ b/references/references.yml @@ -0,0 +1,14 @@ +harry: + type: Book + title: Harry Potter and the Order of the Phoenix + author: Rowling, J. K. + volume: 5 + page-total: 768 + date: 2003-06-21 + +electronic: + type: Web + title: Ishkur's Guide to Electronic Music + serial-number: v2.5 + author: Ishkur + url: http://www.techno.org/electronic-music-guide/ diff --git a/tcg-document/0.1.7/LICENSE b/tcg-document/0.1.7/LICENSE new file mode 100644 index 0000000..fc06cc4 --- /dev/null +++ b/tcg-document/0.1.7/LICENSE @@ -0,0 +1,14 @@ +MIT No Attribution + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tcg-document/0.1.7/README.md b/tcg-document/0.1.7/README.md new file mode 100644 index 0000000..3c2e8f0 --- /dev/null +++ b/tcg-document/0.1.7/README.md @@ -0,0 +1,38 @@ +# tcg-document + +This is a Typst template for TCG documents, including specifications, reference, and guidance documents. + +## Usage + +You can use this template in the Typst web app by clicking "Start from template" on the dashboard and searching for `tcg-document-template`. + +Alternatively, you can use the CLI to kick this project off using the command: + +``` +typst init @preview/tcg-document +``` + +Typst will create a new directory with all the files needed to get you started. + +## Configuration + +This template exports the `tcg-document` function with the following named arguments: + +- `title`: The document's title as content. +- ... + +The function also accepts a single, positional argument for the body of the document. + +The template will initialize your package with a sample call to the `tcg-document` function in a show rule. +If you want to change an existing project to use this template, you can add a show rule like this at the top of your file: + +```typ +#import "@preview/tcg-document-template:0.1.7": tcg-doc + +#show: tcg-doc.with( + title: [...], + ..., +) + +// content goes below. +``` diff --git a/tcg-document/0.1.7/lib.typ b/tcg-document/0.1.7/lib.typ new file mode 100644 index 0000000..bf27051 --- /dev/null +++ b/tcg-document/0.1.7/lib.typ @@ -0,0 +1,2 @@ +// TODO: Replace with actual content + diff --git a/tcg-document/0.1.7/template/acronyms/acronyms.typ b/tcg-document/0.1.7/template/acronyms/acronyms.typ new file mode 100644 index 0000000..35546fe --- /dev/null +++ b/tcg-document/0.1.7/template/acronyms/acronyms.typ @@ -0,0 +1,60 @@ +#import "@preview/acrostiche:0.5.2": * + +/* +URL: https://typst.app/universe/package/acrostiche/ + +Functions Summary: + #init-acronyms(…) Initializes the acronyms by defining them in a dictionary where the keys are acronyms and the values are definitions. + #acr(…) Prints the acronym with its definition on the first call, then just the acronym in subsequent calls. + #acrpl(…) Prints the plural version of the acronym. Uses plural definition if available, otherwise adds an ‘s’ to the acronym. + #acrfull(…) Displays the full (long) version of the acronym without affecting the state or tracking its usage. + #acrfullpl(…) Displays the full plural version of the acronym without affecting the state or tracking its usage. + #reset-acronym(…) Resets a single acronym so the next usage will include its definition again. + #reset-all-acronyms() Resets all acronyms so the next usage will include their definitions again. + #print-index(…) Prints an index of all acronyms used, with customizable heading level, order, and display parameters. + #display-def(…) Displays the definition of an acronym. Use plural: true to display the plural version of the definition. + racr, raacr, acrf, acrfpl Shortcuts names for respectively reset-acronym, reset-all-acronyms, acrfull, and acrfullpl. + +Shortcut names inspired by the acronym package for LaTeX by Tobias Oetiker: + #ac(…) Same as acr, display an acronym. + #acf(…) Same as acrfull, display the long version of an acronym. + #acfp(…) Same as acf but plural. + #acs(…) Display the short version of the acronym, does not update the acronym state. + #acsp(…) Same as acs but plural. + #acused(…) Mark an acronym as used without printing anything. + #acresetall(…) Reset all acronyms. +*/ + + +#init-acronyms(( + // "CBOR": ( + // short: "CBOR", + // long: "Concise Binary Object Representation", + // short-pl: "CBORs", + // long-pl: "Concise Binary Object Representations", + // ), + "CBOR": "Concise Binary Object Representation", + "CDDL": "Concise Data Definition Language", + "CEL": "Canonical Event Log", + "COT": "Chain of Trust", + "COT-SE": "Chain of Trust Secure Element", + "CHARRA": "Challenge-Response based Remote Attestation with TPM 2.0", + "DICE": "Device Identifier Composition Engine", + "HW-COT": "Hardware-basierte Chain of Trust", + "IETF": "Internet Engineering Task Force", + "IIoT": "Industrial Internet of Things", + "IoMT": "Internet of Medical Things", + "IoT": "Internet of Things", + "JSON": "JavaScript Object Notation", + "PoC": "Proof-of-Concept", + "POK": "Physical(ly) Obfuscated Key", + "PUF": "Physical(ly) Unclonable Function", + "PQC": "Post-Quantum Cryptography", + "RATS": "Remote Attestation Procedures", + "SE": "Secure Element", + "TCG": "Trusted Computing Group", + "TEE": "Trusted Execution Environment", + "TPM": "Trusted Platform Module", + "UID": "Unique Identifier", + "VE-ASCOT": "Advanced Security for the Chain of Trust", +)) diff --git a/tcg-document/0.1.7/template/img/architecture.drawio.png b/tcg-document/0.1.7/template/img/architecture.drawio.png new file mode 100644 index 0000000..cafd958 Binary files /dev/null and b/tcg-document/0.1.7/template/img/architecture.drawio.png differ diff --git a/tcg-document/0.1.7/template/main.typ b/tcg-document/0.1.7/template/main.typ new file mode 100644 index 0000000..2d70555 --- /dev/null +++ b/tcg-document/0.1.7/template/main.typ @@ -0,0 +1,239 @@ +#import "@preview/tcg-document:0.1.7": tcg-doc +#import "@preview/acrostiche:0.5.2": * +// During development of a template, set the above line to whatever you want. +// The build script will use sed to edit this line to import each template. +#show: tcg-doc.with( + title: "Root Credential Platform Identifier", + subtitle: "A TCG Ipsum Specification", + doctype: "Specification", + status: "Published", + version: "Version 184", + date: datetime.today().display("[month repr:long] [day padding:none], [year]"), + year: datetime.today().display("[year]"), +) + +/* acronyms */ +#include "acronyms/acronyms.typ" + +#pagebreak() + +#heading("Disclaimers, Notices, and License Terms", level: 1, numbering: none, outlined: false) + +THIS SPECIFICATION IS PROVIDED “AS IS” WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. + +Without limitation, TCG disclaims all liability, including liability for infringement of any proprietary rights, relating to use of information in this specification and to the implementation of this specification, and TCG disclaims all liability for cost of procurement of substitute goods or services, lost profits, loss of use, loss of data or any incidental, consequential, direct, indirect, or special damages, whether under contract, tort, warranty or otherwise, arising in any way out of use or reliance upon this specification or any information herein. + +This document is copyrighted by Trusted Computing Group (TCG), and no license, express or implied, is granted herein other than as follows: You may not copy or reproduce the document or distribute it to others without written permission from TCG, except that you may freely do so for the purposes of (a) examining or implementing TCG specifications or (b) developing, testing, or promoting information technology standards and best practices, so long as you distribute the document with these disclaimers, notices, and license terms. +Contact the Trusted Computing Group at #link("https://www.trustedcomputinggroup.org/")[www.trustedcomputinggroup.org] for information on specification licensing through membership agreements. +Any marks and brands contained herein are the property of their respective owners. + +#heading("Statement Types", level: 1, numbering: none, outlined: false) + +Please note an important distinction between different sections of text +throughout this document. There are two distinctive kinds of text: *informative + comments* and *normative statements*. + +Whether a statement is normative or informative is typically +clear from context. In cases where the context does not +provide sufficient clarity, the following rules apply: + +1. A statement with a capitalized RFC key word ("MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL NOT," "SHOULD," + "SHOULD NOT," "RECOMMENDED," "MAY," and "OPTIONAL") as in RFC 8174 is always normative. + +2. Text that is delimited by horizontal rules and labeled as an informative statement, note, example, etc. is always informative. + +#informative( + kind: "Note", + [Reach out to #link("mailto:admin@trustedcomputinggroup.org") with any questions about this document. + ], +) + +#pagebreak() + +#outline() +#outline(title: "Figures", target: figure.where(kind: image)) +#outline(title: "Tables", target: figure.where(kind: table)) +#outline(title: "Listings", target: figure.where(kind: raw)) + +#pagebreak() + += Introduction +Critical dolor `text` sit amet systems have an occasional need to verify the consecteturs. +One typical technique _for_ this is *called* consectetur _*attestation*_. This document provides definitions and requirements for consectetur attestation in the PC Client and Datacenter environments. + += Scope + +== In Scope + +Consecteturs that form part of a computer network or enterprise environment. + +== Out of Scope + +Air-gapped consecteturs, non-consectutor amets. + +== Trusted Computing Group + +Trusted Computing Group (TCG)'s logo is _not_ depicted in the below figure (@fig:not-the-tcg-logo): + +#figure( + image("architecture.drawio.png", width: 60%), + caption: [ + Consectetur Attestation + ], +) + +=== Lorem Ipsum Workgroup + +The Lorem Ipsum workgroup defines the consectutor and other ipsum attestation scenarios at their bimonthly tea parties. + +#informative( + kind: "Note", + [ + By "bimonthly" we mean that the workgroup meets every other month. + ], +) + += A Lot of Text + +Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud encryption ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate hash esse cillum dolore eu fugiat nulla pariatur. Excepteur sint verified boot cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id PCR laborum. + +When providing evidence about a consectutor, the Attesting Environment SHALL furnish the dolor. + +#informative([ + This section contains a long informative comment. It is so long, it's more + of an informative section, really. This section breaks across pages. + + == It contains sub-headings + + Which is pretty neat if you think about it. Duis aute irure dolor in repudiation in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Exception sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur attesting elit, sed do eiusmod tamper evident ut labore et dolore _magna_ aliqua (cf. @tab:informative-table as well as #ref() and @tab:planets on #ref(, form: "page"). + + #figure( + table( + columns: (0.5fr, 0.5fr), + inset: 10pt, + align: horizon, + table.header([*Can you*], [*Believe It*]), + + [ It ], [ Even ], + [ Has ], [ A Table ], + ), + caption: [ + An Informative Table + ], + ) +]) + +Stuff after the big informative. + +== Math + +In case you forgot: + +$ sum_(k=1)^n k = (n(n+1)) / 2 $ + + + +== Tables Again + +Look at this awsome @tab:planets (alternatively: #ref()). + +#figure( + caption: [The Planets of the Solar System and Their Average Distance from the Sun], + placement: top, + table( + // Table styling is not mandated by the IEEE. Feel free to adjust these + // settings and potentially move them into a set rule. + columns: (6em, auto), + align: (left, right), + inset: (x: 8pt, y: 4pt), + stroke: (x, y) => if y <= 1 { (top: 0.5pt) }, + fill: (x, y) => if y > 0 and calc.rem(y, 2) == 0 { rgb(color-table-row-even) }, + + table.header[#table-header-text([Planet])][#table-header-text([Distance (million km)])], + [Mercury], [57.9], + [Venus], [108.2], + [Earth], [149.6], + [Mars], [227.9], + [Jupiter], [778.6], + [Saturn], [1,433.5], + [Uranus], [2,872.5], + [Neptune], [4,495.1], + ), +) + +#figure( + table( + columns: (auto, auto), + align: (left, left), + stroke: none, + table-toprule, + table.header( + repeat: true, + table-header-text("Date"), + table-header-text( + [Event -- may include symbols and special characters: #sym.suit #sym.copyleft #sym.copyright #sym.lambda], + ), + ), + table-midrule, + + // 2021 + [2022-04-09], [Kickoff (virtual)], + [2022-04-14 -- 2021-04-15], [Conference Trustworthy Systems], + [2022-11-11], [Workshop Threat and Risk Assessment], + [2022-12-02], [Preparation for Conference Talk], + + // 2023 + table-midrule, + // + [2023-01-14], [Internal Workshop ML], + [2023-04-03], [Talk from Jane Doe], + [2023-05-08 -- 2023-05-09], [Hackathon Attestation], + [2023-11-13 -- 2023-11-14], [Team Event], + + // 2024 + table-midrule, + // + [2024-02-21], [4th Digitaler Cooperation Workshop], + [2024-04-09 -- 2024-04-11], [Embedded World 2024], + [2024-06-04 -- 2024-06-05], [Trustworthy Electronics Days 2024], + [2024-06-17 -- 2024-06-18], [Project Meeting (Alaska)], + [2025-01-15], [Final Workshop: Theory of Everything], + table-bottomrule, + ), + caption: [Project-related events], +) + + + += Miscellaneous + +Now, let us use some abbreviations, such as #acr("DICE") and #acr("TPM"). +If we use it again, like so: #acr("TPM"), it only displays the short version #cite(). +Let's have some more citations @rfc9334@harry. +And some TCG specifications, too @tcg:cel-v1r041 @tcg:pclient:pfp, @tcg-key-dev-id. +And let's intermix some code, just `because` we ```c can```. + + +#pagebreak() + +#print-index( + row-gutter: 0.5em, + sorted: "up", + outlined: true, + title: "Abbreviations", +) + + + +#pagebreak() + +#bibliography( + ( + "references/references.bib", + "references/references.yml", + "references/other-refs.bib", + ), + style: "ieee", + title: "References", +) + diff --git a/tcg-document/0.1.7/template/references/references.bib b/tcg-document/0.1.7/template/references/references.bib new file mode 100644 index 0000000..4d1c4a0 --- /dev/null +++ b/tcg-document/0.1.7/template/references/references.bib @@ -0,0 +1,17 @@ +@online{fraunhofer-sit-charra-github, + author = {{Fraunhofer Institute for Secure Information Technology SIT}}, + title = {CHARRA: CHAllenge-Response based Remote Attestation with TPM 2.0}, + year = {2019}, + month = sep, + day = 19, + url = {https://github.com/Fraunhofer-SIT/charra} +} + +@online{github:hw-fingerprinting, + title = {{Towards Practical Hardware Fingerprinting for Remote Attestation -- GitHub Repository}}, + author = {Eckel, Michael and Fenzl, Florian and Anselm Angert and J{\"a}ger, Lukas}, + year = {2024}, + month = sep, + day = 19, + url = {https://github.com/Fraunhofer-SIT/paper-towards-practical-hardware-fingerprinting-for-remote-attestation} +} diff --git a/tcg-document/0.1.7/template/references/references.yml b/tcg-document/0.1.7/template/references/references.yml new file mode 100644 index 0000000..32f0caf --- /dev/null +++ b/tcg-document/0.1.7/template/references/references.yml @@ -0,0 +1,14 @@ +harry: + type: Book + title: Harry Potter and the Order of the Phoenix + author: Rowling, J. K. + volume: 5 + page-total: 768 + date: 2003-06-21 + +electronic: + type: Web + title: Ishkur's Guide to Electronic Music + serial-number: v2.5 + author: Ishkur + url: http://www.techno.org/electronic-music-guide/ diff --git a/tcg-document/0.1.7/template/themes/GitHub.tmTheme b/tcg-document/0.1.7/template/themes/GitHub.tmTheme new file mode 100644 index 0000000..afbd2bb --- /dev/null +++ b/tcg-document/0.1.7/template/themes/GitHub.tmTheme @@ -0,0 +1,528 @@ + + + + + name + GitHub + settings + + + settings + + background + #FFFFFF + caret + #333333 + foreground + #333333 + invisibles + #E0E0E0 + lineHighlight + #F8EEC7 + selection + #B0CDE7 + selectionBorder + #B0CDE7 + inactiveSelection + #EDEDED + findHighlight + #FFE792 + findHighlightForeground + #333333 + + + + name + Comments + scope + comment + settings + + foreground + #969896 + + + + name + Operators + scope + keyword.operator, support.constant + settings + + fontStyle + + foreground + #A71D5D + + + + name + Operators + scope + constant.language + settings + + fontStyle + + foreground + #0086B3 + + + + name + Keywords + scope + keyword, storage + settings + + fontStyle + + foreground + #a71d5d + + + + name + Types + scope + storage.type + settings + + fontStyle + + foreground + #a71d5d + + + + name + Types + scope + support.type + settings + + fontStyle + + foreground + #0086B3 + + + + scope + variable + settings + + foreground + #0086b3 + + + + scope + variable.language + settings + + foreground + #df5000 + + + + scope + variable.parameter.function + settings + + foreground + #333 + + + + name + Functions + scope + entity.name.function, entity + settings + + fontStyle + + foreground + #795da3 + + + + name + Functions + scope + support.function + settings + + fontStyle + + foreground + #0086B3 + + + + name + Classes + scope + entity.name.type, entity.other.inherited-class + settings + + fontStyle + + foreground + #000000 + + + + name + Classes + scope + support.class + settings + + fontStyle + + foreground + #0086b3 + + + + name + Exceptions + scope + entity.name.exception + settings + + foreground + #F93232 + + + + name + Sections + scope + entity.name.section + settings + + fontStyle + + + + + name + Numbers + scope + constant.numeric, constant + settings + + fontStyle + + foreground + #0086b3 + + + + name + Strings + scope + constant.character, string, string punctuation + settings + + fontStyle + + foreground + #183691 + + + + name + Strings: Regular Expressions + scope + string.regexp, string.regexp constant.character, string.regexp punctuation + settings + + fontStyle + + foreground + #009926 + + + + name + Strings: Symbols + scope + constant.other.symbol + settings + + foreground + #990073 + + + + name + Embedded Source + scope + string source, text source + settings + + fontStyle + + foreground + #333333 + + + + scope + variable.other.property + settings + + foreground + #333 + fontStyle + + + + + scope + entity.name + settings + + fontStyle + + foreground + #333333 + + + + scope + invalid + settings + + fontStyle + + foreground + #f00 + + + + + + + name + HTML: Tags + scope + entity.name.tag + settings + + fontStyle + + foreground + #63a35c + + + + name + HTML: Tags Punctuation + scope + punctuation.definition.tag + settings + + fontStyle + + foreground + #333 + + + + name + HTML: Attribute Punctuation + scope + meta.tag string punctuation + settings + + fontStyle + + foreground + #183691 + + + + name + HTML: Entities + scope + constant.character.entity + settings + + fontStyle + + foreground + #000000 + + + + name + HTML: Attribute Names + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #795da3 + + + + name + HTML: Attribute Values + scope + meta.tag string.quoted, meta.tag string.quoted constant.character.entity + settings + + fontStyle + + foreground + #183691 + + + + + + scope + meta.selector, meta.selector entity, meta.selector entity punctuation, + entity.name.tag.css, entity.other.attribute-name.class, + keyword.control.html.sass + settings + + fontStyle + + foreground + #63a35c + + + + scope + entity.other.attribute-name.class, constant.other.unit + settings + + fontStyle + + foreground + #795da3 + + + + scope + support.type.property-name, support.constant.property-value + settings + + fontStyle + + foreground + #0086b3 + + + + + + + scope + keyword.other.special-method.ruby.gem + settings + + foreground + #0086B3 + fontStyle + + + + + scope + variable.other.block.ruby + settings + + foreground + #000 + fontStyle + + + + + + + scope + support.function.prelude, variable.other.generic-type.haskell + settings + + foreground + #000 + fontStyle + + + + + scope + constant.other.haskell, support.constant.haskell + settings + + fontStyle + + foreground + #445588 + + + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #75715E + + + + name + diff.deleted + scope + markup.deleted + settings + + foreground + #770000 + background + #FFDDDD + + + + name + diff.inserted + scope + markup.inserted + settings + + foreground + #003300 + background + #DDFFDD + + + + name + diff.changed + scope + markup.changed + settings + + foreground + #ececec + + + + uuid + BF4E1964-0DB9-4E88-8142-E8F52D7EDEEC + + diff --git a/tcg-document/0.1.7/template/themes/cddl.sublime-syntax b/tcg-document/0.1.7/template/themes/cddl.sublime-syntax new file mode 100644 index 0000000..2f271ca --- /dev/null +++ b/tcg-document/0.1.7/template/themes/cddl.sublime-syntax @@ -0,0 +1,239 @@ +%YAML 1.2 +# This is the Sublime syntax definition for the Concise data definition language +# (CDDL), a notational convention to express CBOR and JSON data structures. +# +# More information: https://datatracker.ietf.org/doc/draft-ietf-cbor-cddl/ +# +# LICENSE: BSD-3-Clause +# +# Copyright (c) 2019 Fabian Neumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--- +name: CDDL +file_extensions: + - cddl +scope: source.cddl + +variables: + id: |- + (?x)(?: + [$@A-Z_a-z] + (?:[\-\.]* + [$@0-9A-Z_a-z] + | + [$@0-9A-Z_a-z] + )*) + # While the spec reads more like "an int must not start with 0" we use a + # lookahead here that says "after a 0 there must be no digit". This makes the + # '0' the invalid character in '01', which looks nicer when highlighted. + uint: '(?:0b[01]+|0x[0-9a-fA-F]+|[1-9]\d*|0(?!\d))' + int: '-?(?:0b[01]+|0x[0-9a-fA-F]+|[1-9]\d*|0(?!\d))' + +contexts: + prototype: + - include: comments + main: + - include: tags + - include: operators + - include: punctuation + - include: controls + - include: bstrb64url + - include: bstrh + - include: bstr + - include: strings + - include: barewords + - include: names + - include: values + - match: '\s' + scope: whitespace + - match: '.' + scope: invalid.illegal.cddl + + tags: + - match: '#\d(\.{{uint}}|)' + scope: support.type.cddl + - match: '#(\d\.{{uint}}|)' + scope: support.type.cddl + + controls: + - match: '\.(and|bits|cbor|cborseq|default|eq|ge|gt|le|lt|ne|regexp|size|within)' + scope: keyword.control.cddl + + operators: + # occurrence + - match: '\?|\+' + scope: keyword.operator + - match: '({{uint}})?(\*)({{uint}})?' + captures: + 1: constant.numeric.cddl + 2: keyword.operator + 3: constant.numeric.cddl + # cuts + - match: '\^' + scope: keyword.operator + # range + - match: '\.\.\.|\.\.' + scope: keyword.operator + # into choice + - match: '&(?=\s*({{id}}|\())' + scope: keyword.operator + # unwrap op + - match: '~(?=\s*{{id}})' + scope: keyword.operator + - match: '//|/(?!/)' + scope: keyword.operator + - match: '=>' + scope: keyword.operator + - match: '/==|/=|=' + scope: keyword.operator + + punctuation: + - match: '[\[\]{}\(\),<>:]' + scope: punctuation + + barewords: + # Barewords as member keys (must be matched before values, types, typenames, + # groupnames). Scope is string as barewords are always interpreted as such. + - match: '{{id}}(?=\s*:)' + scope: string.other + + builtin-types: + - match: |- + (?x)\b( + cbor-any|any| + b64legacy|b64url|bigfloat|bigint|bignint|biguint|bool| + bstr|bytes|decfrac|eb16|eb64legacy|eb64url|encoded-cbor|false| + float16-32|float32-64|float16|float32|float64|float| + uint|integer|int| + mime-message|nil|nint|null|number|regexp|tdate|text| + time|true|tstr|undefined|unsigned|uri + )\b + (?![\-@$]) # if followed by one of those it's part of a user-defined name + scope: support.type.cddl + + names: + # extension points + - match: '(\$\$?){{id}}' + scope: variable.other + captures: + 1: punctuation.definition.variable.cddl + - match: '(?={{id}})' + push: + # types + - include: builtin-types + # user-defined names + - match: '\b{{id}}\b' + scope: meta.generic-name.cddl + - match: '' + pop: true + + values: + - match: '(0b)[01]+' + scope: constant.numeric.integer.binary.cddl + captures: + 1: punctuation.definition.numeric.binary.cddl + - match: '(0o)[0-7]+' + scope: constant.numeric.integer.octal.cddl + captures: + 1: punctuation.definition.numeric.octal.cddl + - match: '(0x)[0-9a-fA-F]+(\.[0-9a-fA-F]+|)p[+-]?\d+' # hexfloat + scope: constant.numeric.integer.hexadecimal.cddl + captures: + 1: punctuation.definition.numeric.hexadecimal.cddl + 3: invalid + - match: '(0x)[0-9a-fA-F]+' # hex + scope: constant.numeric.integer.hexadecimal.cddl + captures: + 1: punctuation.definition.numeric.hexadecimal.cddl + - match: '{{int}}(?:\.\d+)?(?:e[+-]?\d+)?' # int or float + scope: constant.numeric.cddl + + bstrb64url: + - match: "(b64)(')" + captures: + 1: storage.type.string.cddl + 2: punctuation.definition.string.begin.cddl + scope: punctuation.definition.string.begin.cddl + push: inside_bstrb64url + inside_bstrb64url: + - meta_scope: string.quoted.single.cddl + - match: '\\.' + scope: constant.character.escape.cddl + - match: "'" + scope: punctuation.definition.string.end.cddl + pop: true + - match: '[^\s0-9a-zA-Z\-_=]+' + scope: invalid.illegal + + bstrh: + - match: "(h)(')" + captures: + 1: storage.type.string.cddl + 2: punctuation.definition.string.begin.cddl + scope: punctuation.definition.string.begin.cddl + push: inside_bstrh + inside_bstrh: + - meta_scope: string.quoted.single.cddl + - match: '\\.' + scope: constant.character.escape.cddl + - match: "'" + scope: punctuation.definition.string.end.cddl + pop: true + - match: '[^\s0-9a-fA-F]+' + scope: invalid.illegal + + bstr: + - match: "'" + scope: punctuation.definition.string.begin.cddl + push: inside_bstr + inside_bstr: + - meta_include_prototype: false # no comments in here + - meta_scope: string.quoted.single.cddl + - match: '\\.' + scope: constant.character.escape.cddl + - match: "'" + scope: punctuation.definition.string.end.cddl + pop: true + + strings: + - match: '"' + scope: punctuation.definition.string.begin.cddl + push: inside_string + inside_string: + - meta_include_prototype: false + - meta_scope: string.quoted.double.cddl + - match: '\.' + scope: constant.character.escape.cddl + - match: '"' + scope: punctuation.definition.string.end.cddl + pop: true + + comments: + - match: ';' + scope: punctuation.definition.comment.cddl + push: + - meta_scope: comment.line.cddl + - match: $\n? + pop: true diff --git a/tcg-document/0.1.7/thumbnail.png b/tcg-document/0.1.7/thumbnail.png new file mode 100644 index 0000000..9aa3110 Binary files /dev/null and b/tcg-document/0.1.7/thumbnail.png differ diff --git a/tcg-document/0.1.7/typst.toml b/tcg-document/0.1.7/typst.toml new file mode 100644 index 0000000..8058cdb --- /dev/null +++ b/tcg-document/0.1.7/typst.toml @@ -0,0 +1,38 @@ +[package] +name = "tcg-document" +version = "0.1.7" +compiler = "0.13.1" +entrypoint = "lib.typ" +repository = "https://github.com/TrustedComputingGroup/typst-tcg-document/" +authors = [ + "Trusted Computing Group ", + "Chris Fenner ", + "Dennis Mattoon ", + "Michael Eckel ", +] +license = "MIT-0" +description = "A Typst template for TCG documents, including specification, reference, and guidance documents" +keywords = [ + "Trusted Computing Group", + "TCG", + "Standardization", + "Trusted Computing", + "Security", + "Computer Science", + "Computer Engineering", + "Trusted Platform Module", + "TPM", +] +categories = [ + "report", +] # allowed categories (one or many): ["components","visualization","model","layout","text","languages","scripting","integration","utility","fun","book","report","paper","thesis","poster","flyer","presentation","cv","office"] +disciplines = [ + "computer-science", + "engineering", + "communication", +] # allowed disciplines (one or many): ["agriculture","anthropology","archaeology","architecture","biology","business","chemistry","communication","computer-science","design","drawing","economics","education","engineering","fashion","film","geography","geology","history","journalism","law","linguistics","literature","mathematics","medicine","music","painting","philosophy","photography","physics","politics","psychology","sociology","theater","theology","transportation"] + +[template] +path = "template" +entrypoint = "main.typ" +thumbnail = "thumbnail.png" diff --git a/templates/eckelmeckel-04.tpl.typ b/templates/eckelmeckel-04.tpl.typ new file mode 100644 index 0000000..2b349ee --- /dev/null +++ b/templates/eckelmeckel-04.tpl.typ @@ -0,0 +1,746 @@ +/* -------------------------------------------------------------------------- */ +/* TCG Typst Template */ +/* Version: 0.2.7 */ +/* Filename: 'tcg-typst-template-v0.2.7-alpha.tpl.typ' */ +/* Authors: */ +/* * John Doe (john.doe@example.com) */ +/* * Jane Doe (jane.doe@acme.org) */ +/* */ +/* Copyright © 2025 Trusted Computing Group */ +/* -------------------------------------------------------------------------- */ + + +/* --- fonts ---------------------------------------------------------------- */ + +#let font-head-face = "Signika" +// #let font-head-face = "Alegreya Sans" +#let font-head-size = 24pt +#let font-text-face = "Literata" +// #let font-text-face = "Gentium Book" +// #let font-text-face = "Libre Baskerville" +// #let font-text-face = "Yrsa" +#let font-text-size = 10.5pt +#let font-mono-face = "Fira Code" +#let font-mono-size = (font-text-size * 0.95) +// #let font-mono-size = (font-text-size * 0.89) +// #let font-mono-size = 10.5pt +#let font-math-face = "STIX Two Math" +// #let font-math-face = "Fira Math" +// #let font-math-face = "Noto Sans Math" +#let font-math-size = 10pt + + + +/* --- colors --------------------------------------------------------------- */ + +/* TCG primary colors */ +#let tcg-color-black = rgb("#000000ff") +#let tcg-color-shade = rgb("#f6f6f6ff") +#let tcg-color-gray = rgb("#808080ff") +#let tcg-color-light-gray = rgb("#d9d9d9ff") +#let tcg-color-dark-gray = rgb("#4d4d4fff") +#let tcg-color-orange = rgb("#f8941eff") +#let tcg-color-blue = rgb("#283578ff") +#let tcg-color-light-blue = rgb("#3e75c4ff") +#let tcg-color-light-blue = rgb("#242537ff") +#let tcg-color-light-green = rgb("#8dc73fff") + +/* element colors */ +#let color-code-fg = tcg-color-black +#let color-code-bg = tcg-color-shade +#let color-table-row-odd = rgb("#ffffff00") +#let color-table-row-even = tcg-color-shade + +/* document type colors */ +#let color-doctype-default = tcg-color-orange +#let color-doctype-specification = tcg-color-blue +#let color-doctype-reference = tcg-color-light-green +#let color-doctype-guidance = tcg-color-light-green + + + +/* --- definitions ---------------------------------------------------------- */ + +#let table-toprule = table.hline(stroke: 0.08em) +#let table-bottomrule = table-toprule +#let table-midrule = table.hline(stroke: 0.05em) + +#let table-header-text(body) = text(body, weight: "semibold", font: font-head-face) + + + +/* --- functions ------------------------------------------------------------ */ + +/* appendix */ +#let appendix(body) = { + set heading(numbering: "A.1", supplement: [Anhang]) + counter(heading).update(0) + body +} + +/* horizontal rule */ +#let horizontalrule = line(start: (25%, 0%), end: (75%, 0%)) + + +/** + * @brief Creates a captioned rule suitable for captioning, especially for titlepages. + * + * @param[in] stroke The stroke style for the rule and the caption box. + * @param[in] text-color The text color of the caption. + * @param[in] bg-color The background-color of the caption box. + * @param[in] box-align The alignment of the caption box. + * @param[in] box-inset The inset of the caption box. + * @param[in] box-radius The radius of the caption box. + * @param[in] solid Specifies whether the caption box is filled with the background color (`true`), or not (`else`). + * @param[in] box-shift-correction Allows to fine-tune the alignment of the caption box. + * @param[in] body The content. + **/ +#let captioned-rule( + stroke: 2pt, + text-color: white, + bg-color: black, + box-align: center, + box-left-margin: 0em, + box-right-margin: 0em, + box-inset: 0.5em, + box-radius: 0.5em, + solid: true, + boxed: true, + box-shift-correction: 0pt, + body, +) = context { + /* compute box height */ + let body-height = measure(body).height + let box-height = (measure(body).height) + (box-inset * 2) + stroke + // let box-height = (measure(body).height * 1.15) + (box-inset * 2) + stroke + // let box-height = measure(body).height + (box-inset * 2) + + /* compute box shift */ + let box-shift = -(box-height - (stroke / 2) - box-shift-correction) + // let box-shift = -(box-height + (body-height * 0.1)) + + /* set colors */ + let line-color = bg-color + let stroke-color = if (boxed) { line-color } else { text-color } + let box-bg-color = { + if (boxed) { + if (solid) { bg-color } else { text-color } + } else { + text-color + } + } + let text-color = { + if (boxed) { + if (solid) { text-color } else { bg-color } + } else { + bg-color + } + } + + /* construct and display it */ + stack( + spacing: 0em, + align(center + horizon)[ + #box(height: box-height, width: auto, fill: none, line(length: 100%, stroke: stroke + line-color))], + v(box-shift), + align(box-align + horizon)[ + #h(box-left-margin) + #box(width: auto, fill: box-bg-color, inset: box-inset, radius: box-radius, stroke: stroke + stroke-color, text( + body, + fill: text-color, + )) + #h(box-right-margin) + ], + ) +} + +#let rule-rounded( + stroke: (paint: tcg-color-black, thickness: 1.5pt, cap: "round"), + invert-curve-direction: false, +) = context { + if not invert-curve-direction { + curve( + fill: none, + stroke: stroke, + curve.move((0%, 5pt)), + curve.cubic(none, (0%, 0%), (1%, 0%)), + curve.line((99%, 0pt)), + curve.cubic(none, (100%, 0pt), (100%, 5pt)), + ) + } else { + curve( + fill: none, + stroke: stroke, + curve.move((0%, 0%)), + curve.cubic(none, (0%, 5pt), (1%, 5pt)), + curve.line((99%, 5pt)), + curve.cubic(none, (100%, 5pt), (100%, 0%)), + ) + } +} + +/** + * @brief Creates a captioned rounded rule suitable for captioning, especially for titlepages. + * + * @param[in] stroke The stroke style for the rule and the caption box. + * @param[in] text-color The text color of the caption. + * @param[in] bg-color The background-color of the caption box. + * @param[in] box-align The alignment of the caption box. + * @param[in] box-inset The inset of the caption box. + * @param[in] box-radius The radius of the caption box. + * @param[in] invert-curve-direction Specifies whether the box is open to the bottom (`false`, default), or to the top (`true`). + * @param[in] solid Specifies whether the caption box is filled with the background color (`true`), or not (`false`). + * @param[in] box-shift-correction Allows to fine-tune the alignment of the caption box. + * @param[in] body The content. + **/ +#let captioned-rule-rounded( + stroke: 2pt, + text-color: white, + bg-color: black, + box-align: center, + box-left-margin: 0em, + box-right-margin: 0em, + box-inset: 0.5em, + box-radius: 0.5em, + invert-curve-direction: false, + solid: true, + boxed: true, + box-shift-correction: 0pt, + body, +) = context { + /* constants */ + let curve-size = 5pt + + /* compute box height */ + let body-height = measure(body).height + let box-height = (measure(body).height) + (box-inset * 2) + stroke + + /* compute box shift */ + let box-shift = -(box-height - (stroke / 2) - box-shift-correction - curve-size + stroke) + if invert-curve-direction { box-shift += curve-size } + + /* set colors */ + let line-color = bg-color + let stroke-color = if (boxed) { line-color } else { text-color } + let box-bg-color = { + if (boxed) { + if (solid) { bg-color } else { text-color } + } else { + text-color + } + } + let text-color = { + if (boxed) { + if (solid) { text-color } else { bg-color } + } else { + bg-color + } + } + + /* construct and display it */ + v(-box-shift) + stack( + spacing: 0em, + align(center + horizon)[ + #rule-rounded(invert-curve-direction: invert-curve-direction, stroke: ( + paint: stroke-color, + thickness: stroke, + cap: "round", + )) + ], + v(box-shift), + align(box-align + horizon)[ + #h(box-left-margin) + #box(width: auto, fill: box-bg-color, inset: box-inset, radius: box-radius, stroke: stroke + stroke-color, text( + body, + fill: text-color, + )) + #h(box-right-margin) + ], + ) +} + +/* informative box(es) */ +#let informative-eckelmeckel-01( + kind: none, + content, +) = context { + let kind = if kind != none { kind } else { "Informative Text" } + let post = none + + let meas = measure(content) + v(2pt) + + if meas.height < 2in { + block( + breakable: false, + [ + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: 2.5pt, + left: 0.5pt, + bottom: none, + right: 0.5pt, + ), + ) + #block( + [ + #v(-1em) + #text([\u{1f6c8} ~ ] + kind, font: font-head-face, weight: "bold") + + #content + ], + width: 100%, + inset: (left: 10pt, right: 10pt), + ) + + #v(-0.6em) + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: none, + left: 0.5pt, + bottom: 2.5pt, + right: 0.5pt, + ), + ) + ], + ) + } else { + block( + breakable: false, + [ + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: 2.5pt, + left: 0.5pt, + bottom: none, + right: 0.5pt, + ), + ) + #block( + [ + #v(-1em) + #text([\u{1f6c8} ~ Start of ] + kind, font: font-head-face, weight: "bold") + ], + width: 100%, + inset: (left: 10pt), + ) + ], + ) + block( + [ + #content + ], + width: 100%, + inset: (left: 10pt, right: 10pt), + ) + block( + breakable: false, + [ + #block( + [ + #text([\u{1f6c8} ~ End of ] + kind, font: font-head-face, weight: "bold") + #v(-0.8em) + ], + width: 100%, + inset: (left: 10pt), + ) + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: none, + left: 0.5pt, + bottom: 2.5pt, + right: 0.5pt, + ), + ) + ], + ) + } +} + +#let informative-eckelmeckel-02( + kind: none, + content, +) = context { + let kind = if kind != none { kind } else { "Informative Text" } + let post = none + + let meas = measure(content) + + if meas.height < 2in { + block( + breakable: false, + [ + #captioned-rule-rounded( + text([\u{1f6c8} ~ ] + kind + " ", font: font-head-face, weight: "bold", baseline: -0.1em), + solid: false, + stroke: 1.5pt, + box-radius: 1em, + box-inset: 0.3em, + box-align: left, + box-left-margin: 1em, + ) + + #block( + [ + #content + ], + width: 100%, + inset: (left: 10pt, right: 10pt), + ) + + #v(-0.6em) + #align(center + horizon)[ + #rule-rounded(invert-curve-direction: true)] + ], + ) + } else { + block( + breakable: false, + [ + #captioned-rule-rounded( + text([\u{1f6c8} ~ Start of ] + kind + " ", font: font-head-face, weight: "bold", baseline: -0.1em), + solid: false, + stroke: 1.5pt, + box-radius: 1em, + box-inset: 0.3em, + box-align: left, + box-left-margin: 1em, + ) + ], + ) + block( + [ + #content + ], + width: 100%, + inset: (left: 10pt, right: 10pt), + ) + block( + breakable: false, + [ + #captioned-rule-rounded( + text([\u{1f6c8} ~ End of ] + kind + " ", font: font-head-face, weight: "bold", baseline: -0.1em), + solid: false, + stroke: 1.5pt, + box-radius: 1em, + box-inset: 0.3em, + box-align: left, + box-left-margin: 1em, + invert-curve-direction: true, + ) + ], + ) + } +} + +#let informative-eckelmeckel-03( + kind: none, + content, +) = context { + let kind = if kind != none { kind } else { "Informative Text" } + let post = none + + let meas = measure(content) + + if meas.height < 2in { + block( + breakable: false, + [ + #rule-rounded(invert-curve-direction: false) + #block( + [ + #v(-1em) + #text([\u{1f6c8} ~ ] + kind, font: font-head-face, weight: "bold", baseline: -0.1em) + + #content + ], + width: 100%, + inset: (left: 10pt, right: 10pt), + ) + + #v(-0.6em) + #align(center + horizon)[ + #rule-rounded(invert-curve-direction: true)] + ], + ) + } else { + block( + breakable: false, + [ + #rule-rounded(invert-curve-direction: false) + #block( + [ + #v(-1em) + #text([\u{1f6c8} ~ Start of ] + kind, font: font-head-face, weight: "bold") + ], + width: 100%, + inset: (left: 10pt, right: 10pt), + ) + ], + ) + block( + [ + #content + ], + width: 100%, + inset: (left: 10pt), + ) + block( + breakable: false, + [ + #block( + [ + #text([\u{1f6c8} ~ End of ] + kind, font: font-head-face, weight: "bold") + #v(-0.8em) + ], + width: 100%, + inset: (left: 10pt), + ) + #rule-rounded(invert-curve-direction: true) + ], + ) + } +} + +#let tcg-doc( + title: "The Coolest and Most Awesome TCG Document Ever Made", + subtitle: "A TCG Specification", + doctype: "Specification", // must be one of "Specification", "Reference", "Guidance" + status: "Draft", // must be one of "Draft", "Published" + version: "Version 184, Revision 0.37", + date: "April 15, 2003", + year: none, + doc, +) = context { + /* --- font settings ------------------------------------------------------ */ + /* normal text */ + set text( + font: font-text-face, + size: font-text-size, + ) + /* math text */ + show math.equation: set text( + font: font-math-face, + size: font-math-size, + ) + /* link text */ + show link: set text( + font: font-mono-face, + size: font-mono-size, + ) + /* code text */ + show raw: set text( + font: font-mono-face, + ligatures: false, + discretionary-ligatures: false, + historical-ligatures: false, + alternates: true, + // number-type: "old-style", + size: font-mono-size, + ) + /* code block */ + set raw( + tab-size: 4, + syntaxes: "../themes/cddl.sublime-syntax", + theme: "../themes/GitHub.tmTheme", + lang: none, + block: true, + ) + show raw: it => { + set text(font: font-mono-face, size: font-mono-size * 0.89, fill: rgb(color-code-fg)) + set block( + fill: rgb(color-code-bg), + inset: 1em, + radius: 0.5em, + ) + it + } + + /* caption positions */ + show figure.where( + kind: image, + ): set figure.caption(position: bottom) + show figure.where( + kind: table, + ): set figure.caption(position: bottom) + show figure.where( + kind: raw, + ): set figure.caption(position: top) + + /* colors */ + let color-doctype = { + if (lower(doctype) == "specification") { + color-doctype-specification + } else if (lower(doctype) == "reference") { + color-doctype-reference + } else if (lower(doctype) == "guidance") { + color-doctype-guidance + } else { + color-doctype-default + } + } + + /* headings */ + set heading(numbering: "1.1") + show heading: it => block( + above: 2.5em - it.level * 0.2em, + below: 1.3em, + )[ + #let size = font-head-size - it.level * 3pt + #if (size < 10pt) { size = 10pt } + #set align(left) + #set text( + font: font-head-face, + size: size, + weight: "bold", + ) + #it + ] + + /* page numbering */ + set page(numbering: "1") + + + // Outline Table of Content/Figures/Tables/etc. + show outline.entry.where(level: 1): set block(above: 1.2em) + show outline.entry.where(level: 1): set text(size: 1.2em, font: font-head-face, weight: "bold") + show outline.entry.where(level: 1): it => { + show repeat: none + it + } + // show outline.entry: it => link( + // it.element.location(), + // it.indented(it.prefix(), it.inner()), + // ) + + show terms: it => { + it + .children + .map(child => [ + #strong[#child.term] + #block(inset: (left: 1.5em, top: -0.4em))[#child.description] + ]) + .join() + } + + set table( + inset: 6pt, + stroke: 1pt, + ) + + show figure.where(kind: table): set figure.caption(position: bottom) + + show figure.where(kind: image): set figure.caption(position: bottom) + + // + // Title page + // + set page(paper: "us-letter", margin: 1in) + set align(left + top) + // TCG logo + place( + top + left, + link( + "https://trustedcomputinggroup.org/", + image("img/tcg-logo.svg", width: 30%, alt: "TCG Logo"), + ), + ) + // Document type + place( + top + right, + box( + width: auto, + fill: color-doctype, + // fill: black, + inset: 6pt, + radius: 4pt, + stroke: none, + [ + #text( + upper(doctype), + font: font-head-face, + weight: "bold", + // weight: "extrabold", + size: 32pt, + // size: font-head-size * 1.3, + fill: white, + ) + ], + ), + ) + + + // HERE THE "SPECIFICATION" text (upper case always) + + set align(left + bottom) + + text(48pt, title, font: font-head-face, weight: "extrabold") + v(-30pt) + + if (subtitle != none) { + text(32pt, subtitle, font: font-head-face, weight: "medium") + v(-20pt) + } + + line(length: 100%, stroke: 2pt) + v(-20pt) + + text(32pt, doctype, font: font-head-face, weight: "light") + v(-16pt) + + text(24pt, status, font: font-head-face, weight: "extralight") + v(-12pt) + + line(length: 100%, stroke: 2pt) + + v(-2pt) + text(20pt, version, font: font-head-face, weight: "light") + v(-6pt) + text(16pt, date, font: font-head-face, weight: "light") + v(-4pt) + // text(12pt, "Contact: " + link("mailto:admin@trustedcomputinggroup.org"), font: font-head-face, weight: "extralight") + text(12pt, "Contact: " + link("mailto:admin@trustedcomputinggroup.org"), font: font-head-face, weight: "light") + + // + // Front matter + // + let foot = ( + line(length: 100%, stroke: 0.5pt) + + grid( + align: (left, center, right), + columns: (1in, 5.5in, 1in), + rows: 0.5in, + text(sym.copyright + " " + year + " TCG", font: font-head-face, weight: "light"), + text(title + if subtitle != none { [ -- ] + subtitle }, font: font-head-face, weight: "light"), + text( + context counter(page).display( + "1", + both: false, + ), + font: font-head-face, + weight: "light", + ), + ) + ) + set text(font: font-head-face, weight: "light") + set page( + paper: "us-letter", + margin: (bottom: 1in, rest: 0.5in), + footer: foot, + ) + + set align(left + top) + + set text(font: font-text-face, size: font-text-size) + + doc +} diff --git a/templates/img/old+bak/tcg-logo.eckelmeckel-remake.svg b/templates/img/old+bak/tcg-logo.eckelmeckel-remake.svg new file mode 100644 index 0000000..b31c9f7 --- /dev/null +++ b/templates/img/old+bak/tcg-logo.eckelmeckel-remake.svg @@ -0,0 +1,56 @@ + + + +TRUSTEDCOMPUTINGGROUP diff --git a/templates/img/old+bak/tcg-logo.eckelmeckel-remake.svgz b/templates/img/old+bak/tcg-logo.eckelmeckel-remake.svgz new file mode 100644 index 0000000..5e886f6 Binary files /dev/null and b/templates/img/old+bak/tcg-logo.eckelmeckel-remake.svgz differ diff --git a/templates/img/tcg-logo-cmyk.eps b/templates/img/tcg-logo-cmyk.eps new file mode 100644 index 0000000..1bc09c4 Binary files /dev/null and b/templates/img/tcg-logo-cmyk.eps differ diff --git a/templates/img/tcg-logo-cmyk.inkscape.svg b/templates/img/tcg-logo-cmyk.inkscape.svg new file mode 100644 index 0000000..72e9b14 --- /dev/null +++ b/templates/img/tcg-logo-cmyk.inkscape.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/img/tcg-logo.eps b/templates/img/tcg-logo.eps new file mode 100644 index 0000000..37fc917 --- /dev/null +++ b/templates/img/tcg-logo.eps @@ -0,0 +1,348 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.18.0 (https://cairographics.org) +%%CreationDate: Mon Jun 23 22:30:41 2025 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 1 450 205 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 1 450 205 +%%EndPageSetup +q 0 1 450 204 rectclip +1 0 0 -1 0 205 cm q +0.243137 0.458824 0.768627 rg +0 181.695 m 0 174.59 0.387 171.996 1.141 169.52 c 3.289 162.859 8.625 159.434 + 15.91 159.434 c 23.477 159.434 28.094 163.23 30.258 167.988 c 30.441 168.371 + 30.383 168.691 30.062 168.887 c 26.25 170.727 l 25.879 170.922 25.559 170.793 + 25.363 170.406 c 23.281 166.543 20.484 164.707 15.91 164.707 c 11.031 164.707 + 7.93 166.984 6.602 171.102 c 6.027 172.684 5.707 175.098 5.707 181.695 +c 5.707 188.297 6.027 190.699 6.602 192.285 c 7.93 196.41 11.031 198.695 + 15.91 198.695 c 20.297 198.695 23.855 196.531 25.184 192.473 c 25.625 191.031 + 26.004 188.93 26.004 185.699 c 26.004 185.438 25.879 185.312 25.625 185.312 + c 17.246 185.312 l 16.867 185.312 16.629 185.066 16.629 184.676 c 16.629 + 180.992 l 16.629 180.621 16.867 180.367 17.246 180.367 c 31.012 180.367 + l 31.391 180.367 31.652 180.621 31.652 180.992 c 31.652 184.238 l 31.652 + 188.117 31.203 191.66 30.57 193.754 c 28.473 200.281 23.094 203.961 15.91 + 203.961 c 8.625 203.961 3.289 200.527 1.141 193.867 c 0.387 191.406 0 188.801 + 0 181.695 c f +70.031 172.57 m 70.031 168.059 67.055 165.395 62.043 165.395 c 51.949 165.395 + l 51.703 165.395 51.59 165.52 51.59 165.781 c 51.59 179.352 l 51.59 179.605 + 51.703 179.73 51.949 179.73 c 62.043 179.73 l 67.055 179.73 70.031 177.07 + 70.031 172.57 c h +70.91 203.254 m 70.48 203.254 70.285 203.059 70.098 202.633 c 61.477 185 + l 51.949 185 l 51.703 185 51.59 185.125 51.59 185.379 c 51.59 202.633 l + 51.59 203.012 51.332 203.254 50.941 203.254 c 46.57 203.254 l 46.184 203.254 + 45.938 203.012 45.938 202.633 c 45.938 160.777 l 45.938 160.387 46.184 +160.137 46.57 160.137 c 62.16 160.137 l 70.227 160.137 75.68 165.082 75.68 + 172.57 c 75.68 178.402 72.383 182.648 67.184 184.305 c 76.371 202.492 l + 76.633 202.879 76.445 203.254 75.992 203.254 c 70.91 203.254 l f +114.008 192.285 m 114.516 190.699 114.953 187.914 114.953 181.695 c 114.953 + 175.48 114.516 172.684 114.008 171.102 c 112.672 166.984 109.621 164.707 + 104.801 164.707 c 100.059 164.707 96.992 166.984 95.68 171.102 c 95.156 + 172.684 94.723 175.48 94.723 181.695 c 94.723 187.914 95.156 190.699 95.68 + 192.285 c 96.992 196.41 100.059 198.695 104.801 198.695 c 109.621 198.695 + 112.672 196.41 114.008 192.285 c h +90.156 193.867 m 89.324 191.406 89.016 188.801 89.016 181.695 c 89.016 +174.59 89.324 171.996 90.156 169.52 c 92.383 162.859 97.574 159.434 104.801 + 159.434 c 112.098 159.434 117.297 162.859 119.52 169.52 c 120.348 171.996 + 120.66 174.59 120.66 181.695 c 120.66 188.801 120.348 191.406 119.52 193.867 + c 117.297 200.527 112.098 203.961 104.801 203.961 c 97.574 203.961 92.383 + 200.527 90.156 193.867 c f +134.938 188.227 m 134.938 160.777 l 134.938 160.387 135.191 160.137 135.574 + 160.137 c 139.953 160.137 l 140.332 160.137 140.578 160.387 140.578 160.777 + c 140.578 188.152 l 140.578 195.145 144.457 198.695 150.223 198.695 c 155.938 + 198.695 159.801 195.145 159.801 188.152 c 159.801 160.777 l 159.801 160.387 + 160.055 160.137 160.445 160.137 c 164.824 160.137 l 165.195 160.137 165.457 + 160.387 165.457 160.777 c 165.457 188.227 l 165.457 198.375 159.676 203.961 + 150.223 203.961 c 140.711 203.961 134.938 198.375 134.938 188.227 c f +205.164 173.004 m 205.164 168.312 202.055 165.395 196.727 165.395 c 187.082 + 165.395 l 186.828 165.395 186.703 165.52 186.703 165.781 c 186.703 180.246 + l 186.703 180.484 186.828 180.621 187.082 180.621 c 196.727 180.621 l 202.055 + 180.621 205.164 177.703 205.164 173.004 c h +181.695 203.254 m 181.316 203.254 181.062 203.012 181.062 202.633 c 181.062 + 160.777 l 181.062 160.387 181.316 160.137 181.695 160.137 c 197.047 160.137 + l 205.344 160.137 210.746 165.207 210.746 173.004 c 210.746 180.805 205.344 + 185.887 197.047 185.887 c 187.082 185.887 l 186.828 185.887 186.703 186.004 + 186.703 186.258 c 186.703 202.633 l 186.703 203.012 186.457 203.254 186.074 + 203.254 c 181.695 203.254 l f +0.156863 0.207843 0.470588 rg +16.605 64.695 m 16.098 64.695 15.762 64.352 15.762 63.867 c 15.762 19.168 + l 15.762 18.832 15.598 18.66 15.262 18.66 c 0.836 18.66 l 0.336 18.66 0 + 18.316 0 17.816 c 0 8.516 l 0 8.008 0.336 7.672 0.836 7.672 c 43.02 7.672 + l 43.52 7.672 43.855 8.008 43.855 8.516 c 43.855 17.816 l 43.855 18.316 + 43.52 18.66 43.02 18.66 c 28.602 18.66 l 28.258 18.66 28.094 18.832 28.094 + 19.168 c 28.094 63.867 l 28.094 64.352 27.758 64.695 27.25 64.695 c 16.605 + 64.695 l f +82.398 25.375 m 82.398 21.086 79.387 18.316 74.688 18.316 c 64.625 18.316 + l 64.289 18.316 64.125 18.496 64.125 18.832 c 64.125 32 l 64.125 32.336 + 64.289 32.492 64.625 32.492 c 74.688 32.492 l 79.387 32.492 82.398 29.723 + 82.398 25.375 c h +83.324 64.695 m 82.57 64.695 82.316 64.449 82.062 63.867 c 72.254 42.98 + l 64.625 42.98 l 64.289 42.98 64.125 43.145 64.125 43.48 c 64.125 63.867 + l 64.125 64.352 63.781 64.695 63.281 64.695 c 52.629 64.695 l 52.137 64.695 + 51.785 64.352 51.785 63.867 c 51.785 8.516 l 51.785 8.008 52.137 7.672 +52.629 7.672 c 75.359 7.672 l 87.012 7.672 94.723 14.969 94.723 25.375 c + 94.723 32.664 90.867 38.445 84.578 41.211 c 95.812 63.68 l 96.066 64.203 + 95.812 64.695 95.23 64.695 c 83.324 64.695 l f +103.832 43.734 m 103.832 8.516 l 103.832 8.008 104.16 7.672 104.668 7.672 + c 115.312 7.672 l 115.82 7.672 116.156 8.008 116.156 8.516 c 116.156 44.078 + l 116.156 50.855 119.922 54.715 125.711 54.715 c 131.41 54.715 135.184 +50.855 135.184 44.078 c 135.184 8.516 l 135.184 8.008 135.527 7.672 136.027 + 7.672 c 146.672 7.672 l 147.18 7.672 147.516 8.008 147.516 8.516 c 147.516 + 43.734 l 147.516 57.906 138.461 65.621 125.711 65.621 c 112.879 65.621 +103.832 57.906 103.832 43.734 c f +155.02 57.816 m 154.684 57.48 154.512 56.898 154.938 56.387 c 161.309 49.098 + l 161.645 48.68 162.145 48.68 162.562 49.016 c 166.336 52.035 171.453 54.879 + 177.488 54.879 c 183.441 54.879 186.801 52.117 186.801 48.098 c 186.801 + 44.746 184.785 42.645 177.996 41.719 c 174.977 41.301 l 163.406 39.711 +156.945 34.258 156.945 24.195 c 156.945 13.715 164.824 6.754 177.152 6.754 + c 184.703 6.754 191.746 9.016 196.527 12.699 c 197.027 13.043 197.109 13.379 + 196.691 13.969 c 191.574 21.594 l 191.238 22.02 190.828 22.094 190.402 +21.84 c 186.047 18.988 181.844 17.484 177.152 17.484 c 172.125 17.484 169.531 + 20.086 169.531 23.688 c 169.531 26.957 171.871 29.051 178.406 29.977 c +181.43 30.402 l 193.168 32 199.375 37.355 199.375 47.672 c 199.375 57.98 + 191.746 65.621 176.988 65.621 c 168.098 65.621 159.457 62.09 155.02 57.816 + c f +221.398 64.695 m 220.898 64.695 220.562 64.352 220.562 63.867 c 220.562 + 19.168 l 220.562 18.832 220.398 18.66 220.062 18.66 c 205.633 18.66 l 205.137 + 18.66 204.793 18.316 204.793 17.816 c 204.793 8.516 l 204.793 8.008 205.137 + 7.672 205.633 7.672 c 247.812 7.672 l 248.312 7.672 248.656 8.008 248.656 + 8.516 c 248.656 17.816 l 248.656 18.316 248.312 18.66 247.812 18.66 c 233.391 + 18.66 l 233.055 18.66 232.891 18.832 232.891 19.168 c 232.891 63.867 l +232.891 64.352 232.551 64.695 232.051 64.695 c 221.398 64.695 l f +256.586 8.516 m 256.586 8.008 256.922 7.672 257.434 7.672 c 293.988 7.672 + l 294.488 7.672 294.832 8.008 294.832 8.516 c 294.832 17.484 l 294.832 +17.98 294.488 18.316 293.988 18.316 c 269.414 18.316 l 269.086 18.316 268.914 + 18.496 268.914 18.832 c 268.914 30.148 l 268.914 30.477 269.086 30.656 +269.414 30.656 c 289.883 30.656 l 290.379 30.656 290.711 30.984 290.711 +31.484 c 290.711 40.375 l 290.711 40.875 290.379 41.211 289.883 41.211 c + 269.414 41.211 l 269.086 41.211 268.914 41.383 268.914 41.719 c 268.914 + 53.543 l 268.914 53.879 269.086 54.043 269.414 54.043 c 293.988 54.043 +l 294.488 54.043 294.832 54.379 294.832 54.879 c 294.832 63.867 l 294.832 + 64.352 294.488 64.695 293.988 64.695 c 257.434 64.695 l 256.922 64.695 +256.586 64.352 256.586 63.867 c 256.586 8.516 l f +317.418 53.715 m 323.879 53.715 l 329.578 53.715 333.016 52.035 334.441 + 47.418 c 335.031 45.746 335.359 43.562 335.359 36.184 c 335.359 28.812 +335.031 26.621 334.441 24.941 c 333.016 20.34 329.578 18.66 323.879 18.66 + c 317.418 18.66 l 317.082 18.66 316.91 18.832 316.91 19.168 c 316.91 53.199 + l 316.91 53.543 317.082 53.715 317.418 53.715 c h +304.586 8.516 m 304.586 8.008 304.922 7.672 305.43 7.672 c 326.645 7.672 + l 336.621 7.672 343.578 11.953 346.348 20.504 c 347.355 23.688 347.855 +26.875 347.855 36.184 c 347.855 45.5 347.355 48.68 346.348 51.863 c 343.578 + 60.422 336.621 64.695 326.645 64.695 c 305.43 64.695 l 304.922 64.695 304.586 + 64.352 304.586 63.867 c 304.586 8.516 l f +Q q +349.473 0.242 19.098 18.48 re W n +q +349 0 20 19 re W n + q +0.156863 0.207843 0.470588 rg +357.559 8.047 m 359.117 8.047 l 359.352 8.047 359.59 8.008 359.836 7.957 + c 360.066 7.91 360.258 7.82 360.445 7.711 c 360.609 7.598 360.758 7.457 + 360.855 7.301 c 360.969 7.137 361.035 6.949 361.035 6.719 c 361.035 6.457 + 360.977 6.234 360.91 6.039 c 360.848 5.844 360.746 5.703 360.574 5.57 c + 360.426 5.465 360.223 5.375 359.961 5.34 c 359.723 5.277 359.402 5.262 +359.051 5.262 c 357.559 5.262 l h +357.559 9.566 m 357.559 13.379 l 355.859 13.379 l 355.859 3.758 l 359.051 + 3.758 l 359.59 3.758 360.094 3.809 360.551 3.941 c 361 4.07 361.387 4.25 + 361.715 4.504 c 362.035 4.758 362.281 5.062 362.453 5.434 c 362.625 5.809 + 362.715 6.234 362.715 6.719 c 362.715 7.16 362.602 7.547 362.387 7.875 +c 362.176 8.195 361.848 8.48 361.445 8.703 c 361.91 8.941 362.223 9.27 362.402 + 9.688 c 362.586 10.105 362.684 10.59 362.684 11.125 c 362.684 11.754 l +362.684 12.035 362.699 12.312 362.723 12.559 c 362.75 12.805 362.805 13.023 + 362.871 13.199 c 362.871 13.379 l 361.125 13.379 l 361.082 13.27 361.051 + 13.156 361.035 13 c 361.02 12.859 360.984 12.688 360.984 12.535 c 360.977 + 12.379 360.969 12.215 360.969 12.082 c 360.969 11.941 360.969 11.828 360.969 + 11.738 c 360.969 11.125 l 360.969 10.598 360.848 10.203 360.602 9.949 c + 360.355 9.695 359.922 9.566 359.348 9.566 c h +352.539 8.703 m 352.539 9.695 352.711 10.621 353.055 11.492 c 353.41 12.352 + 353.875 13.098 354.484 13.738 c 355.09 14.363 355.801 14.863 356.605 15.23 + c 357.41 15.586 358.27 15.781 359.199 15.781 c 359.805 15.781 360.395 15.691 + 360.953 15.527 c 361.52 15.363 362.059 15.125 362.543 14.828 c 363.043 +14.527 363.48 14.164 363.898 13.723 c 364.297 13.32 364.637 12.828 364.938 + 12.312 c 365.219 11.777 365.43 11.215 365.594 10.605 c 365.758 9.992 365.832 + 9.359 365.832 8.703 c 365.832 8.039 365.758 7.398 365.594 6.793 c 365.43 + 6.18 365.219 5.613 364.938 5.094 c 364.637 4.57 364.297 4.105 363.898 3.684 + c 363.48 3.266 363.043 2.891 362.543 2.586 c 362.059 2.293 361.52 2.062 + 360.953 1.898 c 360.395 1.734 359.805 1.652 359.199 1.652 c 358.27 1.652 + 357.41 1.832 356.605 2.203 c 355.801 2.555 355.09 3.055 354.484 3.676 c + 353.875 4.309 353.41 5.062 353.055 5.906 c 352.711 6.77 352.539 7.688 352.539 + 8.703 c h +351.168 8.703 m 351.168 7.898 351.258 7.137 351.441 6.406 c 351.645 5.68 + 351.898 5.004 352.262 4.367 c 352.605 3.75 353.023 3.184 353.516 2.66 c + 354 2.152 354.555 1.727 355.141 1.363 c 355.73 1.012 356.375 0.734 357.059 + 0.543 c 357.738 0.34 358.445 0.242 359.199 0.242 c 359.926 0.242 360.648 + 0.34 361.312 0.543 c 362.012 0.734 362.648 1.012 363.25 1.363 c 363.848 + 1.727 364.391 2.152 364.879 2.66 c 365.371 3.184 365.793 3.75 366.129 4.367 + c 366.48 5.004 366.742 5.68 366.938 6.406 c 367.129 7.137 367.242 7.898 + 367.242 8.703 c 367.242 9.895 367.02 11.016 366.594 12.035 c 366.184 13.082 + 365.594 13.969 364.871 14.73 c 364.133 15.5 363.281 16.094 362.32 16.52 + c 361.348 16.953 360.305 17.176 359.199 17.176 c 358.445 17.176 357.738 + 17.078 357.059 16.887 c 356.375 16.676 355.73 16.41 355.141 16.043 c 354.555 + 15.684 354 15.246 353.516 14.73 c 353.023 14.215 352.605 13.648 352.262 + 13.023 c 351.898 12.402 351.645 11.715 351.441 10.992 c 351.254 10.27 351.168 + 9.5 351.168 8.703 c f + Q +Q +Q q +0.156863 0.207843 0.470588 rg +0 112.809 m 0 103.992 0.336 101.07 1.59 97.367 c 4.609 88.066 11.906 83.375 + 21.879 83.375 c 31.523 83.375 38.566 88.066 41.754 96.035 c 42.004 96.465 + 41.84 96.875 41.336 97.039 c 32.195 101.152 l 31.688 101.406 31.277 101.234 + 31.016 100.734 c 29.422 97.039 26.75 94.273 21.969 94.273 c 17.523 94.273 + 14.672 96.621 13.414 100.57 c 12.75 102.656 12.496 104.664 12.496 112.809 + c 12.496 120.941 12.75 122.957 13.414 125.051 c 14.672 128.984 17.523 131.332 + 21.969 131.332 c 26.75 131.332 29.422 128.566 31.016 124.887 c 31.277 124.379 + 31.688 124.207 32.195 124.461 c 41.336 128.566 l 41.84 128.73 42.004 129.16 + 41.754 129.574 c 38.566 137.539 31.523 142.238 21.879 142.238 c 11.906 +142.238 4.609 137.539 1.59 128.238 c 0.336 124.543 0 121.605 0 112.809 c + f +80.258 125.051 m 80.93 123.031 81.176 120.27 81.176 112.809 c 81.176 105.344 + 80.93 102.574 80.258 100.57 c 79 96.621 75.977 94.273 71.285 94.273 c 66.586 + 94.273 63.57 96.621 62.32 100.57 c 61.648 102.574 61.387 105.344 61.387 + 112.809 c 61.387 120.27 61.648 123.031 62.32 125.051 c 63.57 128.984 66.586 + 131.332 71.285 131.332 c 75.977 131.332 79 128.984 80.258 125.051 c h +50.488 128.41 m 49.234 124.461 48.898 121.277 48.898 112.809 c 48.898 104.336 + 49.234 101.152 50.488 97.211 c 53.418 87.984 61.305 83.375 71.285 83.375 + c 81.266 83.375 89.152 87.984 92.082 97.211 c 93.344 101.152 93.68 104.336 + 93.68 112.809 c 93.68 121.277 93.344 124.461 92.082 128.41 c 89.152 137.629 + 81.266 142.238 71.285 142.238 c 61.305 142.238 53.418 137.629 50.488 128.41 + c f +103.594 85.137 m 103.594 84.641 103.93 84.301 104.438 84.301 c 114.418 +84.301 l 115.09 84.301 115.508 84.547 115.754 85.137 c 130.18 117.676 l +130.516 117.676 l 144.695 85.137 l 144.941 84.547 145.352 84.301 146.023 + 84.301 c 155.84 84.301 l 156.34 84.301 156.676 84.641 156.676 85.137 c +156.676 140.477 l 156.676 140.977 156.34 141.312 155.84 141.312 c 146.367 + 141.312 l 145.859 141.312 145.523 140.977 145.523 140.477 c 145.523 108.363 + l 145.188 108.363 l 134.625 132.43 l 134.289 133.191 133.781 133.52 133.027 + 133.52 c 127.246 133.52 l 126.496 133.52 125.988 133.191 125.652 132.43 + c 115.09 108.363 l 114.754 108.363 l 114.754 140.477 l 114.754 140.977 +114.418 141.312 113.918 141.312 c 104.438 141.312 l 103.93 141.312 103.594 + 140.977 103.594 140.477 c 103.594 85.137 l f +198.695 102.656 m 198.695 98.047 195.594 94.945 190.402 94.945 c 181.004 + 94.945 l 180.668 94.945 180.504 95.117 180.504 95.453 c 180.504 109.789 + l 180.504 110.117 180.668 110.297 181.004 110.297 c 190.402 110.297 l 195.594 + 110.297 198.695 107.27 198.695 102.656 c h +169.016 141.312 m 168.508 141.312 168.172 140.977 168.172 140.477 c 168.172 + 85.137 l 168.172 84.641 168.508 84.301 169.016 84.301 c 191.156 84.301 +l 203.562 84.301 211.027 91.758 211.027 102.656 c 211.027 113.398 203.48 + 120.941 191.156 120.941 c 181.004 120.941 l 180.668 120.941 180.504 121.105 + 180.504 121.449 c 180.504 140.477 l 180.504 140.977 180.168 141.312 179.668 + 141.312 c 169.016 141.312 l f +219.383 120.352 m 219.383 85.137 l 219.383 84.641 219.719 84.301 220.227 + 84.301 c 230.871 84.301 l 231.371 84.301 231.715 84.641 231.715 85.137 +c 231.715 120.695 l 231.715 127.484 235.48 131.332 241.27 131.332 c 246.969 + 131.332 250.742 127.484 250.742 120.695 c 250.742 85.137 l 250.742 84.641 + 251.078 84.301 251.578 84.301 c 262.223 84.301 l 262.73 84.301 263.066 +84.641 263.066 85.137 c 263.066 120.352 l 263.066 134.527 254.02 142.238 + 241.27 142.238 c 228.438 142.238 219.383 134.527 219.383 120.352 c f +289.496 141.312 m 289.004 141.312 288.66 140.977 288.66 140.477 c 288.66 + 95.789 l 288.66 95.453 288.496 95.273 288.16 95.273 c 273.742 95.273 l +273.227 95.273 272.898 94.945 272.898 94.445 c 272.898 85.137 l 272.898 +84.641 273.227 84.301 273.742 84.301 c 315.918 84.301 l 316.418 84.301 316.754 + 84.641 316.754 85.137 c 316.754 94.445 l 316.754 94.945 316.418 95.273 +315.918 95.273 c 301.492 95.273 l 301.156 95.273 300.992 95.453 300.992 +95.789 c 300.992 140.477 l 300.992 140.977 300.656 141.312 300.156 141.312 + c 289.496 141.312 l f +326.223 85.137 m 326.223 84.641 326.559 84.301 327.062 84.301 c 337.711 + 84.301 l 338.207 84.301 338.543 84.641 338.543 85.137 c 338.543 140.477 + l 338.543 140.977 338.207 141.312 337.711 141.312 c 327.062 141.312 l 326.559 + 141.312 326.223 140.977 326.223 140.477 c 326.223 85.137 l f +351.168 85.137 m 351.168 84.641 351.496 84.301 352 84.301 c 362.066 84.301 + l 362.648 84.301 363.148 84.547 363.488 85.137 c 383.617 121.031 l 384.035 + 121.031 l 384.035 85.137 l 384.035 84.641 384.371 84.301 384.871 84.301 + c 394.352 84.301 l 394.852 84.301 395.188 84.641 395.188 85.137 c 395.188 + 140.477 l 395.188 140.977 394.852 141.312 394.352 141.312 c 384.371 141.312 + l 383.699 141.312 383.273 141.066 382.945 140.477 c 362.738 104.664 l 362.32 + 104.664 l 362.32 140.477 l 362.32 140.977 361.984 141.312 361.477 141.312 + c 352 141.312 l 351.496 141.312 351.168 140.977 351.168 140.477 c 351.168 + 85.137 l f +Q q +404.855 81.742 45.145 61.109 re W n +q +404 81 46 62 re W n + q +0.156863 0.207843 0.470588 rg +405.219 112.809 m 405.219 104.336 405.555 101.152 406.809 97.211 c 409.746 + 87.984 417.633 83.375 427.777 83.375 c 438.422 83.375 445.391 88.656 448.074 + 95.535 c 448.32 96.035 448.23 96.539 447.738 96.801 c 438.766 100.57 l +438.176 100.734 437.75 100.57 437.586 100.145 c 435.32 96.285 432.469 94.273 + 427.777 94.273 c 422.906 94.273 419.898 96.699 418.641 100.652 c 417.961 + 102.656 417.715 105.344 417.715 112.809 c 417.715 120.27 417.961 123.031 + 418.641 125.051 c 419.898 128.984 422.996 131.332 427.941 131.332 c 432.215 + 131.332 435.91 129.238 437.086 125.469 c 437.504 124.039 437.75 122.285 + 437.75 119.852 c 437.75 119.516 437.586 119.352 437.25 119.352 c 429.539 + 119.352 l 429.039 119.352 428.703 119.008 428.703 118.508 c 428.703 110.453 + l 428.703 109.961 429.039 109.625 429.539 109.625 c 449.156 109.625 l 449.664 + 109.625 450 109.961 450 110.453 c 450 115.152 l 450 120.18 449.582 124.887 + 448.574 127.984 c 445.719 137.121 437.84 142.238 427.777 142.238 c 417.633 + 142.238 409.746 137.629 406.809 128.41 c 405.555 124.461 405.219 121.277 + 405.219 112.809 c f + Q +Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/templates/img/tcg-logo.svg b/templates/img/tcg-logo.svg new file mode 100644 index 0000000..cbaa080 --- /dev/null +++ b/templates/img/tcg-logo.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/img/tcg.png b/templates/img/tcg.png new file mode 100644 index 0000000..aa5a3e1 Binary files /dev/null and b/templates/img/tcg.png differ diff --git a/templates/old+bak/eckelmeckel-01.tpl.typ b/templates/old+bak/eckelmeckel-01.tpl.typ new file mode 100644 index 0000000..27da2ce --- /dev/null +++ b/templates/old+bak/eckelmeckel-01.tpl.typ @@ -0,0 +1,227 @@ +// Fonts +#let font_head_face = "Alegreya Sans" +#let font_head_size = 24pt +#let font_text_face = "Libre Baskerville" +// #let font_text_face = "Literata" +#let font_text_size = 10.5pt +#let font_mono_face = "Fira Code" +#let font_mono_size = 10pt +#let font_math_face = "STIX Two Math" +// #let font_math_face = "Fira Math" +// #let font_math_face = "Noto Sans Math" +#let font_math_size = 10pt + +// Informative box +#let informative( + content, + kind: none, +) = context { + let kind = if kind != none { kind } else { "Informative Text" } + let post = none + + let meas = measure(content) + v(2pt) + + if meas.height < 2in { + box( + [ + #text(kind, font: font_head_face, weight: "bold") + + #content + ], + width: 100%, + inset: 10pt, + stroke: ( + top: .5pt, + bottom: .5pt, + ), + ) + } else { + block( + breakable: false, + [ + #box( + width: 100%, + inset: 3pt, + stroke: ( + top: 2.5pt, + left: 0.5pt, + bottom: none, + right: 0.5pt, + ), + ) + #v(-1em) + #block( + [ + #text("Start of " + kind, font: font_head_face, weight: "bold") + + #content + + #text("End of " + kind, font: font_head_face, weight: "bold") + ], + width: 100%, + inset: (left: 10pt), + ) + #v(-1em) + #box( + width: 100%, + inset: 3pt, + stroke: ( + top: none, + left: 0.5pt, + bottom: 2.5pt, + right: 0.5pt, + ), + ) + ] + ) + } +} + +#let conf( + title: none, + subtitle: none, + doctype: none, + status: none, + version: none, + date: none, + year: none, + doc, +) = context { + // + // Font settings + // + // Normal text + set text( + font: font_text_face, + size: font_text_size, + ) + // Math + show math.equation: set text( + font: font_math_face, + size: font_math_size, + ) + // Code + show raw: set text( + font: font_mono_face, + size: font_mono_size, + ) + // Headings + set heading(numbering: "1.1") + show heading: it => block()[ + #let size = font_head_size - it.level * 3pt + #if size < 10pt { size = 10pt } + #set align(center) + #set text( + font: font_head_face, + size: size, + weight: "bold", + ) + #it + ] + + // Outline Table of Content/Figures/Tables/etc. + show outline.entry.where(level: 1): set block(above: 1.2em) + show outline.entry.where(level: 1): set text(size: 1.2em, font: font_head_face, weight: "bold") + show outline.entry.where(level: 1): it => { + show repeat: none + it + } + // show outline.entry: it => link( + // it.element.location(), + // it.indented(it.prefix(), it.inner()), + // ) + + + let horizontalrule = line(start: (25%, 0%), end: (75%, 0%)) + + show terms: it => { + it + .children + .map(child => [ + #strong[#child.term] + #block(inset: (left: 1.5em, top: -0.4em))[#child.description] + ]) + .join() + } + + set table( + inset: 6pt, + stroke: 1pt, + ) + + show figure.where(kind: table): set figure.caption(position: bottom) + + show figure.where(kind: image): set figure.caption(position: bottom) + + // + // Title page + // + set page(paper: "us-letter", margin: 1in) + set align(left + top) + + image("tcg.png", width: 30%) + + set align(left + bottom) + + text(48pt, title, font: font_head_face, weight: "extrabold") + v(-30pt) + + if (subtitle != none) { + text(32pt, subtitle, font: font_head_face, weight: "medium") + v(-20pt) + } + + line(length: 100%, stroke: 2pt) + v(-20pt) + + text(32pt, doctype, font: font_head_face, weight: "light") + v(-16pt) + + text(24pt, status, font: font_head_face, weight: "extralight") + v(-12pt) + + line(length: 100%, stroke: 2pt) + + v(-2pt) + text(20pt, version, font: font_head_face, weight: "light") + v(-6pt) + text(16pt, date, font: font_head_face, weight: "light") + v(-4pt) + // text(12pt, "Contact: " + link("mailto:admin@trustedcomputinggroup.org"), font: font_head_face, weight: "extralight") + text(12pt, "Contact: " + link("mailto:admin@trustedcomputinggroup.org"), font: font_head_face, weight: "light") + + // + // Front matter + // + let foot = ( + line(length: 100%, stroke: 0.5pt) + + grid( + align: (left, center, right), + columns: (1in, 5.5in, 1in), + rows: 0.5in, + text(sym.copyright + " " + year + " TCG", font: font_head_face, weight: "light"), + text(title + if subtitle != none { [ -- ] + subtitle }, font: font_head_face, weight: "light"), + text( + context counter(page).display( + "1", + both: false, + ), + font: font_head_face, + weight: "light", + ), + ) + ) + set text(font: font_head_face, weight: "light") + set page( + paper: "us-letter", + margin: (bottom: 1in, rest: 0.5in), + footer: foot, + ) + + set align(left + top) + + set text(font: font_text_face, size: font_text_size) + + doc +} diff --git a/templates/old+bak/eckelmeckel-02.tpl.typ b/templates/old+bak/eckelmeckel-02.tpl.typ new file mode 100644 index 0000000..8b27734 --- /dev/null +++ b/templates/old+bak/eckelmeckel-02.tpl.typ @@ -0,0 +1,307 @@ +// Fonts +#let font_head_face = "Alegreya Sans" +#let font_head_size = 24pt +#let font_text_face = "Libre Baskerville" +// #let font_text_face = "Literata" +#let font_text_size = 10.5pt +#let font_mono_face = "Fira Code" +#let font_mono_size = 10pt +#let font_math_face = "STIX Two Math" +// #let font_math_face = "Fira Math" +// #let font_math_face = "Noto Sans Math" +#let font_math_size = 10pt + +// Informative box +#let informative( + content, + kind: none, +) = context { + let kind = if kind != none { kind } else { "Informative Text" } + let post = none + + let meas = measure(content) + v(2pt) + + if meas.height < 2in { + block( + breakable: false, + [ + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: 2.5pt, + left: 0.5pt, + bottom: none, + right: 0.5pt, + ), + ) + #block( + [ + #v(-1em) + #text([\u{1f6c8} ~ ] + kind, font: font_head_face, weight: "bold") + + #content + ], + width: 100%, + inset: (left: 10pt), + ) + + #v(-0.6em) + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: none, + left: 0.5pt, + bottom: 2.5pt, + right: 0.5pt, + ), + ) + ] + ) + // box( + // [ + // #text(kind, font: font_head_face, weight: "bold") + + // #content + // ], + // width: 100%, + // inset: 10pt, + // stroke: ( + // top: .5pt, + // bottom: .5pt, + // ), + // ) + } else { + block( + breakable: false, + [ + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: 2.5pt, + left: 0.5pt, + bottom: none, + right: 0.5pt, + ), + ) + #block( + [ + #v(-1em) + #text([\u{1f6c8} ~ Start of ] + kind, font: font_head_face, weight: "bold") + ], + width: 100%, + inset: (left: 10pt), + ) + ], + ) + block( + [ + #content + ], + width: 100%, + inset: (left: 10pt), + ) + block( + breakable: false, + [ + #block( + [ + #text([\u{1f6c8} ~ End of ] + kind, font: font_head_face, weight: "bold") + #v(-0.8em) + ], + width: 100%, + inset: (left: 10pt), + ) + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: none, + left: 0.5pt, + bottom: 2.5pt, + right: 0.5pt, + ), + ) + ], + ) + } +} + +#let conf( + title: none, + subtitle: none, + doctype: none, + status: none, + version: none, + date: none, + year: none, + doc, +) = context { + // + // Font settings + // + // Normal text + set text( + font: font_text_face, + size: font_text_size, + ) + // Math + show math.equation: set text( + font: font_math_face, + size: font_math_size, + ) + // Code + show raw: set text( + font: font_mono_face, + size: font_mono_size, + ) + // Headings + set heading(numbering: "1.1") + show heading: it => block()[ + #let size = font_head_size - it.level * 3pt + #if size < 10pt { size = 10pt } + #set align(center) + #set text( + font: font_head_face, + size: size, + weight: "bold", + ) + #it + ] + + // Outline Table of Content/Figures/Tables/etc. + show outline.entry.where(level: 1): set block(above: 1.2em) + show outline.entry.where(level: 1): set text(size: 1.2em, font: font_head_face, weight: "bold") + show outline.entry.where(level: 1): it => { + show repeat: none + it + } + // show outline.entry: it => link( + // it.element.location(), + // it.indented(it.prefix(), it.inner()), + // ) + + + let horizontalrule = line(start: (25%, 0%), end: (75%, 0%)) + + show terms: it => { + it + .children + .map(child => [ + #strong[#child.term] + #block(inset: (left: 1.5em, top: -0.4em))[#child.description] + ]) + .join() + } + + set table( + inset: 6pt, + stroke: 1pt, + ) + + show figure.where(kind: table): set figure.caption(position: bottom) + + show figure.where(kind: image): set figure.caption(position: bottom) + + // + // Title page + // + set page(paper: "us-letter", margin: 1in) + set align(left + top) + // TCG logo + place( + top + left, + image("tcg.png", width: 30%), + ) + // Document type + place( + top + right, + box( + width: auto, + fill: black, + inset: 6pt, + radius: 4pt, + stroke: 0.5pt, + [ + #text( + upper(doctype), + font: font_head_face, + weight: "bold", + // weight: "extrabold", + size: 32pt, + // size: font_head_size * 1.3, + fill: white, + ) + ], + ) + ) + + + // HERE THE "SPECIFICATION" text (upper case always) + + set align(left + bottom) + + text(48pt, title, font: font_head_face, weight: "extrabold") + v(-30pt) + + if (subtitle != none) { + text(32pt, subtitle, font: font_head_face, weight: "medium") + v(-20pt) + } + + line(length: 100%, stroke: 2pt) + v(-20pt) + + text(32pt, doctype, font: font_head_face, weight: "light") + v(-16pt) + + text(24pt, status, font: font_head_face, weight: "extralight") + v(-12pt) + + line(length: 100%, stroke: 2pt) + + v(-2pt) + text(20pt, version, font: font_head_face, weight: "light") + v(-6pt) + text(16pt, date, font: font_head_face, weight: "light") + v(-4pt) + // text(12pt, "Contact: " + link("mailto:admin@trustedcomputinggroup.org"), font: font_head_face, weight: "extralight") + text(12pt, "Contact: " + link("mailto:admin@trustedcomputinggroup.org"), font: font_head_face, weight: "light") + + // + // Front matter + // + let foot = ( + line(length: 100%, stroke: 0.5pt) + + grid( + align: (left, center, right), + columns: (1in, 5.5in, 1in), + rows: 0.5in, + text(sym.copyright + " " + year + " TCG", font: font_head_face, weight: "light"), + text(title + if subtitle != none { [ -- ] + subtitle }, font: font_head_face, weight: "light"), + text( + context counter(page).display( + "1", + both: false, + ), + font: font_head_face, + weight: "light", + ), + ) + ) + set text(font: font_head_face, weight: "light") + set page( + paper: "us-letter", + margin: (bottom: 1in, rest: 0.5in), + footer: foot, + ) + + set align(left + top) + + set text(font: font_text_face, size: font_text_size) + + doc +} diff --git a/templates/old+bak/eckelmeckel-03.tpl.typ b/templates/old+bak/eckelmeckel-03.tpl.typ new file mode 100644 index 0000000..74d64cc --- /dev/null +++ b/templates/old+bak/eckelmeckel-03.tpl.typ @@ -0,0 +1,357 @@ +/* -------------------------------------------------------------------------- */ +/* TCG Typst Template */ +/* Version: 0.2.7 */ +/* Filename: 'tcg-typst-template-v0.2.7-alpha.tpl.typ' */ +/* Authors: */ +/* * John Doe (john.doe@example.com) */ +/* * Jane Doe (jane.doe@acme.org) */ +/* */ +/* Copyright © 2025 Trusted Computing Group */ +/* -------------------------------------------------------------------------- */ + + +/* --- fonts ---------------------------------------------------------------- */ + +#let font-head-face = "Signika" +// #let font-head-face = "Alegreya Sans" +#let font-head-size = 24pt +#let font-text-face = "Yrsa" +// #let font-text-face = "Libre Baskerville" +// #let font-text-face = "Literata" +#let font-text-size = 11.5pt +#let font-mono-face = "Fira Code" +#let font-mono-size = 10pt +#let font-math-face = "STIX Two Math" +// #let font-math-face = "Fira Math" +// #let font-math-face = "Noto Sans Math" +#let font-math-size = 10pt + + + +/* --- colors --------------------------------------------------------------- */ + +/* TCG primary colors */ +#let tcg-color-shade = rgb("#efefefff") + +/* element colors */ +#let color-code-fg = rgb("#000000ff") +#let color-code-bg = rgb("#f9f9f9ff") +#let color-table-row-odd = rgb("#ffffff00") +#let color-table-row-even = tcg-color-shade + + + +/* --- definitions ---------------------------------------------------------- */ + +#let table-toprule = table.hline(stroke: 0.08em) +#let table-bottomrule = table-toprule +#let table-midrule = table.hline(stroke: 0.05em) + +#let table-header-text(body) = text(body, weight: "semibold", font: font-head-face) + +/* --- functions ------------------------------------------------------------ */ + +/* appendix */ +#let appendix(body) = { + set heading(numbering: "A.1", supplement: [Anhang]) + counter(heading).update(0) + body +} + +// Informative box +#let informative( + content, + kind: none, +) = context { + let kind = if kind != none { kind } else { "Informative Text" } + let post = none + + let meas = measure(content) + v(2pt) + + if meas.height < 2in { + block( + breakable: false, + [ + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: 2.5pt, + left: 0.5pt, + bottom: none, + right: 0.5pt, + ), + ) + #block( + [ + #v(-1em) + #text([\u{1f6c8} ~ ] + kind, font: font-head-face, weight: "bold") + + #content + ], + width: 100%, + inset: (left: 10pt), + ) + + #v(-0.6em) + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: none, + left: 0.5pt, + bottom: 2.5pt, + right: 0.5pt, + ), + ) + ], + ) + // box( + // [ + // #text(kind, font: font-head-face, weight: "bold") + + // #content + // ], + // width: 100%, + // inset: 10pt, + // stroke: ( + // top: .5pt, + // bottom: .5pt, + // ), + // ) + } else { + block( + breakable: false, + [ + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: 2.5pt, + left: 0.5pt, + bottom: none, + right: 0.5pt, + ), + ) + #block( + [ + #v(-1em) + #text([\u{1f6c8} ~ Start of ] + kind, font: font-head-face, weight: "bold") + ], + width: 100%, + inset: (left: 10pt), + ) + ], + ) + block( + [ + #content + ], + width: 100%, + inset: (left: 10pt), + ) + block( + breakable: false, + [ + #block( + [ + #text([\u{1f6c8} ~ End of ] + kind, font: font-head-face, weight: "bold") + #v(-0.8em) + ], + width: 100%, + inset: (left: 10pt), + ) + #box( + width: 100%, + inset: 2.5pt, + stroke: ( + top: none, + left: 0.5pt, + bottom: 2.5pt, + right: 0.5pt, + ), + ) + ], + ) + } +} + +#let conf( + title: "The Coolest and Most Awesome TCG Document Ever Made", + subtitle: "A TCG Specification", + doctype: "Specification", // must be one of "Specification", "Reference", "Guidance" + status: "Draft", // must be one of "Draft", "Published" + version: "Version 184, Revision 0.37", + date: "April 15, 2003", + year: none, + doc, +) = context { + // + // Font settings + // + // Normal text + set text( + font: font-text-face, + size: font-text-size, + ) + // Math + show math.equation: set text( + font: font-math-face, + size: font-math-size, + ) + // Code + show raw: set text( + font: font-mono-face, + size: font-mono-size, + ) + // Headings + set heading(numbering: "1.1") + show heading: it => block()[ + #let size = font-head-size - it.level * 3pt + #if size < 10pt { size = 10pt } + #set align(center) + #set text( + font: font-head-face, + size: size, + weight: "bold", + ) + #it + ] + + // Outline Table of Content/Figures/Tables/etc. + show outline.entry.where(level: 1): set block(above: 1.2em) + show outline.entry.where(level: 1): set text(size: 1.2em, font: font-head-face, weight: "bold") + show outline.entry.where(level: 1): it => { + show repeat: none + it + } + // show outline.entry: it => link( + // it.element.location(), + // it.indented(it.prefix(), it.inner()), + // ) + + + let horizontalrule = line(start: (25%, 0%), end: (75%, 0%)) + + show terms: it => { + it + .children + .map(child => [ + #strong[#child.term] + #block(inset: (left: 1.5em, top: -0.4em))[#child.description] + ]) + .join() + } + + set table( + inset: 6pt, + stroke: 1pt, + ) + + show figure.where(kind: table): set figure.caption(position: bottom) + + show figure.where(kind: image): set figure.caption(position: bottom) + + // + // Title page + // + set page(paper: "us-letter", margin: 1in) + set align(left + top) + // TCG logo + place( + top + left, + link( + "https://trustedcomputinggroup.org/", + image("img/tcg-logo.svg", width: 30%, alt: "TCG Logo"), + ), + ) + // Document type + place( + top + right, + box( + width: auto, + fill: black, + inset: 6pt, + radius: 4pt, + stroke: 0.5pt, + [ + #text( + upper(doctype), + font: font-head-face, + weight: "bold", + // weight: "extrabold", + size: 32pt, + // size: font-head-size * 1.3, + fill: white, + ) + ], + ), + ) + + + // HERE THE "SPECIFICATION" text (upper case always) + + set align(left + bottom) + + text(48pt, title, font: font-head-face, weight: "extrabold") + v(-30pt) + + if (subtitle != none) { + text(32pt, subtitle, font: font-head-face, weight: "medium") + v(-20pt) + } + + line(length: 100%, stroke: 2pt) + v(-20pt) + + text(32pt, doctype, font: font-head-face, weight: "light") + v(-16pt) + + text(24pt, status, font: font-head-face, weight: "extralight") + v(-12pt) + + line(length: 100%, stroke: 2pt) + + v(-2pt) + text(20pt, version, font: font-head-face, weight: "light") + v(-6pt) + text(16pt, date, font: font-head-face, weight: "light") + v(-4pt) + // text(12pt, "Contact: " + link("mailto:admin@trustedcomputinggroup.org"), font: font-head-face, weight: "extralight") + text(12pt, "Contact: " + link("mailto:admin@trustedcomputinggroup.org"), font: font-head-face, weight: "light") + + // + // Front matter + // + let foot = ( + line(length: 100%, stroke: 0.5pt) + + grid( + align: (left, center, right), + columns: (1in, 5.5in, 1in), + rows: 0.5in, + text(sym.copyright + " " + year + " TCG", font: font-head-face, weight: "light"), + text(title + if subtitle != none { [ -- ] + subtitle }, font: font-head-face, weight: "light"), + text( + context counter(page).display( + "1", + both: false, + ), + font: font-head-face, + weight: "light", + ), + ) + ) + set text(font: font-head-face, weight: "light") + set page( + paper: "us-letter", + margin: (bottom: 1in, rest: 0.5in), + footer: foot, + ) + + set align(left + top) + + set text(font: font-text-face, size: font-text-size) + + doc +} diff --git a/themes/GitHub.tmTheme b/themes/GitHub.tmTheme new file mode 100644 index 0000000..afbd2bb --- /dev/null +++ b/themes/GitHub.tmTheme @@ -0,0 +1,528 @@ + + + + + name + GitHub + settings + + + settings + + background + #FFFFFF + caret + #333333 + foreground + #333333 + invisibles + #E0E0E0 + lineHighlight + #F8EEC7 + selection + #B0CDE7 + selectionBorder + #B0CDE7 + inactiveSelection + #EDEDED + findHighlight + #FFE792 + findHighlightForeground + #333333 + + + + name + Comments + scope + comment + settings + + foreground + #969896 + + + + name + Operators + scope + keyword.operator, support.constant + settings + + fontStyle + + foreground + #A71D5D + + + + name + Operators + scope + constant.language + settings + + fontStyle + + foreground + #0086B3 + + + + name + Keywords + scope + keyword, storage + settings + + fontStyle + + foreground + #a71d5d + + + + name + Types + scope + storage.type + settings + + fontStyle + + foreground + #a71d5d + + + + name + Types + scope + support.type + settings + + fontStyle + + foreground + #0086B3 + + + + scope + variable + settings + + foreground + #0086b3 + + + + scope + variable.language + settings + + foreground + #df5000 + + + + scope + variable.parameter.function + settings + + foreground + #333 + + + + name + Functions + scope + entity.name.function, entity + settings + + fontStyle + + foreground + #795da3 + + + + name + Functions + scope + support.function + settings + + fontStyle + + foreground + #0086B3 + + + + name + Classes + scope + entity.name.type, entity.other.inherited-class + settings + + fontStyle + + foreground + #000000 + + + + name + Classes + scope + support.class + settings + + fontStyle + + foreground + #0086b3 + + + + name + Exceptions + scope + entity.name.exception + settings + + foreground + #F93232 + + + + name + Sections + scope + entity.name.section + settings + + fontStyle + + + + + name + Numbers + scope + constant.numeric, constant + settings + + fontStyle + + foreground + #0086b3 + + + + name + Strings + scope + constant.character, string, string punctuation + settings + + fontStyle + + foreground + #183691 + + + + name + Strings: Regular Expressions + scope + string.regexp, string.regexp constant.character, string.regexp punctuation + settings + + fontStyle + + foreground + #009926 + + + + name + Strings: Symbols + scope + constant.other.symbol + settings + + foreground + #990073 + + + + name + Embedded Source + scope + string source, text source + settings + + fontStyle + + foreground + #333333 + + + + scope + variable.other.property + settings + + foreground + #333 + fontStyle + + + + + scope + entity.name + settings + + fontStyle + + foreground + #333333 + + + + scope + invalid + settings + + fontStyle + + foreground + #f00 + + + + + + + name + HTML: Tags + scope + entity.name.tag + settings + + fontStyle + + foreground + #63a35c + + + + name + HTML: Tags Punctuation + scope + punctuation.definition.tag + settings + + fontStyle + + foreground + #333 + + + + name + HTML: Attribute Punctuation + scope + meta.tag string punctuation + settings + + fontStyle + + foreground + #183691 + + + + name + HTML: Entities + scope + constant.character.entity + settings + + fontStyle + + foreground + #000000 + + + + name + HTML: Attribute Names + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #795da3 + + + + name + HTML: Attribute Values + scope + meta.tag string.quoted, meta.tag string.quoted constant.character.entity + settings + + fontStyle + + foreground + #183691 + + + + + + scope + meta.selector, meta.selector entity, meta.selector entity punctuation, + entity.name.tag.css, entity.other.attribute-name.class, + keyword.control.html.sass + settings + + fontStyle + + foreground + #63a35c + + + + scope + entity.other.attribute-name.class, constant.other.unit + settings + + fontStyle + + foreground + #795da3 + + + + scope + support.type.property-name, support.constant.property-value + settings + + fontStyle + + foreground + #0086b3 + + + + + + + scope + keyword.other.special-method.ruby.gem + settings + + foreground + #0086B3 + fontStyle + + + + + scope + variable.other.block.ruby + settings + + foreground + #000 + fontStyle + + + + + + + scope + support.function.prelude, variable.other.generic-type.haskell + settings + + foreground + #000 + fontStyle + + + + + scope + constant.other.haskell, support.constant.haskell + settings + + fontStyle + + foreground + #445588 + + + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #75715E + + + + name + diff.deleted + scope + markup.deleted + settings + + foreground + #770000 + background + #FFDDDD + + + + name + diff.inserted + scope + markup.inserted + settings + + foreground + #003300 + background + #DDFFDD + + + + name + diff.changed + scope + markup.changed + settings + + foreground + #ececec + + + + uuid + BF4E1964-0DB9-4E88-8142-E8F52D7EDEEC + + diff --git a/themes/cddl.sublime-syntax b/themes/cddl.sublime-syntax new file mode 100644 index 0000000..2f271ca --- /dev/null +++ b/themes/cddl.sublime-syntax @@ -0,0 +1,239 @@ +%YAML 1.2 +# This is the Sublime syntax definition for the Concise data definition language +# (CDDL), a notational convention to express CBOR and JSON data structures. +# +# More information: https://datatracker.ietf.org/doc/draft-ietf-cbor-cddl/ +# +# LICENSE: BSD-3-Clause +# +# Copyright (c) 2019 Fabian Neumann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--- +name: CDDL +file_extensions: + - cddl +scope: source.cddl + +variables: + id: |- + (?x)(?: + [$@A-Z_a-z] + (?:[\-\.]* + [$@0-9A-Z_a-z] + | + [$@0-9A-Z_a-z] + )*) + # While the spec reads more like "an int must not start with 0" we use a + # lookahead here that says "after a 0 there must be no digit". This makes the + # '0' the invalid character in '01', which looks nicer when highlighted. + uint: '(?:0b[01]+|0x[0-9a-fA-F]+|[1-9]\d*|0(?!\d))' + int: '-?(?:0b[01]+|0x[0-9a-fA-F]+|[1-9]\d*|0(?!\d))' + +contexts: + prototype: + - include: comments + main: + - include: tags + - include: operators + - include: punctuation + - include: controls + - include: bstrb64url + - include: bstrh + - include: bstr + - include: strings + - include: barewords + - include: names + - include: values + - match: '\s' + scope: whitespace + - match: '.' + scope: invalid.illegal.cddl + + tags: + - match: '#\d(\.{{uint}}|)' + scope: support.type.cddl + - match: '#(\d\.{{uint}}|)' + scope: support.type.cddl + + controls: + - match: '\.(and|bits|cbor|cborseq|default|eq|ge|gt|le|lt|ne|regexp|size|within)' + scope: keyword.control.cddl + + operators: + # occurrence + - match: '\?|\+' + scope: keyword.operator + - match: '({{uint}})?(\*)({{uint}})?' + captures: + 1: constant.numeric.cddl + 2: keyword.operator + 3: constant.numeric.cddl + # cuts + - match: '\^' + scope: keyword.operator + # range + - match: '\.\.\.|\.\.' + scope: keyword.operator + # into choice + - match: '&(?=\s*({{id}}|\())' + scope: keyword.operator + # unwrap op + - match: '~(?=\s*{{id}})' + scope: keyword.operator + - match: '//|/(?!/)' + scope: keyword.operator + - match: '=>' + scope: keyword.operator + - match: '/==|/=|=' + scope: keyword.operator + + punctuation: + - match: '[\[\]{}\(\),<>:]' + scope: punctuation + + barewords: + # Barewords as member keys (must be matched before values, types, typenames, + # groupnames). Scope is string as barewords are always interpreted as such. + - match: '{{id}}(?=\s*:)' + scope: string.other + + builtin-types: + - match: |- + (?x)\b( + cbor-any|any| + b64legacy|b64url|bigfloat|bigint|bignint|biguint|bool| + bstr|bytes|decfrac|eb16|eb64legacy|eb64url|encoded-cbor|false| + float16-32|float32-64|float16|float32|float64|float| + uint|integer|int| + mime-message|nil|nint|null|number|regexp|tdate|text| + time|true|tstr|undefined|unsigned|uri + )\b + (?![\-@$]) # if followed by one of those it's part of a user-defined name + scope: support.type.cddl + + names: + # extension points + - match: '(\$\$?){{id}}' + scope: variable.other + captures: + 1: punctuation.definition.variable.cddl + - match: '(?={{id}})' + push: + # types + - include: builtin-types + # user-defined names + - match: '\b{{id}}\b' + scope: meta.generic-name.cddl + - match: '' + pop: true + + values: + - match: '(0b)[01]+' + scope: constant.numeric.integer.binary.cddl + captures: + 1: punctuation.definition.numeric.binary.cddl + - match: '(0o)[0-7]+' + scope: constant.numeric.integer.octal.cddl + captures: + 1: punctuation.definition.numeric.octal.cddl + - match: '(0x)[0-9a-fA-F]+(\.[0-9a-fA-F]+|)p[+-]?\d+' # hexfloat + scope: constant.numeric.integer.hexadecimal.cddl + captures: + 1: punctuation.definition.numeric.hexadecimal.cddl + 3: invalid + - match: '(0x)[0-9a-fA-F]+' # hex + scope: constant.numeric.integer.hexadecimal.cddl + captures: + 1: punctuation.definition.numeric.hexadecimal.cddl + - match: '{{int}}(?:\.\d+)?(?:e[+-]?\d+)?' # int or float + scope: constant.numeric.cddl + + bstrb64url: + - match: "(b64)(')" + captures: + 1: storage.type.string.cddl + 2: punctuation.definition.string.begin.cddl + scope: punctuation.definition.string.begin.cddl + push: inside_bstrb64url + inside_bstrb64url: + - meta_scope: string.quoted.single.cddl + - match: '\\.' + scope: constant.character.escape.cddl + - match: "'" + scope: punctuation.definition.string.end.cddl + pop: true + - match: '[^\s0-9a-zA-Z\-_=]+' + scope: invalid.illegal + + bstrh: + - match: "(h)(')" + captures: + 1: storage.type.string.cddl + 2: punctuation.definition.string.begin.cddl + scope: punctuation.definition.string.begin.cddl + push: inside_bstrh + inside_bstrh: + - meta_scope: string.quoted.single.cddl + - match: '\\.' + scope: constant.character.escape.cddl + - match: "'" + scope: punctuation.definition.string.end.cddl + pop: true + - match: '[^\s0-9a-fA-F]+' + scope: invalid.illegal + + bstr: + - match: "'" + scope: punctuation.definition.string.begin.cddl + push: inside_bstr + inside_bstr: + - meta_include_prototype: false # no comments in here + - meta_scope: string.quoted.single.cddl + - match: '\\.' + scope: constant.character.escape.cddl + - match: "'" + scope: punctuation.definition.string.end.cddl + pop: true + + strings: + - match: '"' + scope: punctuation.definition.string.begin.cddl + push: inside_string + inside_string: + - meta_include_prototype: false + - meta_scope: string.quoted.double.cddl + - match: '\.' + scope: constant.character.escape.cddl + - match: '"' + scope: punctuation.definition.string.end.cddl + pop: true + + comments: + - match: ';' + scope: punctuation.definition.comment.cddl + push: + - meta_scope: comment.line.cddl + - match: $\n? + pop: true diff --git a/themes/eckelmeckel.tmTheme b/themes/eckelmeckel.tmTheme new file mode 100644 index 0000000..e85886b --- /dev/null +++ b/themes/eckelmeckel.tmTheme @@ -0,0 +1,276 @@ + + + + + + + + + name + Nord + settings + + + settings + + background + #2E3440 + caret + #D8DEE9 + foreground + #D8DEE9 + invisibles + #434C5ECC + lineHighlight + #3B4252 + selection + #434C5ECC + + + + name + Comment + scope + comment + settings + + foreground + #616E88 + + + + name + String + scope + string + settings + + foreground + #A3BE8C + + + + name + Number + scope + constant.numeric + settings + + foreground + #B48EAD + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #81A1C1 + + + + name + Variable + scope + variable + settings + + fontStyle + + + + + name + Keyword + scope + keyword + settings + + foreground + #81A1C1 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #81A1C1 + + + + name + Storage type + scope + storage.type + settings + + foreground + #81A1C1 + + + + name + Class name + scope + entity.name.class + settings + + foreground + #8FBCBB + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + fontStyle + bold + foreground + #8FBCBB + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + foreground + #88C0D0 + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + foreground + #81A1C1 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #8FBCBB + + + + name + Library function + scope + support.function + settings + + fontStyle + + foreground + #88C0D0 + + + + name + Library variable + scope + support.other.variable + settings + + fontStyle + + + + + name + Invalid + scope + invalid + settings + + background + #F92672 + fontStyle + + foreground + #F8F8F0 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + background + #AE81FF + foreground + #F8F8F0 + + + + name + RGB value + scope + constant.color.other.rgb-value + settings + + foreground + #B48EAD + + + + name + Escape code + scope + constant.character.escape + settings + + foreground + #EBCB8B + + + + name + Other constant + scope + variable.other.constant + settings + + foreground + #8FBCBB + + + + uuid + D8D5E82E-3D5B-46B5-B38E-8C841C21347D + colorSpaceName + sRGB + semanticClass + theme.dark.nord + +