Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Italic vs high-contrast fonts #2692

Closed
sommerluk opened this issue Jul 18, 2017 · 15 comments
Closed

Italic vs high-contrast fonts #2692

sommerluk opened this issue Jul 18, 2017 · 15 comments

Comments

@sommerluk
Copy link
Collaborator

screenshot 1

The screenshot uses Noto Serif Regular instead of Noto Sans Italic.

Currently, for oblique-fonts, we use Noto Sans Italic, which covers the latin, greek and cyrillic scripts – following https://en.wikipedia.org/wiki/List_of_writing_systems#List_of_writing_scripts_by_adoption that’s about 58% of the population. For the other scripts, we fall back to the regular style; so 42% do not see any difference between oblique-fonts and book-fonts.

It is unlikely that we will ever have italic/oblique fonts for the other scripts, because italic/oblique design is a particularity of latin/greek/cyrillic typeface design and mostly unknown in other cultural contexts.

On the other hand, the difference between sans/low-contrast on one hand, and serif/high-contrast on the other hand is more widespreaded. (Contrast means the contrast in stroke thickness within the glyphs: In low-contrast fonts all parts of the strokes have almost the same thinkness, and in high-contrast fonts some parts show a much thicker stroke than other parts.) With the currently released Noto Serif fonts, we would cover about 85% of the population. And in the next Noto release, there will be further more Serif fonts, the the coverage would raise again.

The biggest “coverage gain” we would have with the CJK scripts. But because of the complex glyph forms and the often small font size in openstreetmap-carto, a high-contrast CJK glyph is here also problematic for legibility. Note also that, as far as I know, Noto Serif CJK (though released some months ago) is still not packaged for Ubuntu, which might mean that it won’t be available on the osm.org servers soon.

Noto Italic vs Regular means that the Italic font is designed to be harmonic with the Regular style, but at the same time have an easy-to-spot difference. Noto Serif vs Sans means that the Serif font is also designed to be harmonic with the Sans style, but it’s not designed to have an easy-to-spot difference; of course it looks different, but it’s not so obvious.

In general, serif/high-contrast styles are more difficult to render and read at small font sizes that sans/low-contrast fonts.

Advantages of Serif:

  • Get away from cultural bias to western typography
  • Extends greatly the coverage of the @oblique-font (as it’s currently called) style (from 58% to at least 85%)

Disadvantages of Serif:

  • More dificult to spot the difference with the regular style for western scripts (about 58% affected here)
  • Maybe more difficult to read at small font sizes

Comments?

@kocio-pl kocio-pl added the text label Jul 18, 2017
@kocio-pl kocio-pl added this to the Bugs and improvements milestone Jul 18, 2017
@mboeringa
Copy link

Always good to have the comparison image of the current rendering of the same area:

http://www.openstreetmap.org/#map=13/5.3282/-4.0782

afbeelding

@kocio-pl
Copy link
Collaborator

Interesting proposition. I'd like to know what the people using these scripts (other than latin, greek and cyrillic) think about it?

@imagico
Copy link
Collaborator

imagico commented Jul 22, 2017

To me this looks mostly awkward but i would be interested in examples where this supposedly leads to advantages and in opinions for native users of scripts where this would apply.

Also i would like to hear to what extent different scripts know the serif/sans serif and the regular/oblique concepts or something comparable to them (or to the other script variants known for Latin like bold or small caps) and how these concepts are currently mapped to the fonts we use or could be to improve the map in those areas.

In Arabic we have for example the Naskh/Kufic distinction - see #2496 - which cannot be compared to either of these, it is more like the Latin Antiqua/Fraktur distinction.

@sommerluk
Copy link
Collaborator Author

An example with CJK glyphs (especially left bottom and right top).

Serif:
screenshot 1

Oblique/Italic (current):
screenshot 2

@sommerluk
Copy link
Collaborator Author

About regular vs bold: Its usage is quite clear: bold are labels that we want to emphasis: They stand out compared to regular labels.

What’s our policy for italic/oblique labels? When do we use regular, and when oblique? It seems that areas are often rendered oblique, but on the other hand motorway connections are point geometries, and also rendered oblique. Is there a policy?

