From 1a6006bcd60ea4f4144cac534102a0aeb730bad8 Mon Sep 17 00:00:00 2001 From: David Corbett Date: Sun, 15 Sep 2024 14:52:16 -0400 Subject: [PATCH] =?UTF-8?q?Rename=20the=20font=20to=20=E2=80=9CRawnd=20Mus?= =?UTF-8?q?mus=20Duployan=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The testing font is now “Ilo Snas Duployan”. “Rawnd musmus ilo snas” is Chinook Jargon for ‘round cow without rain’, as in a spherical cow in a vacuum, alluding to this project’s goal of being a technical proof of concept, and not necessarily a beautiful and perfectly accurate emulation of handwriting. The font name suffix “Unjoined” is now “Uncow”, alluding to the Chinook Jargon word for ‘untied’ and to the “Musmus” earlier in the name. --- Makefile | 6 +++--- README.md | 12 +++++------ docs/developer-documentation.md | 13 ++++++------ docs/user-documentation.md | 28 ++++++++++++++------------ docs/variants.md | 28 ++++++++++++++++++-------- docs/width-system.md | 10 ++++----- sources/{Duployan.fea => metadata.fea} | 0 7 files changed, 56 insertions(+), 41 deletions(-) rename sources/{Duployan.fea => metadata.fea} (100%) diff --git a/Makefile b/Makefile index 049bdcc..391a86e 100644 --- a/Makefile +++ b/Makefile @@ -30,8 +30,8 @@ ifdef NOTO VERSION = 3.003 override NOTO = --noto else - FONT_FAMILY_NAME = Duployan$(if $(filter testing,$(CHARSET)), Test)$(if $(UNJOINED), Unjoined) - CHARSET = $(if $(RELEASE),standard,testing) + FONT_FAMILY_NAME = $(if $(filter standard,$(CHARSET)),Rawnd Musmus,Ilo Snas) Duployan$(if $(UNJOINED), Uncow) + CHARSET = standard VERSION = 1.0 endif unexport CHARSET @@ -105,7 +105,7 @@ $(FONTS): $(INTERMEDIATE_FONTS) mkdir -p "$$(dirname "$@")" $(COVERAGE) sources/copy_metrics.py --text $(TALL_TEXT) $@ $(INTERMEDIATE_PREFIX)$@ $(filter-out $(INTERMEDIATE_PREFIX)$@,$^) -%.otf: sources/Duployan.fea $(shell find sources -name '*.py') | dummy-% +%.otf: sources/metadata.fea $(shell find sources -name '*.py') | dummy-% ifdef COVERAGE coverage erase endif diff --git a/README.md b/README.md index 28cfa9a..6a87fdc 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. --> -# Duployan font +# Rawnd Musmus Duployan An OpenType Unicode font for Duployan shorthand. Duployan is a shorthand used for French, English, Romanian, Chinook Jargon, and -many other languages. This font is a technical proof of concept for all of -Duployan’s features that is also suitable for practical use. +many other languages. Rawnd Musmus Duployan is a technical proof of concept for +all of Duployan’s features that is also suitable for practical use. ## Installation @@ -40,7 +40,7 @@ advice about installing the font that might be helpful. ## Features -The font has full support for Unicode Duployan: +Rawnd Musmus Duployan has full support for Unicode Duployan: * All characters in the Duployan and Shorthand Format Controls blocks * Contextual forms and cursive joining @@ -50,8 +50,8 @@ The font has full support for Unicode Duployan: There are [multiple variants](docs/variants.md) of the font, including: -* Duployan: the main font -* Duployan Unjoined: the font with cursive joining removed +* Rawnd Musmus Duployan: the main font +* Rawnd Musmus Duployan Uncow: the font with cursive joining removed * Noto Sans Duployan: the font with modifications for the Noto font project See [the user guide](docs/user-documentation.md) for more information. diff --git a/docs/developer-documentation.md b/docs/developer-documentation.md index 0fe9dc5..6d21c25 100644 --- a/docs/developer-documentation.md +++ b/docs/developer-documentation.md @@ -37,10 +37,10 @@ make That will produce four fonts: -* fonts/Duployan/unhinted/otf/Duployan-Bold.otf -* fonts/Duployan/unhinted/otf/Duployan-Regular.otf -* fonts/Duployan/unhinted/ttf/Duployan-Bold.ttf -* fonts/Duployan/unhinted/ttf/Duployan-Regular.ttf +* fonts/RawndMusmusDuployan/unhinted/otf/RawndMusmusDuployan-Bold.otf +* fonts/RawndMusmusDuployan/unhinted/otf/RawndMusmusDuployan-Regular.otf +* fonts/RawndMusmusDuployan/unhinted/ttf/RawndMusmusDuployan-Bold.ttf +* fonts/RawndMusmusDuployan/unhinted/ttf/RawndMusmusDuployan-Regular.ttf See .github/workflows/main.yml for how to get the prerequisites on Ubuntu. The steps should be analogous on other platforms. Getting FontForge to build @@ -58,7 +58,7 @@ To test the fonts, run: python3 -m venv venv . venv/bin/activate pip install --no-deps -r dev-requirements.txt -make check +make CHARSET=testing check ``` Alternatively, push a commit and wait for GitHub Actions to run CI. @@ -83,7 +83,8 @@ Makefile has many available targets. The main ones are: These targets are affected by various variables: * `CHARSET`: Which [character set variant](variants.md) to build: `standard` for - Duployan, `noto` for Noto Sans Duployan, or `testing` for Duployan Test. + Rawnd Musmus Duployan, `noto` for Noto Sans Duployan, or `testing` for Ilo + Snas Duployan. * `WEIGHTS`: A space-separated list of weights to build. The only valid weights are `Regular` and `Bold`. The default is both. * `SUFFIXES`: A space-separated list of OpenType variants to build. The only diff --git a/docs/user-documentation.md b/docs/user-documentation.md index 724fc47..4d763a0 100644 --- a/docs/user-documentation.md +++ b/docs/user-documentation.md @@ -17,8 +17,8 @@ limitations under the License. # User documentation -This is an unmodulated (“sans-serif”) font for many Duployan modes, available in -regular and bold weights. +Rawnd Musmus Duployan is an unmodulated (“sans-serif”) font for many Duployan +modes, available in regular and bold weights. ## Installation @@ -32,11 +32,12 @@ See the top-level [README.md](../README.md) for installation instructions. ### Custom extensions -This font uses some code point sequences not sanctioned by Unicode to support -some orienting letters needed in Chinook Jargon (and, incidentally, various -other modes). Adding the sequence \ after one of the -letters U+1BC44, U+1BC53, U+1BC5A, U+1BC5B, U+1BC5C, U+1BC5D, U+1BC5E, U+1BC5F, -or U+1BC60 changes it from primary orientation to secondary orientation. +Rawnd Musmus Duployan uses some code point sequences not sanctioned by Unicode +to support some orienting letters needed in Chinook Jargon (and, incidentally, +various other modes). Adding the sequence \ after one of +the letters U+1BC44, U+1BC53, U+1BC5A, U+1BC5B, U+1BC5C, U+1BC5D, U+1BC5E, +U+1BC5F, or U+1BC60 changes it from primary orientation to secondary +orientation. There are also some private use characters for non-joining characters: @@ -135,7 +136,8 @@ OpenType feature 'sups'), and subscripts (with 'subs'). ## Languages and modes -The font supports all modes mentioned in the Duployan Unicode proposals: +Rawnd Musmus Duployan supports all modes mentioned in the Duployan Unicode +proposals: * Duployé’s original mode (French) * Pernin (English) @@ -153,11 +155,11 @@ extensions for Chinook Jargon. ## Technical caveats -The font does not work in all applications. For proper shaping, it requires -HarfBuzz 8.1.0 or later, which is used in all major browsers on all operating -systems, and for most applications on Linux. Even in some applications that use -HarfBuzz, though, it is broken to varying degrees. If the main font does not -work, use Duployan Unjoined as a fallback. +Rawnd Musmus Duployan does not work in all applications. For proper shaping, it +requires HarfBuzz 8.1.0 or later, which is used in all major browsers on all +operating systems, and for most applications on Linux. Even in some applications +that use HarfBuzz, though, it is broken to varying degrees. If the main font +does not work, use Rawnd Musmus Duployan Uncow as a fallback. In particular, long strings are liable to be rendered wrong. The glyphs will not be cursively connected but will instead overlap each other in a semilegible diff --git a/docs/variants.md b/docs/variants.md index 202306f..90e8880 100644 --- a/docs/variants.md +++ b/docs/variants.md @@ -16,18 +16,18 @@ limitations under the License. # Font variants -The Duployan font family has multiple variants: +The Rawnd Musmus Duployan font family has multiple variants: -* Duployan -* Duployan Unjoined +* Rawnd Musmus Duployan +* Rawnd Musmus Duployan Uncow * Noto Sans Duployan * Noto Sans Duployan Unjoined -* Duployan Test -* Duployan Test Unjoined +* Ilo Snas Duployan +* Ilo Snas Duployan Uncow By default, the font supports cursive joining and contextual forms. The -“Unjoined” fonts remove those features for compatibility with software in which -the main fonts do not work. +Uncow/Unjoined fonts remove those features for compatibility with software in +which the main fonts do not work. The Noto variants exclude certain characters which are inappropriate or unnecessary for inclusion in the Noto project’s Duployan font. The canonical @@ -36,8 +36,20 @@ https://github.com/notofonts/duployan/releases) or from [Google Fonts]( https://fonts.google.com/noto/specimen/Noto+Sans+Duployan). Noto Sans Duployan Unjoined is not an official Noto font. -The “Testing” fonts add some private use characters to make testing more +Ilo Snas Duployan adds some private use characters to make testing more convenient. They are only appropriate for testing the fonts during development. Their PUA character assignments are unstable and may change at any time. Each variant comes in both regular and bold, and both OTF and TTF. + +## Future variants + +More variants could exist in the future. + +* Ilo Komtaks Duployan: The font with arbitrary user customizations, supported + by a CLI with more fine-grained control than [the `CHARSET` variable]( + developer-documentation.md#advanced-build-options) +* Ilo Shabon Duployan: If you want to pay me for a custom feature that would + normally be out of scope +* Gol Musmus Duployan: A font with no bugs that works on all platforms; a + perfect simulacrum of handwriting; the ultimate goal diff --git a/docs/width-system.md b/docs/width-system.md index 5586753..9824eac 100644 --- a/docs/width-system.md +++ b/docs/width-system.md @@ -16,8 +16,8 @@ limitations under the License. # The width system -This font encodes Duployan letters’ advance widths not with glyph advances -but with lots of invisible marker glyphs. +Rawnd Musmus Duployan encodes Duployan letters’ advance widths not with glyph +advances but with lots of invisible marker glyphs. These markers encode each letter’s advance width. They are added together to find the advance width of each stenogram. @@ -73,15 +73,15 @@ That means that, for a normal left-to-right stenogram, the left bound width will be a small negative number and the right bound width will be a large positive number, getting larger the more letters there are. -At runtime, the font adds some invisible marker glyphs to the glyph stream -encoding all relevant width information. +At runtime, Rawnd Musmus Duployan adds some invisible marker glyphs to the glyph +stream encoding all relevant width information. The widths of all the glyphs in a stenogram are added, and the left and right sums become the left and right bound widths. A 'dist' lookup adds space as indicated by these marker glyphs. ## Types of width -Four kinds of width are relevant to this font. +Four kinds of width are relevant to Rawnd Musmus Duployan. Each has a code, which is used in glyph names. A glyph’s right bound width (`rdx`) is measured from its cursive entry point to diff --git a/sources/Duployan.fea b/sources/metadata.fea similarity index 100% rename from sources/Duployan.fea rename to sources/metadata.fea