Code Monkey home page Code Monkey logo

great-vibes's Introduction

Great Vibes

Sample Image

Great Vibes is a beautifully flowing script with casual uppercase forms combined with more formal lowercase letters.

It has over 2000 glyphs, with smooth connecting ligatures and alternate characters.

In March 2024, Great Vibes was updated to provide extended language support, including Sub-Saharan Latin and Cyrillic.

Sample Image

Building the font

Fonts are built automatically by GitHub Actions - take a look in the "Actions" tab for the latest build.

If you want to build fonts manually on your own computer:

  • make build will produce font files.
  • make test will run FontBakery's quality assurance tests.
  • make proof will generate HTML proof files.

Changelog

March 2024. Version 1.100

  • SIGNIFICANT Latin SSA and Cyrillic support added.

great-vibes's People

Contributors

crystaltype avatar m4rc1e avatar vikagrabowska avatar vv-monsalve avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

great-vibes's Issues

Marks consistency

Please review the consistency among marks in terms of the following:

  • Style: stroke terminals, type of curves, and contrast. Especially among related shapes: acute - grave - circumflex - caron, where circumflex seems more coherent with the overall design of the font.
  • Size + weight: acute and grave and dotbelow look big
  • Please review the above taking care of the used anchors, not deleting them plus keeping/adjusting (if needed) the position.
Screen Shot 2023-07-04 at 16 21 41

Font and source files don't match

There are two fonts GoodVibrationsPro.ttf and GreatVibesPro-Regular.ttf. Comparing current font published against both of them the results differ.

GoodVibrationsPro.ttf comparison results

Here some uppercase letters proportion differs from the font published

glyphs_modified

lambdastroke

Lambdastroke glyph still needs to follow the indications given in one previous meeting:

lambdastroke should be constructed as a different letter from Greek lamda. The stroke should be as tall as the ascenders, similar terminal as f)

Also, the orientation of the terminal stroke should go the left.

Reference:
Screen Shot 2023-09-28 at 18 26 35

Currently in the font:
Screen Shot 2023-09-28 at 18 21 56

Text samples preview

These are the text samples produced using the font version v1.016 produced with source file at DropBox with a last modification date of Oct 10, and the .txt files provided in the past by @EbenSorkin

cc @moyogo

  • @RobLeuschke, please add the needed anchors for the SSA base letters to ensure the right mark placement E.g. vhook + tilde

Anii

Screen Shot 2023-10-17 at 18 39 46

Bambara

Screen Shot 2023-10-17 at 18 41 33

Tofu reported for ε

DinkaNuer

Screen Shot 2023-10-17 at 18 42 26

Ewe

Screen Shot 2023-10-17 at 18 43 07

Is ø looking too dark?

Fula

Screen Shot 2023-10-17 at 18 43 37

Hausa

Screen Shot 2023-10-17 at 18 44 31

Ndonga

Screen Shot 2023-10-17 at 18 45 07

Pugli

Screen Shot 2023-10-17 at 18 45 36

Serer

Screen Shot 2023-10-17 at 18 46 10

Wolof

Screen Shot 2023-10-17 at 18 46 50

Tofu reported for η

Xhosa

Screen Shot 2023-10-17 at 18 50 47

Capital hooks

image

Please cross-check with Denis: but

The Nhook the sense I have is that the hook is mean to be an abbreviated version of the capital J or lc j shape

image

With Ghook the hook does seem to be added but the scale and presence needs to be greater so that the fact that the hook is there and is the key to the letter identity is made less muted.

With Hhook and Dhook we are really dealing with quite a hard design issue here because the existing flourish is near and indeed exceeds the scale that is expected for hook for this letter. I think probably there are two paths here: 1) make the hook smaller and flatter so that a visual distinction from the base letter D is easy to observe and you avoid having two hook-like shapes. 2) permit two hook-like shapes but make the 'new' hook emerge from the stem of D not the flourish.

With Khook the upper right stoke should become the hook itself rather than having a one attached.

Approach to the Hook issue

image

It may be that the ideal way to have a hook in this style is to add it to a main form but I suspect that instead it meant to be integral to the form like the tail of the j.

ъ (hardsign-cy)

Would it be possible to use a different skeleton for ъ?

The skeleton I would like to suggest is built on similar shape as top part of che-cy.

Pasted Graphic 1

Л (El-cy) and М (Em-cy), Љ (Lje-cy), Ԉ (Komilje-cy)

I would like to propose some changes to the contrast and shape of El-cy leg.

Original drawing
Pasted Graphic 30

Proposal. Usually the left leg of Л is thin and starting to gain weight closer to its bottom part.
Pasted Graphic 29

The change would affect also М which uses similar curve as Л in Great Vibes, and the Љ and Ԉ.

In Љ and Ԉ the left part should be an identical to Л letterform. Or it’s slightly narrower version since both of these letterforms are wide. This is a similar case as narrowing Latin m in comparison to n or narrowing Æ in comparison to A and E.

Ф (Ef-cy)

While Ef-cy.ss01 is looking pretty great, I’m wondering if Ef-cy (default version) can use a swash at the top of the stem to add more charm to the shape? It can perhaps be the same swash as in Ef-cy.ss01. Or here are some more possible ideas.
Pasted Graphic 3

Pasted Graphic 4

Tse-cy, Shcha-cy, tse-cy, shcha-cy, tse-cy.loclBGR, shcha-cy.loclBGR

/Tse-cy.ss01/Shcha-cy.ss01 - this solution for descenders (so called tails) is great and correct from Cyrillic point of view.
Pasted Graphic

Tse-cy, Shcha-cy, tse-cy, shcha-cy, tse-cy.loclBGR, shcha-cy.loclBGR currently have an unfamiliar for Cyrillic reader gesture in descenders and it would be best to adapt the solution from /Tse-cy.ss01/Shcha-cy.ss01.

Pasted Graphic 1

Since in handwritten tse-cy.loclBGR, shcha-cy.loclBGR are identical as default shapes I would erase Bulgarian glyphs.

Outlines

Please review the skew, weight, and contrast distribution of the following letters

b

Lowercase b looks wider and lighter than the others and differs significantly from their "group" companions d, p, q, which affects the weight balance in the letters

Screen Shot 2023-08-14 at 19 55 29

Bars and strokes review

Many different components are used to produce the bar in the bar or stroke glyphs; therefore, they are not consistent in style, weight, length, etc.

Please review them and

  • Create or adjust different width stroke components (e.g. strokeshortcomb strokemedcomb) to ensure consistency among them.
  • Ensure combining either only outlines or components in the composite glyphs, but not mixing them.
Screen Shot 2023-09-28 at 21 50 38 Screen Shot 2023-09-28 at 21 54 45

Saltillo

The saltillo should be consistent in size and style with the diacritic marks. It should also be differentiated from the apostrophe and a quote.

Reference font: Andada
Screen Shot 2023-09-28 at 20 06 44

Currently in the font
Screen Shot 2023-09-28 at 20 08 07

Browser diff

Hi @crystaltype. This is a new Browser Image after solving the shifted up glyphs issue.

Please check/solve now the following

  • During that process the marks were misplaced. Please review this plus diffenator report, and ensure all the diacritics are ok, particularly stacked ones.
  • Uppercase tilde is misplaced and smaller than the published font
  • Some letters such as b, d and z among others need to go back to the previous non-looped shapes into the main version, and the looped ones should be a stylistic set.

Windows 10 Chrome_71
Desktop_Windows_10_chrome_71 0_

б (be-cy)

Usually the diagonal stroke of the tail (which comes out from the bowl) is thinner than in Great Vibes.
Here are a few references you might find useful.

Pasted Graphic 7 Pasted Graphic 8 Pasted Graphic 9

в (ve-cy)

The marked part of the curve looks a bit too convex and dark to my eyes.
Pasted Graphic 17

Pasted Graphic 5

Lowercase 'o' similar to lowercase 'a'

Hi,

The font is beautiful and really well done, however in my opinion the lowercase 'o' is too similar to the lowercase 'a' in the classical handwriting.

If you put the 'a' and the 'o' side-by-side you can see the difference but at first sight, the 'o' looks like an 'a'.

Glyphs shifted up

HI @crystaltype. After pulling the latest files and performed new tests I've found that the glyphs are not located at the baseline but shifted up in the new source file.

I'm working on it now. There is no need for you to do anything on the source file for now. However, I'm filing this issue for us to inspect for this type of issues in future cases

Desktop_Windows_10_chrome_71 0_

-м, -л, -ж

Because of the detail on the top left the joins in мл looking more aggressive in the rhythm than I would expect. While they are establishing a visual rhyme with -u, I find them looking kind of mannered, too specific.
Pasted Graphic 11


Perhaps it is worth checking more standard kind of join?
Pasted Graphic 6


In case you find it too tight it is possible to solve it with more air by altering a thin curve on the tope left.

Pasted Graphic 10

There is however a chance to add more sharpness to zhe-cy if you are looking for this kind of feature. The middle stroke terminal is already doing that. Perhaps the top part of it can do something similar?

Pasted Graphic 12

The sharp endings can also point to the opposite direction.

Pasted Graphic 13

I also think the top left of the first curve in -ж could benefit from being less convex.

Pasted Graphic 12
Baorcer

FB initial assessment report

Fontbakery report

Fontbakery version: 0.7.34

[18] GreatVibesPro-Regular.ttf
🔥 FAIL: Checking OS/2 fsType does not impose restrictions.
--- Rationale ---

The fsType in the OS/2 table is a legacy DRM-related field. Fonts in the Google
Fonts collection must have it set to zero (also known as "Installable
Embedding"). This setting indicates that the fonts can be embedded in documents
and permanently installed by applications on remote systems.

More detailed info is available at:
https://docs.microsoft.com/en-us/typography/opentype/spec/os2#fstype


  • 🔥 FAIL In this font fsType is set to 4 meaning that:
    The font may be embedded, and temporarily loaded on the remote system, but documents that use it must not be editable.

No such DRM restrictions can be enabled on the Google Fonts collection, so the fsType field must be set to zero (Installable Embedding) instead. [code: drm]

🔥 FAIL: Check `Google Fonts Latin Core` glyph coverage.
--- Rationale ---

Google Fonts expects that fonts in its collection support at least the minimal
set of characters defined in the `GF-latin-core` glyph-set.


  • 🔥 FAIL Missing required codepoints: 0x00AD (SOFT HYPHEN) and 0x2215 (DIVISION SLASH) [code: missing-codepoints]
🔥 FAIL: Substitute copyright, registered and trademark symbols in name table entries.
  • com.google.fonts/check/name/unwanted_chars

  • 🔥 FAIL NAMEID #0 contains symbols that should be replaced by '(c)'. [code: unwanted-chars]

  • 🔥 FAIL NAMEID #0 contains symbols that should be replaced by '(c)'. [code: unwanted-chars]

🔥 FAIL: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
--- Rationale ---

Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem
had no grid fitting but did have antialiasing. From 9-16 ppem, just grid
fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled
on. The use of accelerated graphics cards and higher resolution screens make
this approach obsolete. Microsoft's DirectWrite pushed this even further with
much improved rendering built into the OS and apps.

In this scenario it makes sense to simply toggle all 4 flags ON for all font
sizes.


  • 🔥 FAIL Font is missing the 'gasp' table. Try exporting the font with autohinting enabled.
    If you are dealing with an unhinted font, it can be fixed by running the fonts through the command 'gftools fix-nonhinting'
    GFTools is available at https://pypi.org/project/gftools/ [code: lacks-gasp]
🔥 FAIL: Are there non-ASCII characters in ASCII-only NAME table entries?
--- Rationale ---

The OpenType spec requires ASCII for the POSTSCRIPT_NAME (nameID 6).

For COPYRIGHT_NOTICE (nameID 0) ASCII is required because that string should be
the same in CFF fonts which also have this requirement in the OpenType spec.

Note:
A common place where we find non-ASCII strings is on name table entries with
NameID > 18, which are expressly for localising the ASCII-only IDs into Hindi /
Arabic / etc.


  • 🔥 FAIL Bad string at [nameID 0, 'mac_roman']: 'b'Copyright © 2010 by Designer. All rights reserved.'' [code: bad-string]
  • 🔥 FAIL Bad string at [nameID 0, 'utf_16_be']: 'b'Copyright © 2010 by Designer. All rights reserved.'' [code: bad-string]
  • 🔥 FAIL There are 2 strings containing non-ASCII characters in the ASCII-only NAME table entries. [code: non-ascii-strings]
🔥 FAIL: Copyright notices match canonical pattern in fonts
  • com.google.fonts/check/font_copyright

  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright © 2010 by Designer. All rights reserved." [code: bad-notice-format]

  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright © 2010 by Designer. All rights reserved." [code: bad-notice-format]

🔥 FAIL: Check name table: FONT_FAMILY_NAME entries.
--- Rationale ---

Checks that the family name infered from the font filename matches the string
at nameID 1 (NAMEID_FONT_FAMILY_NAME) if it conforms to RIBBI and otherwise
checks that nameID 1 is the family name + the style name.


  • 🔥 FAIL Entry [FONT_FAMILY_NAME(1):MACINTOSH(1)] on the "name" table: Expected "Great Vibes Pro" but got "GreatVibesPro". [code: mismatch]
  • 🔥 FAIL Entry [FONT_FAMILY_NAME(1):WINDOWS(3)] on the "name" table: Expected "Great Vibes Pro" but got "GreatVibesPro". [code: mismatch]
🔥 FAIL: Check name table: FULL_FONT_NAME entries.
  • com.google.fonts/check/name/fullfontname

  • 🔥 FAIL Entry [FULL_FONT_NAME(4):MACINTOSH(1)] on the "name" table: Expected "Great Vibes Pro Regular" but got "GreatVibesPro Regular". [code: bad-entry]

  • 🔥 FAIL Entry [FULL_FONT_NAME(4):WINDOWS(3)] on the "name" table: Expected "Great Vibes Pro Regular" but got "GreatVibesPro Regular". [code: bad-entry]

🔥 FAIL: Font enables smart dropout control in "prep" table instructions?
--- Rationale ---

This setup is meant to ensure consistent rendering quality for fonts across all
devices (with different rendering/hinting capabilities).

Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF    PUSHW 0x01FF
85          SCANCTRL (unconditinally turn on
                      dropout control mode)
B0 04       PUSHB 0x04
8D          SCANTYPE (enable smart dropout control)

"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
        that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
        that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
        (either vertical or horizontal) is intersected
        by both an on-Transition contour and an off-Transition
        contour and neither of the pixels was already turned on
        by rules 1 and 2, turn on the pixel which is closer to
        the midpoint between the on-Transition contour and
        off-Transition contour. This is "Smart" dropout control.

For more detailed info (such as other rules not enabled in this snippet),
please refer to the TrueType Instruction Set documentation.


  • 🔥 FAIL The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the gftools fix-nonhinting script. [code: lacks-smart-dropout]
🔥 FAIL: Checking OS/2 usWinAscent & usWinDescent.
--- Rationale ---

A font's winAscent and winDescent values should be greater than the head
table's yMax, abs(yMin) values. If they are less than these values, clipping
can occur on Windows platforms
(https://github.com/RedHatBrand/Overpass/issues/33).

If the font includes tall/deep writing systems such as Arabic or Devanagari,
the winAscent and winDescent can be greater than the yMax and abs(yMin) to
accommodate vowel marks.

When the win Metrics are significantly greater than the upm, the linespacing
can appear too loose. To counteract this, enabling the OS/2 fsSelection bit 7
(Use_Typo_Metrics), will force Windows to use the OS/2 typo values instead.
This means the font developer can control the linespacing with the typo values,
whilst avoiding clipping by setting the win values to values greater than the
yMax and abs(yMin).


  • 🔥 FAIL OS/2.usWinAscent value should be equal or greater than 1155, but got 969 instead [code: ascent]
🔥 FAIL: Check glyphs do not have components which are themselves components.
--- Rationale ---

There have been bugs rendering variable fonts with nested components.
Additionally, some static fonts with nested components have been reported to
have rendering and printing issues.

For more info, see:
* https://github.com/googlefonts/fontbakery/issues/2961
* https://github.com/arrowtype/recursive/issues/412


  • 🔥 FAIL The following glyphs have components which themselves are component glyphs:
    • uni1EAE
    • uni1EB6
    • uni1EB2
    • uni1EB4
    • uni1EA4
    • uni1EAC
    • uni1EA6
    • uni1EA8
    • uni1EAA
    • uni1EBE and 35 more. [code: found-nested-components]
WARN: Checking OS/2 achVendID.
--- Rationale ---

Microsoft keeps a list of font vendors and their respective contact info. This
list is updated regularly and is indexed by a 4-char "Vendor ID" which is
stored in the achVendID field of the OS/2 table.

Registering your ID is not mandatory, but it is a good practice since some
applications may display the type designer / type foundry contact info on some
dialog and also because that info will be visible on Microsoft's website:

https://docs.microsoft.com/en-us/typography/vendors/

This check verifies whether or not a given font's vendor ID is registered in
that list or if it has some of the default values used by the most common font
editors.

Each new FontBakery release includes a cached copy of that list of vendor IDs.
If you registered recently, you're safe to ignore warnings emitted by this
check, since your ID will soon be included in one of our upcoming releases.


  • WARN OS/2 VendorID is 'UKWN', a font editor default. If you registered it recently, then it's safe to ignore this warning message. Otherwise, you should set it to your own unique 4 character code, and register it with Microsoft at https://www.microsoft.com/typography/links/vendorlist.aspx
    [code: bad]
WARN: Check if each glyph has the recommended amount of contours.
--- Rationale ---

Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only be
constructured in a handful of ways. This means a glyph's contour count will
only differ slightly amongst different fonts, e.g a 'g' could either be 2 or 3
contours, depending on whether its double story or single story.

However, a quotedbl should have 2 contours, unless the font belongs to a
display family.

This check currently does not cover variable fonts because there's plenty of
alternative ways of constructing glyphs with multiple outlines for each feature
in a VarFont. The expected contour count data for this check is currently
optimized for the typical construction of glyphs in static fonts.


  • WARN This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

The following glyphs do not have the recommended number of contours:

Glyph name: percent Contours detected: 4 Expected: 5
Glyph name: at Contours detected: 1 Expected: 2
Glyph name: C Contours detected: 2 Expected: 1
Glyph name: D Contours detected: 3 Expected: 2
Glyph name: G Contours detected: 3 Expected: 1
Glyph name: H Contours detected: 2 Expected: 1
Glyph name: I Contours detected: 2 Expected: 1
Glyph name: J Contours detected: 2 Expected: 1
Glyph name: K Contours detected: 3 Expected: 1 or 2
Glyph name: L Contours detected: 3 Expected: 1
Glyph name: O Contours detected: 3 Expected: 2
Glyph name: Y Contours detected: 2 Expected: 1
Glyph name: Z Contours detected: 3 Expected: 1
Glyph name: a Contours detected: 1 Expected: 2
Glyph name: b Contours detected: 1 Expected: 2
Glyph name: f Contours detected: 3 Expected: 1
Glyph name: j Contours detected: 3 Expected: 2
Glyph name: l Contours detected: 2 Expected: 1
Glyph name: q Contours detected: 1 Expected: 2
Glyph name: s Contours detected: 3 Expected: 1
Glyph name: t Contours detected: 3 Expected: 1
Glyph name: y Contours detected: 2 Expected: 1
Glyph name: z Contours detected: 2 Expected: 1
Glyph name: ordfeminine Contours detected: 1 Expected: 2 or 3
Glyph name: AE Contours detected: 4 Expected: 2
Glyph name: Ccedilla Contours detected: 3 Expected: 1 or 2
Glyph name: Igrave Contours detected: 3 Expected: 2
Glyph name: Iacute Contours detected: 3 Expected: 2
Glyph name: Icircumflex Contours detected: 3 Expected: 2
Glyph name: Idieresis Contours detected: 4 Expected: 3
Glyph name: Eth Contours detected: 4 Expected: 2
Glyph name: Ograve Contours detected: 4 Expected: 3
Glyph name: Oacute Contours detected: 4 Expected: 3
Glyph name: Ocircumflex Contours detected: 4 Expected: 3
Glyph name: Otilde Contours detected: 4 Expected: 3
Glyph name: Odieresis Contours detected: 5 Expected: 4
Glyph name: Oslash Contours detected: 5 Expected: 2 or 3
Glyph name: Yacute Contours detected: 3 Expected: 2
Glyph name: germandbls Contours detected: 2 Expected: 1
Glyph name: agrave Contours detected: 2 Expected: 3
Glyph name: aacute Contours detected: 2 Expected: 3
Glyph name: acircumflex Contours detected: 2 Expected: 3
Glyph name: atilde Contours detected: 2 Expected: 3
Glyph name: adieresis Contours detected: 3 Expected: 4
Glyph name: aring Contours detected: 3 Expected: 4
Glyph name: oslash Contours detected: 4 Expected: 3
Glyph name: yacute Contours detected: 3 Expected: 2
Glyph name: ydieresis Contours detected: 4 Expected: 3
Glyph name: amacron Contours detected: 2 Expected: 3
Glyph name: abreve Contours detected: 2 Expected: 3
Glyph name: Cacute Contours detected: 3 Expected: 2
Glyph name: Ccircumflex Contours detected: 3 Expected: 2
Glyph name: Cdotaccent Contours detected: 3 Expected: 2
Glyph name: Ccaron Contours detected: 3 Expected: 2
Glyph name: Dcaron Contours detected: 4 Expected: 3
Glyph name: Dcroat Contours detected: 4 Expected: 2
Glyph name: dcroat Contours detected: 3 Expected: 2
Glyph name: eogonek Contours detected: 3 Expected: 2
Glyph name: Gcircumflex Contours detected: 4 Expected: 2
Glyph name: Gbreve Contours detected: 4 Expected: 2
Glyph name: Gdotaccent Contours detected: 4 Expected: 2
Glyph name: uni0122 Contours detected: 4 Expected: 2
Glyph name: Hcircumflex Contours detected: 3 Expected: 2
Glyph name: Hbar Contours detected: 3 Expected: 2
Glyph name: hbar Contours detected: 2 Expected: 1
Glyph name: Itilde Contours detected: 3 Expected: 2
Glyph name: Imacron Contours detected: 3 Expected: 2
Glyph name: Iogonek Contours detected: 3 Expected: 1 or 2
Glyph name: Idotaccent Contours detected: 3 Expected: 2
Glyph name: Jcircumflex Contours detected: 3 Expected: 2
Glyph name: jcircumflex Contours detected: 3 Expected: 2
Glyph name: uni0136 Contours detected: 4 Expected: 2 or 3
Glyph name: Lacute Contours detected: 4 Expected: 2
Glyph name: lacute Contours detected: 3 Expected: 2
Glyph name: uni013B Contours detected: 4 Expected: 2
Glyph name: uni013C Contours detected: 3 Expected: 2
Glyph name: Lcaron Contours detected: 4 Expected: 2
Glyph name: lcaron Contours detected: 3 Expected: 2
Glyph name: Lslash Contours detected: 4 Expected: 1
Glyph name: lslash Contours detected: 2 Expected: 1
Glyph name: eng Contours detected: 2 Expected: 1
Glyph name: Omacron Contours detected: 4 Expected: 3
Glyph name: Ohungarumlaut Contours detected: 5 Expected: 4
Glyph name: OE Contours detected: 4 Expected: 2
Glyph name: sacute Contours detected: 4 Expected: 2
Glyph name: scircumflex Contours detected: 4 Expected: 2
Glyph name: scedilla Contours detected: 4 Expected: 1 or 2
Glyph name: scaron Contours detected: 4 Expected: 2
Glyph name: uni0163 Contours detected: 4 Expected: 1 or 2
Glyph name: tcaron Contours detected: 4 Expected: 2
Glyph name: Tbar Contours detected: 2 Expected: 1
Glyph name: tbar Contours detected: 4 Expected: 1
Glyph name: Uogonek Contours detected: 2 Expected: 1
Glyph name: uogonek Contours detected: 2 Expected: 1
Glyph name: Ycircumflex Contours detected: 3 Expected: 2
Glyph name: ycircumflex Contours detected: 3 Expected: 2
Glyph name: Ydieresis Contours detected: 4 Expected: 3
Glyph name: Zacute Contours detected: 4 Expected: 2
Glyph name: zacute Contours detected: 3 Expected: 2
Glyph name: Zdotaccent Contours detected: 4 Expected: 2
Glyph name: zdotaccent Contours detected: 3 Expected: 2
Glyph name: Zcaron Contours detected: 4 Expected: 2
Glyph name: zcaron Contours detected: 3 Expected: 2
Glyph name: Ohorn Contours detected: 4 Expected: 2 or 3
Glyph name: ohorn Contours detected: 3 Expected: 2
Glyph name: Uhorn Contours detected: 2 Expected: 1
Glyph name: uhorn Contours detected: 2 Expected: 1
Glyph name: uni0219 Contours detected: 4 Expected: 2
Glyph name: uni021B Contours detected: 4 Expected: 2
Glyph name: uni0237 Contours detected: 2 Expected: 1
Glyph name: uni0328 Contours detected: 0 Expected: 1
Glyph name: uni1E9E Contours detected: 2 Expected: 1
Glyph name: uni1EA1 Contours detected: 2 Expected: 3
Glyph name: uni1EA3 Contours detected: 2 Expected: 3
Glyph name: uni1EA5 Contours detected: 3 Expected: 4
Glyph name: uni1EA7 Contours detected: 3 Expected: 4
Glyph name: uni1EA9 Contours detected: 3 Expected: 4
Glyph name: uni1EAB Contours detected: 3 Expected: 4
Glyph name: uni1EAD Contours detected: 3 Expected: 4
Glyph name: uni1EAF Contours detected: 3 Expected: 4
Glyph name: uni1EB1 Contours detected: 3 Expected: 4
Glyph name: uni1EB3 Contours detected: 3 Expected: 4
Glyph name: uni1EB5 Contours detected: 3 Expected: 4
Glyph name: uni1EB7 Contours detected: 3 Expected: 4
Glyph name: uni1EC8 Contours detected: 3 Expected: 2
Glyph name: uni1EC9 Contours detected: 1 Expected: 2
Glyph name: uni1ECA Contours detected: 3 Expected: 2
Glyph name: uni1ECC Contours detected: 4 Expected: 3
Glyph name: uni1ECE Contours detected: 4 Expected: 3
Glyph name: uni1ED0 Contours detected: 5 Expected: 4
Glyph name: uni1ED2 Contours detected: 5 Expected: 4
Glyph name: uni1ED4 Contours detected: 5 Expected: 4
Glyph name: uni1ED6 Contours detected: 5 Expected: 4
Glyph name: uni1ED8 Contours detected: 5 Expected: 4
Glyph name: uni1EDA Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EDB Contours detected: 4 Expected: 3
Glyph name: uni1EDC Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EDD Contours detected: 4 Expected: 3
Glyph name: uni1EDE Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EDF Contours detected: 4 Expected: 3
Glyph name: uni1EE0 Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EE1 Contours detected: 4 Expected: 3
Glyph name: uni1EE2 Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EE3 Contours detected: 4 Expected: 3
Glyph name: uni1EE8 Contours detected: 3 Expected: 2
Glyph name: uni1EE9 Contours detected: 3 Expected: 2
Glyph name: uni1EEA Contours detected: 3 Expected: 2
Glyph name: uni1EEB Contours detected: 3 Expected: 2
Glyph name: uni1EEC Contours detected: 3 Expected: 2
Glyph name: uni1EED Contours detected: 3 Expected: 2
Glyph name: uni1EEE Contours detected: 3 Expected: 2
Glyph name: uni1EEF Contours detected: 3 Expected: 2
Glyph name: uni1EF0 Contours detected: 3 Expected: 2
Glyph name: uni1EF1 Contours detected: 3 Expected: 2
Glyph name: Ygrave Contours detected: 3 Expected: 2
Glyph name: ygrave Contours detected: 3 Expected: 2
Glyph name: uni1EF4 Contours detected: 3 Expected: 2
Glyph name: uni1EF5 Contours detected: 3 Expected: 2
Glyph name: uni1EF6 Contours detected: 3 Expected: 2
Glyph name: uni1EF7 Contours detected: 3 Expected: 2
Glyph name: uni1EF8 Contours detected: 3 Expected: 2
Glyph name: uni1EF9 Contours detected: 3 Expected: 2
Glyph name: guilsinglleft Contours detected: 2 Expected: 1
Glyph name: guilsinglright Contours detected: 2 Expected: 1
Glyph name: six.superior Contours detected: 1 Expected: 2
Glyph name: nine.superior Contours detected: 1 Expected: 2
Glyph name: six.inferior Contours detected: 1 Expected: 2
Glyph name: nine.inferior Contours detected: 1 Expected: 2
Glyph name: fi Contours detected: 5 Expected: 1, 2 or 3
Glyph name: fl Contours detected: 5 Expected: 1 or 2
Glyph name: ffi Contours detected: 8 Expected: 1, 2, 3 or 4
Glyph name: ffl Contours detected: 8 Expected: 1, 2 or 3
Glyph name: AE Contours detected: 4 Expected: 2
Glyph name: C Contours detected: 2 Expected: 1
Glyph name: Cacute Contours detected: 3 Expected: 2
Glyph name: Ccaron Contours detected: 3 Expected: 2
Glyph name: Ccedilla Contours detected: 3 Expected: 1 or 2
Glyph name: Ccircumflex Contours detected: 3 Expected: 2
Glyph name: Cdotaccent Contours detected: 3 Expected: 2
Glyph name: D Contours detected: 3 Expected: 2
Glyph name: Dcaron Contours detected: 4 Expected: 3
Glyph name: Dcroat Contours detected: 4 Expected: 2
Glyph name: Eth Contours detected: 4 Expected: 2
Glyph name: G Contours detected: 3 Expected: 1
Glyph name: Gbreve Contours detected: 4 Expected: 2
Glyph name: Gcircumflex Contours detected: 4 Expected: 2
Glyph name: Gdotaccent Contours detected: 4 Expected: 2
Glyph name: H Contours detected: 2 Expected: 1
Glyph name: Hbar Contours detected: 3 Expected: 2
Glyph name: Hcircumflex Contours detected: 3 Expected: 2
Glyph name: I Contours detected: 2 Expected: 1
Glyph name: Iacute Contours detected: 3 Expected: 2
Glyph name: Icircumflex Contours detected: 3 Expected: 2
Glyph name: Idieresis Contours detected: 4 Expected: 3
Glyph name: Idotaccent Contours detected: 3 Expected: 2
Glyph name: Igrave Contours detected: 3 Expected: 2
Glyph name: Imacron Contours detected: 3 Expected: 2
Glyph name: Iogonek Contours detected: 3 Expected: 1 or 2
Glyph name: Itilde Contours detected: 3 Expected: 2
Glyph name: J Contours detected: 2 Expected: 1
Glyph name: Jcircumflex Contours detected: 3 Expected: 2
Glyph name: K Contours detected: 3 Expected: 1 or 2
Glyph name: L Contours detected: 3 Expected: 1
Glyph name: Lacute Contours detected: 4 Expected: 2
Glyph name: Lcaron Contours detected: 4 Expected: 2
Glyph name: Lslash Contours detected: 4 Expected: 1
Glyph name: O Contours detected: 3 Expected: 2
Glyph name: OE Contours detected: 4 Expected: 2
Glyph name: Oacute Contours detected: 4 Expected: 3
Glyph name: Ocircumflex Contours detected: 4 Expected: 3
Glyph name: Odieresis Contours detected: 5 Expected: 4
Glyph name: Ograve Contours detected: 4 Expected: 3
Glyph name: Ohorn Contours detected: 4 Expected: 2 or 3
Glyph name: Ohungarumlaut Contours detected: 5 Expected: 4
Glyph name: Omacron Contours detected: 4 Expected: 3
Glyph name: Oslash Contours detected: 5 Expected: 2 or 3
Glyph name: Otilde Contours detected: 4 Expected: 3
Glyph name: Tbar Contours detected: 2 Expected: 1
Glyph name: Uhorn Contours detected: 2 Expected: 1
Glyph name: Uogonek Contours detected: 2 Expected: 1
Glyph name: Y Contours detected: 2 Expected: 1
Glyph name: Yacute Contours detected: 3 Expected: 2
Glyph name: Ycircumflex Contours detected: 3 Expected: 2
Glyph name: Ydieresis Contours detected: 4 Expected: 3
Glyph name: Ygrave Contours detected: 3 Expected: 2
Glyph name: Z Contours detected: 3 Expected: 1
Glyph name: Zacute Contours detected: 4 Expected: 2
Glyph name: Zcaron Contours detected: 4 Expected: 2
Glyph name: Zdotaccent Contours detected: 4 Expected: 2
Glyph name: a Contours detected: 1 Expected: 2
Glyph name: aacute Contours detected: 2 Expected: 3
Glyph name: abreve Contours detected: 2 Expected: 3
Glyph name: acircumflex Contours detected: 2 Expected: 3
Glyph name: adieresis Contours detected: 3 Expected: 4
Glyph name: agrave Contours detected: 2 Expected: 3
Glyph name: amacron Contours detected: 2 Expected: 3
Glyph name: aring Contours detected: 3 Expected: 4
Glyph name: at Contours detected: 1 Expected: 2
Glyph name: atilde Contours detected: 2 Expected: 3
Glyph name: b Contours detected: 1 Expected: 2
Glyph name: dcroat Contours detected: 3 Expected: 2
Glyph name: eng Contours detected: 2 Expected: 1
Glyph name: eogonek Contours detected: 3 Expected: 2
Glyph name: f Contours detected: 3 Expected: 1
Glyph name: fi Contours detected: 5 Expected: 3
Glyph name: fl Contours detected: 5 Expected: 2
Glyph name: germandbls Contours detected: 2 Expected: 1
Glyph name: guilsinglleft Contours detected: 2 Expected: 1
Glyph name: guilsinglright Contours detected: 2 Expected: 1
Glyph name: hbar Contours detected: 2 Expected: 1
Glyph name: j Contours detected: 3 Expected: 2
Glyph name: jcircumflex Contours detected: 3 Expected: 2
Glyph name: l Contours detected: 2 Expected: 1
Glyph name: lacute Contours detected: 3 Expected: 2
Glyph name: lcaron Contours detected: 3 Expected: 2
Glyph name: lslash Contours detected: 2 Expected: 1
Glyph name: ohorn Contours detected: 3 Expected: 2
Glyph name: ordfeminine Contours detected: 1 Expected: 2 or 3
Glyph name: oslash Contours detected: 4 Expected: 3
Glyph name: percent Contours detected: 4 Expected: 5
Glyph name: q Contours detected: 1 Expected: 2
Glyph name: s Contours detected: 3 Expected: 1
Glyph name: sacute Contours detected: 4 Expected: 2
Glyph name: scaron Contours detected: 4 Expected: 2
Glyph name: scircumflex Contours detected: 4 Expected: 2
Glyph name: t Contours detected: 3 Expected: 1
Glyph name: tbar Contours detected: 4 Expected: 1
Glyph name: tcaron Contours detected: 4 Expected: 2
Glyph name: uhorn Contours detected: 2 Expected: 1
Glyph name: uni0122 Contours detected: 4 Expected: 2
Glyph name: uni0136 Contours detected: 4 Expected: 2 or 3
Glyph name: uni013B Contours detected: 4 Expected: 2
Glyph name: uni013C Contours detected: 3 Expected: 2
Glyph name: uni0163 Contours detected: 4 Expected: 1 or 2
Glyph name: uni0219 Contours detected: 4 Expected: 2
Glyph name: uni021B Contours detected: 4 Expected: 2
Glyph name: uni0237 Contours detected: 2 Expected: 1
Glyph name: uni0328 Contours detected: 0 Expected: 1
Glyph name: uni1E9E Contours detected: 2 Expected: 1
Glyph name: uni1EA1 Contours detected: 2 Expected: 3
Glyph name: uni1EA3 Contours detected: 2 Expected: 3
Glyph name: uni1EA5 Contours detected: 3 Expected: 4
Glyph name: uni1EA7 Contours detected: 3 Expected: 4
Glyph name: uni1EA9 Contours detected: 3 Expected: 4
Glyph name: uni1EAB Contours detected: 3 Expected: 4
Glyph name: uni1EAD Contours detected: 3 Expected: 4
Glyph name: uni1EAF Contours detected: 3 Expected: 4
Glyph name: uni1EB1 Contours detected: 3 Expected: 4
Glyph name: uni1EB3 Contours detected: 3 Expected: 4
Glyph name: uni1EB5 Contours detected: 3 Expected: 4
Glyph name: uni1EB7 Contours detected: 3 Expected: 4
Glyph name: uni1EC8 Contours detected: 3 Expected: 2
Glyph name: uni1EC9 Contours detected: 1 Expected: 2
Glyph name: uni1ECA Contours detected: 3 Expected: 2
Glyph name: uni1ECC Contours detected: 4 Expected: 3
Glyph name: uni1ECE Contours detected: 4 Expected: 3
Glyph name: uni1ED0 Contours detected: 5 Expected: 4
Glyph name: uni1ED2 Contours detected: 5 Expected: 4
Glyph name: uni1ED4 Contours detected: 5 Expected: 4
Glyph name: uni1ED6 Contours detected: 5 Expected: 4
Glyph name: uni1ED8 Contours detected: 5 Expected: 4
Glyph name: uni1EDA Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EDB Contours detected: 4 Expected: 3
Glyph name: uni1EDC Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EDD Contours detected: 4 Expected: 3
Glyph name: uni1EDE Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EDF Contours detected: 4 Expected: 3
Glyph name: uni1EE0 Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EE1 Contours detected: 4 Expected: 3
Glyph name: uni1EE2 Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EE3 Contours detected: 4 Expected: 3
Glyph name: uni1EE8 Contours detected: 3 Expected: 2
Glyph name: uni1EE9 Contours detected: 3 Expected: 2
Glyph name: uni1EEA Contours detected: 3 Expected: 2
Glyph name: uni1EEB Contours detected: 3 Expected: 2
Glyph name: uni1EEC Contours detected: 3 Expected: 2
Glyph name: uni1EED Contours detected: 3 Expected: 2
Glyph name: uni1EEE Contours detected: 3 Expected: 2
Glyph name: uni1EEF Contours detected: 3 Expected: 2
Glyph name: uni1EF0 Contours detected: 3 Expected: 2
Glyph name: uni1EF1 Contours detected: 3 Expected: 2
Glyph name: uni1EF4 Contours detected: 3 Expected: 2
Glyph name: uni1EF5 Contours detected: 3 Expected: 2
Glyph name: uni1EF6 Contours detected: 3 Expected: 2
Glyph name: uni1EF7 Contours detected: 3 Expected: 2
Glyph name: uni1EF8 Contours detected: 3 Expected: 2
Glyph name: uni1EF9 Contours detected: 3 Expected: 2
Glyph name: uogonek Contours detected: 2 Expected: 1
Glyph name: y Contours detected: 2 Expected: 1
Glyph name: yacute Contours detected: 3 Expected: 2
Glyph name: ycircumflex Contours detected: 3 Expected: 2
Glyph name: ydieresis Contours detected: 4 Expected: 3
Glyph name: ygrave Contours detected: 3 Expected: 2
Glyph name: z Contours detected: 2 Expected: 1
Glyph name: zacute Contours detected: 3 Expected: 2
Glyph name: zcaron Contours detected: 3 Expected: 2
Glyph name: zdotaccent Contours detected: 3 Expected: 2 [code: contour-count]

WARN: Are there caret positions declared for every ligature?
--- Rationale ---

All ligatures in a font must have corresponding caret (text cursor) positions
defined in the GDEF table, otherwhise, users may experience issues with caret
rendering.

If using GlyphsApp, ligature carets can be set directly on canvas by accessing
the `Glyph -> Set Anchors` menu option or by pressing the `Cmd+U` keyboard
shortcut.

If designing with UFOs, (as of Oct 2020) ligature carets are not yet compiled
by ufo2ft, and therefore will not build via FontMake. See
googlefonts/ufo2ft/issues/329


  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences?
--- Rationale ---

Fonts with ligatures should have kerning on the corresponding non-ligated
sequences for text where ligatures aren't used (eg
https://github.com/impallari/Raleway/issues/14).


  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + f
    • f + i
    • i + f
    • f + l
    • l + l
    • z + z

    [code: lacks-kern-info]

WARN: Font contains '.notdef' as its first glyph?
--- Rationale ---

The OpenType specification v1.8.2 recommends that the first glyph is the
'.notdef' glyph without a codepoint assigned and with a drawing.

https://docs.microsoft.com/en-us/typography/opentype/spec
/recom#glyph-0-the-notdef-glyph

Pre-v1.8, it was recommended that fonts should also contain 'space', 'CR' and
'.null' glyphs. This might have been relevant for MacOS 9 applications.


  • WARN Glyph '.notdef' should contain a drawing, but it is empty. [code: empty]
WARN: Do outlines contain any jaggy segments?
--- Rationale ---

This test heuristically detects outline segments which form a particularly
small angle, indicative of an outline error. This may cause false positives in
cases such as extreme ink traps, so should be regarded as advisory and backed
up by manual inspection.


  • WARN The following glyphs have jaggy segments:
    • A: B<<355.5,313.0>-<364.0,343.0>-<376.0,359.0>>/B<<376.0,359.0>-<317.0,290.0>-<246.5,234.5>> = 3.6629432927667636
    • Aacute: B<<355.5,313.0>-<364.0,343.0>-<376.0,359.0>>/B<<376.0,359.0>-<317.0,290.0>-<246.5,234.5>> = 3.6629432927667636
    • Abreve: B<<355.5,313.0>-<364.0,343.0>-<376.0,359.0>>/B<<376.0,359.0>-<317.0,290.0>-<246.5,234.5>> = 3.6629432927667636
    • Acircumflex: B<<355.5,313.0>-<364.0,343.0>-<376.0,359.0>>/B<<376.0,359.0>-<317.0,290.0>-<246.5,234.5>> = 3.6629432927667636
    • Adieresis: B<<355.5,313.0>-<364.0,343.0>-<376.0,359.0>>/B<<376.0,359.0>-<317.0,290.0>-<246.5,234.5>> = 3.6629432927667636
    • Agrave: B<<355.5,313.0>-<364.0,343.0>-<376.0,359.0>>/B<<376.0,359.0>-<317.0,290.0>-<246.5,234.5>> = 3.6629432927667636
    • Amacron: B<<355.5,313.0>-<364.0,343.0>-<376.0,359.0>>/B<<376.0,359.0>-<317.0,290.0>-<246.5,234.5>> = 3.6629432927667636
    • Aogonek: B<<355.5,313.0>-<364.0,343.0>-<376.0,359.0>>/B<<376.0,359.0>-<317.0,290.0>-<246.5,234.5>> = 3.6629432927667636
    • Atilde: B<<355.5,313.0>-<364.0,343.0>-<376.0,359.0>>/B<<376.0,359.0>-<317.0,290.0>-<246.5,234.5>> = 3.6629432927667636
    • C: B<<570.5,722.5>-<537.0,759.0>-<473.0,768.0>>/L<<473.0,768.0>--<473.0,768.0>> = 8.004728857292836 and 192 more. [code: found-jaggy-segments]
WARN: Do outlines contain any semi-vertical or semi-horizontal lines?
--- Rationale ---

This test detects line segments which are nearly, but not quite, exactly
horizontal or vertical. Sometimes such lines are created by design, but often
they are indicative of a design error.

This test is disabled for italic styles, which often contain nearly-upright
lines.


  • WARN The following glyphs have semi-vertical/semi-horizontal lines:
    • notequal: L<<123.0,471.0>--<239.0,470.0>> [code: found-semi-vertical]

Summary

💔 ERROR 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 11 7 94 7 76 0
0% 6% 4% 48% 4% 39% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG

Bulgarian .locl feature

Bulgarian .locl feature is present in OT features code but don’t seem to be available to test in Glyphs.
image

Cyrillic breve shape and consistency between UC and LC

I would recommend to make an uppercase version of breve-cy higher on the left side, so left and right side look more harmonised. Perhaps something like on this image, where they are on the same line.
image

I also think the in Й breve-cy is positioned slightly low. Having in mind a swash of the letterform I would recommend to consider placing breve-cy higher, or making its right side higher.
image

As for the lowercase version of breve-cy, its form should be coherent with UC version.

be-cy.loclSRB

I would recommend to erase the glyph be-cy.loclSRB, as a default б shape in Great Vibes actually serves better for Serbian. And in case of handwritten typeface it serves well for a default shape as well.

г (ge-cy)

г seems to be slightly too upright and light in type setting. I will also have some observations on connections, there will be a separate issue about them.

Pasted Graphic 18

Serbian / Macedonian localisation

I spotted some errors in glyphs for Serbian / Macedonian localisation.
These are the glyphs which should use substitutions.

image

ge-cy.loclSRG can use a drawing of dotlessi + horizontal line.
pe-cy.loclSRB can use a drawing of ii-cy + horizontal line.
te-cy.loclSRB can use a drawing of sha-cy + horizontal line on the top (instead of bottom).

These three glyphs are the only ones I would recommend for localisation substitutions in Great Vibes. Usually there is also a substitution for be-cy, however as I mentioned earlier, in Great Vibes default be-cy works well for both basic Cyrillic and Serbian / Macedonian. I would recommend to delete the current glyph be-cy.loclSRB.

The horizontal lines should be consistent with the ones already used in Cyrillic.
image

This might be a matter of taste, but looking at H, I think horizontals in te-cy and sha-cy can be a little more straight, less wavy and a bit faster in movement.
image

Regarding gje-cy, it is used in Macedonian only, so instead of having a letterform composed from ge-cy and acute, I would recommend using ge-cy.loclSRB as a base for its drawing. I've seen versions with both horizontal line and acute and with acute only. The first one is hard to use in dark weights. I think Great Vibes can accommodate each of them. As I'm not aware of any other languages using gje-cy I don't make a localisation for this glyph, I just draw it specifically for Macedonian in its default form.

image

Since Adobe apps don't support Serbian / Macedonian localisations I usually implement an additional stylistic set which activates these letterforms. It is not a perfect solution (but a common one) and at least users can access them.

Font Mastering

Diacritics

  • Composite glyphs need to be made out of components using anchors
  • Comb.case are missing
  • Misaligned diacritics + Diacritics proportion issues for stacked in vietnamese
  • Create caron.alt and adjust Lcaron, lcaron, dcaron, tcaron

Glyphs

  • Missing glyphs:
  • Add extreme points
  • Correct path direction (command)

OT Features

  • Ensure the OT features include everything and are working well (e.g. fi fl included)

к (ka-cy)

к (ka-cy) is looking slightly dense in text. I wonder if the white space around the join can receive more air? Maybe it is worth considering to lighten the stem a little as well?

Pasted Graphic 5

Stylistic Sets

Please review all the Stylistic Sets and ensure the following:

  • Check the style (e.g. o.ss01) and spacing and connections are ok e.g. g.ss02 lm
  • Asigning a descriptive name for each feature. You can check the Glyphs App Stylistic Sets tutorial
  • Review the ss03 (that only consist of zs) Vs. the main version and choose only one and then adjust the weight. Both versions look heavy for the font.
Screen Shot 2023-07-06 at 13 29 32 Screen Shot 2023-07-06 at 13 28 57 Screen Shot 2023-07-06 at 13 28 35 Screen Shot 2023-07-06 at 13 13 30

Vietnamese diacritics

image

Mostly these look fairly reasonable on their own but there are some reasons to decompose them and adjust them:

• if they are decomposed and scaled down slightly that tracks with expected best practices for this language
• If they are a decomosed, then you can let the lower shape be a bit bigger than the top one which is also best practice and also that gives a more pleasant sens eof visual hierarchy to the diacritic mark
• The overall smaller combined diacritic can be made to clash with fewer capital letters that might come before the lower case letter.

Cyrillic LC to LC connections

а (a-cy)

ат, ап, ак, аю, ађ, аћ - this is an optical thing preset also in Latin pair an, but I'm wondering if the white space under the connector can be just a touch bigger? It is greatly achieved in ар, for example.

In Cyrillic it gets more noticeable in ак, as к drawing seems to be slightly too dark and tight on its own join.

image

ал

This connection is not readable.
image

It needs to be built similarly as ил, where the tail of и joins the terminal of л.
image

аж
image
I think altering top left of the first curve in ж to be less convex would be beneficial for many connections with ж, not only аж.
image


б (be-cy)

б seem to create a bit of a white gap in overall rhythm with rounded forms as а or в.

image image

There is no similar issue with verticals. Here *бш and бн are looking good to my eyes.
image
image

бб and вб might deserve a ligature or .calt in order not to collide.
image
image

I wouldn't recommend this connection in бл and бя.
While бм seems a bit far from each other, it reads better. This might be an argument for making the left leg of л, м, я less wide / long. And independently from this exact observation I would recommend making such a change for the leg of я.
image

image

бх and бж make an impression like there should be a connection there. This impression is stronger in бж. If kerned more tightly бж could perhaps actually connect? And бх could perhaps stay disconnected but with smaller gap?
image
image


в (ve-cy)

Connectors from the left come very close to в, but do not touch it. Is it intended?
image

вж has similar issue with large gap as бж described above.


г (ge-cy)

In Great Vibes the main stroke of г seem to have a similar (or very close) slope as verticals of another letters.
image

Usually it is more diagonal

image

ог ligature seems to break го connection.

image

Also I would not recommend ог connection from the bottom of о. I need to admit it looks somewhat exotic for cyrillic eyes. It would be better to connect from the higher point, like in ox.
image

фг and бг seem pretty loose in overall rhythm. They can connect, or perhaps just be kerned to not be connected but reduce the gap.
image

з (ze-cy)

This is less important than many of the things I'm describing in my review but I wonder if з could have a bit higher side bearing on the left, it seems to be pretty generous to me.
image

ж (zhe-cy)
I described observations about ж connections above, while describing another letters, but I think it is worth to add one more thing. ж seems to be darker in text than I would expect and this impression is surely produced by thickness of three middle strokes. I would recommend lighting them. It is also worth checking other comment about this letter which I left [(https://github.com//issues/35)]

к (ka-cy)

The issue I found in ак with connection being pretty dense is presented in more pairs

гк дк зк ек ѐк ёк жк зк ик йк ѝк кк ќк лк мк нк пк рк ск тк ук ўк хк чк шк щк џк ык ѕк ікі їк јк ћк юк як

image image

While бк pair seems on the tight side but still works pretty well, I think эк is too tight.
image.

I will keep posting my further observations about LC to LC connection in this issue as comments.

Yat-cy, yat-cy

These two letters are not used in contemporary Cyrillic languages, however many typefaces keep supporting them.

image

The uppercase shape looks fine to me. The lowercase shape has a troublesome type of connection on the left. Also the bar construction should be consistent with the one from UC. There is a skeleton for the LC shape which can be use instead and I would recommend it. It can be achieved from merging pe-cy with soft sign-cy.

image

Here is an example from Robert Italic, which is a very different kind of typeface, but just to give an illustration of how the skeleton is built.
image

`Rtail` and `dtail`

@EbenSorkin should these letters use something similar as an extension of the main stem instead of this short tail?

Currently in the source file
Screen Shot 2023-09-29 at 22 04 39
Screen Shot 2023-09-29 at 20 45 19

Reference fonts
Screen Shot 2023-09-29 at 20 36 17
Screen Shot 2023-09-29 at 20 36 27
Screen Shot 2023-09-29 at 20 45 37
Screen Shot 2023-09-29 at 20 45 50

Update Great Vibes - Final Steps

Modifications have been made per our meeting (Friday Sept.8, 2023).
Notations have been placed in the glyphs that have been modified. See the font file's glyph cells to see those annotations.
Please review the following modifications and send comments if further adjustments need to be made.

  • The lowercase "o" has been redesigned to distinguish from the "a."
  • Inferior and superior numbers have been modified and kerned.
  • Dot accents and other diacritics have been modified.
  • The weight of the Fhook has been modified.
  • The weight of the "b" has been modified.
  • Some forms have been changed from ss01 to init (r) or fina (t) features.
  • The weights of the eturn and eopen have been modified.
  • The small upsilon has been modified to connect on the left side.
  • The rfishhook has been modified to connect on the left side.
  • Click glyphs have been italicized.
image

There may be other minor adjustments to glyphs that have not been annotated.

Bulgarian letterforms

Unless there is a particular reason to keep the Bulgarian glyphs which have identical drawing as basic Cyrillic glyphs, I would just delete them. I marked them red on the image below.

image

However grey glyphs zhe-cy.loclBGR, ka-cy.loclBGR, yu-cy.loclBGR shold have distinct drawings with ascending stems. There is no similar style typeface under a link below, but you might still find this source useful. Please let me know if you need my further assistance with this.

https://localfonts.eu/typography-basics/fonts-the-importance-of-localisation/krista-radoeva-cyrillic-script-variations-and-the-importance-of-localisation/

н (en-cy)

I wonder if н (en-cy) can have more gestural bar? This is not a Cyrillic specific observation, the current version is correct and you might disagree with my proposal.


Pasted Graphic 20

UC version has a gestured bar. (Off course the UC is very gestural in Great Vibes).

Pasted Graphic 21

And here is some possible ideas for LC.


Pasted Graphic 22

Pasted Graphic 23

wrong љ shape

љ (lje-cy) should be based on л (el-cy) shape merged with ь (softsign-cy). The ь bowl should be attached to л's stem. The logic would be similar as for building њ from н and ь, which joins two forms correctly in Great Vibes.

image

Font Production L1 - Update to GF Plus

  • Pull new source from DropBox
  • Inspect anchors and composite glyphs
  • Review/update OT feas
  • Review/Update Kerning (basic pairs)
  • Add sample image to repo
  • Add build instructions to repo
  • Diffenator poofs
  • PR

Fon Production

  • QA assessmet
  • Review/Adjust metrics and alignment zones
  • Adjust Vertical metrics for the update
  • Include License strings
  • fsSelection bit 7
  • fsType bit 0
  • Copyright strigs
  • Bump version number
  • Build
  • CI build & test
  • FB QA
  • Regression QA
  • Visual QA
  • PR

Algonquin OU

image

I think the OU should perhaps be a little wider. Happily, the height of it establishes it as a capital letter to some degree but the lack of swashes and modest width combine to make it less clear than it might otherwise be.

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.