@sommerluk
Copy link
Collaborator Author

sommerluk commented Jul 26, 2017

I do not know so well non-latin scripts. But as far as I know about the scripts:

  • Regular/italic is something quite particular to the LGC (latin/greek/cyrillic) script. I don’t know of other scripts to have something similar.
  • Regular/oblique is something that (apart from LGC) I have seen also for Thai fonts. In general, like italic it’s not so widespreaded outside LGC fonts.
  • Regular/automatically-slanted regular “fake oblique” (that means the software slants simply the regular style because the font family does not provide an own italic or oblique style) is not available in Mapnik, and it’s good that it’s not available. Typographically that’s really bad style.
  • Regular lowercase/small caps or petite caps can only be available for bicameral scripts. Apart from LGC, this applies to some more scripts, but none of them is widespreadly used.
  • Regular lowercase/all caps is obviously also only available for bicameral scripts.
  • Regular lowercase/capitalization is obviously also only available for bicameral scripts.
  • Regular/letter-spacing works for LGC scripts and probably most other scripts without big problems except cursive scripts like arabic. Some Mapbox software even disables letter-spacing for Arabic scripts.
  • Regular/underline is independent of the script, but will likely not look good for cursive scripts like arabic or joint scripts. I think it’s also ugly in general.
  • Regular/bold will probably exist for all scripts. All scripts can also be written by hand, with both think and thin pens, so the concept of thick vs thin lines (heavy vs light font) is quite universal. So you can find this concept also in printed typography. There are not only “Regular” and “Bold”, but also “Light”, “Semi-Bold” and so on.
  • Serif/sans is, as far as I understand, something particular to LGC fonts. For CJK fonts, there is Ming/gothic which is quite similar (more decorations/less decorations). Outside LGC and CJK (as far as I see) it seems that this concept is not much used.
  • High-contrast/low-contrast: The contrast between thick and thin strokes within the same glyph seems to be also a quite universal concept. You can write every text with a dip pen and get high-contrast glyphs, and you can write a text with a ballpoint pen and get low-contrast glyphs. So you can find this concept also in printed typography.
  • Regular/condensed (or: Regular/expanded): The font width is very closely related to the individual design of font faces. So variations in font width are a very common concept and might exist for almost all scripts. There are not only condensed (narrower) variants, but also expanded (wider) variants.

Some technical remarks:

  • Mapnik does not support underline.
  • Letter-spacing needs more space than regular text, which is problematic for use in cartography. Furthermore, in cartography, letter-spacing will interfere more with the underlying yet drawn objects like outlines of houses, roads and so on. Overall, I think this would be problematic. While I was working on the font size for water features, I had played around a little bit with larger spacing, because there are quite a few (printed) maps that do so. But I did not get good results. I think for good letter-spacing a computer/Mapnik cannot do that. A human has to place this text manually; otherwise it will not look good.
  • All caps: I don’t think this would be a good idea because this would break the feedback loop.
  • Arabic typography seems to be less developed compared to other scripts. Perhaps because Arabic has more a calligraphic tradition and typography was less important. Anyway there seem to be some development, and as for western scripts there are various forms, I suppose this be become more common also for Arabic. In my opinion, at least the basic concepts like regular/bold and high-contrast/low-contrast can be applied to the Arabic script without problems.
  • In general, when various font styles are mixed because you use a different font for the title and for the continuous text, you would not take them from the same font family (like Noto Sans/Noto Serif), but you would choose two very different fonts to distinguish them easier. Anyway, I think that’s not an option for us, because cartographic use is different from pure text rendering, we do not have another font with a similar coverage like Noto, and we do not have to distinguish title vs continuous text (who’s positions are clear) but we have many irregular-placed labels and a too-different font might make the map harder to read.

