Adding a new font for MeshWriter

Oh. I encode the more stable glyphs. This saves me about 40% of the size. Allows me to ship all the fonts in a package less than 100K. That is an optional detail. The main software works with either encoded or decoded.

There IS a function to do the encoding/decoding, obviously. I think both directions are in the main code module.

If you go to Comic Sans font file and look at lowercase “j” you will see all versions. The output from the glyph inspector (sortof), the unencoded MeshWriter format and the encoded MeshWriter format.

1 Like

@TheLeftover thanks for clarifying all. No worries, actually, I expected it might be tricky to do a new one. At least now I understand what hurdles you’ve been through :wink:

Answering your question, it is a custom font that are not released for public. I would use about 10 glyphs, which I could create manually, or just convert them to meshes.

But I am also interested in using 3D characters in 3D environments in general. I’m a graphic designer who is interested in typography in 3D environments, and constantly (slowly tbh) looking for ways to utilize it more easily in 3D. One of the great typography tools that I know in 3d environment is Text Mesh Pro for Unity3D and I think your MeshWriter has a great potential as well. As far as I know, designers are not happy with the fact that typography is pretty quirky in 3D, and I see a lot of rooms for improvement in general.

Thanks for your great plugin. I hope I could contribute in the future too.

1 Like

Unreleased fonts, eh? Wow.

I learned a ton about fonts, curves and SVG with this little project. In the Webdings file there are only two glyphs, variations on an SVG shape that I wanted to use in Babylon. They came from a public SVG images somewhere. Just like a latter-day 3D Wingdings. Connecting the dots, I am!

I saw from that how one could convert some SVG paths to 3D meshes. But investing in that automation would also have been very challenging. I didn’t get the “market response” except from my dear friend @Wingnut, so I kinda left it where you found it.

Thanks for the interest and the discussion. Please do stay in touch.

2 Likes

Will surely do. Cheers!

Back again. Someone else asked about modifying font files. I would be delighted to support someone’s project with MeshWriter. I don’t mean it to be a closed box but I found that adding fonts was hard. I only did three font-families and two svg symbols but every one had its own challenges.

I will update the readme with more detail on how I did it.

It makes a big difference whether one wants to create a few symbols (a la WingDings), full coverage of a new font-family or just add glyphs to an existing font.

I am here to help if this would be a valuable thing for your project.

3 Likes

Hi guys. Somebody should probably further-investigate @Necips discovered link-to Easy3Dpost.

Notice the 7 visits at my playground link, and not one LIKE for Wingy… for testing the font-making, exporting the font/scene, storing the file on his github site, and making the playground demo? Can ya “feel the love”? heh.

It’s a great link/discovery, @Necips. Just ignore the lack of petting from others. :slight_smile:

I think we need to steal this method… of font-extruding. It looks like we can extrude MANY fonts… without the hand-editing hassles. We need to go code-robbing. heh. (with perms, of course)

2 Likes

@Wingnut @Necips Thanks for the great reference. I quickly dug into the code and found they used pretty similar data format to what @TheLeftover did. For instance:

{  
  "glyphs":{  
    "A":{  
      "ha":924,
      "x_min":12,
      "x_max":913,
      "o":"m 653 230 ... l 319 368 z "
    },
    ...
  },
  "familyName":"Roboto Medium",
  "ascender":1289,
  "descender":-339,
  "underlinePosition":-102,
  "underlineThickness":68,
  "boundingBox":{  
    "yMin":-376,
    "xMin":-1017,
    "yMax":1467,
    "xMax":1625
  },
  "resolution":1000,
  "original_font_information":{ ... },
  "cssFontWeight":"normal",
  "cssFontStyle":"normal"
}

One of the actual JSON file they use can be found here: https://easy3dpost.com/fonts/Roboto.json

I couldn’t find what they actually used to create this JSON, but it’s nice to see there are people who actually have made this far.

1 Like

