Font Vera

2 views
Skip to first unread message

Kiliano Ratha

unread,
Aug 3, 2024, 5:24:51 PM8/3/24
to congtasptwitar

Vera is a digital typeface (computer font) superfamily with a liberal license. It was designed by Jim Lyles from the now-defunct Bitstream Inc. type foundry, and it is closely based on Bitstream Prima, for which Lyles was also responsible. It is a TrueType font with full hinting instructions, which improve its rendering quality on low-resolution devices such as computer monitors. The font has also been repackaged as a Type 1 PostScript font, called Bera, for LaTeX users.[1]

Bitstream Vera was released in 2003 with generous licensing terms and minimal restrictions that are nearly identical to those found in the Open Font License, which was not formalized until two years later. The main restrictions were a prohibition on reselling the fonts as a standalone product (though selling as part of a software package is acceptable), and that any derivative fonts not be distributed under the name "Vera" or use the Bitstream trademark.

Welcome the new day with a great display font. Introducing Vera Typeface! Vera Font designed and shared by Tugcu Design Co..Vera is a tall and slender serif display font. It comes in rough, regular and oblique styles and includes multilingual uppercase characters, alternate letters, numbers and punctuation. The font was made for sleek headlines in narrow spaces likes invitations, magazine covers and titles.

Except as contained in this notice, the names of Gnome, the Gnome
Foundation, and Bitstream Inc., shall not be used in advertising or
otherwise to promote the sale, use or other dealings in this Font
Software without prior written authorization from the Gnome Foundation
or Bitstream Inc., respectively. For further information, contact:
fonts at gnome dot org.

You must change the name(s) of the fonts. This is to ensure the
quality of the fonts, both to protect Bitstream and Gnome. We want to
ensure that if an application has opened a font specifically of these
names, it gets what it expects (though of course, using fontconfig,
substitutions could still could have occurred during font
opening). You must include the Bitstream copyright. Additional
copyrights can be added, as per copyright law. Happy Font Hacking!

Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions:

The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera".

THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org.

I am using matplotlib version 2.0.0 on Python 3 in a miniconda virtual environment. I am working on a unix scientific computing cluster where I don't have root privileges. I am generally executing python code through an ipython notebook. If I do a basic command such as:

I had this exact same problem on a Vagrant VM running Ubuntu Xenial 64-bit. No matter how many fonts I had already installed, matplotlib was having a problem with the "system" font name "sans-serif". I fixed it by:

and noticed that I have DejaVuSerif.ttf intalled there, so instead of using plt.rcParams['font.family'] = 'Serif' I used plt.rcParams['font.family'] = 'DeJavu Serif' ( there is a space between "DeJavu and serif" ). i worked for me.

I tried sudo apt install msttcorefonts -qq but I don't think that works. Neither do I know what has been installed by that package. apt-file list msttcorefonts returns nothing.
Why apt-file list msttcorefonts returns nothing?

The last thing I tried that made me successful is to remove the file fontlist-v330.json at folder (replace C:\Users\User\ with you own folder):C:\Users\User\.matplotlib\
In fact, i tried the above because I can't find a cache folder C:\Users\User.cache.matplotlib\ as mentioned in this thread.

Interestingly, if you find the following json within the file "fontlist-v330.json" that means you can start using the font (in my case Roboto). There is also tricky part here that I don't know how to resolve yet. I tried to place both Arial and Arial Narrow font into the folder, but both of them appeared to use "Arial" as their name in this json file. So I have remove the font files for "Arial" and keep those "Arial Narrow" files, so I can use "Arial Narrow" font.

There is quite a lot of math and code involved to convert a typeface to a single line (and there could potentially be even more -- we found some math-light shortcuts!). Here's an explanation of some of the key steps in the process:

Text to points: By using p5.js's native textToPoints() command, the outline of each character in the chosen font is translated into a set of points. This is done by sampling points along the bezier curves that define the characters.

Voronoi diagram: In the context of SkeleText, the Voronoi diagram is derived from the Delaunay triangulation mentioned above. For each triangle, you calculate the circumcenter (the center of the circumcircle that passes through all three vertices of a triangle). Connecting these circumcenters gives you the Voronoi polygons, which look like the "skeleton" of the original shape.

Circumcenter: The circumcenter of a triangle is found using the intersection of the perpendicular bisectors of the sides. In a 2D plane, the formula can be derived using the coordinates of the triangle's vertices and is involved in the calculation of the Voronoi diagram.

Point organization: Organizing points into a continuous line requires finding logical connections between nearby points. An extreme (like the leftmost point) is selected, and then the closest subsequent points are ordered before the letter is drawn.

Brightness filtering: This approach leaves us with a mess of lines. We found a math-light solution where we draw the character to a temporary graphics buffer and check these graphics for each of the points. The points that are not drawn on top of the letter shape in the graphics are removed, preserving only the parts of the Voronoi diagram that correspond to the actual character shape.

Maximum point distance: The organization approach above is not perfect, so another filter is to split the points up in multiple lines if the current point and previous point are too far apart. This avoids having lines run across a letter shape.

Path Simplification: A simplification technique was applied to eliminate unnecessary zig-zags or noise. We used a custom version of the Douglas-Peucker algorithm to remove any unnecessary points. For a given segment of the line (initially the entire line), we identify the point that's furthest from the segment. If the distance from the segment to this furthest point is less than a given threshold (tolerance), then we can eliminate all the points between the segment endpoints. Otherwise, the segments are divided at the furthest point. This principle is recursively applied to the two sub-segments.

While this tool implements a lot of math as can be seen above, we learned that sometimes the most simple approaches are also the most effective ones. While some elements could have been solved purely mathematically, we often chose a solution with less heavy computations involved. For instance, the skeleton lines from the Voronoi diagram are simply filtered by checking if the point is drawn on top of a character or not. The mathematical solution may yield cleaner results in the long haul but would effectively require a lot more computation, causing the tool to be especially slow. We want to address this as these other approaches may have different benefits than the one we chose.

Unexpectedly, the structure that appears when applying skeletonization on text characters looks very similar to the design needed to carve letters in stone. Typographer Jacob Wise, who experienced hand-carving type while studying at the TypeMedia program in The Hague (NL), mentioned that this underlying architecture (as well as the outline of the character) is needed to chisel the letter shape properly. In the images below, you can see the way the architecture/skeleton translates to carved letters.

SkeleText is just a beta version so far. The interface could be developed further, and some bugs might appear when the tool is used by different users. Please reach out to vera...@media.mit.edu if anything needs attention.

"DeepSkeleton: Learning Multi-Task Scale-Associated Deep Side Outputs for Object Skeleton Extraction in Natural Images", available at _DeepSkeleton_Learning_Multi-Task_Scale-Associated_Deep_Side_Outputs_for_Object_Skeleton_Extraction_in_Natural_Images

c80f0f1006
Reply all
Reply to author
Forward
0 new messages