9front - general discussion about 9front
 help / color / mirror / Atom feed
* [ports] add libfreetype
@ 2020-03-25  5:55 Lucas Francesco
  2020-03-26 23:43 ` [9front] " ori
  0 siblings, 1 reply; 7+ messages in thread
From: Lucas Francesco @ 2020-03-25  5:55 UTC (permalink / raw)
  To: 9front

libfreetype has been used in netsurf's nsfb as an alternative font
rendering backend, turns out mainline mostly works ootb, you just need
a mkfile to know which files you must build or not


# HG changeset patch
# User uramekus
# Date 1584402722 14400
# Node ID 722dd6738e25a15e3c409a5a0e14b429e40f86fd
# Parent  912460caf007f7afa24adadab295565d82b8a4e8
add ape-libs/libfreetype to ports

diff -r 912460caf007 -r 722dd6738e25 ape-libs/libfreetype/files/mkfile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ape-libs/libfreetype/files/mkfile Mon Mar 16 19:52:02 2020 -0400
@@ -0,0 +1,151 @@
+</$objtype/mkfile
+
+CC=pcc
+CFLAGS=-p -I include -w -DFT2_BUILD_LIBRARY
+LIB=libfreetype.a
+
+BIN=/$objtype/bin
+MANPAGE=freetype
+
+OFILES=\
+ src/winfonts/winfnt.$O \
+ src/type42/t42objs.$O \
+ src/type42/t42parse.$O \
+ src/type42/t42drivr.$O \
+ src/type42/type42.$O \
+ src/type1/t1parse.$O \
+ src/type1/t1load.$O \
+ src/type1/t1driver.$O \
+ src/type1/t1afm.$O \
+ src/type1/t1gload.$O \
+ src/type1/t1objs.$O \
+ src/truetype/ttobjs.$O \
+ src/truetype/ttpload.$O \
+ src/truetype/ttgload.$O \
+ src/truetype/ttdriver.$O \
+ src/truetype/truetype.$O \
+ src/smooth/ftgrays.$O \
+ src/smooth/ftsmooth.$O \
+ src/sfnt/pngshim.$O \
+ src/sfnt/sfdriver.$O \
+ src/sfnt/sfobjs.$O \
+ src/sfnt/sfwoff.$O \
+ src/sfnt/ttbdf.$O \
+ src/sfnt/ttcmap.$O \
+ src/sfnt/ttcolr.$O \
+ src/sfnt/ttcpal.$O \
+ src/sfnt/ttkern.$O \
+ src/sfnt/ttload.$O \
+ src/sfnt/ttmtx.$O \
+ src/sfnt/ttsbit.$O \
+ src/sfnt/ttpost.$O \
+ src/sfnt/sfnt.$O \
+ src/cache/ftcache.$O \
+ src/pcf/pcf.$O \
+ src/pfr/pfr.$O \
+ src/lzw/ftlzw.$O \
+# src/gzip/adler32.$O  \
+# src/gzip/infblock.$O \
+# src/gzip/infcodes.$O \
+# src/gzip/inflate.$O  \
+# src/gzip/inftrees.$O \
+# src/gzip/infutil.$O  \
+# src/gzip/zutil.$O    \
+ src/gzip/ftgzip.$O    \
+ src/raster/ftraster.$O \
+ src/raster/ftrend1.$O \
+ src/psnames/psmodule.$O \
+ src/pshinter/pshrec.$O \
+ src/pshinter/pshglob.$O \
+ src/pshinter/pshmod.$O \
+ src/pshinter/pshalgo.$O \
+ src/psaux/psobjs.$O \
+ src/psaux/t1decode.$O \
+ src/psaux/t1cmap.$O \
+ src/psaux/afmparse.$O \
+ src/psaux/psconv.$O \
+ src/psaux/psauxmod.$O \
+ src/psaux/psarrst.$O \
+ src/psaux/psblues.$O \
+ src/psaux/pserror.$O \
+ src/psaux/psfont.$O \
+ src/psaux/psft.$O \
+ src/psaux/pshints.$O \
+ src/psaux/psintrp.$O \
+ src/psaux/psread.$O \
+ src/psaux/psstack.$O \
+ src/psaux/cffdecode.$O \
+ src/cid/cidparse.$O \
+ src/cid/cidload.$O  \
+ src/cid/cidriver.$O \
+ src/cid/cidgload.$O \
+ src/cid/cidobjs.$O \
+ src/cff/cffobjs.$O \
+ src/cff/cffload.$O \
+ src/cff/cffgload.$O \
+ src/cff/cffparse.$O \
+ src/cff/cffcmap.$O \
+ src/cff/cffdrivr.$O \
+ src/bdf/bdfdrivr.$O \
+ src/bdf/bdflib.$O \
+ src/base/ftcalc.$O \
+ src/base/fttrigon.$O \
+ src/base/ftutil.$O \
+ src/base/ftstream.$O \
+ src/base/ftgloadr.$O \
+ src/base/ftoutln.$O \
+ src/base/ftobjs.$O \
+ src/base/ftsnames.$O \
+ src/base/ftdbgmem.$O \
+ src/base/ftglyph.$O \
+ src/base/ftmm.$O \
+ src/base/ftbdf.$O \
+ src/base/fttype1.$O \
+ src/base/ftpfr.$O \
+ src/base/ftwinfnt.$O \
+ src/base/ftbbox.$O \
+ src/base/ftsystem.$O \
+ src/base/ftinit.$O \
+ src/base/ftdebug.$O \
+ src/base/ftadvanc.$O \
+ src/base/ftcolor.$O \
+ src/base/fterrors.$O \
+ src/base/ftfntfmt.$O \
+ src/base/fthash.$O \
+ src/base/ftlcdfil.$O \
+ src/base/ftpsprop.$O \
+ src/base/ftrfork.$O \
+ src/base/ftbitmap.$O \
+ src/autofit/afangles.$O \
+ src/autofit/afblue.$O   \
+ src/autofit/afcjk.$O    \
+ src/autofit/afdummy.$O  \
+ src/autofit/afglobal.$O \
+ src/autofit/afhints.$O  \
+ src/autofit/afindic.$O  \
+ src/autofit/aflatin.$O  \
+ src/autofit/afloader.$O \
+ src/autofit/afmodule.$O \
+ src/autofit/afranges.$O \
+ src/autofit/afshaper.$O \
+ src/autofit/afwarp.$O \
+
+
+%.$O: %.c
+ $CC -o $stem.$O -c $CFLAGS $stem.c
+
+all:V: $LIB $TARG
+
+$LIB: $OFILES
+ ar vu $LIB $newprereq
+ cp $LIB /$objtype/lib/ape
+
+
+install:
+ cp $LIB /$objtype/lib/ape
+
+clean:
+ rm -f $LIB $OFILES main.$O
+
+nuke:
+ rm -f /$objtype/lib/ape/$LIB
diff -r 912460caf007 -r 722dd6738e25 ape-libs/libfreetype/manifest
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ape-libs/libfreetype/manifest Mon Mar 16 19:52:02 2020 -0400
@@ -0,0 +1,1 @@
+3a60d391fd579440561bf0e7f31af2222bc610ad6ce4d9d7bd2165bca8669110
freetype-2.10.1.tar.gz
diff -r 912460caf007 -r 722dd6738e25 ape-libs/libfreetype/mkfile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ape-libs/libfreetype/mkfile Mon Mar 16 19:52:02 2020 -0400
@@ -0,0 +1,14 @@
+</$objtype/mkfile
+
+OWNER='Lucas Francesco <uramekus@cirno.dev>'
+DESCRIPTION='freetype font library for APE'
+VERSION=2.10.1
+
+WEBSOURCE=https://download.savannah.gnu.org/releases/freetype/freetype-$VERSION.tar.gz
+BUILDPATH=work/freetype-$VERSION
+BUILDCOMMAND=mk
+INSTALLCOMMAND=mk install
+CLEANCOMMAND=mk clean
+UNINSTALLCOMMAND=mk nuke
+
+</sys/ports/Mk/mkfile


^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [9front] [ports] add libfreetype
@ 2020-03-26  5:26 kokamoto
  2020-03-26 22:10 ` Lucas Francesco
  0 siblings, 1 reply; 7+ messages in thread