Some Noto-related remarks:

  • I doubt that Noto will implement small caps or petite caps for scripts other than LGC soon. Even for LGC, Noto alpha Phase III does not provide a complete support for small caps.
  • “Noto Serif” has not always serifs, but is always high-contrast. “Noto Sans” has never serifs and has always low contrast. For LGC, “Noto Serif” has indeed serifs. For CJK, it’s like Ming, so also a sort of serifs. For other scripts like Devanagari or Georgian, there are no serifs. So a more exact name for “Noto Sans” might be “Noto low-contrast”. And a more exact name for “Noto Serif” might be “Noto high-contrast”.
  • Noto will have a “Noto Sans Arabic” (=low contrast font) in the next release.
  • Noto will have many more weights than only “Regular” and “Bold” in its next release (including CJK scripts)
  • Noto will have various font widths in its next release (condensed, semi-condensed, regular…) at least for most non-CJK scripts.

@imagico
Copy link
Collaborator

imagico commented Jul 26, 2017

There seem to be two different effects here:

  • styling consistency within the individual label with multilingual name tags tagged for the renderer. I don't consider this relevant because it is wrong tagging.
  • a distinct styling difference between the different types of labels in non-Latin texts similar to the normal/oblique difference in Latin. This seems a good idea but i wonder if it would be possible to combine fonts so that we have the oblique in Latin and the serif version in scripts that do not have an oblique variant - which at least in CJK does not appear to be a real serif font anyway although it is similar in featuring a higher contrast than sans serif.

@kocio-pl
Copy link
Collaborator

What’s our policy for italic/oblique labels? When do we use regular, and when oblique? It seems that areas are often rendered oblique, but on the other hand motorway connections are point geometries, and also rendered oblique. Is there a policy?

My wild guess is that we have no rules here.

@matthijsmelissen
Copy link
Collaborator

Is there a policy?

Not at the moment.

@sommerluk
Copy link
Collaborator Author

i wonder if it would be possible to combine fonts so that we have the oblique in Latin and the serif version in scripts that do not have an oblique variant

Interesting proposal! Technically, it is possible! And it would preserve the advantage of a visually easy to spot distinct rendering for LGC, and at the same time make a (less) distinct rendering for other scripts possible.

In general, I am reluctant to use so different concepts like regular/italic on one place and sans/serif on other places, but for the main cartographic feature. That’s not mainly about multi-language labels. You will also have situations where some POI on your screen have one script, and others another script (country boarders, bilingual regions…). And even if you do not see them on the same screen at the same moment, it might feel less intuitive when you are familiar with the rendering in latin regions and than you switch to an asian region.

But I think it might be an option to combine both: Use “Noto Serif Italic” for LGC, “Noto Serif * Regular” for other available serif scripts (and our usual fallback fonts). So we could preserve both, the oblique rendering for LGC (but with serifs now), and nevertheless have a consistent look&feel with the difference “serif vs. sans” that will be available in most places of the planet. It would look like this:
screenshot 1

@imagico
Copy link
Collaborator

imagico commented Jul 27, 2017

I definitely prefer the serif italic to the serif regular for latin script. It might even be that this improves on notofonts/oriya#4 relative to the current design.

My main reasoning was that the serif - sans serif distinction on non-latin scripts is fairly different from both the regular - oblique and the serif - sans serif distinctions so it might not be such a big problem to combine them differently. For most non-native readers the styling nuances of foreign scripts are probably not that meaningful (but opinions from the other side, i.e. from non-native latin readers, would be useful here).

But if serif italic works nicely for what we currently use sans oblique for that would also work.

@sommerluk
Copy link
Collaborator Author

There is one design pattern that I forgot in the list above:

Regular/condensed: The font width. In condensed font faces, the glyphs take less horizontal space. This one might be interesting, as Noto Phase III will support this for a varity of fonts.

@sommerluk
Copy link
Collaborator Author

I’ve updated #2692 (comment) about font width and also font weight.

@sommerluk
Copy link
Collaborator Author

Current usage of @oblique-fonts is:

  • All water.mss is rendered oblique (names of rivers, lakes…).
  • Of placenames.mms, only state names are oblique. All others not.
  • Of roads.mss, only motorway_junction is oblique. All others not.
  • amenitypoints.mss: islands, islets, aerodromes and @landcover-face-name are oblique.

@kocio-pl
Copy link
Collaborator

I believe this can be closed as the code solving it was rejected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants