Glyphs 2.2.2 Download

This is going to be fun. Version 2.2 contains some great workflow improvements, and we think you’re going to like it. Here is the gist of it:

Glyphs 2.6.4 - Dependable and intuitive font editor. Download the latest versions of the best Mac apps at safe and trusted MacUpdate. The glyphs of CV combinations of a character ಢ, dead consonants, and few of the glyphs of CCV and CCCV combinations are shown in Tables 2.5 and 2.6 respectively. The glyphs of consonant-conjuncts are shown in Figure 2.2. 2.7 Kannada Numerals and Special Symbols The script contains ten Kannada numerals corresponding to decimal number system.

Paths and Clipboard

There are two things we improved regarding paths and the clipboard:

Firstly, when hitting Cmd-X on a selected partial path, it really cuts open the path now. I.e., the path is placed in the clipboard, removed from the glyph, and the remaining path is broken open:

Secondly, when pasting a copied path segment to a different outline, it replaces the point selection. Sounds difficult, but this little animation should say more than a thousand words:

New in the Context Menu: Layer Colors and Export Settings

While we are still in Edit view, we might as well right click anywhere in the canvas to bring up the context menu of the current glyph layer. Whoa, no less than two new additions there: Export and Set Layer Color:

The Export menu item allows you to check and set the current export status of the glyph that is being edited. No more going back and forth between Font view and your Edit tab, just to click on that little check box.

When the other option, Set Layer Color, is active, the following label color changes will be local to the layer, and not for the whole glyph. This allows marking glyphs that just need work in one master, but not in the others. If you like this feature, give Ermin a pat on the back the next time you see him. Because, we probably wouldn’t have added it without his persistence. ;-)

And this is what it will look like in Font view, from left to right: a, orange glyph color; b, orange glyph color and pink layer color; c, no glyph color and pink layer color; d, neither glyph nor layer color set. As you can see, layer colors take up the right half of the glyph cell, provided the layer in question is actually visible in Font view:

Complex Corner Components

The implementation for corner component has been vastly improved. First of all, you can now use corner components for cupped or Tuscan serifs, too. That is because you do not need to keep the end of the path on the baseline anymore. You can have a leftor right anchor take care of that. Technically, they keep the fitting of the open path independent from the position of the end points. If that sounds too complicated, don’t worry, just try it. It’s so easy:

But there’s more. Next to the obligatory open path, you can now add any number of closed paths in a _corner glyph. And yes, their path direction is preserved. So you can take part in nifty stuff like the long overdue return of the page curl:

And now you can mirror corner components horizontally and/or vertically. All paths will be reversed, and anchors adapted accordingly, just as if you had drawn a separate right _corner glyph. This is what we did with the cupped serif in the example above. And this is what the page curl looks like mirrored, note the –100% entry for the horizontal scale:

We do not know what kind of monster we are unleashing with this. But we are pretty sure it is going to be a lot of fun.

Glyphs Projects

We have a new window and a new file format in Glyphs! It is called a Project, it is for batch-managing instances and instance variants without modifying the original Glyphs file, it has the file suffix .glyphsproject, and can be set up via File > New Project:

What you do first, is click on the Choose button, and choose a Glyphs file. Its instances will then be displayed in the sidebar on the left. Then you can add, remove and rearrange the instances. World of tanks blitz 2.8.0 download. And for each instance, you can add, remove, and edit custom parameters, much like in Font Info. When you are done, choose an export destination, and click Export, and boom your font family is exported with the settings you chose.

The best thing is, you do not even need to have a Glyphs file open. All changes and edits are saved in the Project file. This is going to be great for producing subsetted webfonts, producing font trials and all sorts of font family variants. Anything you can put in a parameter, you can do here too.

SVG Table Support

Glyphs can now embed SVG graphics in fonts! To be more precise, we are talking about OpenType fonts with an SVG table, not to be confused with the outdated .svg webfont format. The SVG table is the color font solution proposed by Mozilla and Adobe. To use it, all you have to do is add a new layer to any glyph, rename the layer to svg, drag your SVG file into it, and export your font. But beware, currently only Firefox supports this table. Therefore, this only really makes sense for .woff and .woff2 webfonts.

