From a72f3bf66e2afe24f787fef49d50fedb002458d1 Mon Sep 17 00:00:00 2001 From: "Paul D. Hunt" Date: Mon, 26 Feb 2024 15:38:59 +1100 Subject: [PATCH] Checks in more updates from current shipping version of the fonts. --- .gitignore | 14 +++++++++----- FontMenuNameDB | 28 ++++++++++++++++------------ Italic/Poles/nameIDs.fea | 2 +- LICENSE.md | 2 +- Makefile.mk | 19 +++++++++++++++++++ README.md | 8 ++++---- Upright/Poles/nameIDs.fea | 4 ++-- build.cmd | 14 +++++++------- build.sh | 10 +++++----- docs/source-sans-3.css | 4 ++-- familyGSUB.fea | 24 ++++++++++++++++++++++++ familyOS2.fea | 8 ++++---- familyTables.fea | 34 +++------------------------------- familynameIDs.fea | 8 ++++---- relnotes.txt | 29 +++++++++++++++++++---------- 15 files changed, 120 insertions(+), 88 deletions(-) create mode 100755 Makefile.mk diff --git a/.gitignore b/.gitignore index 893386d5e8..9733cbb083 100644 --- a/.gitignore +++ b/.gitignore @@ -5,8 +5,12 @@ target Source*.otf Source*.ttf -# ignore processed glyphs & hashmap in masters: -*/*/*/master.ufo/glyphs.com.adobe.type.processedGlyphs -*/*/*/master.ufo/data/com.adobe.type.processedHashMap -*/*/*/master.ufo/layercontents.plist -*~ +# ignore background, processed glyphs & hashmap in masters. +# Unfortunately, it is not possible to entirely ignore layers, because +# tracebacks are thrown when the layer folders are missing. +*/Masters/*/master_*/*.ufo/glyphs.com.adobe.type.processedGlyphs/*.glif +*/Masters/*/master_*/*.ufo/glyphs.com.adobe.type.processedGlyphs/contents.plist +*/Masters/*/master_*/*.ufo/glyphs.background/*.glif +*/Masters/*/master_*/*.ufo/glyphs.background/contents.plist +*/Masters/*/master_*/*.ufo/data/com.adobe.type.processedHashMap + diff --git a/FontMenuNameDB b/FontMenuNameDB index d9877562a8..a13651f8a8 100644 --- a/FontMenuNameDB +++ b/FontMenuNameDB @@ -8,25 +8,17 @@ # ==================================================================== # Variable fonts -[SourceSans3VF-Roman] +[SourceSans3VF-Upright] f=Source Sans 3 VF - s=Roman - -[SourceSans3_Black] - f=Source Sans 3 VF - s=Roman Master 1 + s=ExtraLight [SourceSans3VF-Italic] f=Source Sans 3 VF - s=Italic - -[SourceSans3_Black-Italic] - f=Source Sans 3 VF - s=Italic Master 1 + s=ExtraLight Italic # ==================================================================== -# Instance fonts +# Instance fonts (statics) [SourceSans3-ExtraLight] f=Source Sans 3 @@ -64,6 +56,18 @@ l=Source Sans 3 m=1,Source Sans 3 Italic +[SourceSans3-Medium] + f=Source Sans 3 + s=Medium + l=Source Sans 3 Medium + m=1,Source Sans 3 Medium + +[SourceSans3-MediumIt] + f=Source Sans 3 + s=Medium Italic + l=Source Sans 3 Medium + m=1,Source Sans 3 Medium Italic + [SourceSans3-Semibold] f=Source Sans 3 s=Semibold diff --git a/Italic/Poles/nameIDs.fea b/Italic/Poles/nameIDs.fea index 9df80a7228..a23d04aa25 100644 --- a/Italic/Poles/nameIDs.fea +++ b/Italic/Poles/nameIDs.fea @@ -1,3 +1,3 @@ -# inlcuded by /SourceSans3/featuresVar.fea +# inlcuded by /SourceSans3/featuresVF.fea nameid 25 "SourceSans3Italic"; diff --git a/LICENSE.md b/LICENSE.md index d2b80bee93..22c601b82f 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,4 @@ -Copyright 2010-2022 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. +Copyright 2010-2024 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. diff --git a/Makefile.mk b/Makefile.mk new file mode 100755 index 0000000000..3fde799932 --- /dev/null +++ b/Makefile.mk @@ -0,0 +1,19 @@ +#!/usr/bin/make +# -*- indent-tabs-mode: t; -*- +# by Al Nikolov + +dnames = $(wildcard $(addsuffix /Instances/*,Upright Italic)) +fnames = $(addsuffix .otf,$(addprefix /SourceSans3-,$(notdir $(dnames)))) +wholenames = $(join $(dnames),$(fnames)) +out_pat = -name \*.[ot]tf + +all: $(wholenames) + +clean: + find $(out_pat) | xargs ${RM} + +.PHONY: all clean + +.SECONDEXPANSION: +%.otf: $$(shell find $$(@D) ! $(out_pat)) + cd $(@D) && makeotf -r -gs -omitMacNames diff --git a/README.md b/README.md index fa6f3f847d..3ccd47732c 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ are generated with the `otf2ttf` and `ttfcomponentizer` tools. Commands to build the Regular style OTF font: ```sh -$ cd Roman/Instances/Regular/ +$ cd Upright/Instances/Regular/ $ makeotf -r -gs -omitMacNames ``` @@ -72,7 +72,7 @@ $ ./buildVFs.sh ### Building with `make` -If you want to build directly from masters instead of the instances stored in +If you want to build directly from UFO sources instead of the instances stored in the repository, or to avoid building all files repetitively, run: ```sh @@ -80,14 +80,14 @@ $ make ``` and it will get everything up to date. To generate only the font.ufo instances -from the masters, run: +from the UFO sources, run: ```sh $ make instances ``` _Note: because font.ufo instances are stored in the repository, you may have to -delete them first from your working tree before building from masters; see +delete them first from your working tree before building from UFO sources; see below._ To clean up `makeotf`'s defaults and other log files, run: diff --git a/Upright/Poles/nameIDs.fea b/Upright/Poles/nameIDs.fea index 3156e2a816..22147e2fec 100644 --- a/Upright/Poles/nameIDs.fea +++ b/Upright/Poles/nameIDs.fea @@ -1,3 +1,3 @@ -# inlcuded by /SourceSans3/featuresVar.fea +# inlcuded by /SourceSans3/featuresVF.fea -nameid 25 "SourceSans3Roman"; +nameid 25 "SourceSans3Upright"; diff --git a/build.cmd b/build.cmd index 5159db2374..c810ef42c0 100644 --- a/build.cmd +++ b/build.cmd @@ -2,8 +2,8 @@ setlocal set FAMILY=SourceSans3 -set ROMAN_WEIGHTS=Black Bold ExtraLight Light Regular Semibold -set ITALIC_WEIGHTS=BlackIt BoldIt ExtraLightIt LightIt It SemiboldIt +set UPRIGHT_WEIGHTS=Black Bold ExtraLight Light Medium Regular Semibold +set ITALIC_WEIGHTS=BlackIt BoldIt ExtraLightIt LightIt MediumIt It SemiboldIt :: find makeotf for /f %%a in ('where makeotf') do set MAKEOTF_PATH=%%a @@ -19,13 +19,13 @@ if exist "%TARGET_PATH%" rmdir /s /q "%TARGET_PATH%" mkdir "%TARGET_OTF_PATH%" mkdir "%TARGET_TTF_PATH%" -set x=%ROMAN_WEIGHTS% -:loop_roman +set x=%UPRIGHT_WEIGHTS% +:loop_upright for /f "tokens=1*" %%a in ("%x%") do ( - call :build_font Roman %%a + call :build_font Upright %%a set x=%%b ) -if defined x goto :loop_roman +if defined x goto :loop_upright set x=%ITALIC_WEIGHTS% :loop_italic @@ -39,7 +39,7 @@ endlocal goto :eof :: Build Font -:: %1 - Roman/Italic +:: %1 - Upright/Italic :: %2 - Weight :build_font call makeotf -f "%~dp0\%1\Instances\%2\font.ufo" -r -o "%TARGET_OTF_PATH%\%FAMILY%-%2.otf" diff --git a/build.sh b/build.sh index 1b8a5699e2..28a8ca3071 100755 --- a/build.sh +++ b/build.sh @@ -3,8 +3,8 @@ set -e family=SourceSans3 -roman_weights=(Black Bold ExtraLight Light Regular Semibold) -italic_weights=(BlackIt BoldIt ExtraLightIt LightIt It SemiboldIt) +upright_weights=(Black Bold ExtraLight Light Medium Regular Semibold) +italic_weights=(BlackIt BoldIt ExtraLightIt LightIt MediumIt It SemiboldIt) # get absolute path to bash script DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" @@ -17,7 +17,7 @@ mkdir -p $otf_dir $ttf_dir function build_font { - # $1 is Roman or Italic + # $1 is Upright or Italic # $2 is weight name font_dir=$DIR/$1/Instances/$2 font_ufo=$font_dir/font.ufo @@ -41,9 +41,9 @@ function build_font { } -for w in ${roman_weights[@]} +for w in ${upright_weights[@]} do - build_font Roman $w + build_font Upright $w done diff --git a/docs/source-sans-3.css b/docs/source-sans-3.css index ab33958eee..6b27f6a01e 100644 --- a/docs/source-sans-3.css +++ b/docs/source-sans-3.css @@ -113,8 +113,8 @@ font-weight: 200 900; font-style: normal; font-stretch: normal; - src: url('WOFF2/SourceSans3VF-Roman.otf.woff2') format('woff2-variations'), - url('WOFF2/SourceSans3VF-Roman.ttf.woff2') format('woff2-variations'); + src: url('WOFF2/SourceSans3VF-Upright.otf.woff2') format('woff2-variations'), + url('WOFF2/SourceSans3VF-Upright.ttf.woff2') format('woff2-variations'); } @font-face{ font-family: 'Source Sans 3 VF'; diff --git a/familyGSUB.fea b/familyGSUB.fea index 064c8ba4c8..187dad8b4c 100644 --- a/familyGSUB.fea +++ b/familyGSUB.fea @@ -77,6 +77,30 @@ @PUNCTUATION_SUPERIOR = [ parenleft.sups parenright.sups period.sups comma.sups ]; @PUNCTUATION_INFERIOR = [ parenleft.subs parenright.subs period.subs comma.subs ]; +#-------------------------------------- +languagesystem DFLT dflt; # Default + +languagesystem latn dflt; # Latin default + languagesystem latn ATH; # Athapaskan/Athabaskan + languagesystem latn AZE; # Azeri + languagesystem latn CHP; # Dënësųłınë́ (Chipewyan) + languagesystem latn CRT; # Crimean Tatar + languagesystem latn NAV; # NavajoDiné Bizaad + languagesystem latn NSM; # Northern Sami + languagesystem latn SKS; # Skolt Sami + languagesystem latn SLA; # South(?) Slavey + languagesystem latn TRK; # Turkish + languagesystem latn IPPH; # Phonetic transcription, IPA conventions + languagesystem latn APPH; # Phonetic transcription, Americanist conventions + +languagesystem grek dflt; # Greek default + languagesystem grek PGR; # Polytonic Greek + +languagesystem cyrl dflt; # Cyrillic default + languagesystem cyrl BGR; # Bulgarian + languagesystem cyrl MKD; # Macedonian + languagesystem cyrl SRB; # Serbian + #-------------------------------------- lookup SUPERIOR_LETTERS_MINISCULE { diff --git a/familyOS2.fea b/familyOS2.fea index 266ac90568..a6dccce2f8 100644 --- a/familyOS2.fea +++ b/familyOS2.fea @@ -1,11 +1,11 @@ # inlcuded by /SourceSans3/features.fea # NOTE: For cross-platform consistency, OS/2.TypoAscender and |OS/2.TypoDescender| must add up to the font's UPM value -TypoAscender 1024; # Must be the same on all fonts for cross-platform consistency -TypoDescender -400; # Must be the same on all fonts for cross-platform consistency +TypoAscender 1000; # Must be the same on all fonts for cross-platform consistency +TypoDescender -326; # Must be the same on all fonts for cross-platform consistency TypoLineGap 0; # Must be zero for cross-platform consistency -winAscent 1024; # Must be the same on all fonts for cross-weight consistency -winDescent 400; # Must be the same on all fonts for cross-weight consistency +winAscent 1000; # Must be the same on all fonts for cross-weight consistency +winDescent 326; # Must be the same on all fonts for cross-weight consistency CapHeight 660; WidthClass 5; # Medium (normal) diff --git a/familyTables.fea b/familyTables.fea index a1bd42f59e..3ad6e6a86c 100644 --- a/familyTables.fea +++ b/familyTables.fea @@ -1,14 +1,14 @@ # inlcuded by /SourceSans3/features.fea table head { - FontRevision 3.042; + FontRevision 3.052; } head; table hhea { # NOTE: The OS/2.winAscent and OS/2.winDescent values are set by MakeOTF and vary depending on the font's bounding box - Ascender 1024; # Must match OS/2.winAscent for cross-platform consistency - Descender -400; # Must match OS/2.winDescent for cross-platform consistency + Ascender 1000; # Must match OS/2.winAscent for cross-platform consistency + Descender -326; # Must match OS/2.winDescent for cross-platform consistency LineGap 0; # Must be zero for cross-platform consistency } hhea; @@ -21,31 +21,3 @@ table BASE { cyrl romn -170 0, DFLT romn -170 0; } BASE; - -#-------------------------------------- - -# languagesystem declarations: - -languagesystem DFLT dflt; # Default - -languagesystem latn dflt; # Latin default - languagesystem latn ATH; # Athapaskan/Athabaskan - languagesystem latn AZE; # Azeri - languagesystem latn CHP; # Dënësųłınë́ (Chipewyan) - languagesystem latn CRT; # Crimean Tatar - languagesystem latn NAV; # NavajoDiné Bizaad - languagesystem latn NSM; # Northern Sami - languagesystem latn SKS; # Skolt Sami - languagesystem latn SLA; # South(?) Slavey - languagesystem latn TRK; # Turkish - languagesystem latn IPPH; # Phonetic transcription, IPA conventions - languagesystem latn APPH; # Phonetic transcription, Americanist conventions - -languagesystem grek dflt; # Greek default - languagesystem grek PGR; # Polytonic Greek - -languagesystem cyrl dflt; # Cyrillic default - languagesystem cyrl BGR; # Bulgarian - languagesystem cyrl MKD; # Macedonian - languagesystem cyrl SRB; # Serbian - diff --git a/familynameIDs.fea b/familynameIDs.fea index 4ed386b829..f8b7c302ac 100644 --- a/familynameIDs.fea +++ b/familynameIDs.fea @@ -1,9 +1,9 @@ # inlcuded by /SourceSans3/features.fea -# inlcuded by /SourceSans3/featuresVar.fea +# inlcuded by /SourceSans3/featuresVF.fea -nameid 0 "© 2010 - 2021 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’"; -nameid 7 "Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries."; -nameid 8 "Adobe Systems Incorporated"; +nameid 0 "© 2024 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’"; +nameid 7 "Source is a trademark of Adobe in the United States and/or other countries."; +nameid 8 "Adobe"; nameid 9 "Paul D. Hunt"; nameid 11 "http://www.adobe.com/type"; nameid 13 "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an \2018AS IS\2019 BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software."; diff --git a/relnotes.txt b/relnotes.txt index 3a9e5390a0..44cb8047ef 100644 --- a/relnotes.txt +++ b/relnotes.txt @@ -1,3 +1,12 @@ +version 3.052 created 2023/03/30 + Adds Medium weight requested by user. (GitHub issue #253) + Updates the design of several glyphs to arrive at more compact vertical metrics. + + +version 3.046 created 2021/07/14 + Corrects copyright notice. (GitHub issue #223) + + version 3.042 created 2021/06/08 Redesigns a majority of diacritics. Assigns codepoint U+A7AE to I.a. (GitHub issue #211) @@ -23,7 +32,7 @@ version 3.032 created 2021/02/11 LATIN SMALL LETTER UPSILON WITH STROKE (U+1D7F) LATIN SMALL LETTER REVERSED R WITH FISHHOOK (U+027F) LATIN SMALL LETTER SQUAT REVERSED ESH (U+0285) - Fixes issue with phantom points in intermediate masters. (GitHub issue #198) + Fixes issue with phantom points in intermediate UFO sources. (GitHub issue #198) Fixes right sidebearing on LATIN SMALL LETTER OPEN E (U+025B). (GitHub issue #199) Adds MODIFIER LETTER SMALL CAPITAL N (U+1DB0). (GitHub issue #202) Adds Unicode values to superscript majuscules. (GitHub issue #202) @@ -46,7 +55,7 @@ version 3.032 created 2021/02/11 version 3.028 created 2020/09/07 - Converts UFO masters to version 3. (GitHub issue #148) + Converts UFO sources to version 3. (GitHub issue #148) Adds IPA affricate ligature characters. (GitHub issue #174) LATIN SMALL LETTER DZ DIGRAPH (U+20A3) LATIN SMALL LETTER DZ DIGRAPH WITH CURL (U+02A5) @@ -65,7 +74,7 @@ version 3.028 created 2020/09/07 version 3.006 created 2019/09/05 - Harmonizes glyph set between Roman and Italic styles (with the exception of small capitals) + Harmonizes glyph set between Upright and Italic styles (with the exception of small capitals) Adds Cyrillic and Greek to italic fonts (GitHub issue #87) Adds Bulgarian Cyrillic support to fonts (GitHub issue #104) Adjusts the sizing of geometric shapes (GitHub issue #39) @@ -80,11 +89,11 @@ version 3.006 created 2019/09/05 Adds `lookupflag IgnoreMarks` to `kern` feature (GitHub issue #167) -version 2.045(romans) & version 1.095 (italics) created 2019/01/11 +version 2.045 (uprights) & version 1.095 (italics) created 2019/01/11 Fixes spacing and displaying issues in many TrueType composite glyphs. (GitHub issues #154 & #162) -version 2.040(romans) & version 1.090 (italics) created 2018/10/30 +version 2.040 (uprights) & version 1.090 (italics) created 2018/10/30 Fixes hinting affecting DOLLAR SIGN (U+0024). (GitHub issue #43) Improves IPA support, matching italics to uprights, adds some characters. (GitHub issue #44) @@ -135,7 +144,7 @@ version 2.040(romans) & version 1.090 (italics) created 2018/10/30 Adds characters for TWO-EM DASH (U+2E3A) and THREE-EM DASH (U+2E3B). (GitHub issue #141) -version 2.020(romans) & version 1.075 (italics) created 2015/08/31 +version 2.020 (uprights) & version 1.075 (italics) created 2015/08/31 Changes vendor ID to 'ADBO'. (issue #52) Update NAME table to remove full license text from binary font files. @@ -143,7 +152,7 @@ version 2.020(romans) & version 1.075 (italics) created 2015/08/31 Removes NULL (u+0000) and CR (u+000D) glyphs from TrueType fonts. -version 2.015 (romans) & version 1.070 (italics) created 2015/08/25 +version 2.015 (uprights) & version 1.070 (italics) created 2015/08/25 Updates RSB for quotedblbase and kerning for baseline quotes in italics. (issue #49) Updates x-height measurements in all fonts. (issue #57) @@ -151,13 +160,13 @@ version 2.015 (romans) & version 1.070 (italics) created 2015/08/25 version 2.010 created 2014/06/27 - [This release is Roman fonts only] + [This release is Upright fonts only] Fixed inconsistencies in several derived glyphs. version 2.005 created 2014/06/25 - [This release is Roman fonts only] + [This release is Upright fonts only] Fixed issue affecting composite glyphs with accents below in TrueType fonts. @@ -171,7 +180,7 @@ version 1.065 created 2014/06/25 version 2.000 created 2014/06/17 - [This release is Roman fonts only] + [This release is Upright fonts only] Geometric shapes were made larger. (GitHub issue #39) Adds narrow no-break space [U+202F] (GitHub issue #30) Updates kerning of small caps and adds small cap punctuation (GitHub issues #15 & #27)