Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Display and 3D characters: Prototype font and MetaPost figures

59 views
Skip to first unread message

Laurence Finston

unread,
May 5, 2022, 9:25:06 AM5/5/22
to
Hello,

During the past few months I've been working on display fonts and "3D" characters. I have now put together a prototype font ("Hollow") and some related MetaPost figures and posted them to the GNU 3DLDF website:
https://www.gnu.org/software/3dldf/display_fonts.html

A PDF file with samples: file:///home/laurence/3DLDF-3.0_web/3dldf/graphics/hollow.pdf

A compressed archive file ("tarball") with the same document in PDF, dvi, and PostScript formats along with the source code, a few of the generated files (not, however, the Encapsulated PostScript files) and a Makefile:
https://www.gnu.org/software/3dldf/SRC_CODE/hollow.tgz

There is a great deal left to do but I thought I would present my results so far here in case anyone might be interested in having a look or even have a use for such a font.

The MF and MP files are generated by GNU 3DLDF, which is a software package for 3D drawing with MetaPost and METAFONT output. It is available from here: https://savannah.gnu.org/projects/3dldf/
This is the homepage: https://www.gnu.org/software/3dldf/

3DLDF implements a language similar to the MF language, but with some differences and many additional commands. It performs the 3D calculations,
projects the resulting image onto a plane using either a parallel projection or the perspective projection, and writes MF and/or MP code to its output files. Then, MF or MP can be run as usual, fonts and/or EPS files can be included in TeX documents, etc.

The "Hollow" font is an MF font, i.e., not a PostScript one. I have tested making a PS font and it works, but there are certain restrictions that the MF or MP code must fulfill which makes it impossible to use some of MF's features. I am therefore currently not working on creating PostScript fonts.

The characters "A" and "g" from Computer Modern Sans Serif Bold Extended 10pt are obtained by calling MP within 3DLDF via `system' and invoking the `glyph' command. The data for the paths are then read from an output file that MP writes.

For the "A", I modified the character by straightening out the rounded parts so that it consists only of straight lines. The "g", on the other hand, consists only of curves and required a different approach.

Any feedback would be much appreciated.

Laurence Finston

Laurence Finston

unread,
May 5, 2022, 9:27:03 AM5/5/22
to
On Thursday, May 5, 2022 at 3:25:06 PM UTC+2, Laurence Finston wrote:
>
> A PDF file with samples: file:///home/laurence/3DLDF-3.0_web/3dldf/graphics/hollow.pdf

Sorry, that was my local copy. This is the correct link: https://www.gnu.org/software/3dldf/graphics/hollow.pdf

jfh

unread,
May 6, 2022, 7:37:16 PM5/6/22
to
I saw two problems with most of the g symbols (Figs 204--218 for example): a piece missing from the tag at the top right of g, and an extra piece on the link between the upper and lower loops of g. But is the bug in your code or my pdf reader?

Laurence Finston

unread,
May 6, 2022, 11:00:01 PM5/6/22
to
Neither. You're quite right, there is a problem in both places. I will have to take a different approach for those sections. The way I did it, I ended up with "pimples" that I tried to cover up with an `undrawdot' command using a `pensquare'. The result was okay for the unrotated view projected onto the x-y plane but got progressively worse as the perspective got more extreme. In the last ones, you can see part of the outline of the square.

I got the inside paths by taking subpaths of the original, outer paths, then scaling and shifting them. For these two places that didn't well so I added new points and tried to make new paths --- a single one at the connecting wedge between the upper and lower bowls and a second path that partially covers the first one at the serif at the top.

I think a better approach for those places would be to take tangents from the original paths at various points, find the perpendiculars, and make the inside paths by using points on the perpendiculars. For this, I have to implement `directiontime' in 3dldf, which is what I'm doing now.

Of course, there are other refinements that could be done. I wanted to get the samples out where people could see them even though this project is still very much a work in progress and there are still some rough spots.

Thanks for your feedback.

Laurence

Laurence Finston

unread,
May 6, 2022, 11:29:50 PM5/6/22
to
On Saturday, May 7, 2022 at 5:00:01 AM UTC+2, Laurence Finston wrote:
> On Saturday, May 7, 2022 at 1:37:16 AM UTC+2, jfh wrote:
> > On Friday, May 6, 2022 at 1:27:03 AM UTC+12, Laurence Finston wrote:
> > > On Thursday, May 5, 2022 at 3:25:06 PM UTC+2, Laurence Finston wrote:
> > > >
> > > > A PDF file with samples: file:///home/laurence/3DLDF-3.0_web/3dldf/graphics/hollow.pdf
> > > Sorry, that was my local copy. This is the correct link: https://www.gnu.org/software/3dldf/graphics/hollow.pdf
> > I saw two problems with most of the g symbols (Figs 204--218 for example): a piece missing from the tag at the top right of g, and an extra piece on the link between the upper and lower loops of g. But is the bug in your code or my pdf reader?
> Neither. You're quite right, there is a problem in both places. I will have to take a different approach for those sections. The way I did it, I ended up with "pimples" that I tried to cover up with an `undrawdot' command using a `pensquare'.

Sorry, in the wedge, it's a black dot (`drawdot') that I used to try to cover up a gap and in the serif it's a white dot (`undrawdot') that I used to try to cover up a "pimple". In addition, I needed to find extra points for almost all of the inner paths, it just worked better in the other places.
0 new messages