Oh, and SVG animations are supported too! But be careful, animations in fonts are very processor-intensive, it can make your computer fans go bonkers, and all mobile users will hate you for draining their battery. You have been warned.

Screen capture from Firefox: The Glyphs logo and the rotating circle are embedded SVGs.

Guideline Highlights

Now, when a node happens to sit exactly on a guideline, you will see a little diamond indicator, much like the ones for the vertical metrics. And it works both for local and global guidelines:

Component Origins

Component origins are now indicated by a little hook in the bottom left corner in the Edit view:

Now it is easy to check if a component has been moved from its default position.

Kerning

Kerning indicator colors can now be customized! To do so, simply go to Glyphs > Preferences.

So, now we can finally have some bright pink and green kerning colors!

Instance Preview Parameter

Tired of that ‘Aang126’ in the Font Info? Guess what, you can now have your own custom instance preview! Pick an instance in File > Font Info > Instances, and click on the plus button to add a custom parameter. For Property, choose Instance Preview. Now, click in the Value field. A dropdown window should open, and that’s where you can write your own list of glyph names, like this:

There should only be one glyph name per row. Once you confirm the dialog, the specified glyphs will be used instead of the default ‘Aang126’.

Kern Group Name Validation

When entering a kerning group name, it will be validated upon entry. Try entering höhöhö for a kerning group, and see what happens:

Smaller Grid for Handles

Imagine a grid setting where the Grid Spacing is 50 and the Subdivision is 5. If you moved your nodes, both the on-curve nodes and off-curve handles would automatically snap to the grid, right? Well, as of now, handles are exempt from grid snapping:

See how the nodes sit on the grid, while the handles keep their position? Now you can use a grid without compromising on curve quality.

Custom Tool Shortcuts

You can now add custom shortcuts for all tools in the toolbar! Let’s assume, just for a brief moment, that you are fed up of accidentally triggering the Annotation tool with the shortcut A, because you have spent too much of your lifetime in a certain popular vector illustration app. Then it is a good idea to bring up Terminal.app, and type this:

Hit the Return key to confirm. Now, the Annotation tool has the shortcut Q. The change should be effective immediately, so you do not need to restart the app. If you want to remove your custom shortcut and go back to the defaults again, type:

The other tools work in the same way, just that you need to type a different tool argument in your command line. So, instead of AnnotationTool.Hotkey, you type one of these: DrawTool.Hotkey, HandTool.Hotkey, MeasurementTool.Hotkey, OtherPathsTool.Hotkey, PrimitivesTool.Hotkey, SelectTool.Hotkey, SelectAllLayersTool.Hotkey, TextTool.Hotkey, RotateTool.Hotkey, ScaleTool.Hotkey, TrueTypeTool.Hotkey, ZoomTool.Hotkey.

And instead of 'q' another letter of your liking between dumb quotes. Cool.

Custom Glyph Data per File

Select one glyph in Font view, and choose Edit > Info for Selection (Cmd-Opt-I). The following dialog allows you to customize the Production Name, the Unicode value, Script, Category, and Subcategory of the selected glyph:

If you select more than one glyph, you can customize their Script, Category and Subcategory attributes in one go. The great thing about this is that the Glyph Data change stays in this file only. So you do not need to juggle various GlyphData.xml files anymore if you have different clients with different needs.

CJK Grid

You can now have a grid in your CJK glyphs. To do so, go to File > Font Info > Masters. In the Custom Parameter field, click on the plus and add CJK Grid as Property. Then add your Value, in our example it’s 5:

That means that we have a grid of 5 rows and 5 columns. And here’s my favorite Hiragana character, tu-hira, with a CJK Grid 5:

If that’s not enough accuracy for you, you can also add the parameters CJK Grid Horizontal for the number of grid columns, and CJK Grid Vertical for the number of grid rows:

Language Support

Support for many scripts has been improved: Tamil, Khmer, Kannada, Lepcha, Gurmukhi, just to name a few. Lots of little improvements went into the default glyph data. And, Thai and Burmese were added to the Dimensions palette! Ta-daaa:

At this point, we want to thank our users for their invaluable input in putting together the glyph database we already have and continue to improve! Do you have something to add? Make yourself heard in the forum!

Python Changes

Are you using Python scripts and plugins in your workflow? There have been some major changes in how Glyphs handles Python code now. Make sure you update your plugins via Glyphs > Preferences > Addons > Plugins and retrieve the latest version of the scripts you are using from GitHub.

If you write your own Python scripts, you have likely already noticed a lot of improvements in the API. Again, many thanks to Yanone for his continued hard work on the implementation. You can always see the current status on docu.glyphsapp.com.

Small Improvements

As usual, we have a number of bug fixes, stability improvements, and many existing features received a polish. Take a look in Font Info, and you will find many new useful custom parameters. You will notice, for example, that the Color Palettes parameter dialog works much better now. Or that you do not need to deal with those pesky warnings anymore when you choose to leave the Designer URL and Manufacturer URL empty. We are pretty sure you will come across a number of other subtle niceties in your daily workflow. You will find all the good new stuff in Help > Change Log.

One More Thing …

Oh, and this one is for the geeks amongst you. Georg just released the DrawBot for Glyphs plugin on GitHub! Download it, install it, restart Glyphs, and then choose File > New DrawBot to open a new DrawBot window. With the plugin, you can open and save .py files.

And the best thing is, the complete Glyphs API is accessible through DrawBot just by adding from GlyphsApp import * at the beginning. If you ever wanted a macro window on steroids, well, it won’t get any better than this. Many thanks to Jens Kutílek for his help with the implementation!

Have fun with the new Glyphs 2.2.

2. Specification proposal

At OT specification OTTables, insert the following section just before the “TablesRelated to Bitmap Glyphs” section. The OFF specification mayinsert it at the end of sec. 5 to avoid renumbering existingsections.

2.1 Tables Related to SVG Outlines

Tag

Name

SVG

SVG glyph descriptions

CPAL

Color Palette

TrueType or CFF OpenType fonts may contain an optional ‘SVG ’ table, which allows some or all glyphs in the font to be defined with color, gradients, or animation. It is not a requirement that an OT engine support this table.

Link the CPAL tag above to a separately provided CPAL proposal. Link the SVG tag above to a new table page, with the following content:

2.2 The SVG table

‘SVG ’ – SVG glyph descriptions table

This table contains SVG descriptions for some or all ofthe glyphs in the font. For every SVG glyph description, there mustalso exist a corresponding CFF or TT glyph description in thefont.

2.2.1 Main header

Type

Name

Description

USHORT

version

Table version (starting at 0). Set to 0.

ULONG

offsetToSVGDocIndex

Offset (relative to the start of the SVG table) to the SVGDocuments Index. Must be non-zero.

ULONG

reserved

Set to 0.

2.2.2 SVG Documents Index

The SVG Document Index is a set of SVG documents, each of which defines one or more glyph descriptions.

USHORT

numEntries

Number of SVG Document Index Entries. Must be non-zero.

SVG Document Index Entry

entries[numEntries]

Array of SVG Document Index Entries.

2.2.3 SVG Document Index Entry

Each SVG document index entry specifies a range [startGlyphID, endGlyphID], inclusive, of glyph IDs and the location of its associated SVG document in the SVG table.

Glyphs 2.2.2 downloads

USHORT

startGlyphID

The first glyph ID in the range described by thisindex entry.

USHORT

endGlyphID

The last glyph ID in the range described by thisindex entry. Must be >= startGlyphID.

ULONG

svgDocOffset

Offset from the beginning of the SVG Document Index to an SVGdocument. Must be non-zero.

ULONG

svgDocLength

Length of the SVG document. Must be non-zero.

Index entries must be arranged in order of increasing startGlyphID. The startGlyphID of an index entry must be greater than the endGlyphID of the previous index entry, if any.

For further details about the content of the SVG documents, see “Glyph identifiers” and the following sections below.

2.3 Color Palettes

The SVG glyph descriptions may contain color variables whose values are obtained either from one of the various color palettes in the Color Palette (CPAL) table or by other means, for example values specified by the user. The first color palette shall be the default one. It is strongly recommended that the default values for the color variables in the SVG documents be set to the same values as in the first color palette table, for implementations that may not support color palettes.

The variable names in SVG must be of the form “color<num>” where <num> is the parameter index in the range [0, numPaletteEntries–1], inclusive, expressed as a non–zero-padded decimal number. numPaletteEntries is defined in the CPAL table. See the “Glyph rendering” section below for how the values are to be passed to the SVG renderer.

2.4 Glyph identifiers

For each glyph ID in an SVG Document Index Entry’s [startGlyphID, endGlyphID] range, inclusive, the associated SVG document must contain an element with id “glyph<glyphID>”, where <glyphID> is the glyph ID expressed as a non–zero-padded decimal value. This element functions as the SVG glyph description for the glyph ID.

For example, say a font with maxp.numGlyphs=100 has SVG glyph definitions only for its last 5 glyphs. The last SVG glyph definition has its own SVG document, but the rest share an SVG document (say, to take advantage of shared graphical elements). There will be two index entries, the first with glyph ID range [95, 98] and the second with glyph ID range [99, 99]. The SVG document referenced by the first index entry will contain elements with id “glyph95”, “glyph96”, “glyph97”, and “glyph98”. The SVG document referenced by the second index entry will contain an element with id “glyph99”.

2.5 Glyph semantics and metrics

The glyph descriptions in the SVG documents are considered to be the SVG versions of the glyphs with the corresponding IDs in the CFF or glyf table. They are designed on an em specified in the head table’s unitsPerEm field, as with CFF and TrueType glyphs. SVG glyph definitions will be in SVG’s y-down coordinate system, with the default baseline at y=0. For example, the top of a capital letter may be at y=-800, and the bottom at y=0. This coordinate system will need to be translated appropriately to the coordinate system of the rest of the OT tables and the coordinate system of the graphics environment.

Glyph semantics are expressed in the usual OT way (cmap table followed by GSUB). Glyph metrics such as horizontal and vertical advances are specified in the usual OT tables (hmtx and vmtx), and glyph positioning adjustments by the GPOS or kern table.

As with CFF glyphs, no explicit glyph bounding boxes are recorded. The “ink” bounding box of the rendered SVG glyph should be used if a bounding box is desired; this box may be different for animated vs static renderings of the glyph.

Note that the glyph advances are static and not able to be made variable or animated.

2.6 Glyph rendering

The SVG glyph descriptions may be rendered statically or with animation enabled. Note that static rendering is done by not running any animations in the SVG document; this is different from running the document with animations running but at a snapshot time of zero seconds. Some clients may choose not to support – or may not be able to support – animation. Clients that support animation may still request, in certain cases, that the glyph be rendered statically, e.g. for printing to paper.

The following user agent style sheet must be applied to SVG documents processed from the SVG table:

In addition, if the font engine supports color palettes, and color palette values are provided, the user agent style sheet must include CSS Custom Property declarations for the color variables. This is done by including ‘numPaletteEntries’ (defined in the CPAL table) declarations in the :root rule of the form:

where <num> is each of the values from zero to numPaletteEntries–1, inclusive, expressed as a non-zero-padded decimal number; and <color> is the <num> index within the desired Color Palette, expressed in SVG’s <color> format. An example entry in the style sheet is:

and the corresponding usage in an SVG glyph description could be something like:

Note that SVG’s context-fill value may be used in the glyph descriptions to denote the current text color.

2.6.1 Security

It is required that all rendering of SVG glyphs be done in the “secure animated mode” or “secure static mode” specified in the W3C document SVG Integration. These modes permit no script execution, external references, interactivity, or link traversal.

2.7 Text layout process

An implementation that supports the SVG table first does layout in the usual OT manner, using the cmap, GSUB, hmtx, and other OT layout tables. This results in a list of glyph IDs arranged at particular x,y positions on the surface (along with the appropriate scale/rotation matrices). At this point, for each such glyph ID, if an SVG glyph description is available for it, it is rendered (in static or animated mode, as appropriate and if supported by the engine); otherwise, the CFF or TT glyph description must be rendered. Since the glyph advances are the same in either case, and not allowed to be animated, switching between SVG and CFF/TT rendering, or between animated and static SVG, should not require re-layout of lines (unless line layout depends on ink bounding boxes).