Hi everyone.

First I would like to apologize if the title isn't really clear, I'm just a
bit uncertain about how I should call this.

I have been trying to find out something in API documentation but I'm a
little lost and thus asking for some help.

I have noticed in font editor FontForge that most fonts usually build some
glyphs by referring to other glyphs like

   - Ä (U+00C4) by referring the two base glyphs diaeresis (either U+00A8
   or U+0308, with one usually referring the other) and the basic latin letter
   A
   - ç (U+00E7) refers to cedilla (U+00B8 or 0x0327) and letter c.
   - greek and cyrillic letters also usually refer to the equivalent latin
   letter when they are identical.
   - I've also seen a font, I don't remember which one, in which the German
   ß (U+00DF) refers to the letter S twice (as it is the equivalent of a
   double S).

So what I'm looking for is the function that takes a code point as input
and returns the list composing code points.

Example :
f(0x00C4) => [ 0x0041, 0x00A8 ] or [ 0x0041, 0x0308 ] (depending on how the
font is built).
f(0x00E7) => [ 0x0063, 0x00B8 ] or [ 0x0063, 0x0327 ]
f(0x0410) => [ 0x0041 ] (assuming cyrillic is implemented in the font and
cyrillic A refers to latin A)

By the way, some characters seem to have names, for example é (U+00E9) is
named "eacute". If there's a function that allows me to get the name  from
the codepoint  and conversely, I'm also interested.

What I want to achieve is generate 3D fonts from a flat 2D font by
extruding each glyph with a FreeCAD script, then import them in a 3D viewer
I have as a project with QtQuick3D.
So of course I would like to make those 3D fonts as compact as possible by
avoiding to have unnecessary duplicate meshes.

This would imply determining whether a glyph within a predefined selection
refers or not to other(s)  glyph(s) in order to skip referring glyphs in
the FreeCAD build process, and same process to refer to the referred glyphs
in the 3D view of my project app (or maybe create a lookup table, unsure
yet).

Best regards and thanks in advance for your help.

Reply via email to