First, I would like to point out that I gave Wingy huge strokes for making all of the playgrounds. I am thinking that they have expired by now. (The strokes, not the playgrounds.)

Second, I have started my novella on making working fonts. You can see the latest here. (Stop reading where it says “Boogety”.) meshwriter/fonts at master · briantbutton/meshwriter · GitHub. I will plod along forward on this page. It will presently make its way over to the Babylon official page too.

2 Likes

Awesome. Let me know if there is anything I can help with. At least, I can be an audience of your gig!

1 Like

Hey Samba…

you know the band performs in the nude:smiley:

Worse than that, the entire band… is farm live-stock. NAKED farm animals! Gross.

1 Like

lol i should admit i love that gross.

Hey @samba !

I am getting back to more documentation of font creation. Since you expressed interest:

Are you thinking of co-opting a font file, as I did with most letters? Or creating free-form glyphs? If it is the latter (and you have continued interest) then I will have a couple follow-on questions.

Sorry for being so slow.

1 Like

Hey @TheLeftover,

Thanks for your hard work on this issue. Please don’t apologize as you are donating your own time to help others.

Regarding the topic, I would be more interested in co-opting font files. Just out of curiosity though, what would be your additional questions for free-form glyphs?

Font files seem to follow reasonably narrow conventions. For example they all use absolute coordinates (so far). Relative coordinates can be supported, with pain. My WebGL glyphs came from an open source SVG image which used relative coordinates. Yuck!

A couple questions about your font source.
~ Is it secret?
~ If it gets supported, do you want to fold that into the meshwriter package?

More soon.

Update to whomever is listening. I advanced the documentation a bit. While doing so, I got into the details. I am going to take to run at automating this. Or automating it more.

I will start with Comic Sans. It has been started but is very arduous. More soon.

@TheLeftover,

The font is not secret, but I just cannot share because it is what my employer owns. But there are several fonts that are very similar, such as this one.

In ideal world, I would like to have only one or two sample fonts included in the meshwriter package to present the way how they are converted. And I would like to convert my font following your documentation, because this will not be a one-time job. In the future, I will probably want to convert different fonts to use in Babylon. :wink:

I am amused and amazed so share that I have been solved many of the problems for automatic 3D font generation. There is a new font family used in this playground. See if you can spot it: https://www.babylonjs-playground.com/#NLG6KE#2 (Hint: Not the anchor.)

The new glyph was automatically generated from a font file in Javascript. No tuning by me.

There are many steps from this to a useful utility but I believe the technical risk is negligible.

1 Like

Hey @Wingnut, send me a .ttf or .otf of that font you wanted me to add. I am gonna try out my auto-converter on it.

1 Like

Hi TL. Unfortunately, it looks like a pay-to-play. Stefán Kjartansson's Personal Portfolio

There appears to be more than one version of Cinderblock, but this is the one I like best. Lots of face surface area to see reflected pictures upon. There may be other fonts with this same surface-area goodness. Any “bold’n’block” at least “leans-toward” high-surface.

(Wingy digs-into Deltakosh’s wallet to see if he has a Microsoft-comped Gold or Black credit card.) :slight_smile:

Sorry, TL. That’s a darned nice offer from ya, thanks!

If I had an easily-found $89.00 to drop on this, I might. I wonder if pathetic begging to its author… would work. I would need a sob-story… something about an injured puppy that can only be saved… by a FREE copy/license of Stefan’s Cinderblock webfonts. :slight_smile:

He might not believe the hurt puppy story… but he might think our attempt was worth $89 in entertainment. :smiley:

1 Like

Hello Samba (or anyone else):

Would you kindly try to make your own custom MeshWriter package using the instructions provided in the repos? I would like to know that one person (other than me) has succeeded once. The key repos are MeshWriter and MeshWriter-Font.

Start here: GitHub - briantbutton/meshwriter-font: Create font files for meshwriter

Thank you.

1 Like