6 posts
I have a couple of, what to me, seem like simple questions.
I'm attempting to create a font with only about 20 characters, which are special sigla that aren't part of the unicode scheme. The process is proving torturous. Using Inkscape in combination with Gimp I have been able to create the font layers in an SVG file where naming the glyph layer associates it with a capital letter, provided the name is a capital letter. This doesn't seem to work for lower case letters, however. So that's my first question:
1. How do you associate a glyph layer with a unicode value other than this rather clunky naming convention? I can't find anything about how to do that anywhere, but it seems it would be an easy thing to do... or at least should be?
2. Next, I discovered that converting the SVG file to TTF works, sort of, but the letter forms are all below the baseline for my other fonts. I used the Typography extension in Inkscape to set up the canvas and changed the em height to 1024 from the default 1000 because I planned to get a TrueType font as the end product, rather than a Postscript. After noticing that the setup for the baseline, etc., is too low I checked the attributes in the SVG Font Editor under "Global Settings".
The first thing I noticed about the attributes is that both X and Y are called the "Horiz. Origin". Is this because the application developer couldn't spell "Vertical" or even abbreviate it? (Sorry about that comment, but I'm frustrated.) At any rate this is what the attributes are specified at:
Font Attributes
Horiz. Advance X: 1024
Horiz. Origin X: 0
Horiz. Origin Y [sic]: 256
Font Face Attributes
Family Name: SVGFont [I tried to change this, but the change won't 'take']
Units per em: 1024
Ascent: 768
Descent: 256
Cap Height: 717
x Height: 512
I can't change any of this in the Font Editor, but on the glyph editor the baseline is not at 0, it's at -768! Shouldn't it be at 0? Shouldn't the descenders be below 0 and the ascenders above? BTW, I did enter a positive 768 for the ascender value when I set up the canvas, so I don't know why it comes up negative. I suppose I could set it to a negative number and see what happens using the "Captain Corrigan" logic: "Whatever seems logical do the opposite."
At any rate I sort of gave up on Inkscape because I couldn't figure out how to do either of the things I needed to do in it: 1. Assign lower case unicode values; or 2. Keep the letter form above the baseline of all my other fonts. So I tried reading in the TTF font I had converted from Inkscape SVG online, into FontForge thinking I might be able to at least modify the baseline of the canvas there. But I can't figure out how to do it there either. So:
Is there a way to do either of those things using either of these *free software* applications or some other *free application*, because I just want to create this one font to use it in an article? I'm fairly familiar with Gimp at this point, but I don't see a way of associating glyphs with a unicode codepoint in that app either and saving it as a font package... even with the font-specific filter addons.
Any advice?
I have no idea about your font editor but you need a real font editor. Have you tried FontForge -
https://fontforge.org/en-US/ - it is absolutely free and I read here Claude mentioned that it can import SVG files. It will allow you access to the settings that you wanted to change.
You only see Horiz because that section refers to the horizontal metrics of the glyph. The following are just pure guesses:
Horiz. Advance X: 1024 - could be the glyph width
Horiz. Origin X: 0 - could be the left sidebearing. Value is negative if the character extends beyond the left edge of the glyph
Horiz. Origin Y: 256 - could be the right sidebearing
The sidebearing is the space/distance from the character to the left or right edge of the glyph. Since advance was mentioned then it might be referring to the sidebearing. Does your character touch the left edge of the glyph? If it does, then Horiz. Origin X is your left sidebearing.
As for the vertical metrics, it refers to the 5 settings mentioned after Family Name in Font Face Attributes.
Units per em: 1024 - this is your font's UPM.
Ascent: 768 - the top edge of the character with the highest structure.
Descent: 256 - the bottom edge of the character with the lowest structure. This should be a negative value since it's measured from the baseline. Ascent + |Descent| = UPM
Cap Height: 717 - the top edge of the uppercase letters
x Height: 512 - the top edge of the lowercase x, might be the default of your editor.
Vertical metrics is global while horizontal metrics is glyph specific.
BTW it is OK for a TTF to have a 1000 UPM.
Well, I'm glad you replied because you clearly didn't have time to actually read my question. Yeah, I should probably try that FontForge thing. That sounds interesting (see the 2nd to last paragraph). Anyway, here's a short list of my questions.
1. How can I move the glyph up so that it's on the same baseline as the rest of my fonts, in *FontForge*. (Or any font software that will read in a TTF file, I don't care.)
2. How do I associate a particular glyph (lets say I have a glyph of a cat that I want to associate with the lowercase letter "c") with a unicode value.
But like I said, I know you're busy and I appreciate the effort.
I did not answer some of your questions because those are specific to your font editor and I have no idea how your font editor works.
For #1, I don't know how is it done in FontForge. In the font editor that I am using, you just unlock the vertical metrics then open the glyph window and then drag the baseline to where you want it placed.
For #2, right click on a glyph in the font window (or open the glyph), then choose properties. Enter the glyph name and then click on the jewel on the unicode which the font editor will autofill. You can also do it the other way - enter the unicode and click on the jewel for the glyph name.
I do not use FontForge but it can do what my font editor does. Many here use FontForge and they might be able to help you when it comes to that program.
toto@k22 said 
...
Horiz. Origin Y: 256 - could be the right sidebearing
Descent: 256 - the bottom edge of the character with the lowest structure. This should be a negative value since it's measured from the baseline. Ascent + |Descent| = UPM...
"Horiz. Origin Y": 256 could be the length of the descender, as the X Axis is for horizontal, and the Y Axis is for vertical in Cartesian coordinate system:

Edited 2 times. Last edit on Apr 08, 2022 at 11:29 by metaphasebrothel
I have verified that "Horiz. Origin Y" pretty much has to be a typo in the programming, so it's not necessary to bend over backwards to try to make sense of it, at least in Inkscape. I misunderstood something about the "canvas setup." I assumed that it fixed the position of the letterform, which is entirely below the origin line. This has to be related to some parameter in preferences, but I don't know what it could be. At any rate I discovered that the position can be "unfixed" allowing one to drag the glyph above the origin line. So that's what I did. As for establishing the Unicode value of the glyph I found a workaround for that in Inkscape. I also found a way to change the name of the font by opening a dialogue to view and select a font family under "Text Properties" and then setting that as the default, instead of "SVG Font." I tried to use FontForge for this but it kept crashing, so I don't know how you'd do any of this in FontForge.
A word about the history of typography. I'm actually a political sociologist and my mentor was a fellow named Seymour Martin Lipset who, with James Coleman (yes, that James Coleman) wrote *Union Democracy: The Internal Politics of the International Typographical Union*. Lipset, rather than Coleman, was the lead author for that book, and he considered it his best book (out of scores of books he wrote). Typography emerged with the Gutenberg press in the 15th century and it not only changed the mentality of the age, quickly ending the period of Latin dominance of culture and inaugurating nationalism and national languages as the new languages of learning, but the typographers were part of this new "literate class" and they guarded their position as educated craftsmen jealously. This position extended into the modern era and was the chief reason why the ITU became the exception to Michels' "Iron Law of Oligarchy" by maintaining a democratic trade union structure. In part they did this by maintaining a very specialized language for typesetting which gave them the power of a profession without being a profession. And this unique position persisted until the advent of desktop publishing, when the power of the ITU suddenly collapsed.
The ITU lost its power in publishing and printing but the specialized terms were carried over into the new computer era, where I'm not sure they make sense. For instance I've encountered people who insist on referring to Unicode values as a "code point" but also use the term "point" for other things unrelated to Unicode. If you want to read how this terminology of the "point" changes over time, and especially with the advent of the mechanical print era and the emergence of vanishing point perspective, read Marshall McLuhan's *Through the Vanishing Point*.
Personally, I think all these specialized languages and lexicons are obsolete. The American Pragmatist philosopher C.S. Peirce devoted a lot of time to specifying rules for the development of lexicons and terms so that the boundaries between specialized fields would begin to disappear and we'd have terms that preserve meaning across fields. Naturally there is resistance to this, but I think the benefits outweigh the costs. We're, after all, on the verge of the greatest Renaissance in all of human history for which specialized enclaves are anathema.

All times are CEST. The time is now 05:29