From: kokamoto @ 2020-03-26  5:26 UTC (permalink / raw)
  To: 9front

[-- Attachment #1: Type: text/plain, Size: 3841 bytes --]

Thank you very much Lucas!

Attached is a new netsurf webpage image using dejavu freetpe font.
Most peoples here don't have interest to Japanese font, I show dejavu font example.

Main changes are frontends/framebuffer/font_freetype.c and netsurf/mkfile, and of course
put dejavu font files under /sys/lib/netsurf/fonts/truetype/dejavu.

The font defines in mkfile didn't work, so I hard coded each font names in
font_freetype.c.☺

mkfile:
OBJ=\
...
#	frontends/framebuffer/font_internal.$O \
#	frontends/framebuffer/font-ns-sans.$O \
	frontends/framebuffer/font_freetype.$O \
...
CFLAGS=\
...
	-DNETSURF_FB_FONTPATH="/sys/lib/netsurf/fonts/truetype/dejavu" \
...
	-DFB_USE_FREETYPE \
#	-DNETSURF_FB_FONT_SANS_SERIF =const char *"DejaVuSans.ttf\" \
#	-DNETSURF_FB_FONT_SANS_SERIF_BOLD =const char *"DejaVuSans-Bold.ttf" \
#	-DNETSURF_FB_FONT_SANS_SERIF_ITALIC =const char *"DejaVuSans-Oblique.ttf\" \
#	-DNETSURF_FB_FONT_SANS_SERIF_ITALIC_BOLD =const char *"DejaVuSans-BoldOblique.ttf" \
#	-DNETSURF_FB_FONT_SERIF =const char *"DejaVuSerif.ttf" \
#	-DNETSURF_FB_FONT_SERIF_BOLD =const char *"DejaVuSerif-Bold.ttf" \
#	-DNETSURF_FB_FONT_MONOSPACE =const char *"DejaVuSansMono.ttf" \
#	-DNETSURF_FB_FONT_MONOSPACE_BOLD =const char *"DejaVuSansMono-Bold.ttf" \
#	-DNETSURF_FB_FONT_CURSIVE =const char *"Comic_Sans_MS.ttf" \
#	-DNETSURF_FB_FONT_FANTASY =const char *"Impact.ttf"

font_freetype.c:
...
/* exported interface documented in framebuffer/font.h */
bool fb_font_init(void)
{
...
	/* Start with the sans serif font */
	fb_face = fb_new_face(nsoption_charp(fb_face_sans_serif),
			      "sans_serif.ttf",
//			      NETSURF_FB_FONT_SANS_SERIF);
			     "DejaVuSans.ttf");		/* K.Okamoto */
...
	/* Bold sans serif face */
	fb_face = fb_new_face(nsoption_charp(fb_face_sans_serif_bold),
                            "sans_serif_bold.ttf",
//                            NETSURF_FB_FONT_SANS_SERIF_BOLD);
			  "DejaVuSans-Bold.ttf");		/* K.Okamoto */
...
	/* Italic sans serif face */
	fb_face = fb_new_face(nsoption_charp(fb_face_sans_serif_italic),
			      "sans_serif_italic.ttf",
//			      NETSURF_FB_FONT_SANS_SERIF_ITALIC);
	   		     "DejaVuSans-Oblique.ttf");		/* K.Okamoto */
...
	/* Bold italic sans serif face */
	fb_face = fb_new_face(nsoption_charp(fb_face_sans_serif_italic_bold), 
			      "sans_serif_italic_bold.ttf",
//			      NETSURF_FB_FONT_SANS_SERIF_ITALIC_BOLD);
			     "DejaVuSans-BoldOblique.ttf");		/* K.Okamoto */
...
	/* serif face */
	fb_face = fb_new_face(nsoption_charp(fb_face_serif),
                            "serif.ttf",
//			      NETSURF_FB_FONT_SERIF);
			  "DejaVuSerif.ttf");		/* K.Okamoto */
...
	/* bold serif face*/
	fb_face = fb_new_face(nsoption_charp(fb_face_serif_bold),
			      "serif_bold.ttf",
//			      NETSURF_FB_FONT_SERIF_BOLD);
			      "DejaVuSerif-Bold.ttf");		/* K.Okamoto */
...
	/* monospace face */
	fb_face = fb_new_face(nsoption_charp(fb_face_monospace),
			      "monospace.ttf",
//			      NETSURF_FB_FONT_MONOSPACE);
			      "DejaVuSansMono.ttf");		/* K.Okamoto */
...
	/* bold monospace face*/
	fb_face = fb_new_face(nsoption_charp(fb_face_monospace_bold),
			      "monospace_bold.ttf",
//			      NETSURF_FB_FONT_MONOSPACE_BOLD);
			      "DejaVuSansMono-Bold.ttf");		/* K.Okamoto */
...
	/* cursive face */
	fb_face = fb_new_face(nsoption_charp(fb_face_cursive),
			      "cursive.ttf",
//			      NETSURF_FB_FONT_CURSIVE);
			      "Comic_Sans_MS.ttf");		/* K.Okamoto */
...
	fb_face = fb_new_face(nsoption_charp(fb_face_fantasy),
			      "fantasy.ttf",
//			      NETSURF_FB_FONT_FANTASY);
			     "Impact.ttf");		/* K.Okamoto */
...

Kenji

PS: 
please include two lines in ft2build.h like:
#ifndef FT2BUILD_H_
#define FT2BUILD_H_

#pragma	src	"/sys/ports/ape-libs/libfreetype"
#pragma	lib	"/$M/lib/ape/libfreetype.a"

#include <freetype/config/ftheader.h>

[-- Attachment #2: netsurf.bit --]
[-- Type: image/p9bit, Size: 467464 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [9front] [ports] add libfreetype
@ 2020-03-26  5:53 kokamoto
  0 siblings, 0 replies; 7+ messages in thread
From: kokamoto @ 2020-03-26  5:53 UTC (permalink / raw)
  To: 9front

As seen in the image, the color of Download image (dark blue) is
too much dark.  This is run on arm (rpi3B) machine, and
probably of the cause,

Kenji



^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [9front] [ports] add libfreetype
@ 2020-03-26 23:17 kokamoto
  0 siblings, 0 replies; 7+ messages in thread
From: kokamoto @ 2020-03-26 23:17 UTC (permalink / raw)
  To: 9front

> ive been using this exactly same setup as you described for weeks!
> 
> nice to see we got on the same place from different perspectives!

Yeah, this is your work, not mine.

By the way, I moved the ttf font files to /lib/font/ttf for utilizing your
libfreetpe to open to more applications.

Then, my netsurf/mkfile setting changes to:
	-DNETSURF_FB_FONTPATH="/lib/font/ttf/dejavu:/lib/font/ttf/msttcorefonts:/lib/font/ttf/ipaex" \
from
	-DNETSURF_FB_FONTPATH="/sys/lib/netsurf/fonts/truetype/dejavu:/....

Kenji



^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [9front] [ports] add libfreetype
@ 2020-03-28  5:28 kokamoto
  0 siblings, 0 replies; 7+ messages in thread
From: kokamoto @ 2020-03-28  5:28 UTC (permalink / raw)
  To: 9front

[-- Attachment #1: Type: text/plain, Size: 2769 bytes --]

I decided to show my Japanese nsfb image, too.
I know someone can read Japanese here.☺

Settings:
netsurf/mkfile
	-DNETSURF_FB_FONTPATH="/lib/font/ttf/ipaex:/lib/font/ttf/dejavu:/lib/font/ttf/msttcor
netsurf/frontends/framebuffer/font_freetype.c
in bool fb_font_init() function:
	/* Start with the sans serif font */
	fb_face = fb_new_face(nsoption_charp(fb_face_sans_serif),
			      "sans_serif.ttf",
//			      NETSURF_FB_FONT_SANS_SERIF);
//			     "DejaVuSans.ttf");		/* K.Okamoto */
			      "ipagp.ttf");		/* K.Okamoto */
...
	/* Bold sans serif face */
	fb_face = fb_new_face(nsoption_charp(fb_face_sans_serif_bold),
                            "sans_serif_bold.ttf",
//                            NETSURF_FB_FONT_SANS_SERIF_BOLD);
//			  "DejaVuSans-Bold.ttf");		/* K.Okamoto */
			  "ipagp.ttf");		/* K.Okamoto */
...
	/* Italic sans serif face */
	fb_face = fb_new_face(nsoption_charp(fb_face_sans_serif_italic),
			      "sans_serif_italic.ttf",
//			      NETSURF_FB_FONT_SANS_SERIF_ITALIC);
//	   		     "DejaVuSans-Oblique.ttf");		/* K.Okamoto */
			      "ipagp.ttf");		/* K.Okamoto */
...
	/* Bold italic sans serif face */
	fb_face = fb_new_face(nsoption_charp(fb_face_sans_serif_italic_bold), 
			      "sans_serif_italic_bold.ttf",
//			      NETSURF_FB_FONT_SANS_SERIF_ITALIC_BOLD);
//			     "DejaVuSans-BoldOblique.ttf");		/* K.Okamoto */
			      "ipagp.ttf");		/* K.Okamoto */
...
	/* serif face */
	fb_face = fb_new_face(nsoption_charp(fb_face_serif),
                            "serif.ttf",
//			      NETSURF_FB_FONT_SERIF);
//			  "DejaVuSerif.ttf");		/* K.Okamoto */
			      "ipamp.ttf");		/* K.Okamoto */
...
	/* bold serif face*/
	fb_face = fb_new_face(nsoption_charp(fb_face_serif_bold),
			      "serif_bold.ttf",
//			      NETSURF_FB_FONT_SERIF_BOLD);
//			      "DejaVuSerif-Bold.ttf");		/* K.Okamoto */
			      "ipamp.ttf");		/* K.Okamoto */
...
	/* monospace face */
	fb_face = fb_new_face(nsoption_charp(fb_face_monospace),
			      "monospace.ttf",
//			      NETSURF_FB_FONT_MONOSPACE);
//			      "DejaVuSansMono.ttf");		/* K.Okamoto */
			      "ipag.ttf");		/* K.Okamoto */
...
	/* bold monospace face*/
	fb_face = fb_new_face(nsoption_charp(fb_face_monospace_bold),
			      "monospace_bold.ttf",
//			      NETSURF_FB_FONT_MONOSPACE_BOLD);
//			      "DejaVuSansMono-Bold.ttf");		/* K.Okamoto */
			      "ipag.ttf");		/* K.Okamoto */
...
	/* cursive face */
	fb_face = fb_new_face(nsoption_charp(fb_face_cursive),
			      "cursive.ttf",
//			      NETSURF_FB_FONT_CURSIVE);
			      "Comic_Sans_MS.ttf");		/* K.Okamoto */
...
	/* fantasy face */
	fb_face = fb_new_face(nsoption_charp(fb_face_fantasy),
			      "fantasy.ttf",
//			      NETSURF_FB_FONT_FANTASY);
			     "Impact.ttf");		/* K.Okamoto */
====

Kenji

[-- Attachment #2: nsfbJP.bit --]
[-- Type: image/p9bit, Size: 640656 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-03-28  5:28 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-25  5:55 [ports] add libfreetype Lucas Francesco
2020-03-26 23:43 ` [9front] " ori
2020-03-26  5:26 kokamoto
2020-03-26 22:10 ` Lucas Francesco
2020-03-26  5:53 kokamoto
2020-03-26 23:17 kokamoto
2020-03-28  5:28 kokamoto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).