Skip to content

Commit

Permalink
Enough subsetting
Browse files Browse the repository at this point in the history
  • Loading branch information
Porges committed Jun 29, 2024
1 parent aaab7c0 commit 8bbe1cb
Show file tree
Hide file tree
Showing 47 changed files with 137 additions and 46 deletions.
Binary file removed fonts/BabelStoneCommons.ttf
Binary file not shown.
Binary file removed fonts/BabelStoneCommons.woff
Binary file not shown.
Binary file removed fonts/NKD04_Playing_Cards_Index.woff
Binary file not shown.
Binary file removed fonts/cardindices.ttf
Binary file not shown.
Binary file removed fonts/cardindices.woff
Binary file not shown.
100 changes: 92 additions & 8 deletions fonts/charis.css
Original file line number Diff line number Diff line change
@@ -1,31 +1,59 @@

/* Latin (BasicLatin, Latin1Supplement, LatinExtendedA, CombiningDiacriticalMarks, GeneralPunctuation) */
/* Latin (BasicLatin, GeneralPunctuation, Latin1Supplement) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-Latin-Bold.woff2') format('woff2');
font-weight: bold;
unicode-range: U+0000-007f,U+0080-00ff,U+0100-017f,U+0300-036f,U+2000-206f;
unicode-range: U+0000-007f,U+2000-206f,U+0080-00ff;
}
/* Latin (BasicLatin, Latin1Supplement, LatinExtendedA, CombiningDiacriticalMarks, GeneralPunctuation) */
/* Latin (BasicLatin, GeneralPunctuation, Latin1Supplement) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-Latin-BoldItalic.woff2') format('woff2');
font-style: italic;
font-weight: bold;
unicode-range: U+0000-007f,U+0080-00ff,U+0100-017f,U+0300-036f,U+2000-206f;
unicode-range: U+0000-007f,U+2000-206f,U+0080-00ff;
}
/* Latin (BasicLatin, Latin1Supplement, LatinExtendedA, CombiningDiacriticalMarks, GeneralPunctuation) */
/* Latin (BasicLatin, GeneralPunctuation, Latin1Supplement) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-Latin-Italic.woff2') format('woff2');
font-style: italic;
unicode-range: U+0000-007f,U+0080-00ff,U+0100-017f,U+0300-036f,U+2000-206f;
unicode-range: U+0000-007f,U+2000-206f,U+0080-00ff;
}
/* Latin (BasicLatin, Latin1Supplement, LatinExtendedA, CombiningDiacriticalMarks, GeneralPunctuation) */
/* Latin (BasicLatin, GeneralPunctuation, Latin1Supplement) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-Latin-Regular.woff2') format('woff2');
unicode-range: U+0000-007f,U+0080-00ff,U+0100-017f,U+0300-036f,U+2000-206f;
unicode-range: U+0000-007f,U+2000-206f,U+0080-00ff;
}
/* LatinExt (LatinExtendedA, CombiningDiacriticalMarks) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-LatinExt-Bold.woff2') format('woff2');
font-weight: bold;
unicode-range: U+0100-017f,U+0300-036f;
}
/* LatinExt (LatinExtendedA, CombiningDiacriticalMarks) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-LatinExt-BoldItalic.woff2') format('woff2');
font-style: italic;
font-weight: bold;
unicode-range: U+0100-017f,U+0300-036f;
}
/* LatinExt (LatinExtendedA, CombiningDiacriticalMarks) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-LatinExt-Italic.woff2') format('woff2');
font-style: italic;
unicode-range: U+0100-017f,U+0300-036f;
}
/* LatinExt (LatinExtendedA, CombiningDiacriticalMarks) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-LatinExt-Regular.woff2') format('woff2');
unicode-range: U+0100-017f,U+0300-036f;
}
/* ChineseTranslit (LatinExtendedB, SuperscriptsandSubscripts) */
@font-face {
Expand Down Expand Up @@ -55,3 +83,59 @@
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-ChineseTranslit-Regular.woff2') format('woff2');
unicode-range: U+0180-024f,U+2070-209f;
}
/* VietIndic (LatinExtendedAdditional) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-VietIndic-Bold.woff2') format('woff2');
font-weight: bold;
unicode-range: U+1e00-1eff;
}
/* VietIndic (LatinExtendedAdditional) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-VietIndic-BoldItalic.woff2') format('woff2');
font-style: italic;
font-weight: bold;
unicode-range: U+1e00-1eff;
}
/* VietIndic (LatinExtendedAdditional) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-VietIndic-Italic.woff2') format('woff2');
font-style: italic;
unicode-range: U+1e00-1eff;
}
/* VietIndic (LatinExtendedAdditional) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-VietIndic-Regular.woff2') format('woff2');
unicode-range: U+1e00-1eff;
}
/* Historical (LatinExtendedD) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-Historical-Bold.woff2') format('woff2');
font-weight: bold;
unicode-range: U+a720-a7ff;
}
/* Historical (LatinExtendedD) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-Historical-BoldItalic.woff2') format('woff2');
font-style: italic;
font-weight: bold;
unicode-range: U+a720-a7ff;
}
/* Historical (LatinExtendedD) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-Historical-Italic.woff2') format('woff2');
font-style: italic;
unicode-range: U+a720-a7ff;
}
/* Historical (LatinExtendedD) */
@font-face {
font-family: 'Charis SIL';
src: local('Charis SIL'), url('/fonts/charis/CharisSIL-Historical-Regular.woff2') format('woff2');
unicode-range: U+a720-a7ff;
}
Binary file modified fonts/charis/CharisSIL-ChineseTranslit-Bold.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-ChineseTranslit-BoldItalic.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-ChineseTranslit-Italic.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-ChineseTranslit-Regular.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-Historical-Bold.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-Historical-BoldItalic.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-Historical-Italic.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-Historical-Regular.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-Latin-Bold.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-Latin-BoldItalic.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-Latin-Italic.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-Latin-Regular.woff2
Binary file not shown.
Binary file added fonts/charis/CharisSIL-LatinExt-Bold.woff2
Binary file not shown.
Binary file added fonts/charis/CharisSIL-LatinExt-BoldItalic.woff2
Binary file not shown.
Binary file added fonts/charis/CharisSIL-LatinExt-Italic.woff2
Binary file not shown.
Binary file added fonts/charis/CharisSIL-LatinExt-Regular.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-VietIndic-Bold.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-VietIndic-BoldItalic.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-VietIndic-Italic.woff2
Binary file not shown.
Binary file modified fonts/charis/CharisSIL-VietIndic-Regular.woff2
Binary file not shown.
Binary file removed fonts/nkd04_playing_cards_index.ttf
Binary file not shown.
Binary file removed fonts/nks30_chess_pieces.ttf
Binary file not shown.
Binary file removed fonts/nks30_chess_pieces.woff
Binary file not shown.
Binary file removed fonts/ocrb.ttf
Binary file not shown.
Binary file removed fonts/ocrb.woff
Binary file not shown.
Binary file removed input-fonts/Charis_SIL/CharisSIL-Bold-Latin.woff2
Binary file not shown.
Binary file removed input-fonts/Charis_SIL/CharisSIL-Bold.ttf
Binary file not shown.
Binary file added input-fonts/Charis_SIL/CharisSIL-Bold.woff2
Binary file not shown.
Binary file not shown.
Binary file removed input-fonts/Charis_SIL/CharisSIL-BoldItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file removed input-fonts/Charis_SIL/CharisSIL-Italic-Latin.woff2
Binary file not shown.
Binary file removed input-fonts/Charis_SIL/CharisSIL-Italic.ttf
Binary file not shown.
Binary file added input-fonts/Charis_SIL/CharisSIL-Italic.woff2
Binary file not shown.
Binary file removed input-fonts/Charis_SIL/CharisSIL-Regular-Latin.woff2
Binary file not shown.
Binary file removed input-fonts/Charis_SIL/CharisSIL-Regular.ttf
Binary file not shown.
Binary file added input-fonts/Charis_SIL/CharisSIL-Regular.woff2
Binary file not shown.
6 changes: 3 additions & 3 deletions input-fonts/Charis_SIL/OFL.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
Copyright (c) 1997-2022 SIL International (http://www.sil.org/)
Copyright (c) 1997-2023 SIL International (http://www.sil.org/)
with Reserved Font Names "Charis" 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
http://scripts.sil.org/OFL


-----------------------------------------------------------
Expand All @@ -19,7 +19,7 @@ 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,
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
Expand Down
3 changes: 3 additions & 0 deletions src/_includes/layout.11ty.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ exports.render = async function (data) {
<head>
<meta charset="utf-8" />
<link rel="shortcut icon" type="image/png" href="/favicon.png" />
<link rel="preload" href="/fonts/charis/CharisSIL-Latin-Regular.woff2" as="font" type="font/woff2" />
<link rel="preload" href="/fonts/charis/CharisSIL-Latin-Italic.woff2" as="font" type="font/woff2" />
<link rel="preload" href="/fonts/charis/CharisSIL-Latin-Bold.woff2" as="font" type="font/woff2" />
<link rel="stylesheet" href="/fonts/charis.css" type="text/css" />
<link rel="stylesheet" href="/css/index.css" type="text/css" />
<link rel="stylesheet" href="/css/print.css" type="text/css" media="print" />
Expand Down
20 changes: 5 additions & 15 deletions src/sass/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,27 @@

@font-face {
font-family: "cc-icons";
src: url('/fonts/BabelStoneCommons.woff2') format('woff2'),
url('/fonts/BabelStoneCommons.woff') format('woff'),
url('/fonts/BabelStoneCommons.ttf') format('truetype');
src: url('/fonts/BabelStoneCommons.woff2') format('woff2');
unicode-range: U+1f16d-1f16f, U+1f10d-1f10f, U+229c;
font-display: swap;
}

@font-face {
font-family: "Card Indices";
src:
url('/fonts/cardindices.woff2') format('woff2'),
url('/fonts/cardindices.woff') format('woff'),
url('/fonts/cardindices.ttf') format('truetype');
src: url('/fonts/cardindices.woff2') format('woff2');
font-display: swap;
}

@font-face {
font-family: "NKS30";
src:
url('/fonts/nks30_chess_pieces.woff2') format('woff2'),
url('/fonts/nks30_chess_pieces.woff') format('woff'),
url('/fonts/nks30_chess_pieces.ttf') format('truetype');
src: url('/fonts/nks30_chess_pieces.woff2') format('woff2');
unicode-range: U+2654-265f;
font-display: swap;
}

@font-face {
font-family: 'ocrb';
src: url('/fonts/ocrb.woff2') format('woff2'),
url('/fonts/ocrb.woff') format('woff'),
url('/fonts/ocrb.ttf') format('truetype');
src: url('/fonts/ocrb.woff2') format('woff2');
size-adjust: 80%;
font-weight: normal;
font-style: normal;
Expand Down Expand Up @@ -793,7 +783,7 @@ TODO

/*** Abbreviations ***/
abbr.initialism {
font-variant: all-small-caps;
font-variant-caps: all-small-caps;
font-size: inherit; // override Bootstrap
}

Expand Down
54 changes: 34 additions & 20 deletions subset-fonts.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,29 @@ pushd input-fonts/Charis_SIL
$fontFamily = "Charis SIL";

$subsets = [ordered]@{
"Latin" = @(
"BasicLatin",
"Latin1Supplement",
"LatinExtendedA",
"CombiningDiacriticalMarks",
"GeneralPunctuation")
"ChineseTranslit" = @( # Chinese (Pinyin & Jyutping) transliteration
"LatinExtendedB",
"SuperscriptsandSubscripts")
"VietIndic" = @( # Vietnamese and Indic transliteration
"LatinExtendedAdditional")
"Historical" = @( # Medieval & Egyptological
"LatinExtendedD")
"Latin" = @{
"Features" = "c2sc,smcp,subs,sups"
"Blocks" = @("BasicLatin", "GeneralPunctuation", "Latin1Supplement")
}
# Don't need smcp/c2sc for these
"LatinExt" = @{
"Blocks" = @("LatinExtendedA", "CombiningDiacriticalMarks")
}
# Chinese (Pinyin & Jyutping) transliteration
"ChineseTranslit" = @{
"Blocks" = @( "LatinExtendedB", "SuperscriptsandSubscripts")
}
# Vietnamese and Indic transliteration
"VietIndic" = @{
"Blocks" = @("LatinExtendedAdditional")
}
# Mediaeval & Egyptological
"Historical" = @{
"Blocks" = @("LatinExtendedD")
}
# Greek not included as the Charis Greek doesn't cover enough of the block
}

echo $subsets

$css = "../../fonts/charis.css"
echo "" > $css # blank it

Expand All @@ -40,13 +45,22 @@ function whitelistFromBlock([string]$block) {

foreach ($subset in $subsets.GetEnumerator()) {
$name = $subset.Key
$whitelist = ($subset.Value | %{ whitelistFromBlock($_) }) -join ','
echo "$name - $($subset.Value.Blocks)"
$whitelist = ($subset.Value.Blocks | %{ whitelistFromBlock($_) }) -join ','

$features = @()
if ($subset.Value.ContainsKey('Features')) {
$features = @("--layout-features+=$($subset.Value.Features)")
echo $features
}

foreach ($file in Get-ChildItem -Filter '*.ttf' -File) {
foreach ($file in Get-ChildItem -Filter '*.woff2' -File) {
$targetFile = Join-Path "../../fonts/charis" ($file.Name -replace "-", "-$name-" -replace ".ttf", ".woff2")
pyftsubset $file --unicodes=$whitelist --flavor=woff2 --harfbuzz-repacker --output-file=$targetFile '--layout-features=*'

echo "/* $name ($($subset.Value -join ', ')) */" >> $css
pyftsubset $file --unicodes=$whitelist --flavor=woff2 --harfbuzz-repacker --output-file=$targetFile `
@features `
--drop-tables+=Silt # --drop-tables+=name --drop-tables+=post

echo "/* $name ($($subset.Value.Blocks -join ', ')) */" >> $css
echo "@font-face {" >> $css
echo " font-family: '$fontFamily';" >> $css
echo " src: local('$fontFamily'), url('/fonts/charis/$(Split-Path -Leaf $targetFile)') format('woff2');" >> $css
Expand Down

0 comments on commit 8bbe1cb

Please sign in to comment.