Index | Thread | Search

From:
Peter Hessler <phessler@theapt.org>
Subject:
Re: woff2/woff support in font module
To:
"Anthony J. Bentley" <bentley@openbsd.org>
Cc:
ports@openbsd.org
Date:
Thu, 13 Nov 2025 11:19:47 +0100

Download raw body.

Thread
Overall I like this.

But I wanted to ask, what's the behaviour if the porter doesn't have a
web subpackage?

-peter


On 2025 Nov 12 (Wed) at 06:18:04 -0700 (-0700), Anthony J. Bentley wrote:
:Hi,
:
:We used to sometimes provide .woff2 and .woff (the common "web font"
:formats) in our font packages. But it was effectively pointless--files 
:installed to /usr/local/share can't be referenced from httpd.conf, nor
:hardlinked or softlinked to /var/www--and bloated the package size, so
:we removed them. Still, it wouldn't take much to provide dedicated
:subpackages for these that install to a more sensible place and don't
:impact the size of the main package.
:
:Here's a diff that allows font ports to declare MODFONT_WEBFILES (just
:like they currently declare MODFONT_FONTFILES and MODFONT_DOCFILES) and
:have the module do the rest of the work, i.e., install them to
:/var/www/fonts. Also included are two examples (openmoji, public-sans)
:of what the result looks like: basically, set MULTI_PACKAGES = -main -web
:and MODFONT_WEBFILES, rerun 'make plist', and the module does the rest.
:
:'make package' in /usr/ports still succeeds with this diff applied.
:
:ok?
:
:
:blob - c21c3e11875ed7695d74b84aa1def3b654e223b0
:blob + bce4741cd71797dc9ae2edbcedd0c88af53c40d5
:--- infrastructure/mk/font.port.mk
:+++ infrastructure/mk/font.port.mk
:@@ -13,9 +13,11 @@ PKGNAME ?=	${MODFONT_FAMILY}-${MODFONT_VERSION}
: 
: MODFONT_FONTDIR ?=	${PREFIX}/share/fonts/${MODFONT_FAMILY}
: MODFONT_DOCDIR ?=	${PREFIX}/share/doc/${MODFONT_FAMILY}
:+MODFONT_WEBDIR ?=	${WRKINST}${VARBASE}/www/fonts/${MODFONT_FAMILY}
: 
: MODFONT_FONTFILES ?=
: MODFONT_DOCFILES ?=
:+MODFONT_WEBFILES ?=
: 
: MODFONT_do-install = ${INSTALL_DATA_DIR} ${MODFONT_FONTDIR};
: 
:@@ -32,6 +34,12 @@ MODFONT_do-install += ; ${INSTALL_DATA_DIR} ${MODFONT_
: MODFONT_do-install += ; for t in ${MODFONT_DOCFILES}; do ${INSTALL_DATA} ${WRKSRC}/$$t ${MODFONT_DOCDIR}; done
: .endif
: 
:+.if !empty(MODFONT_WEBFILES)
:+PREFIX-web ?=	${VARBASE}/www
:+MODFONT_do-install += ; ${INSTALL_DATA_DIR} ${MODFONT_WEBDIR}
:+MODFONT_do-install += ; for t in ${MODFONT_WEBFILES}; do ${INSTALL_DATA} ${WRKSRC}/$$t ${MODFONT_WEBDIR}; done
:+.endif
:+
: .  if !target(do-install)
: do-install:
: 	${MODFONT_do-install}
:blob - 44377d3c5c26622b6d8aea19a9079f87eb946b7d
:blob + da26c9a215c65fc831362d43b84298980ae83926
:--- fonts/openmoji/Makefile
:+++ fonts/openmoji/Makefile
:@@ -1,9 +1,12 @@
:-COMMENT =		SVG/COLR-based open source emoji fonts
:+COMMENT-main =		SVG/COLR-based open source emoji fonts
:+COMMENT-web =		SVG/COLR-based open source emoji fonts (web fonts)
: 
: MODFONT_FAMILY =	openmoji
: MODFONT_VERSION =	16.0.0
:-REVISION =		0
:+REVISION-main =		1
: 
:+MULTI_PACKAGES =	-main -web
:+
: DIST_TUPLE =		github hfg-gmuend openmoji ${MODFONT_VERSION} .
: 
: CATEGORIES =		fonts
:@@ -20,6 +23,8 @@ NO_TEST =		Yes
: 
: MODFONT_FONTFILES =	font/OpenMoji-color-colr1_svg/*.ttf \
: 			font/OpenMoji-black-glyf/*.ttf
:+MODFONT_WEBFILES =	font/OpenMoji-color-colr1_svg/*.woff2 \
:+			font/OpenMoji-black-glyf/*.woff2
: 
: post-install:
: 	${INSTALL_DATA_DIR} ${PREFIX}/share/openmoji
:blob - 61f138a85f185d9ace332a0da8d698ba91c2cc5f (mode 644)
:blob + /dev/null
:--- fonts/openmoji/pkg/DESCR
:+++ /dev/null
:@@ -1 +0,0 @@
:-Open-source emojis for designers, developers and everyone else!
:blob - /dev/null
:blob + 61f138a85f185d9ace332a0da8d698ba91c2cc5f (mode 644)
:--- /dev/null
:+++ fonts/openmoji/pkg/DESCR-main
:@@ -0,0 +1 @@
:+Open-source emojis for designers, developers and everyone else!
:blob - /dev/null
:blob + 61f138a85f185d9ace332a0da8d698ba91c2cc5f (mode 644)
:--- /dev/null
:+++ fonts/openmoji/pkg/DESCR-web
:@@ -0,0 +1 @@
:+Open-source emojis for designers, developers and everyone else!
:blob - 674daf6d3938e1ef37d412a39fc7f5bdabf5165c (mode 644)
:blob + /dev/null
:--- fonts/openmoji/pkg/PLIST
:+++ /dev/null
:@@ -1,6 +0,0 @@
:-share/fonts/
:-@fontdir share/fonts/openmoji/
:-share/fonts/openmoji/OpenMoji-black-glyf.ttf
:-share/fonts/openmoji/OpenMoji-color-colr1_svg.ttf
:-share/openmoji/
:-share/openmoji/90-openmoji-aliases.conf
:blob - /dev/null
:blob + 674daf6d3938e1ef37d412a39fc7f5bdabf5165c (mode 644)
:--- /dev/null
:+++ fonts/openmoji/pkg/PLIST-main
:@@ -0,0 +1,6 @@
:+share/fonts/
:+@fontdir share/fonts/openmoji/
:+share/fonts/openmoji/OpenMoji-black-glyf.ttf
:+share/fonts/openmoji/OpenMoji-color-colr1_svg.ttf
:+share/openmoji/
:+share/openmoji/90-openmoji-aliases.conf
:blob - /dev/null
:blob + 9f464b6f591afedceaed4da166ea1d9a0a2f6963 (mode 644)
:--- /dev/null
:+++ fonts/openmoji/pkg/PLIST-web
:@@ -0,0 +1,4 @@
:+fonts/
:+fonts/openmoji/
:+fonts/openmoji/OpenMoji-black-glyf.woff2
:+fonts/openmoji/OpenMoji-color-colr1_svg.woff2
:blob - 2032018acb0590f9ebf6753045aa0d403c386f2e
:blob + 4b3694763ec7f4789db92172dbaa9ac8f88b7597
:--- fonts/public-sans/Makefile
:+++ fonts/public-sans/Makefile
:@@ -1,10 +1,13 @@
:-COMMENT =		strong, neutral, principles-driven typeface
:+COMMENT-main =		strong, neutral, principles-driven typeface
:+COMMENT-web =		strong, neutral, principles-driven typeface (web fonts)
: 
: MODFONT_FAMILY =	public-sans
: MODFONT_VERSION =	2.001
: 
:-REVISION =		0
:+MULTI_PACKAGES =	-main -web
: 
:+REVISION-main =		1
:+
: DISTNAME =		public-sans-v${MODFONT_VERSION}
: 
: HOMEPAGE =		https://public-sans.digital.gov/
:@@ -18,6 +21,7 @@ MODULES =		font
: 
: MODFONT_FONTFILES =	fonts/*/*.ttf \
: 			fonts/*/*.otf
:+MODFONT_WEBFILES =	fonts/*/*.woff2
: 
: NO_BUILD =		Yes
: NO_TEST =		Yes
:blob - 649b234615cb3c53ef1199e78494b28021a022db (mode 644)
:blob + /dev/null
:--- fonts/public-sans/pkg/DESCR
:+++ /dev/null
:@@ -1,8 +0,0 @@
:-Public Sans is a strong, neutral, principles-driven, open-source typeface
:-for text or display. Developed by the US government's General Services
:-Administration, it is a fork of the SIL Open Licensed face Libre Franklin.
:-Public Sans has many similarities with its parent, but differs in its focus
:-on longform reading and neutral UI applicability. It takes inspiration from
:-geometric sans faces of the 20th century, as well as the original Franklins
:-of the 19th, resulting in something of a mongrel face that retains its
:-American origin.
:blob - /dev/null
:blob + 649b234615cb3c53ef1199e78494b28021a022db (mode 644)
:--- /dev/null
:+++ fonts/public-sans/pkg/DESCR-main
:@@ -0,0 +1,8 @@
:+Public Sans is a strong, neutral, principles-driven, open-source typeface
:+for text or display. Developed by the US government's General Services
:+Administration, it is a fork of the SIL Open Licensed face Libre Franklin.
:+Public Sans has many similarities with its parent, but differs in its focus
:+on longform reading and neutral UI applicability. It takes inspiration from
:+geometric sans faces of the 20th century, as well as the original Franklins
:+of the 19th, resulting in something of a mongrel face that retains its
:+American origin.
:blob - 866342d34cfeacb8f30b7a94b4cd84798462d89f (mode 644)
:blob + /dev/null
:--- fonts/public-sans/pkg/PLIST
:+++ /dev/null
:@@ -1,40 +0,0 @@
:-share/fonts/
:-@fontdir share/fonts/public-sans/
:-share/fonts/public-sans/PublicSans-Black.otf
:-share/fonts/public-sans/PublicSans-Black.ttf
:-share/fonts/public-sans/PublicSans-BlackItalic.otf
:-share/fonts/public-sans/PublicSans-BlackItalic.ttf
:-share/fonts/public-sans/PublicSans-Bold.otf
:-share/fonts/public-sans/PublicSans-Bold.ttf
:-share/fonts/public-sans/PublicSans-BoldItalic.otf
:-share/fonts/public-sans/PublicSans-BoldItalic.ttf
:-share/fonts/public-sans/PublicSans-ExtraBold.otf
:-share/fonts/public-sans/PublicSans-ExtraBold.ttf
:-share/fonts/public-sans/PublicSans-ExtraBoldItalic.otf
:-share/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf
:-share/fonts/public-sans/PublicSans-ExtraLight.otf
:-share/fonts/public-sans/PublicSans-ExtraLight.ttf
:-share/fonts/public-sans/PublicSans-ExtraLightItalic.otf
:-share/fonts/public-sans/PublicSans-ExtraLightItalic.ttf
:-share/fonts/public-sans/PublicSans-Italic.otf
:-share/fonts/public-sans/PublicSans-Italic.ttf
:-share/fonts/public-sans/PublicSans-Italic[wght].ttf
:-share/fonts/public-sans/PublicSans-Light.otf
:-share/fonts/public-sans/PublicSans-Light.ttf
:-share/fonts/public-sans/PublicSans-LightItalic.otf
:-share/fonts/public-sans/PublicSans-LightItalic.ttf
:-share/fonts/public-sans/PublicSans-Medium.otf
:-share/fonts/public-sans/PublicSans-Medium.ttf
:-share/fonts/public-sans/PublicSans-MediumItalic.otf
:-share/fonts/public-sans/PublicSans-MediumItalic.ttf
:-share/fonts/public-sans/PublicSans-Regular.otf
:-share/fonts/public-sans/PublicSans-Regular.ttf
:-share/fonts/public-sans/PublicSans-SemiBold.otf
:-share/fonts/public-sans/PublicSans-SemiBold.ttf
:-share/fonts/public-sans/PublicSans-SemiBoldItalic.otf
:-share/fonts/public-sans/PublicSans-SemiBoldItalic.ttf
:-share/fonts/public-sans/PublicSans-Thin.otf
:-share/fonts/public-sans/PublicSans-Thin.ttf
:-share/fonts/public-sans/PublicSans-ThinItalic.otf
:-share/fonts/public-sans/PublicSans-ThinItalic.ttf
:-share/fonts/public-sans/PublicSans[wght].ttf
:blob - /dev/null
:blob + 649b234615cb3c53ef1199e78494b28021a022db (mode 644)
:--- /dev/null
:+++ fonts/public-sans/pkg/DESCR-web
:@@ -0,0 +1,8 @@
:+Public Sans is a strong, neutral, principles-driven, open-source typeface
:+for text or display. Developed by the US government's General Services
:+Administration, it is a fork of the SIL Open Licensed face Libre Franklin.
:+Public Sans has many similarities with its parent, but differs in its focus
:+on longform reading and neutral UI applicability. It takes inspiration from
:+geometric sans faces of the 20th century, as well as the original Franklins
:+of the 19th, resulting in something of a mongrel face that retains its
:+American origin.
:blob - /dev/null
:blob + 866342d34cfeacb8f30b7a94b4cd84798462d89f (mode 644)
:--- /dev/null
:+++ fonts/public-sans/pkg/PLIST-main
:@@ -0,0 +1,40 @@
:+share/fonts/
:+@fontdir share/fonts/public-sans/
:+share/fonts/public-sans/PublicSans-Black.otf
:+share/fonts/public-sans/PublicSans-Black.ttf
:+share/fonts/public-sans/PublicSans-BlackItalic.otf
:+share/fonts/public-sans/PublicSans-BlackItalic.ttf
:+share/fonts/public-sans/PublicSans-Bold.otf
:+share/fonts/public-sans/PublicSans-Bold.ttf
:+share/fonts/public-sans/PublicSans-BoldItalic.otf
:+share/fonts/public-sans/PublicSans-BoldItalic.ttf
:+share/fonts/public-sans/PublicSans-ExtraBold.otf
:+share/fonts/public-sans/PublicSans-ExtraBold.ttf
:+share/fonts/public-sans/PublicSans-ExtraBoldItalic.otf
:+share/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf
:+share/fonts/public-sans/PublicSans-ExtraLight.otf
:+share/fonts/public-sans/PublicSans-ExtraLight.ttf
:+share/fonts/public-sans/PublicSans-ExtraLightItalic.otf
:+share/fonts/public-sans/PublicSans-ExtraLightItalic.ttf
:+share/fonts/public-sans/PublicSans-Italic.otf
:+share/fonts/public-sans/PublicSans-Italic.ttf
:+share/fonts/public-sans/PublicSans-Italic[wght].ttf
:+share/fonts/public-sans/PublicSans-Light.otf
:+share/fonts/public-sans/PublicSans-Light.ttf
:+share/fonts/public-sans/PublicSans-LightItalic.otf
:+share/fonts/public-sans/PublicSans-LightItalic.ttf
:+share/fonts/public-sans/PublicSans-Medium.otf
:+share/fonts/public-sans/PublicSans-Medium.ttf
:+share/fonts/public-sans/PublicSans-MediumItalic.otf
:+share/fonts/public-sans/PublicSans-MediumItalic.ttf
:+share/fonts/public-sans/PublicSans-Regular.otf
:+share/fonts/public-sans/PublicSans-Regular.ttf
:+share/fonts/public-sans/PublicSans-SemiBold.otf
:+share/fonts/public-sans/PublicSans-SemiBold.ttf
:+share/fonts/public-sans/PublicSans-SemiBoldItalic.otf
:+share/fonts/public-sans/PublicSans-SemiBoldItalic.ttf
:+share/fonts/public-sans/PublicSans-Thin.otf
:+share/fonts/public-sans/PublicSans-Thin.ttf
:+share/fonts/public-sans/PublicSans-ThinItalic.otf
:+share/fonts/public-sans/PublicSans-ThinItalic.ttf
:+share/fonts/public-sans/PublicSans[wght].ttf
:blob - /dev/null
:blob + 8c4b434ee72ce6a35729bb45ac8f0e8abded68a2 (mode 644)
:--- /dev/null
:+++ fonts/public-sans/pkg/PLIST-web
:@@ -0,0 +1,20 @@
:+fonts/
:+fonts/public-sans/
:+fonts/public-sans/PublicSans-Black.woff2
:+fonts/public-sans/PublicSans-BlackItalic.woff2
:+fonts/public-sans/PublicSans-Bold.woff2
:+fonts/public-sans/PublicSans-BoldItalic.woff2
:+fonts/public-sans/PublicSans-ExtraBold.woff2
:+fonts/public-sans/PublicSans-ExtraBoldItalic.woff2
:+fonts/public-sans/PublicSans-ExtraLight.woff2
:+fonts/public-sans/PublicSans-ExtraLightItalic.woff2
:+fonts/public-sans/PublicSans-Italic.woff2
:+fonts/public-sans/PublicSans-Light.woff2
:+fonts/public-sans/PublicSans-LightItalic.woff2
:+fonts/public-sans/PublicSans-Medium.woff2
:+fonts/public-sans/PublicSans-MediumItalic.woff2
:+fonts/public-sans/PublicSans-Regular.woff2
:+fonts/public-sans/PublicSans-SemiBold.woff2
:+fonts/public-sans/PublicSans-SemiBoldItalic.woff2
:+fonts/public-sans/PublicSans-Thin.woff2
:+fonts/public-sans/PublicSans-ThinItalic.woff2
:

-- 
Never make anything simple and efficient when a way can be found to
make it complex and wonderful.